Receptive Field Block Net for Accurate and Fast Object Detection

论文链接:https://arxiv.org/abs/1711.07767
代码链接:https://github.com/ruinmessi/RFBNet
这周接着来看ECCV 2018的文章。这篇RFB Net在我看上一周提到的那篇综述的时候,出现的频率特别高,于是本着好奇的心态研究一下,也和大家做一个简单的分享。

1. Background

这篇论文要解决的问题很简单,作为单阶段的检测方法,它试图寻找速度和精度之间的平衡,就像之前很多single stage的方法一样,在精度近似甚至更优的情况下实现高速度。
不过这篇文章的出发点很有趣,作者认为目前很多single stage的方法为了提高精度,会采用类似ResNet-101这样较深的网络,从而限制了效率。而手工设计的策略(注意是策略不是特征、这篇文章本质上还是CNN网络)相较于单纯加深网络会有更高的效率。因此作者使用VGG这种light model作为特征抽取网络(这里的VGG采用的是SSD中较为高效的结构,并且可以直接和SSD结果进行比较),但在特征整合上下了一些功夫,提出了RFB模块,并得到了很好的效果。
关于这个RFB模块设计的灵感,其实来源于人类的视觉系统,看下面这张图:

这张图其实我也看得似懂非懂,欢迎大家交流吧。只能说看到这里我都吓哭了,这年头不学点生物学、神经学之类的都不好意思说自己是搞CV的。
总之,作者从这张图得到了如下灵感:

  1. 人类的视觉系统是由多个具有不同感受野的部分复合而成的。而一般的CNN每层的感受野都是固定的,这会损失一些信息,失去对不同视野的分辨能力,比如靠近中心部分的更重要、需要被强化等。
  2. 看到1,可能有些人自然而然地会想起Inception。确实,Inception模块的并行结构采用的就是不同大小的卷积核,确实是将不同的感受野综合起来了。但是作者说,Inception中所有的kernels采样中心是相同的。我个人是这么理解的,根据之前提到的发现,不同的感受野应该具备不同的离心率,套用到CNN网络,kernels越大,采样点应该离中心点越远,应该尽可能地分布地比较散而不是像Inception那样kernel大小变化了仍然聚在一起。
    因此,作者给出的最后设计草稿是这样的:

大致思想就是通过调节空洞卷积的rate来调节不同大小的卷积核的离心率,比如5x5分支的采样点和中心的距离就比3x3和1x1的更远。这个思想应该借鉴了很多ASPP,有兴趣的可以去了解这篇文章。
本文的主要贡献也就是提出了这个模块,并且在用RFB模块简单替代了SSD中的top层后,取得了相当好的效果。作者认为,这是因为RFB模块对kernels的大小和离心率之间的关系进行了建模。

2. Method

RFB模块设计

根据上述的设计思路,作者给出了具体的实现:

左边的RFB和最早给出的设计思路基本一致,其中1x1的Conv和Inception一样,主要用于减少计算量和进行跨通道的信息融合。右面的RFBs则是RFB进一步优化的结果,其中3x3的Conv代表两个连续的3x3卷积,用于替代5x5卷积,而1x3和3x1的conv则出于同样的减少参数量的目的。另外,RFBs使用了较多的小kernel,除了运算量方面的考虑,也更适合关注比较局部的信息;比如应用于较浅的层。

网络结构

最终的网络结构如下:

作者的网络是以SSD为基础的,因为VGG16是一个light model,本身也方便做对比,我在这里也截取了SSD的网络结构:

可以看到,原来的conv4_3和conv7_fc的特征现在都要经过RFB模块的处理了。其中,conv4_3模块使用的是RFB-s。而使用特征抽取网络后的top层被替换成了RFB模块,之所以最后两个没有替换,是因为此时它们的feature map已经太小,使用5x5的conv已经显得过大了。
当然这个结构只是大概的,如果想要了解得更具体,尤其是对SSD也不熟的情况下,建议去看源码,不是很复杂。

3. 实验结果

关于对比实验这里就不详细论述了,感觉没有太多需要注意的地方。最后来看一下结果:

直观上来说,RetinaNet800是最好的,但是要考虑到Inference time以及特征网络的问题。如果对比RetinaNet500和RFB Net 512,会发现RFB Net的效果和速度其实非常优秀。另外,这里的RFB NET512-E是作者对RFB Net做出进一步改进的结果,改进的地方包括:在RFB-s之前concat conv7和conv4_3的特征,仿照了FPN的思路……以及为每个RFB模块添加7x7的conv分支。可以看到,优化后,结果已经和RetinaNet500持平,但速度快大概三倍。

