前言
小样本目标检测解决的问题是,在训练一个检测器时,每个目标类别只有一小部分被标记的样本作为训练数据。本文提出了一个以元学习为基础的框架,如下图所示。这个框架的设计思想是充分探索从一些基础目标中学到的知识,从而通过少量样本从新颖类别中检测目标。作者发现在一些具有丰富样本的基础类别上训练以CNN为基础的检测模型时,可以在这个模型的顶层学到特定于某些目标属性的中间特征,这些特征可以隐式组成不同目标的高级表示。因此,本文提出的框架的作用就是学习如何调整这些中间特征并相应地检测新颖的目标。
该框架包括一个提供基础特征的检测模型,和一个轻量级的元模型,这个元模型的作用是通过参考一些样本来学习使基础特征能够适应其它新颖的目标。为了适应速度更快,只要求这个元模型学习预测基本特征的权重系数,并调整其对最终检测的贡献。元模型的输入是 N N N个类别的样本,然后预测 N N N个特征的权重,每个特征权重都通过端到端的训练来负责检测相应的类别。通过不同的特征权重,置信度和边界框坐标都能够得到充分的调整。最后置信度还要用一个softmax层来校正结果。如上图所示,整个小样本检测模型的训练分为两个阶段:
- 首先,在具有充足样本的基础类别上训练一个基础检测模型和一个元模型,学习基础类别的特征表示,这些特征就是中间特征;
- 然后,在少量样本的情况下,通过重新预测中间特征的权重来训练元模型,使其对新的目标类别具有更大的判断力和敏感度,从而使检测模型能够快速适应检测新的目标类别。
本文提出的小样本检测器不仅比baseline模型表现得更好,并且通用性也很强,通过重新预测特征的权重可以使该模型从一个数据集到另一个不同的数据集上。
Few-shot Detector
1. 数据集的选择
在训练时采用两种数据集,base类的数据集和novel类的数据集。base类中有充足的被标记的数据,保留了所有的边界框标签;novel类中只有少量被标记的样本。
2. 模型设计
本文的小样本检测模型基于YOLOv2框架,作者认为,一些类别之间会共享一些特征,比如要检测一只猫,那么用于检测狗的特征可能会比用于检测飞机的特征更有用,因为猫和狗之间可能会共享一些特征。这也就是本文的小目标检测的思路,就是说,通过增强在base类上学到的特征表示的可重用性,来更好的检测novel类的目标。因此,当检测某个novel类时,给base 类提取的特征都分配一个权重,这样模型就会把更多的注意力放在与该novel类相关的特征上。
如上图所示,本文设计了一个元模型来生成这些权重系数。将元模型定义为 M M M,base类中的图像和图像中目标的边界框标签分别被记为 I i I_i Ii和 M i M_i Mi,其中 i i i是类别, i = 1 , 2 , . . . , N i=1,2,...,N i=1,2,...,N, N N </