FPN与DSSD的对比

https://zhuanlan.zhihu.com/p/26743074

FPN论文链接:arxiv.org/pdf/1612.0314

DSSD链接:arxiv.org/pdf/1701.0665

最近比较流行的网络结构是Hourglass形状,将高层特征与低层特征相互融合,利用融合后的特征进行分类和定位。这篇文章主要分析FPN和DSSD的方法。

一、FPN:Feature Pyramid Networks for Object Detection [1]

1、Motivation

SSD [3]、MSCNN [4]利用不同层的特征图进行不同尺寸的目标预测,又快又好,基于proposal的方法就坐不住了,所以这篇文章首先也采用了这种思路:在不同深度的特征层上预测不同尺寸的目标。

但是SSD为了预测小目标,就得把比较低的层拿出来预测,这样的话就很难保证有很强的语义特征,所以作者就想着,为什么不把高层的特征再传下来,补充低层的语义,这样就可以获得高分辨率、强语义的特征,有利于小目标的检测。

2、网络结构

FPN的top-down(右边)结构把每一层的channels都改成了256d,然后每一层经过一个3x3的卷积消除上采样带来的混叠效应。

虚线框可以理解成特征融合的操作,1x1的卷积我认为有三个作用:使bottom-up对应层降维至256;缓冲作用,防止梯度直接影响bottom-up主干网络,更稳定;组合特征。上采样2x up作者采用的是nearest neighbor。加号是elementwise sum(DSSD中实验结果是elementwise product会好一点点)。

3、应用

作者利用FPN进行了两类实验:RPN获取proposals + 目标检测。在FPN的基础上只需要加上每个任务的head就可以,很简单。

<1> RPN

在图一中右侧的predict处加上RPN的head,即加上一个3x3的卷积和两个1x1的卷积预测类别和位置信息。然后在每一层分配不同scale的anchor boxes{32,64,128,256,512},宽高比是{1:2,1:1,2:1},也就是说负责预测的每一层的每一个位置都放置了15个anchors。

需要注意的是:每一层的heads都是共享参数的。

<2> Object detection

作者检测器选择的是Fast RCNN,同样的,也是每一层都加上predictor head,即分类器和bb回归器。结构是:RoI pooling提取7x7的特征,然后经过两个1024-d fc层,然后是最终的分类和回归。

这里比较重要的一点是怎么把RoI分配给每一层,一般的想法是直接按照尺寸来分配,但是作者采用了下面的公式:

Faster RCNN用了Res-Net的C_{4},所以作者也把k_{0}设置为4;也就是说如果你的RoI的面积小于224^{2},那么这个RoI就从C_{3}上提取特征。

具体的实验结果见论文。

4、有趣的结论

<1> 如果没有top-down的语义增强分支(仍然从不同的层输出),那么RPN的AR(average recall)会下降6%左右;

<2> 如果不进行特征的融合(也就是说去掉所有的1x1侧连接),虽然理论上分辨率没变,语1义也增强了,但是AR下降了10%左右!作者认为这些特征上下采样太多次了,导致它们不适于定位。Bottom-up的特征包含了更精确的位置信息。

<3> 如果不利用多个层进行输出呢?作者尝试只在top-down的最后一层(分辨率最高、语义最强)设置anchors,仍然比FPN低了5%。需要注意的是这时的anchors多了很多,但是并没有提高AR。

<4> 在RPN和object detection任务中,FPN中每一层的heads 参数都是共享的,作者认为共享参数的效果也不错就说明FPN中所有层的语义都相似。

---------------------------------------------------------------------------------------------------------------------------

我主要在做SSD的方法,所以我也尝试了把SSD改成FPN的结构,但是。。。网络从开始就在发散(更新:这句话错了),所以就仔细看了下下面一片论文DSSD。

---------------------------------------------------------------------------------------------------------------------------

二、DSSD:Deconvolutional Single Shot Detector [2]

