Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection论文笔记

Title:Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection
Code

1、visual grounding任务简介

visual grounding涉及计算机视觉和自然语言处理两个模态。简要来说,输入是图片(image)和对应的物体描述(sentence\caption\description),输出是描述物体的box。听上去和目标检测非常类似,区别在于输入多了语言信息,在对物体进行定位时,要先对语言模态的输入进行理解,并且和视觉模态的信息进行融合,最后利用得到的特征表示进行定位预测。
visual grounding按照是否要对语言描述中所有提及的物体进行定位,可以进一步划分为两个任务:

  1. Phrase Localization:又称为Phrase Grounding,对于给定的sentence,要定位其中提到的全部物体(phrase),在数据集中对于所有的phrase都有box标注。
    在这里插入图片描述

  2. Referring Expression Comprehension(REC):也称为Referring expression grounding。每个语言描述(这里是expression)只指示一个物体,每句话即使有上下文物体,也只对应一个指示物体的box标注。

在这里插入图片描述

2、方法

(1)模型结构

在这里插入图片描述

  1. Swin Transformer用于提取图像特征,BERT用于提取文本特征;
  2. 特征强化模块用于跨模态特征融合(Deformable self-attention强化图像特征,原始的self-attention强化文本特征);
  3. 通过语言引导查询选择模块从图像特征中选择与文本对应的跨模态query;
  4. 跨模态解码器从跨模态query中提取需要特征,更新query(与DINO相比,每个解码器都有一个额外的文本cross-attention层,引入文本信息);
  5. 输出query用于预测目标框及提取对应短语。

(2)Feature Enhancer

分别利用Deformable Self-Attention和Self-Attention来增强image features和text features,然后利用GLIP中的image-to-text 和 text-to-image cross-attention实现跨模态特征融合。

在这里插入图片描述

(3)Language-Guided Query Selection

为了让文字信息更好地指导目标检测,作者设计了一个language-guide query selection模块,用以筛选与输入文字特征相似更高的图像特征用作decoder的qureies。该模块的PyTroch伪代码如下图所示,其中num_query是用作decoder的query数量,设置为900;num_img_tokens和num_text_tokens是image和text的token数量。
在这里插入图片描述

language-guide query selection输出了num_query个indices。沿用DINO的设计,作者采用mixed query selection的方式来初始化decoder query,每一个query包含两部分:content part和positional part。其中,positional part用动态anchor boxes来实现,content part在训练中被设置成可学习的。

(4)Cross-Modality Decoder

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

在这里插入图片描述

(5)Sub-Sentence Level Text Feature

以往的工作中主要采用两种text prompt,分别为sentence level和word level的表达,如下图所示:

在这里插入图片描述

  • sentence level的方式将整句话编码为一个特征,但是它只保留与GT相关的短语。例如上图(a)所示,“A cat is sleeping on a table"只保留"A cat"和"a table”,这种方式忽视了句子中某些更细粒度的信息。

  • word level的方式能够同时编码多个类别的名字,但是却引入了类别之间很多不必要的依赖。如图(b)所示,很多没有关系的类别也产生了交互。

  • 为了避免上述问题,作者引入了attention mask来屏蔽不相关类别名之间的联系,称作sub-sentence level的方式,如上图(c)所示。

(6)损失函数

Grounding DINO采用L1 loss和GIOU loss用作box regression,计算预测目标和文字token之间的contrastive loss用于分类。

3、实验结果

(1)消融实验

在这里插入图片描述

(2)Zero-Shot Transfer of Grounding DINO

在这里插入图片描述

在稀有类别上,GLIP性能更佳,可能由于900个query的设计,限制了对长尾目标的能力;使用更多数据,Grounding DINO带来更大增益。
在这里插入图片描述

参考

猜你喜欢

转载自blog.csdn.net/xijuezhu8128/article/details/132476145