《Scale-Aware Trident Networks for Object Detection》发表于ICCV2019的一篇图片检测的文章。
代码地址:https://github.com/TuSimple/simpledet/tree/master/models/tridentnet
文章的主要思路是解决多尺度物体检测的问题。目前一种很常用的解决多尺度物体检测的方法是采用fpn的结构,然后使用fpn不同输出层的featuremap来对不同大小的物体进行检测。文章认为采用fpn的方式来检查不同大小的物体会降低网络的训练速度,而且还可能导致不同尺度的层容易产生过拟合。文章利用dilate convolution(空洞卷积)来对多尺度的物体进行检测,并且可以规避fpn带来的负面影响。
一、网络结构
文章网络取名为trident,可以想象网络的结构类似于三叉戟的样子,如下图所示,最后利用nms将三个分支的结果合并。
1.png
三叉戟的网络细节如下图所示,这里每个分支都是使用resnet来构成的,都是由一个卷积接一个再接一个的残差块构成,唯一的区别是三个分支中的卷积采用的是空洞卷积,而且每个分支空洞卷积的系数是不一样的,目的就是为了使得三个分支的感受野不一样,从而有效的检测出不同大小的物体。为了防止引入三个分支,也就是很多参数,可能有过拟合的问题,所以这三个分支采用了权重共享的方式来减轻这个问题。
二、scale-aware
这里文章所说的是类似于SNIP文章来做的,我看的好像是采用FPN的方式,对每个分支定义不同大小的目标来进行训练,三个分支分别检测的范围是[0, 90], [30, 160], [90, ],这个范围是对于框面积的更号来讲的,即
三、loss
loss计算文章没有说明,毕竟不是本文重点,所以想知道的可以看看代码,每个分支采用的就是类似fasterrcnn的two-stage结构来做的
还有一些快速推断的track,就是在推断过程采用中间的分支来做的。
原理基本就这些,想知道更多实验结果可以查看原文和官方提供的代码
欢迎加入Object Detection交流,群聊号码:910457072
网友评论