Scale-Aware Trident Networks for Object Detection

TridenNet (ICCV2019)

motivation

图像金字塔和特征金字塔本质上都是希望不同尺度的目标有不同的感受野,这样提取到的特征才比较全面,因此TridentNet算法从感受野入手,通过引入空洞卷积增加网络的感受野,从而实现不同尺度目标的检测

那么感受野和检测效果之间到底存在什么关系?作者做了一个关于感受野和检测效果之间的联系的对比实验,实验结果如Table1所示。这个实验通过修改Faster RCNN算法的特征提取网络中卷积层的dilation参数控制感受野大小,当dilation参数为1时等效于常规卷积层。可以看出不同尺度目标的最高AP值对应的dilation参数(也就是不同感受野)是不同的,而且存在明显的规律,这说明针对目标尺度大小设计对应的感受野可以使检测模型的整体效果达到最佳,这也是TridentNet算法的主要思想。
目标检测之TridenNet

网络结构

目标检测之TridenNet

  • 第1个改进点是将原本特征提取网络(backbone)的单支路卷积层替换成3个支路且dilated参数不同的dilated卷积层,这就是论文中提到的多分枝(multi-branch)思想。以特征提取网络ResNet为例,就是将residual block中的3×3卷积层替换成Figure2中的3支路3×3卷积层,dilated参数分别为1、2、3。
  • 第2个改进点是权重共享(weight sharing among branches),是指3个支路的卷积层参数是共享的(差别仅在于dilated参数),这么做的原因是一方面可以减少网络前向计算的时间,另一方面网络学到的参数有更好的泛化能力。还有一个好处在于inference,文中提到了一种快速inference做法选择一个分支的输出作为最终结果,假如没有权重共享,那么单分支的结果很难近似多分支结果。
  • 第3个改进点是指定尺度过滤训练(scale-aware training scheme),是指不同dilated参数的3个支路分别检测不同尺度的目标。还记得Table1的实验结果吗?不同尺度的目标所对应的网络最佳感受野是不同的,因此可以为这3条支路分配不同尺度的目标(和SNIP的思想有点类似),比如对于dalated参数为3的支路而言,感受野更大,大尺度目标的检测效果好,因此就分配尺度较大的目标实现上可以通过判断RoI的尺寸后将尺度符合定义的目标输入该支路进行训练。这种方法减少了每条支路所训练的目标尺寸差异,虽然训练样本也少了,但由于权重是共享的,所以效果不会下降,可以看Table2的对比实验。

目标检测之TridenNet
目标检测之TridenNet

实验结果

Table2是关于TridentNet提出的多分枝、权重共享和指定尺度过滤训练这3个部分的对比实验,可以看出多分枝和权重共享的效果是很明显的。指定尺度过滤的实验效果没有太出彩,作者在文中也指明了原因可能是过拟合导致的,因为对尺度做了过滤,所以相当于每个分支的训练样本减少了。在尺度过滤的基础上添加权重共享可以有效减少这种过拟合,因为权重共享操作相当于在每次的参数更新中所有训练样本都做了贡献(可以参考e和c的对比)。同时在Table2中用到2个baseline,一个是以ResNet101为backbone的Faster RCNN算法,另一个是以ResNet101-Deformable为backbone的Faster RCNN算法,deformable结构的设计初衷是为了解决物体形变问题,形变和尺度变化并不完全一样,尺度变化更强调目标整体尺寸的大小变化,可以看到TridentNet算法在deformable结构中仍然有所提升,说明设计更加灵活的感受野依然有所帮助。

目标检测之TridenNet
Table7是TridentNet算法和目前前沿算法的效果对比,48.4的mAP应该是目前效果最好的。
目标检测之TridenNet