赞
踩
论文链接:http://arxiv.org/abs/2104.13921
当前目标检测最大的挑战是扩大检测数据的难度很大,很多数据的质量不高,且这个世界上存在太多的object不可能全部检测到。OVD(Open-Vocabulary Object Detection)为解决这一问题提供了新的思路,具体的OVD任务定义可详见《Open-Vocabulary Object Detection Using Captions》。随着多模态大模型的进一步发展,我们可以借用其强大的能力来承接OVD任务。本文提出ViLD,也就是一种通过视觉语言知识蒸馏的训练方法,来完成OVD任务。具体的方法是将预训练的开放词汇图像分类模型(教师)中的知识提炼到两级检测器(学生)中。具体来说,使用教师模型对object proposal的类别文本和图像区域进行编码。然后训练一个学生检测器,其检测到的框的区域嵌入与教师推断的文本和图像嵌入对齐。
实验证明ViLD好于现有方法。
本文的目标是训练一个开放词汇对象检测器,仅使用基本类别中的检测注释来检测文本输入描述的任何新类别中的对象。
现有的方法为了提高检测词汇量的方法都是收集更多具有标记的图像,但是根据Zipf定律,现实中目标都是遵从长尾分布的,不可能通过标签标记所有目标,况且这种方法也会使收集数据变得格外昂贵。
随着CLIP和ALIGN的发展,在图像文本联合训练上取得了很好的效果,但是这都是图像级(image)的成就,OVD是目标级(object)这还有很多挑战。这篇文章考虑借用预训练的开放词汇分类模型的知识来实现开放词汇检测。将OVD划分为两个子问题,一是生成object proposal,二是开放词汇图像分类。作者使用基本类别中的示例来训练区域提议模型(region proposal model)。然后,使用预训练的开放词汇图像分类模型对裁剪后的对象提案进行分类,其中可以包含基本类别和新类别。这种方法的推理速度非常慢,因为它将对象提案一一输入到分类模型中,为了解决这一问题,作者使用ViLD训练两阶段的开放词汇检测器。ViLD包含两个组件,一个是text embedding,另一个是image embedding。在ViLD-text中,作者通过将类别名称输入预训练的文本编码器来获得文本嵌入。然后推断的文本嵌入用于对检测到的区域进行分类;在ViLD-image中,通过将对象建议输入预训练的图像编码器来获得图像嵌入。然后我们训练一个 Mask R-CNN,其检测到的框的区域嵌入与这些图像嵌入对齐。与 ViLD-text 相比,ViLD-image 从基本类别和新类别中提取知识,因为提议网络可以检测包含新对象的区域,而 ViLD-text 只从基本类别中学习。蒸馏使 ViLD 在选择教师和学生架构方面具有通用性。
开放词汇检测的第一个挑战是定位新对象。作者对Mask RCNN进行了修改,替换定位模块为“与类无关”的模块,对于每个感兴趣区域,这模块仅预测所有类别的单个bbox和单个mask,而不是每个类别一个预测。“与类无关”的模块可以推广到新的对象。
一旦候选对象被定位,作者重用预训练的开放词汇图像分类器来对每个区域进行分类以进行检测。
对于Image-embedding,作者用基类和提取的region proposal训练一个建议网络,并裁剪调整大小,将其喂给预训练图像编码器去计算图像embedding。裁剪调整成1和1.5嵌入,然后进行归一化。
对于Text-embedding,作者喂给文本编码器的形式是提示模板
然后计算图像和文本嵌入之间的余弦相似度。应用 softmax 激活,然后应通过NMS以获得最终检测,但是因为每个裁剪区域都要过编码器,会导致很慢。
通过ViLD的方法来提升推理速度过慢的问题,对于ViLD-text,作者使用Text-embedding替换普通的分类器,对于与CB中任何groundtruth不匹配的提案,它们被分配到背景类别。
由于文本“background”不能很好地代表这些不匹配的提案,因此我们允许背景类别学习自己的嵌入 ebg。我们计算每个区域嵌入
R
(
φ
(
I
)
,
r
)
R(φ(I), r)
R(φ(I),r) 和所有类别嵌入(包括 T(CB) 和 ebg)之间的余弦相似度。
损失函数为
对于ViLD-image其目的是将教师图像编码器中的知识提取到学生检测器中,具体来说,需要将区域嵌入
R
(
ϕ
(
I
)
,
r
~
)
\mathcal{R}(\phi(I),\tilde{r})
R(ϕ(I),r~)与前面引入的图像嵌入
V
(
crop
(
I
,
r
~
)
)
\mathcal{V}(\operatorname{crop}(I,\tilde{r}))
V(crop(I,r~))对齐,为了使训练更加高效,作者为每个训练图像离线提取 M 个提议
r
~
∈
P
~
\tilde{r}∈ \tilde{P}
r~∈P~,并预先计算 M 个图像嵌入。
损失函数
综上,ViLD的总的损失函数如下所示
下面是整个ViLD的架构和训练目标
本节作者探索模型集成,以达到更好的基类与新类的检测效果。首先,将ViLD-text检测器与开放词汇图片分类相结合,这样做的原因是直觉上ViLD-image与老师模型相似,直接使用可以提高性能,作者使用训练过的ViLD-text检测器获得k个候选区域及其置信度。
p
i
,
ViLD-text
p_{i,\text{ViLD-text}}
pi,ViLD-text代表属于类别i的proposal的置信度,把
crop
(
I
,
r
~
)
\operatorname{crop}(I,\tilde{r})
crop(I,r~)喂给开放词汇分类模型得到老师模型的置信度
p
i
,
c
l
s
p_{i,cls}
pi,cls。由于知道这两个模型在基本类别和新类别上具有不同的性能,因此为整体引入了加权几何平均值:
作者也注明了,这种推理方式速度比较慢。下面作者给出了一种不同的集成方法,此外在ViLD中,ViLD-text的交叉熵损失和ViLD-image的L1蒸馏损失应用于同一组区域嵌入,这可能会引起争用。
相反,在这里作者分别学习 ViLD-text和 ViLD-image的两组嵌入,具有相同架构的两个独立头。text embedding应用于这两个区域嵌入,以得到 p i , ViLD-text p_{i,\text{ViLD-text}} pi,ViLD-text和 p i , ViLD-image p_{i,\text{ViLD-image}} pi,ViLD-image,更改上式,用 p i , ViLD-image p_{i,\text{ViLD-image}} pi,ViLD-image替换 p i , c l s p_{i,cls} pi,cls。作者将其命名为ViLD-ensemble。
见原文
LVIS和COCO
仅使用基本类别进行训练可以在 LVIS 上实现新类别的可比平均召回率 (AR)。
使用 CLIP 进行开放词汇检测可以实现对新类别的高检测性能。应用 CLIP 对裁剪后的区域提案进行分类,无论有或没有集成客观性分数,并报告掩模平均精度(AP)。新类别(APr)的表现远远超出了监督学习方法。但整体表现仍落后
ViLD及其变体的性能对比。
与现有方法在 COCO 数据集上的性能比较
ViLD的泛化能力
(直接机翻了)
我们提出了 ViLD,一种通过从开放词汇图像分类模型中提取知识的开放词汇目标检测方法。 ViLD 是第一个在具有挑战性的 LVIS 数据集上评估的开放词汇检测方法。它在具有 ResNet50 主干的 LVIS 上的新颖类别上获得了 16.1 AP,在相同的推理速度下超越了其监督对应物。有了更强的教师模型(ALIGN),性能可以进一步提升到26.3新颖的AP。我们证明从 LVIS 学到的检测器可以直接转移到其他 3 个检测数据集。我们希望简单的设计和强大的性能使 ViLD 成为检测长尾类别的可扩展替代方法,而不是收集昂贵的检测注释。
ViLD之前也是早有耳闻,现在的很多最新的工作也是基于ViLD的思想去做的。作为多模态大模型与OVD任务结合的开山之作,基本奠基了两者的工作模式,为OVD任务提出了新的解决思路,不过放到现在来看,更多的工作是以此为基础在上面进行一些改进,这样的模式是很难改变了。
当然后续也有很多有亮点的工作,笔者会慢慢学习,持续与大家分享~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。