一、背景 & 方法
传统的目标检测将分类和定位耦合在一起,对训练的数据集有较高的要求,数据集需要包括物体的种类,以及bbox位置信息,这就导致了要检测多少类就需要多少类的数据标注。
而detic将分类与定位解耦成两个问题,在定位时不再那么依赖标注数据。
Detic的数据集分为两类,一种是传统目标检测数据集,一种是label-image数据(可以类比为图像分类的数据,没有bbox信息)。
对于第一种数据来说,训练时就按照传统目标检测的流程进行,得到分类权重$W$以及bbox预测分支$B$,对于第二种数据来说,我们只训练来自固定区域的特征进行分类。使用这两种数据可以训练种类更多的分类器(跟传统的目标检测相比降低了数据获取的成本)。
对于采用第二种数据如何定位,文中没有细说(文中的重点是分类),但是提到了用的是弱监督学习的思想,目前在弱监督学习的定位中采用最多的方法是 Gard-Cam(detic可能不是用的这个,但是感觉应该是一样的思想)。Gard-cam起初是用来可视化CNN任务的,稍作修改即可用来定位。
二、初步行动
使用对象检测和图像分类数据集训练对象检测器;
提出了一种利用图像监督来学习对象检测器的简单方法,包括对于没有框标签的类。我们首先描述目标检测问题,然后详细说明我们的方法;
2.1 问题的设置
给定一个图像,目标检测解决了两个子问题:
(1)定位:找到所有具有其位置的对象,表示为方框$b_j$;
(2)分类:给第$j$个对象分配一个类标签$c_j$$\in$$C^{test}$。
这里$C^{test}$是用户在测试时提供的类词汇。在训练过程中,我们使用一个检测数据集$D^{det}$ ,其中词汇表$C^{det}$同时具有类和框标签。我们还使用图像分类数据集$D^{cls}$ ,其中词汇表$C^{cls}$只有图像级别的类标签。词汇表$C^{test}$、$C^{det}$、$C^{cls}$可能重叠,也可能不重叠。
传统的对象检测认为$C^{test} = C^{det}$, $D^{cls} =∅$。主要的目标检测器遵循两阶段框架。
第一阶段,称为区域建议网络(RPN),取图像I并生成一组对象建议$\{(b, f, o)_j\}$,其中$f_j$是$d$维区域特征,$o$是对象性得分。第二阶段取对象特征,输出每个对象的分类评分和细化后的盒子位置,$s_j = Wf_j$, $b_j = Bf_j + b_j$,其中$W$和$B$分别是分类层和回归层的学习权重。
我们的工作重点是在第二阶段提高分类。在我们的实验中,RPN和边界框回归器并不是当前的性能瓶颈,因为现代探测器在测试中使用了过多的建议数量(每张图像< 20个对象使用1K个建议)。
开放词汇表对象检测允许$C^{test} \neq C^{det}$。只需将分类权重$W$替换为类名的固定语言表征,就可以将传统检测器转换为开放词汇表检测器。区域特征被训练以匹配固定语言嵌入。我们遵循 Gu 使用CLIP嵌入作为分类权重。理论上,这个开放词汇表检测器可以检测任何对象类。然而,在实践中,它产生的结果并不令人满意,如图1所示。我们的方法使用图像级监督来改进对象检测,包括在开放词汇表设置中。
2.2 Detic:带有图像类的检测器
本文提出的方法也采用了经典的两阶段范式,在第一阶段采用直接提取RPN的方法,第二阶段对做细化的具体类别进行assign和识别。
而实质上的检测是在第一阶段就可以完成的,而我们的目标是使得分类的分支具备检测出novel class的能力。因此本文提出了基于image-supervised loss 的Detic。
如图所示,我们的方法利用了检测数据集$D^{det}$中的盒子标签和分类数据集$D^{cls}$中的图像级标签。在训练过程中,我们使用来自这两种数据集的图像组成一个mini-batch。对于带有框标签的图像,我们遵循标准的两阶段检测器训练。对于图像级标记图像,我们只训练来自固定区域的特征进行分类。因此,我们只计算具有GT标签的图像的定位损失(RPN损失和边界盒回归损失)。
下面我们将描述我们对图像级标签的修改分类损失。来自弱标记数据集Dcls的样本包含一个图像I和一组$K$个标签$\{c_k\}_{k=1}^K$。我们使用区域提议网络提取$N$个对象特征$\{(b, f, o)j\}_{j=1}^N$。基于预测的方法尝试将图像标签分配给区域,同时训练定位和分类能力。相反,我们建议使用图像标签$\{c_k\}_{k=1}^K$的简单方法,只提高分类。我们的关键思想是使用一种固定的方式将图像标签分配给区域,并避开复杂的基于预测的分配。我们允许固定分配方案遗漏某些对象,只要它们遗漏的对象比基于预测的对应对象少,从而导致更好的性能。
2.3 损失
如果对于一个特定类别,其训练数据存在检测的标注,则按照正常的两阶段的端到端模型进行训练。
而当训练数据只有类别标签的时候,而没有具体的RPN标注,则按照最大似然的理论,则可以把RPN中面积最大的那个检测框里的特征拿去学分类分支。损失函数采用了BCE的loss。
第一个想法是用整个图像作为一个新的“提案”框:
$$ L_{image-box}=BCE(Wf^{’},c) $$
$$ BCE(s,c)=-\log \sigma(s_c)-\sum_{k\neq c}(1-\sigma(s_k)) $$
为二元交叉熵损失,$\sigma$为 sigmoid 激活。因此,我们的损失使用来自同一个“提议”的特征来解决所有类$\{c_k\}$的分类问题。
那么为什么不采用交叉熵的损失函数呢?这是因为由于分类中一直会加入新的类别,所以类别数目是不确定的,利用交叉熵这个时候就显得有些不合理了,所以对每个类采用BCE。
实际上,图像框可以用更小的框代替。我们引入两个备选方案:具有最大对象分数的提案或具有最大大小的提案:
$$ L_{max-object-score}=BCE(Wf_j,c),j=argmax_jo_j\\L_{max-size}=BCE(Wf_j,c),j=argmax_j(size(b_j)) $$
三、论文中图片的解读
top:来自强开放词汇表LVIS检测器的典型检测结果,检测器会漏掉“公共类”的对象;
bottom:每个类中LVIS、ImageNet和Conceptual Captions中的图像数量。分类数据集的词汇量比检测数据集大得多。
本文做的是large-vocabulary detection方向的研究,与general detection和weakly-supervised detection的区别在于,其训练集中包含一部分有检测标注的数据和一部分只有image-level标注的数据,其测试集中包含novel class。我们的方法在使用分类数据时,通过单独监督分类子问题,完全绕过了基于预测的标签分配过程。这也使我们的方法能够学习新类的检测器,这将是不可能预测和分配的。
左:标准检测需要GT的候选框,不能利用图像级标签
中:现有的基于预测的弱监督检测方法通过将其分配给检测器的预测框来使用图像级标签。不幸得是,这个赋值很容易出错,特别对于大词汇量检测;
右:Detic简单地将图像标签分配给最大尺寸提案
四、实验
论文比较了一些基于 prediction-based 的方法,这些方法将图像标签分配给基于预测的proposal。
上表展示了论文提出的不是 prediction-based 的方法的结果。在两个图像全监督数据集,我们提出的更简单的所有变体方法优于基于复杂预测的对应方法。 在新类上,相较于Detic, 在ImageNet上,论文提出的基于最佳预测的方法提供了约 4.2 点,带来了较为显着的增益。从实验结果来看,论文提出的方法的确做到了 "Detecting Twenty-thousand Classes"。