AIGC系列之:GroundingDNIO原理解读及在Stable Diffusion中使用

目录

1.前言

2.方法概括

3.算法介绍

3.1图像-文本特征提取与增强

3.2基于文本引导的目标检测

3.3跨模态解码器

3.4文本prompt特征提取

4.应用场景

4.1结合生成模型完成目标区域生成

4.2结合stable diffusion完成图像编辑

4.3结合分割模型完成任意图像分割

1.前言

《Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection》

        Grounding DINO作者来自清华大学和IDEA(International Digital Economy Academy),Grounding DINO有非常强大的检测功能,提供和文本prompt进行结合自动进行检测,不需要手动参与。输入文本即可输出文本对应的检测对象。称之为目前的Detect Anything。与Mata发布的Segment Anything可以进行结合发挥更加强大的功能。至此CV界的几大研究领域都有了相关的大模型应用,Detect Anything,Segment Anything, Stable Diffusion, Recongnize Anything, Tracking Anything...

2.方法概括

        Grounding DINO是一种开集目标检测方案,将基于Transformer的检测器DINO与真值预训练相结合。开集检测 关键 是引入自然语言至闭集检测器,用于open world的检测。 可实现对新颖类别进行检测,特定属性目标识别。在COCO数据集上零样本检测达到52.5AP,在COCO数据集finetune后达到63AP。主要优势如下:

  • 基于Transformer结构与语言模型接近,易于处理跨模态特征;

  • 基于Transformer的检测器有利用大规模数据集的能力

  • DINO可以端到端优化,无需精细设计模块,比如:NMS

3.算法介绍

        对于图片-文本对,Grounding DINO可以输出多对目标框及对应名词短语。Grounding DINO采用双编码器,单解码器结构。图像backbone 用于提取图像特征,文本backbone用于提取文本特征,特征增强用于融合图像及文本特征,语言引导的query选择模块用于query初始化,跨模态解码器用于框精细化。流程如下:

  • 图像及文本backbone分别提取原始图像及文本特征;

  • 特征强化模块用于跨模态特征融合;

  • 通过语言引导查询选择模块从图像特征中选择与文本对应的跨模态query;

  • 跨模态解码器从跨模态query中提取需要特征,更新query;

  • 输出query用于预测目标框及提取对应短语。

3.1图像-文本特征提取与增强

        给定一个(图像,文本)对,用 Swin Transformer用于提取图像特征,BERT用于提取文本特征,特征强化层如图3中block2,利用Deformable self-attention强化图像特征,原始的self-attention强化文本特征,受GLIP影响,增加图像到文本跨模态以及文本到图像跨模态,帮助对齐不同模态特征。

3.2基于文本引导的目标检测

        引导文本进行目标检测,作者设计语言引导的query选择机制选择与文本更相关的特征作为解码器的query。算法下图所示。输出num_query索引,据此初始化query。每个decoder query包括两部分:content及position。位置部分公式化为dynamic anchor boxes,使用编码器输出进行初始化;内容部分训练中可学习,查询数量。

3.3跨模态解码器

        跨模态解码器结合图像及文本模态信息,跨模态query经过self-attention层,image cross-attention层与图像特征结合,text cross-attention层与文本特征结合,以及FFN层。与DINO相比,每个解码器都有一个额外的文本cross-attention层,引入文本信息,便于对齐模态。

3.4文本prompt特征提取

        之前工作中探究了两种文本prompt,句子层级表征将整个句子编码为一个特征,移除了单词间影响;单词级表征能够编码多个类别,但引入不必要依赖关系;为避免不相关单词相互作用,作者引入attention mask,此为sub-sentence级表征,既保留每个单词特征,又消除不相关单词间相互作用。

4.应用场景

4.1结合生成模型完成目标区域生成

4.2结合stable diffusion完成图像编辑

人脸编辑,换发型,换背景,换头

替换宠物并生成想要的内容

4.3结合分割模型完成任意图像分割


http://www.niftyadmin.cn/n/5223446.html

相关文章

解决electron-build打包后运行app报错:cannot find module xxx

现象: 关于这个问题查了很多资料,也问了chatgpt都没有找到答案。 最后只能靠自己了。 于是冷静下来回想一下细节。突然发现了一个特别点。 eletron-builder打包时,强制要求eletron-builder和eletron必须都放在devDependencies 否则&#…

qt 5.15.2读取csv文件功能

qt 5.15.2读取csv文件功能 工程文件.pro 内容: QT core#添加网络模块 QT networkCONFIG c17 cmdline# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINES QT_DISABLE_DEPREC…

11.27二叉查找树,遍历二叉树,层序(判断是不是完全二叉树),根据遍历序列重构二叉树,递归输入建树(树的定义,结构体细节,typedef)

如果left<right&#xff0c;就表明其之间还有元素&#xff0c;即左右指针重合&#xff0c;区间只有一个元素也被包含其中&#xff1b; left<right,就表明递归过程中&#xff0c;只允许区间有两个及以上的元素&#xff0c;不允许区间只有一个元素&#xff0c;那么对应地&…

【古月居《ros入门21讲》学习笔记】15_ROS中的坐标系管理系统

目录 说明&#xff1a; 1. 机器人中的坐标变换 tf功能包能干什么&#xff1f; tf坐标变换如何实现 2. 小海龟跟随实验 安装 ros-melodic-turtle-tf 实验命令 运行效果 说明&#xff1a; 1. 本系列学习笔记基于B站&#xff1a;古月居《ROS入门21讲》课程&#xff0c;且使…

Python与设计模式--迭代器模式

23种计模式之 前言 &#xff08;5&#xff09;单例模式、工厂模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式、(7)代理模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式、桥梁模式、&#xff08;11&#xff09;策略模式、责任链模式、命令模式、中介者模…

【Python 训练营】N_13 遍历字符串

题目 将字符串生成迭代器&#xff0c;逐个访问字符串中每个字符&#xff0c;并大写合并输出。 分析 字符串转换迭代器&#xff0c;for循环遍历字符串。 答案 # 方法一 s1 Python l [] for i in iter(s1): # 使用iter()函数生成迭代器l.append(i.upper()) print(.join(l)…

高频Latex公式速查表,写论文技术博客不愁了

常见上下标X_{2}X^{2}\hat{X}\bar{X}\frac{1}{X}常见希腊字母\alpha \beta \gamma \delta \varepsilon \eta \theta \rho \sigma \phi \varphi \omega常见数学符号\leq \geq \neq\approx 其他\sum \prod \int \bigoplus \forall \exists \times \setminus \bigotimes \bigodot …

easyExcel自定义导出,指定列,设置请求头背景色,加入合计行,设置合计行字体,背景色等等

效果图 1.引入easyExcel pom <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.1</version></dependency> 2.工具类-自定义样式handler-CustomCellWriteHandler import java.util…