TridentNet算法笔记
Posted AI之路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TridentNet算法笔记相关的知识,希望对你有一定的参考价值。
论文:Scale-Aware Trident Networks for Object Detection
论文链接:https://arxiv.org/abs/1901.01892
代码链接:https://github.com/TuSimple/simpledet/tree/master/models/tridentnet
目标检测中物体的尺度变化一直是关注的热点,毕竟要兼顾大尺寸目标和小尺寸目标有一定难度。早些年的图像金字塔(image pyramid),如Figure1(a)所示,通过缩放输入图像实现不同尺寸目标的检测,效果很不错,现在许多比赛中仍会采用多尺度测试提升模型效果,缺点就是速度太慢,实际项目中很难使用。之前的SNIP、SNIPER、AutoFocus等算法算是图像金字塔的优化版,目的是减少不必要的计算,提速比较明显,但离实际应用还有点差距。
特征金字塔是另外一种尝试,代表作就是FPN,如Figure1(b)所示,效果上不如图像金字塔,但是速度方面有优势。
图像金字塔和特征金字塔本质上都是希望不同尺度的目标有不同的感受野,这样提取到的特征才比较全面,因此TridentNet算法从感受野入手,通过引入空洞卷积增加网络的感受野,从而实现不同尺度目标的检测,如Figure1(c)所示,比较吸引我的地方在于算法整体上非常简洁,而且效果很赞。另外之前还有一篇关于目标检测算法中感受野的研究:DetNet,可以参考博客:DetNet算法笔记。
那么感受野和检测效果之间到底存在什么关系?作者做了一个关于感受野和检测效果之间的联系的对比实验,实验结果如Table1所示。这个实验通过修改Faster RCNN算法的特征提取网络中卷积层的dilation参数控制感受野大小,当dilation参数为1时等效于常规卷积层。可以看出不同尺度目标的最高AP值对应的dilation参数(也就是不同感受野)是不同的,而且存在明显的规律,这说明针对目标尺度大小设计对应的感受野可以使检测模型的整体效果达到最佳,这也是TridentNet算法的主要思想。
有了Table1的结论,接下来就可以设计TridentNet了,如Figure2所示。
第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的对比实验。
实验结果:
Table2是关于TridentNet提出的多分枝、权重共享和指定尺度过滤训练这3个部分的对比实验,可以看出多分枝和权重共享的效果是很明显的。指定尺度过滤的实验效果没有太出彩,作者在文中也指明了原因可能是过拟合导致的,因为对尺度做了过滤,所以相当于每个分支的训练样本减少了。在尺度过滤的基础上添加权重共享可以有效减少这种过拟合,因为权重共享操作相当于在每次的参数更新中所有训练样本都做了贡献(可以参考e和c的对比)。同时在Table2中用到2个baseline,一个是以ResNet101为backbone的Faster RCNN算法,另一个是以ResNet101-Deformable为backbone的Faster RCNN算法,deformable结构的设计初衷是为了解决物体形变问题,形变和尺度变化并不完全一样,尺度变化更强调目标整体尺寸的大小变化,可以看到TridentNet算法在deformable结构中仍然有所提升,说明设计更加灵活的感受野依然有所帮助。
Table7是TridentNet算法和目前前沿算法的效果对比,48.4的mAP应该是目前效果最好的。
论文中实验比较丰富,比如分支数量的选择、在主网络的哪些部分添加trident block等,比较有说服力,整体上来看解决方案非常干净、清爽,很难得。
以上是关于TridentNet算法笔记的主要内容,如果未能解决你的问题,请参考以下文章