前言
- region-based目标检测方法:比如Fast R-CNN和Faster R-CNN,检测精度较高,并且RPN能够去除一些背景样本,但资源和时间消耗太大;
- region-free目标检测方法,比如SSD和YOLO,它们的检测效率很高,但检测精度却略有不足,由于没有RPN对负样本进行过滤,正负样本的比例严重失衡。而且YOLO只利用最后一层进行检测,而SSD虽然利用了较浅的层的结果,但仍无法准确地检测小目标。
为了结合region-based和region-free方法的优点,本文提出RON(Reverse connection with Objectness prior Networks),它主要关注两个方面的问题:
- 多尺度目标定位。通过逆向连接(reverse connection)将更多的语义信息传递给较浅的层,使得目标能够在对应的网络尺度上进行检测;
- 负样本挖掘。在卷积特征图上创建objectness prior,以减少目标的搜索空间,从而解决正负样本间的不平衡问题。
网络结构
RON的整体结构如下图所示:
使用VGG-16作为backbone,VGG-16共有13个卷积层和3个全连接层,将FC6(第14层)和FC7(第15层)转换为卷积层,使用步长为2,大小为
2
×
2
2 \times 2
2×2的卷积对FC7进行2倍的下采样。那么这样就能得到原图大小的1/8(conv 4_3),1/16(conv 5_3),1/32(conv 6)和1/64(conv 7)的特征图,使用这些特征图进行目标检测。
1. reverse connection(逆向连接)
逆向连接块如上图所示,逆向连接的过程如下:
- 首先将reverse fusion map(rf-map) n + 1 n+1 n+1经过一个解卷积层;
- 将conv n经过一个卷积层,以使二者拥有相同的维度;
- 通过element-wise相加将这两个map结合起来。
注意,最后一个rf-map 7其实就是backbone中conv 7输出的特征图,然后就逐层向前融合,浅层的语义信息也会因此得到加强。
2. 如何在网络的不同尺度上生成候选框
在经过逆向连接生成不同尺度的特征图后,作者为每个特征图设计了不同大小的候选框,以预测特定尺度的目标。设最小的尺度为 s m i n s_{min} smin( s m i n s_{min} smin是输入图像大小的 1 10 \frac{1}{10} 101),那么特征图 k k k上的候选框大小 S k S_k Sk为:
候选框共有5种长宽比:
{
1
3
,
1
2
,
1
,
2
,
3
}
\lbrace \frac{1}{3},\frac{1}{2},1,2,3 \rbrace
{31,21,1,2,3},因此,每个特征图上共有2种尺度和5种长宽比的候选框,也就是说特征图的每个位置上共有10个候选框。这样就可以覆盖不同大小和形状的目标了。
3. objectness prior
虽然每个特征图上有不同尺度和不同长宽比的候选框,但只有一小部分候选框能够覆盖目标,也就是说,正负样本间存在严重的不平衡。为了解决这个问题,本文提出objectness prior,用于指导对目标的搜索。具体来说就是,添加了一个
3
×
3
×
2
3 \times 3 \times 2
3×3×2的卷积层,后跟softmax函数,以判断每个候选框中是否有目标。
上图说明了从一张输入图像中生成多尺度objectness prior map,可以看到,沙发在(a)和(b)被响应,黄狗在(c)被响应,斑点狗在(d)被响应,也就是说,不同大小的目标在它们对应的特征图上被响应。可以看到,objectness prior map能够明确反映出目标的存在,因此目标的搜索空间也就减小了。
4. 分类与回归
本文在分类分支中添加inception模块,inception模块的结构如下图所示。在通过逆向连接得到多尺度特征图后,在每个特征图后添加两个inception模块,然后将输出通过softmax层,得到分类分数。
整个检测模块的结构如下图:
5. 如何利用objectness prior进行检测
在训练时,首先为每个候选框分配一个二值标签,表示该候选框中是否有目标存在。如果某个候选框覆盖了一个目标,就为该候选框分配一个类别标签。
在选择正样本的时候,主要有以下两个步骤:
- 对于每个gt box,首先将IoU最大的候选框与该gt进行匹配;
- 然后对于剩下的候选框,它与哪个gt box的IoU大于0.5,就将它们进行匹配。
在选择负样本的时候,如果某候选框与任何gt box的IoU都小于0.3,就将其作为负样本。
这样的话,每个候选框都有其二值标签和类别标签。通过将检测与objectness prior相结合,候选框的类别标签是会被网络进行动态更新的,
- 在前向传播时, objectness prior和检测是同时进行的;
- 在后向传播时, 先生成objectness prior,选择那些objectness score高于阈值 o p o_p op的样本,然后进行检测,这样的话,就可以仅用一小部分样本来更新检测模块。
上图说明了如何将objectness prior与检测相结合,首先根据
o
p
o_p
op对objectness prior进行二值化,也就是分为“高于
o
p
o_p
op”/”低于
o
p
o_p
op“两部分,上图中亮斑部分就是objectness score高于
o
p
o_p
op的部分,然后将这个亮斑,也就是mask投影到检测域中,位于mask之内的样本用于检测目标。
结论
RON利用逆向连接构建多尺度特征图,将高层的语义信息传递到浅层特征图中,感觉很像FPN中的横向连接。objectness prior的作用是实现正负样本间的平衡。