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

FPN论文链接:https://arxiv.org/pdf/1612.03144.pdf

DSSD链接:https://arxiv.org/pdf/1701.06659.pdf

最近比较流行的网络结构是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的,所以作者也把设置为4;也就是说如果你的RoI的面积小于,那么这个RoI就从上提取特征。

具体的实验结果见论文。

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) (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.

编辑于 2017-07-21

FPN与DSSD的对比相关推荐

  1. 层与特征融合_【计算机系统应用】(第122期)感受野特征增强的 SSD 目标检测算法...

    点击上方"蓝字",关注我们吧! 目标检测是计算机视觉领域的一项重要任务, 是 生活中如实例分割[1] , 面部分析[2] , 汽车自动驾驶[3].视 频分析[4] 等各种视觉应用的 ...

  2. 基于深度学习的目标检测算法综述(二)

    转自:https://zhuanlan.zhihu.com/p/40020809 基于深度学习的目标检测算法综述(一) 基于深度学习的目标检测算法综述(二) 基于深度学习的目标检测算法综述(三) 本文 ...

  3. 【目标检测】FSSD论文理解

    摘要   SSD (Single Shot Multibox Detector):   是目前最好的目标检测算法之一,它具有精度高.速度快的优点.然而SSD的特征金字塔检测方法难以融合不同尺度的特征. ...

  4. 深度学习之小目标检测

    深度学习之小目标检测深度学习之小目标检测深度学习之小目标检测 百度网盘 提取码:1234 1.<小目标检测技术研究综述_梁鸿> 小目标检测是针对图像中像素占比少的目标,借助计算机视觉在图像 ...

  5. 详解目标检测之Neck选择

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨曲終人不散丶@知乎(已授权) 来源丨https://zhua ...

  6. Computer Vision 杂志对何恺明 Rethinking ImageNet Pre-training 的最新评论

    中国人有在深度学习取得重大突破,无疑是让国人无比兴奋地,今天带来大佬–何恺明的论文研读 当第一次看源码看到中文拼音名,百度搜索了下此人–何恺明 人物简介编辑 何恺明从小在广州长大,在广州执信中学就读时 ...

  7. 论文笔记 Feature Selective Anchor-Free Module for Single-Shot Object Detection - CVPR 2019

    2019 FSAF Feature Selective Anchor-Free Module for Single-Shot Object Detection Chenchen Zhu, Yihui ...

  8. 目标检测:Object Detection with Deep Learning: A Review

    文章目录 1. INTRODUCTION 2. A BRIEFOVERVIEW OFDEEPLEARNING 3. 通用目标检测 A. Region Proposal Based Framework: ...

  9. YOLO、SSD、FPN、Mask-RCNN检测模型对比

    YOLO.SSD.FPN.Mask-RCNN检测模型对比 一.YOLO(you only look once) YOLO 属于回归系列的目标检测方法,与滑窗和后续区域划分的检测方法不同,他把检测任务当 ...

最新文章

  1. am335x uart5配置
  2. Python-又到了抢票的季节(带验证码识别验证)
  3. Python面向对象基础一
  4. 【1024】我的CSDN博客之路,感谢CSDN,我们一路同行!深度学习系列专栏回顾
  5. 有序数组中插入元素依然保持有序
  6. LogMeIn远程控制
  7. Windows服务器管理(4)——WinServer2008/2008R2系统 安装AD域控及DNS服务器
  8. This in JavaScript
  9. video.h5.player.js视频播放器
  10. bode图处理----当相频特性曲线纵坐标超过正负180度
  11. DBeaver21.1.5如何迁移已有数据库连接
  12. 【安全头条】美国政府起诉 Kochava 出售敏感的地理位置数据
  13. python抓取A股市场历史数据(个股、指数)
  14. HRNet语义分割训练及TensorRT部署
  15. 音乐播放器 —— C++
  16. HTML+CSS大作业: 抗击疫情网页制作作业_疫情防控网页设计模板HTML_ 简单学生网页设_静态HTML+CSS网站制作成品...
  17. Window Git配置
  18. Canvas画板涂鸦生成图片
  19. Kibana Unable to connect to Elasticsearch at http.....30000
  20. 用python批量下载贴吧图片 附源代码

热门文章

  1. 让自由软件的风暴来的更猛烈吧!
  2. 车规级芯片IC等级及其特点
  3. 微信小程序websocket连接
  4. 企业微信与个人微信实现消息互通,用企业微信连接10亿客户
  5. 判断bigdecimal类型是正负数还是0+bigdecimal正负数转换
  6. Android 迷你播放器
  7. 阿里云服务器ECS-Apollo搭建MQTT服务器(Windows环境)
  8. html页面如何获取已经存在的token,移动端通过携带token访问html页面
  9. 杭州 小学计算机比赛,【2019年第二十届全国中小学电脑制作活动】,乐博乐博学员强势晋级杭州市赛!...
  10. Power BI 字符串填充一些特定的字符补齐位数