1 GLIP:
十分钟解读GLIP:Grounded Language-Image Pre-training - 知乎
Grounded Language-Image Pre-training(GLIP)论文笔记 - 知乎
GLIP的主要贡献如下:
- 将phrase grounding和目标检测任务统一,将image和text prompt同时输入到目标检测网络中,prompt中带有图片中所有类别的详细描述。
- GLIP采用了丰富的预训练数据,使得它的预训练模型可以更轻松地迁移到下游任务中。预训练的GLIP在COCO数据集上finetune之后达到了60.8 AP(2017val)和61.5AP(test-dev),超过了目前的SOTA模型。
- One model for all,GLIP可以迁移到多样化的任务中。它在不使用额外标注的情况下,在coco val2017和LVIS数据集上分别达到了49.8AP和26.9AP
1.1 Unified Formulation(统一目标检测和phrase grounding任务)
一个典型的目标检测网络的结构如下:
- 将图片输入到visual encoder ���� 中提取特征 � ,visual encoder通常是CNN、Transformer等backbone;
- 将特征 � 输入到classifier � 和bbox regressor � 中得到分类结果和bbox回归结果;
- 分别计算分类损失和框回归损失,整体Loss公式: �=����+����
上述计算分类Loss的流程可以用公式表达为:
其中 � 代表target,即gt的意思; � 是分类器参数。
与上述分类器不同,GLIP将目标检测任务与phrash grounding统一,将目标检测中的每个region与text prompt进行匹配以实现分类效果。举例来说,假设我们有[person, bicycle, car, ..., toothbrush]等类别,我们可以设计一个这样的prompt,其中每一个类别名字都是一个phrase (GLIP 将其构建成了一个 phrase grounding 任务,将所有待检测的类别整合成了一个句子,然后送入 text encoder 进行编码并和图像特征进行对齐):
我们可以通过添加更加精确的描述或者加载一些pre-trained language model来提升prompt的质量。例如在使用预训练的BERT模型时,像“person. bicycle. car. ... . toothbrush.”这样的prompt表现会更好。
grounding模型中的分类流程可以用公式表示为:
其中 � 是language encoder得到的文字特征, ������� 的计算过程如下如图示:
在传统的目标检测网络中,每个类别都会分配一个{0,1}的标签用于classifier计算loss。然而,在grounding model中,一个短语(phrase)可能包含多个word tokens,这就导致一个类别可能对应多个子单词(sub-words)。针对这个问题,本文是这样做的:当这些sub-words的phrase与目标region匹配时,每个positive sub-word都与目标region所匹配。例如,吹风机的phrase是“Hair dryer”,那么吹风机的region就会与“Hair”和“dryer”这两个词都匹配,如下图所示:
1.2 Pre-training with Scalable Semantic-Rich Data (通过大量语义丰富数据训练的预训练模型)
GLIP训练采用的数据包含了超过2000个类别,并且是bbox+phrase grounding的标注。另外,作者通过实验证明,GLIP可以轻松的扩展到非常罕见的类别上,使用80万金标准训练的模型就可以在另外200万罕见类别测试机上获得很大的提升。
GLIP还提供了一种快速丰富训练数据集的方式:
1)首先,用金标准训练一个teacher模型;
2)然后,用teacher模型在新数据上进行预测,获取到检测框和对应的名词,也就是伪标注;
3)最后,用一个student模型同时在金标准数据集和伪标注数据集上训练。
为什么student模型可能会优于teacher模型呢?
作者是这样解释的:起初teacher可能并不知道类似于上图中疫苗(vaccine)和绿宝石(turquoise)的具体概念,但是它可以根据文字的上下文去猜测,例如根据“a small vial”(一小瓶),GLIP定位到了这个小瓶子,然后vaccine就可以跟这个小瓶子关联起来了,这种情况被称为“educated guess”。而在训练sutdent模型时,这些“educated guess”就变成了一个强监督信息,从而让模型真正认识疫苗(vaccine)。
2 DetCLIP
参考:【多模态】16、DetCLIP | 构建超大词汇字典来进行开放世界目标检测_呆呆的猫的博客-CSDN博客
一、背景
开放世界目标检测是一个通用且有挑战的方向,其目标是要识别和定位任意类别的目标
最近的工作 GLIP 将其构建成了一个 phrase grounding 任务,将所有待检测的类别整合成了一个句子,然后送入 text encoder 进行编码并和图像特征进行对齐
在 text encoder 中,会学习所有类别之间的 attention,这其实是没有必要且低效的,尤其是当类别数量增加时,效率更低
基于此,作者提出了 DetCLIP,dictionary-enriched visual-concept paralleled pre-training method,这里的 concept 指的就是检测任务中的类别名称、grounding 任务中的 phrase 等
设计了一个并行的结构来提高效率,不会将整个 prompt text 送入 text encoder,而是将每个 concept 都作为一个独立的个体,将所有的 concept 分别送入不同的 text encoder
这样能够避免模型受到不相关类别无效关联,并且能给每个 concept 都产生一个长描述
另外,预训练时候使用的数据集一般域间差别比较大且命名也有较大的不同,比如一个相同类别的目标在在不同数据集中的命名可能是不同的
这样就很难直接从命名上来获得这些类别之间的关联
所以作者重新构建了一个 concept dictionary,丰富联合不同数据集进行 pre-training 的 prompt text
首先,从现有的数据集中组合了一个 dictionary
然后,基于上面的 dictionary,DetCLIP 能够自动丰富概念和描述
详细解释参考上文【多模态】16、DetCLIP | 构建超大词汇字典来进行开放世界目标检测_呆呆的猫的博客-CSDN博客