BLIP-Diffusion

news2025/1/20 1:01:47

论文大意

BLIP2 结合 Stable Diffusion,实现 主题驱动的图像生成与编辑。

分为两个阶段:

1.BLIP2 的multimodal encoder 输出与 text对齐的 visual representation;

2.上述生成的 特征 与 text embedding 共同引导 Stable Diffusion 的生成。

优点:

1.几乎不用 fine-tune

2.生成图像所需的step数很少

3.zero-shot生成

4.可以与 controlnet 或 prompt-to-prompt 结合起来完成特定任务。

摘要

BLIP-Diffusion 可以完成 主题驱动的 多模态控制

怎么体现出来这个 多模态控制的呢?

1.用 BLIP2里面的 multimodal control 输出 visual representation;

2.设计 subject representation learning task 使得 SD使用这个 visual... 来生成 new subject renditions.

比之前方法的优点:

1.zero-shot subject-driven generation;

2.有效的 fine-tune 使得速度提升了20倍;

3.可以结合 ControlNet 或 prompt-to-prompt 来完成特定的任务。

引言

之前的 subject-driven generation,通过把 subject visual 嵌入 text embedding space。缺点是对于每个新的subject,需要上百次fine-tune 步骤。

multimodal control 的定义:

use both images and texts as control input(同时用 图像和文本 作为控制的输入)

模型使用 BLIP2的 vision-language encoder 和 LDM

BLIP2的encoder:使用 subject image 和 category text 作为输入,产生 text-aligned 主题表示,再把这个嵌入到 prompt embedding 引导 SD 的生成。

提出两阶段预训练策略:

1.multimodal representation learning:

使得 BLIP2 基于输入的图像产生 text-aligned visual features。(输入:合成图像、类标签;输出:multimodal embedding 作为 subject representation)

2.subject representation learning task

SD模型基于 输入的visual features产生 novel subject renditions。(上个阶段产生的 subject representation 和 text prompt 结合 来引导生成 target image)

数据集:

出现在不同上下文的 input-target image pairs

论文效果:

1.zero-shot生成,出色的fine-tune 策略;

2.只用了 40-120步就完成了对于特定 subject 的采样,相比于 DreamBooth加速了20倍。

3.继承LDM的能力,无需fine-tune就可以支持各种主题的生成应用。

方法

3.1 使用BLIP2进行多模态表征学习

BLIP2包含两个模块:

①a frozen pre-trained image encoder,提取图像特征

②a multimodal encoder (Q-Former),目的为 图像文本对齐

(注:这里采用 一半的query tokens,输出16个特征)

BLIP2的三个目标函数

ITC, ITG, ITM

3.2 使用SD进行 主题表征学习

两个期待:

1. subject representation 可以很好的结合 text prompt;

2. 保留 扩散模型的能力。

模型架构

如上图所示,把 BLIP2的 multimodal encoer 和 SD的 Text encoder 连接起来。

[subject prompt]:multimodal encoder 输出的 subject visual representation,然后再通过 a feed-forward layer;

[text prompt]

上述两个 text 一同输入到 CLIP text encoder中,引导扩散模型的生成。

prompted context generation

数据集(input-target image pairs),使用合成图像作为输入,真实图像作为 扩散模型的输出。

给定包含主题的图像和文本,然后通过 CLIPSeg进行分割,置信度高的部分作为前景,低的部分作为不确定区域,其余部分作为背景。然后这三个部分组成 trimap。然后通过 alpha 混合将提取的主题合成到随机背景图像上。

3.3 微调 和 可控推理

Subject-specific Fine-tuning and Inference

以 text prompt embedding 和 mean subject embedding 为条件,以输出图像为target image,对扩散模型进行 fine-tune。

使用 ControlNet 进行结构控制

通过 残差连接 把 UNet 和 ControlNet 连接起来。

???

使用 Attention Control 来编辑主题驱动

4 实验

4.1 预训练数据集 和 细节

多模态表征学习

使用 BLIP-2 在 129M个图像文本对下面预训练,其中包含...

使用 BERT来初始化为 Q-Former

主题表征学习

来自 OpenImage-V6 的292K个图像的子集,移除了人类相关的主题。

从网站上获得了 59K个背景图像 来合成输入。

使用 SDv1.5 来作为扩散模型。

batch-size:6,学习率:2e-6,  500K steps,优化器:AdamW