DSSD是17年放出来的论文,刚开始看的时候觉得没什么新东西,就是模仿了FPN的思路,加了top-down的特征融合,然后就扫了一眼扔掉了,直到自己试了FPN的结构之后才拿出来重读了一遍。

1、Motivation

说白了,作者就是想模仿FPN这类方法,给SSD也进行一下特征融合。但是作者也在摘要里指出:a naive implementation does not succeed。

2、网络结构


其实网络结构整体来看没什么新意,和FPN的结构很相似,但是重点是作者设计的两个小模块,一个是Prediction Module,一个是Deconvolution Module。

<1> Prediction Module:作者说加这个模块是因为MS-CNN指出提升每个子任务的表现可以提高准确性(我在看MS-CNN时对这个结论没有啥印象)。这个有一点效果吧,(c)的效果最好。作者在最后提出,加PM是为了防止梯度直接流入Res-Net主干。


<2> Deconvolution Module:我认为这个模块是重点,是经过作者精心设计的。我猜作者开始应该也是按照FPN简单的搭了一下网络,发现发散,然后加了三个BN和三个3x3卷积,这里的卷积也起到了缓冲的作用,防止梯度对主干网络影响太剧烈,保证网络的稳定性。(我觉得一篇好论文不仅要说明怎样设计的网络,还应该大概说一下为什么这样设计,DSSD就直接说模块结构由另一篇论文启发,看着很不舒服)



3、实验细节

<1> 特征融合后每一个负责预测的特征层channel维度变为512;

<2> Deconvolution可学习,而不是固定得双线性插值;

<3> 模仿YOLO2[5],用聚类的方法设计anchors 的宽高比,在SSD基础上增加了宽高比1.6;

<4> 训练时采用了三阶段(论文里说两阶段,但我觉得应该算三阶段了):

第一阶段训练一个原始SSD模型;

第二阶段训练deconvolution 分支,freeze所有原始SSD模型里的层;

第三阶段所有层一起finetune。

4、有趣的结论

<1> top-down并不是和bottom-up对称的,作者说这是因为对称的Hourglass形状的网络没有与训练的模型。我觉得可能是完全对称的话top-down分支不能合理的初始化,网络容易发散,不稳定。

<2> 作者认为: 反卷积不仅提升了分辨率,还增加了context信息;

<3> 作者在验证Prediction Module作用的时候,并没有进行(原始SSD + Prediction Module)vs (SSD + Res-Net + Prediction Module),而是直接把后者和原始SSD进行了对比,我觉得可能不是那么让人信服,后面准备自己测试一下。

<4> 训练得第三阶段(即DSSD整个网络finetune)反而使mAP降低了挺多(0.7%);

<5> 使用Residual-101后,训练收敛速度更快了,但是对于小的输入尺寸效果并不怎么好,提高输入尺寸后Residual有优势,因为它比较深。


+++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++

更新,今天重新进行了net surgery,发现是deconvolution一个小细节没有注意到,导致发散,修改后完全可以正常运行 =_=||

17-7-21

+++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++ +++++


Reference

[1] Lin T Y, Dollár P, Girshick R, et al. Feature Pyramid Networks for Object Detection[J]. arXiv preprint arXiv:1612.03144, 2016.

[2] Fu C Y, Liu W, Ranga A, et al. DSSD: Deconvolutional Single Shot Detector[J]. arXiv preprint arXiv:1701.06659, 2017.

[3] Liu W, Anguelov D, Erhan D, et al. SSD: Single shot multibox detector[C]//European Conference on Computer Vision. Springer International Publishing, 2016: 21-37.

[4] Cai Z, Fan Q, Feris R S, et al. A unified multi-scale deep convolutional neural network for fast object detection[C]//European Conference on Computer Vision. Springer International Publishing, 2016: 354-370.

[5] Redmon J, Farhadi A. YOLO9000: Better, Faster, Stronger[J]. arXiv preprint arXiv:1612.08242, 2016.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值