1. 前言
今天为大家科普一篇 ECCV 2018 的一篇目标检测网络 RFBNet,论文全名为:Receptive Field Block Net for Accurate and Fast Object Detection 。这篇论文主要的贡献点主要是在 SSD 网络中提出了一个 Receptive Field Block (RFB) 模块,RFB 模块主要是在 Inception 的基础上加入了空洞卷积层从而有效的增大了感受野。另外,RFB 模块是嵌在 SSD 上的,所以检测的速度比较快,精度比 SSD 更高。
2. RFB 模块
RFB 模块的效果示意图如下图所示,其中虚线部分就是指 RFB 模块。
RFB 模块主要有两个特点:
- RFB 模块有多个分支,每个分支的第一层都由特定大小卷积核的卷积核构成,例如图上的1×11×1, 3×33×3,5×55×5。
- RFB 模块引入了空洞卷积,主要作用是为了增加感受野,空洞卷积之前是应用在分割网络 DeepLab 中,这里将其应用在检测任务中,以获得更大的感受野,可以更好地编码空间长距离语义。
在 RFB 模块中,最后将不同尺寸和感受野的输出特征图进行 Concat 操作,以达到融合不同特征的目的。在 Figure2 中,RFB 模块中使用三种不同大小和颜色的输出叠加来展示。在 Figure2 的最后一列中将融合后的特征与人类视觉感受野做对比,从图中看出是非常接近的,这也是这篇论文的出发点。
3. 两种 RFB 结构示意图
下面的 Figure4 展示了 RFBNet 的两种结构。
- Figure4(a) 表示 RFB 结构,整体上借鉴了 Inception 的思想。主要不同点在于引入 3 个空洞卷积层。
- Figure4(b) 表示 RFB-s 结构。RFB-s 和 RFB 相比主要有两个改进,一方面用3×33×3 卷积层代替5×55×5 卷积层,另一方面用1×31×3 和3×13×1 卷积层代替3×33×3 卷积层,主要目的应该是为了减少计算量,类似 Inception 后面的版本对 Inception 结构的改进。
4. RFBNet-300 的结构
下面的图代表 RFBNet-300 的整体结构图,基本是照搬了 SSD,主要有 2 点不同:
- BackBone 部分用两个 RFB 结构替换原来新增的两层。
- conv4_3和conv7_fc在接预测层之前分别接 RFB-s 和 RFB 结构。
5. 实验结果
下面的 Table1 展示了 RFBNet-300 在 PASCAL VOC2007 test dev 上的测试结果,训练集基于 2007 和 2012 的 trainval。RFBNet-300 在 mAP 和 FPS 两方面效果都不错。
而下面的 Table4 是在 COCO test dev 2015 数据集上的测试结果。最后的 RFBNet-512E 做了两个改变:
- 对conv7_fc的输出特征做了up-sample,然后和conv4_3的输出特征做融合,基于融合后的特征做预测。这种做法实际上是借鉴了 FPN 算法的思想。
- RFB 结构中增加了7x7大小的卷积分支。这两点改进对效果的提升有一定帮助,而且带来的计算量也少。
下面的 Figure6 展示了和 RFBNet 同时期的一些目标检测算法在 COCO test-dev 数据集上关于效果和速度的直观对比,可以看到 RFBNet 的速度和精度平衡还是不错的。
6. 后记
RFBNet 说白了就是空洞卷积的应用,虽然看起来论文比较水,但至少给我们提供了一个重要信息,在检测中调感受野是行之有效的。
7. 附录
- 论文原文:https://arxiv.org/pdf/1711.07767.pdf
- 代码实现:https://github.com/ruinmessi/RFBNet
- 参考:https://blog.csdn.net/u014380165/article/details/81556769
本文暂时没有评论,来添加一个吧(●'◡'●)