在 16张A100 上面跑了6天。

4.2 实验结果

(1)zero-shot生成

(2)高效微调

(3)结构控制

(4)图像编辑

(5) 风格迁移

(6)主题插值

(7)定性比较

与 TextInversion、DreamBooth、InstructPix2Pix 

 消融实验

1.conduct multimodal representation learning

2.freezing text encoder of DM

3.giving subject text to the multimodal encoder

4.随机主题嵌入下降的预训练有助于更好地保持扩散模型的生成能力,从而有利于结果。我们进一步论证了主体表征学习的效果。

6 Conclusion

1.提出 BLIP-Diffusion,可以完成多模态控制的主题驱动的图像生成;

2.两个阶段的预训练策略;

3.可以和其他的模型连接起来完成更丰富的功能;

4.效果很好,zero-shot能力,以及相比于其他有20倍的加速。

自我感悟:

提供了 多模态控制 图像生成的一种方法。但是感觉过程比较麻烦,又训练这个又训练那个。

它可以结合controlnet、P2P。觉得这个想法还挺好的。

还要再理解的地方:

1.与其他模型的连接;

2.自己模型的训练;

3.代码

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/884222.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Object 类的常见方法

文章目录 一、对象创建和销毁方法:二、对象信息获取方法:三、对象比较方法:四、线程相关方法:五、锁相关方法:六、使用案例:1、对象创建和销毁方法:2、对象信息获取方法:3、对象比较…

使用Python调用Java的jar包

当使用JPype时,你可以按照以下步骤调用Java的JAR包: 1. 安装JPype库: 你可以使用pip来安装JPype库,运行以下命令: pip install JPype1 2. 导入JPype库并启动JVM: 在Python中导入JPype库…

C++_深究继承

文章目录 1. 继承的概念和定义1.1 继承的概念1.2 继承定义1.2.1定义格式1.2.2 继承关系和访问限定符 2. 基类和派生类对象赋值转换3.继承中的作用域4. 派生类的默认成员函数5. 继承和友元6. 继承与静态成员7. 菱形继承即菱形虚拟继承菱形虚拟继承 8. 继承的总结与反思 1. 继承的…

scope(三)

前面两节讲了没有scoped的可以直接修改,现在讨论下把scoped这个属性去掉会是怎么样 1.准备的两个页面 放置的两个时间属性。 2.有hash值的页面 3.对比:另外的页面 可以看出只修改了当前页面的值 4.去掉scoped对比 两个页面多发生了更改,scoped对当前的页面起到一个保护的作用…

C++ primer 3.1节 课后练习

练习1.9 编写程序&#xff0c;使用while循环将50到100的整数相加。 #include <iostream> using namespace std; int main(){int i50,sum0;while (i < 100) {sum sum i;i;}cout << sum;return 0; } 练习1.10: 除了运算符将运算对象的值增加1之外&#xff0c…

mac 可以进行单片机(stm32)的开发吗?

当涉及到在Mac上进行单片机开发时&#xff0c;是完全可行的。以下是为什么Mac适合单片机开发的解释&#xff1a;开发工具&#xff1a;针对STM32单片机&#xff0c;你可以使用多种开发工具。一个常用的选择是Segger Embedded Studio&#xff0c;它是一个功能强大的集成开发环境&…

Windows系统提权(一)

权限提升概述 windows系统常见的权限&#xff1a; 用户权限 管理员权限 系统权限 访客权限 什么是提权 权限提升&#xff08;privilege escalation&#xff09;&#xff1a;攻击者通过安全漏洞把获取到的受限制的低权限用户突破限制&#xff0c;提权到高权限的管理员用户&…

opentcs初次运行

openTCS简介 openTCS是一个开放的交通控制系统&#xff0c;可以实现机器人的任务分配、路径规划、调度等一系列的功能&#xff0c;也有相应的仿真平台&#xff0c;既可以使用该软件及仿真平台进行基本的任务分配、路径规划等操作&#xff0c;也可以基于该平台进行二次开发&…

机器学习重要内容:特征工程之特征抽取

目录 1、简介 2、⭐为什么需要特征工程 3、特征抽取 3.1、简介 3.2、特征提取主要内容 3.3、字典特征提取 3.4、"one-hot"编码 3.5、文本特征提取 3.5.1、英文文本 3.5.2、结巴分词 3.5.3、中文文本 3.5.4、Tf-idf ⭐所属专栏&#xff1a;人工智能 文中提…

