Meta-Learning to Detect Rare Objects
1. Motivation
- CNN在视觉领域被广泛应用,关键驱动因素就是以大量带注释的图像的形式进行监督。然而,在自动驾驶汽车等许多实际应用中,识别系统需要从非常有限的样本中快速识别一些从未见过的对象。
- 基于小样本目标检测研究较少。现有的工作大多是在分类的背景下进行的,不能直接应用于其他任务。
2. Contribution
- 开发了一个概念简单但功能强大的基于元学习的框架,以统一、连贯的方式同时处理Few shot分类和Few shot定位.
- 引入了一个权重预测元模型,能够从少数例子中预测特定类别的组件的参数.
3. Method
3.1 Framework
- 元训练中学习基础检测器与元模型(左图):训练大样本基检测器,获得类别无关参数;我们以Few shot的基础检测任务为样本,并学习从小样本到大样本类别特定参数的权重预测元模型T。
- 在元测试过程中学习新的检测器(右图):我们从基本检测器初始化类别无关参数,并使用T来预测类别特定参数。浅颜色浅表示小样本参数;深色表示大样本或者预测参数。
3.2 Setup for Few-Shot Detection
-
C
b
a
s
e
C_{base}
Cbase?:基类;
C
n
o
v
e
l
C_{novel}
Cnovel?:新类。
C
b
a
s
e
∩
C
n
o
v
e
l
=
?
C_{base} \cap C_{novel} = \empty
Cbase?∩Cnovel?=?
-
S
b
a
s
e
S_{base}
Sbase?:大样本基数据集;
S
n
o
v
e
l
S_{novel}
Snovel?:新类数据集,其中每个新类都有k边界框注释。
- 元训练:在
S
b
a
s
e
S_{base}
Sbase?随机抽取k个样本并训练相应的检测器。
- 元测试:基检测器通过meta-learner在
S
n
o
v
e
l
S_{novel}
Snovel?上对新类进行调整。
3.3 Basic Detector and Meta-Strategies
这里的目标是根据
S
b
a
s
e
S_{base}
Sbase?和
S
n
o
v
e
l
S_{novel}
Snovel?来估计
C
n
o
v
e
l
C_{novel}
Cnovel?所需的检测器的参数θ。 元学习框架适用于各种基于CNN的检测器。在这里,我们使用Faster R-CNN实例化框架
类别不可知组件的元策略
- 将卷积网络、RPN和检测网络的底层作为类别无关组件,它们的参数被基类和新类共享。将与类别无关的参数从基本检测器转移到新的检测器,或者将它们用作初始化来进行微调。
特定类别组件的元策略
- 在Faster R-CNN中,检测网络的顶层包含特定类别的参数,用于对每个类进行包围盒分类和回归。而这些参数是不可直接转移的。
- 从小数据集上训练的参数到大数据集上训练的参数,其变化的动态模式可以通过通用的、类别无关的转化来描述。
- 引入一个参数化权值预测元模型T,通过元训练过程来学习这种转换。
3.4 Weight Prediction Meta-Model
- 对于类别c,
w
d
e
t
c
,
?
w_{det}^{c,*}
wdetc,??表示从大数据集
S
b
a
s
e
S_{base}
Sbase?学习到的检测网络最后一层特定类别参数。
-
w
d
e
t
c
w_{det}^{c}
wdetc?表示从
S
b
a
s
e
S_{base}
Sbase?采样的k-shot数据集学习到的相应权重。
- 权重预测模型T在模型参数空间中让
w
d
e
t
c
w_{det}^{c}
wdetc?回归到
w
d
e
t
c
,
?
w_{det}^{c,*}
wdetc,??:
w
d
e
t
c
,
?
≈
T
(
w
d
e
t
c
,
?
)
w_{det}^{c,*} \approx T(w_{det}^{c},\phi)
wdetc,??≈T(wdetc?,?)。学习参数
?
\phi
?
- 每个episode,每个类对于的原目标函数:
-
- 上式中的loss表示用于训练检测网络D的标准性能损失(例如,由边界框分类和回归损失组成的多任务损失)。
R
o
I
c
RoI^c
RoIc表示训练被类别c标记的RoI。
-
-
w
d
e
t
c
=
[
w
c
l
s
c
,
w
l
o
c
c
]
w_{det}^{c} = [w_{cls}^c,w_{loc}^c]
wdetc?=[wclsc?,wlocc?],包括小样本分类和小样本定位。
- T可以实现为一个小型全连接神经网络,并与检测器联合训练。
3.5 Meta-Learning Procedure
Stage-wise meta-training
- 将元训练过程分为两个阶段,分别针对类别不可知组件和特定类别组件。
- 第一阶段:在整个数据集上训练一个大样本基础检测器
D
(
?
,
θ
?
)
D(\cdot,\theta^*)
D(?,θ?),提供参数
w
d
e
t
c
,
?
w_{det}^{c,*}
wdetc,??。
- 第二阶段:每个episode中,从大数据集每个类随机抽取k个样本。使用第一阶段的大样本基础检测器D,将其训练成k-shot检测器。此时与类别的无关的底层参数是冻结的,冻结为那些在大样本数据集中所学的参数。并重新训练类别相关参数
w
d
e
t
c
w_{det}^c
wdetc?
Meta testing:
- 在
S
n
o
v
e
l
S_{novel}
Snovel?中训练k-shot新类检测器。从基类检测器初始化类无关参数
θ
/
w
d
e
t
c
,
?
\theta / w_{det}^{c,*}
θ/wdetc,??,并随机初始化类相关参数
w
d
e
t
c
w_{det}^c
wdetc?
- 使用元模型T微调检测器,同时来预测所需要的
w
d
e
t
c
w_{det}^{c}
wdetc?。
4. Experiment
4.1 域内小样本检测
1. On PASCAL VOC
数据集被随机分成两个不重叠的部分:一个基类集合,每个类有数百或数千个样本;另一个新类集合,每个类有少量样本(k)。
将20个类别随机分为15个基类和5个新类。
在元训练中,我们只使用基类的训练集来学习基检测器和权值预测元模型。在元测试过程中,我们在元模型的指导下调整我们的基础检测器来生成新的检测器。
- Scartch:直接学习了5个新类的k-shot检测器,而无需利用基类样本。(仍然在ImageNet上对特征主干进行预训练。)
- Joint:从大量的基础训练样本和少量的新样本中学习所有20个类的检测器。
- Transfer:在学习了15个基类的大样本检测器之后,将其微调为5个新类的k-shot检测器。
Ablation studies
1.输入对权重预测元模型T的影响
- 输入元模型T:“cls”是RoI分类权重,“loc”是边界框回归权重,“cls”+“loc”都是权重。
- ‘loc-agn’:训练类别不可知的边界框回归权重。
- 将这两个权重都作为特定类别的,并将它们都作为T的输入,表现最优。
2. 权重预测元模型T不同实现
2. On MS COCO
使用5k来自验证集的图像进行评估,其余的训练图像进行训练。
选择了同样出现在PASCAL VOC中的20个类别作为新类,其余60个类别作为基类。
4.2 跨域小样本检测
COCO
→
\rightarrow
→ PASCAL 使用COCO上的60个类别作为基类,并使用PASCAL上的所有20个类别作为新类。 对20个新类的10-shot跨域检测性能(mAP)。
COCO
→
\rightarrow
→ ImageNet 基类是COCO上的整个80个类别,新类是ImageNet2015上选择的50个不重叠类别。在ImageNet2015上,每个新类包含100张图像。 在COCO→ImageNet下对50个新类的k-shot跨域检测性能:
4.3 长尾数据检测
我们将数据丰富的头部类别作为基类,而数据贫乏的尾部类别作为新类。我们的方法可以通过学习头部的元模型,然后将其转移到尾部来进行扩展。
在iNaturalist所有类别的长尾检测性能,平均精确度(AP)和平均召回率(AR)
在iNaturalist中每个类的表现,
- y轴(左)和蓝色曲线:长尾分布。y轴(右)和橙色曲线:相对于Faster R-CNN基线,我们的MetaDet对AP的改善。
- MetaDet显著改善了尾部的检测,特别是对数据极其有限的尾部类进行了较大的边缘检测,同时保持了头部的准确性。
5. Conclusion
- 提出了一种新类的Few-shot检测方法,通过元学习以统一、连贯的方式同时处理Few-shot分类和定位。
- 提出专门的元学习策略:
元训练:
- MetaDet在域内,跨域以及长尾分布的数据上都有较好表现。
|