RFB Net的另一个特点就是可以从scratch中训练,即不需要预训练也可以较好地收敛。RFB Net300在VOC 07+12上可以取得77.6%的成绩,而预训练模型则是80.5%。

作者认为,RFB模块可以很好地整合进其它网络当中。当然,这还需要实验去进一步的验证,从作者给出的实验和解释来看,还是很值得期待的。

目标检测论文阅读:RFB Net相关推荐

  1. 3D目标检测论文阅读多角度解析

    3D目标检测论文阅读多角度解析 一.前言 CNN(convolutional neural network)在目标检测中大放异彩,R-CNN系列,YOLO,SSD各类优秀的方法层出不穷在2D图像的目标 ...

  2. 3D目标检测论文阅读摘要

    3D目标检测论文阅读摘要 2D Object Detection 的研究已经非常成熟了,代表作品有RPN系列的FasterRCNN,One Shot系列的YOLOv1-YOLOv3,这里推荐一个2D ...

  3. 2019 sample-free(样本不平衡)目标检测论文阅读笔记

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自知乎,已获作者同意转载,请勿二次转载 (原文地址:https://zhuanlan.zhihu.com/p/100052168) 背景 < ...

  4. 目标检测论文阅读:GHM(anchor based)

    目标检测论文阅读:GHM(anchor based) 论文链接:https://arxiv.org/abs/1811.05181 代码链接:https://github.com/libuyu/GHM_ ...

  5. 毫米波目标检测论文 阅读笔记 | Radar Transformer: An Object Classification Network Based on 4D MMW Imaging Radar

    毫米波目标检测论文 | Radar Transformer: An Object Classification Network Based on 4D MMW Imaging Radar Jie Ba ...

  6. 三维目标检测论文阅读:VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection

    VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection 理解了PointPillars这篇文章后,看这篇文章就清 ...

  7. 目标检测论文阅读:Multi-scale Location-aware Kernel Representation for Object Detection(CVPR2018)

    Multi-scale Location-aware Kernel Representation for Object Detection 论文链接:https://arxiv.org/abs/180 ...

  8. 目标检测论文阅读:Cascade R-CNN: Delving into High Quality Object Detection(CVPR2018)

    Cascade R-CNN: Delving into High Quality Object Detection(CVPR2018) 论文链接:https://arxiv.org/abs/1712. ...

  9. 目标检测论文阅读:DeFCN(POTO+3DMF)算法笔记

    标题:End-to-End Object Detection with Fully Convolutional Network 会议:CVPR2021 论文地址:https://ieeexplore. ...

  10. 目标检测论文阅读:GFL算法笔记

    标题:Generalized Focal Loss: Learning Qualified and Distributed Bounding Boxes for Dense Object Detect ...

最新文章

  1. java程序分为哪两大类_JAVA程序基础(第1-2章分类)复习-1
  2. ARP监控工具ARPalert
  3. C语言中关于字符串常量的进一步分析 转
  4. 表单验证自定义二选一
  5. paramiko基础
  6. 中科院NLPIR中文分词java版
  7. Openjudge-NOI题库-和为给定数
  8. 深入Android 【六】 —— 界面构造
  9. 当你使用微信和QQ时,请不要忘记ICQ这个伟大的公司!
  10. 软件过程之美 : 软件配置管理策略及主流工具实战
  11. vsftp启用root用户
  12. weblogic开发EJB
  13. android模拟器串口,android模拟器上模拟串口通信
  14. 从零开始用uniapp搭建一个APP
  15. 干货 | 6大商品数据分析模型分享!
  16. canal_deployer、canal_adapter碰到的问题
  17. 进程间通信(IPC (Inter-process communication))
  18. process monitor解决网络问题一则
  19. 让dropout在图像超分辨领域大放异彩![2022 CVPR]
  20. laravel中图片验证码以及错误处理

热门文章

  1. java如何将两首歌按时间合成_怎么制作串烧歌曲?将多首音乐合并成一首音乐的操作方法...
  2. 用HTML加css做成的新年特效,使用html和css3给网站添加上春节灯笼挂件代码
  3. arduino i2c 如何写16位寄存器_Arduino只是拿来玩的?你错了!教你用它自制一个非常实用的小产品|智能灌溉控制器...
  4. ZYNQ PL通过EMIO ETHE1外接PHY由GMII转RGMII
  5. 一. javascript运算符
  6. EA类图之间的关系,用例图、类图、顺序图操作
  7. 如何证明拉格朗日中值定理
  8. Salient Object Detection with Pyramid Attention and Salient Edges
  9. Java List<Long>转List<String>
  10. 天文观测常用英文单词