论文:Scale-Aware Trident Networks for Object Detection


Githubhttps://github.com/TuSimple/simpledet/tree/master/models/tridentnet


图森的工作


论文提出了TridentNet ,基于ResNet-101 的基础骨架网络在coco数据集上达到了单模型48.4的准确性,刷新了coco记录。

论文贡献:


  1. 首次提出感受野(receptive field)对目标检测任务中不同scale大小物体的影响,并进行相关实验验证
  2. 提出了适应于多尺度的目标检测框架TridentNet
  3. 使用参数共享的方法,提出了训练时3个branch,测试时只使用其中一个branch,这样保证推断时不会有额外参数和计算量的增加
  4. 使用ResNet-101的backbone在coco数据集上达到48.4的map

处理多尺度问题的方法:



  1. 图像金字塔,传统的检测算法
  2. 特征金字塔,FPN
  3. 本文的三叉戟网络,分为3个分支,所有的参数都一样,唯一的区别就是膨胀卷积的膨胀率不一样。

膨胀卷积Dilated convolution(空洞卷积Atrous convolution):



假设膨胀率为ds,使用的卷积核大小为3_3,则使用膨胀卷积的感受野大小为3+2_2_(ds-1),


例如,假设


  1. ds=1,表示不进行膨胀,感受野大小为3_3
  2. ds=2,表示进行膨胀,感受野大小为7_7
  3. ds=4,表示进行膨胀,感受野大小为15_15

实验验证,随着感受野的增大,小目标的检测准确性也开始下降,但是大目标的检测准确性开始上升。



 


TridentNet 网络结构:



TridentNet 模块主要包括3个完全一样的分支,唯一不同的只是膨胀卷积的膨胀率。从上到下,膨胀率分别为1,2,3,分别检测小,中,大的目标。三个分支共享权值。


每个分支的详细结构如下,



在训练过程中,对每一个分支都进行优化。因此,需要对目标的ground truth进行大小测试,



假设,w,h为ground truth的宽,高。Li,ui表示实验中定义的最小的面积和最大的面积。在coco实验中分别为32_32和96_96。


基于此公式实现小的目标走第一个分支,中等目标走第二个分支,大的目标走第三个分支。而不是所有目标都走所有分支。这样就可以进行有针对性的训练。


在测试阶段,只使用中间的那个分支进行推断,然后对结果进行NMS,输出最终的结果。


当然这样做会有一些精度的损失,但是好处就是不会引入额外的参数,不会增加额外的计算量。


 


实验结果:


Multi-branch ,Weight-sharing, Scale-aware有效性证明:



TridentNet 模块分支个数的实验:



TridentNet 模块在Resnet不同block中的实验:



TridentNet 每个分支中unit个数的实验:



TridentNet 各分支检测结果的评估:



TridentNet 中间分支在coco测试的结果:



coco数据集结果:



 


总结:


TridentNet 是一种尺度敏感的检测框架,并且训练过程也得进行尺度敏感的训练。检测准确性很高,并且不会有额外的参数,额外的计算量。是对ASPP结构的一种升华。