Scale-Aware Trident Networks for Object Detection

《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将三个分支的结果合并。
Scale-Aware Trident Networks for Object Detection_第1张图片

三叉戟的网络细节如下图所示,这里每个分支都是使用resnet来构成的,都是由一个 1 × 1 1\times 1 1×1卷积接一个 3 × 3 3\times 3 3×3再接一个 1 × 1 1\times 1 1×1的残差块构成,唯一的区别是三个分支中 3 × 3 3\times 3 3×3的卷积采用的是空洞卷积,而且每个分支空洞卷积的系数是不一样的,目的就是为了使得三个分支的感受野不一样,从而有效的检测出不同大小的物体。为了防止引入三个分支,也就是很多参数,可能有过拟合的问题,所以这三个分支采用了权重共享的方式来减轻这个问题。
Scale-Aware Trident Networks for Object Detection_第2张图片

二、scale-aware

这里文章所说的是类似于SNIP文章来做的,我看的好像是采用FPN的方式,对每个分支定义不同大小的目标来进行训练,三个分支分别检测的范围是[0, 90], [30, 160], [90, inf ⁡ \inf inf],这个范围是对于框面积的更号来讲的,即 w ∗ h \sqrt{w*h} wh

三、loss

loss计算文章没有说明,毕竟不是本文重点,所以想知道的可以看看代码,每个分支采用的就是类似fasterrcnn的two-stage结构来做的

还有一些快速推断的track,就是在推断过程采用中间的分支来做的。

原理基本就这些,想知道更多实验结果可以查看原文和官方提供的代码

你可能感兴趣的:(机器学习,机器学习)