2023“钉耙编程”联赛 Day 3 L 题 Inference 题解

原题描述 给定 m m m 个特征&#xff0c;你想基于大量的数据,再通过 Alice \text{Alice} Alice 的前 m − 1 m−1 m−1 个特征的值推断出她的最后一个特征的值。 特征之间的关系可以表示为一个有向无环图&#xff0c;其中一个节点 A A A 指向一个节点 B B B 表示 B B B…

Python基础语法入门(第二十天)——文件操作

一、基础内容 在Python中&#xff0c;路径可以以不同的表现形式进行表示。以下是一些常用的路径表现形式&#xff1a; 1. 绝对路径&#xff1a;它是完整的路径&#xff0c;从根目录开始直到要操作的文件或文件夹。在Windows系统中&#xff0c;绝对路径以盘符开始&#xff0c;…

Linux系列讲解 —— FTP协议的应用

简单介绍一下FTP文件传输协议在linux系统中的应用。 目录 0. 基本概念1. FTP Server1.1 安装FTP Server1.2 FTP Server开启和关闭1.3 查看FTP Server是否开启1.4 FTP服务器配置 2. FTP Client2.1 lftp2.2 ftp2.3 sftp2.4 文件资源管理器集成的ftp和sftp 3. ftp常用命令 0. 基本…

【C++11保姆级教程】auto和decltype

文章目录 前言总结一、auto1.初识auto关键字 2.auto使用二、decltype1.初识decltype2.使用decltype 总结 前言 在C11中引入了一些新的关键字和特性&#xff0c;其中包括auto和decltype。这两个关键字提供了更方便、更灵活的类型推断机制&#xff0c;使得代码编写更加简洁和可读…

TCS3200颜色识别模块

TCS3200颜色识别模块 TCS3200简介 供电电源(2.7V to 5.5V)可配置颜色滤波器和输出信号频率高分辨率光强转换到频率(工作原理) TCS3200工作原理 TCS3200是TAOS公司推出的可编程彩色光到频率的转换器&#xff0c;它把可配置的硅光电二极管与电流频率转换器集成在一个单一的CMO…

Python找出列表中出现次数最多的元素三种方式

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 方式一&#xff1a; 原理&#xff1a;创建一个新的空字典&#xff0c;用循环的方式来获取列表中的每一个元素&#xff0c;判断获取的元素是否存在字典中的key&#xff0c;如果不存在的话&#xff0c;将元素作为key&#xf…

如何保证事件的闭环处理

所谓的闭环&#xff0c;就是指告警发出、认领、协作处理、问题恢复、复盘改进的整个过程。 排班&#xff0c;专人做专事 ​这个手段听起来并不高大上&#xff0c;但确实非常有效。值班期间虽然提心吊胆的&#xff0c;生怕背锅&#xff0c;但因为是轮班制&#xff0c;心里总有…

C语言笔试训练【第12天】

文章目录 1、请阅读以下程序&#xff0c;其运行结果是&#xff08; &#xff09;2、假设编译器规定 int 和 short 类型长度分别为32位和16位&#xff0c;若有下列C语言语句&#xff0c;则 y 的机器数为&#xff08; &#xff09;3、下列程序的输出结果是什么&#xff08; &…

LC-链表的中间节点(遍历)

LC-链表的中间节点&#xff08;遍历&#xff09; 链接&#xff1a;https://leetcode.cn/problems/middle-of-the-linked-list/description/ 描述&#xff1a;给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个…

OpenCV-Python中的图像处理-图像直方图

OpenCV-Python中的图像处理-图像直方图 图像直方图统计直方图绘制直方图Matplotlib绘制灰度直方图Matplotlib绘制RGB直方图 使用掩膜统计直方图直方图均衡化Numpy图像直方图均衡化OpenCV中的直方图均衡化CLAHE 有限对比适应性直方图均衡化 2D直方图OpenCV中的2D直方图Numpy中2D…

基于Python科研论文绘制学习 - task1

绘制原则 必要性&#xff08;避免图多字少&#xff09; 易读性&#xff08;完整准确的标题、标签&#xff09; 一致性&#xff08;配图需要和上下文一致&#xff09; 尝试运行代码的时候出现了很多bug&#xff0c;基本都是围绕Scienceplots库的&#xff0c;在更新pip、pandas…