目录
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》
-
github: https://github.com/IDEA-Research/GroundingDINO
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完成图像编辑
人脸编辑,换发型,换背景,换头
替换宠物并生成想要的内容