Single-Shot Refinement Neural Network for Object Detection (RefineDet) 论文笔记

Single-Shot Refinement Neural Network for Object Detection (RefineDet)

论文链接:https://arxiv.org/pdf/1711.06897.pdf

该论文本质上是对SSD的改进,主要体现在融合了two-stage检测方法和one-stage检测方法的优点,即:(1)借鉴类似于faster-RCNN中RPN思想先对默认生成的proposal进行预选以及对proposal坐标框的预修正,以此来实现提高检测精度的目的,refine之后的proposal再进入SSD结构的网络进行后续的目标检测。(2)另一点改进是引入了多个层级特征图的融合以增加底层特征图的语义信息。通过上述两点的改进使得RefineDet在保持检测速度的同时实现state-of-the-art。实验效果非常不错。

在two-stage的检测网络中,RPN网络实现了对proposal的预选及初步的修正,这是two-stage检测网络检测精度优于one-stage检测网络的关键所在。所以该论文中通过引入Anchor Refinement Module(ARM)、Object Detection Module(ODM)、Transfer Connection Block(TCB)三个部分来实现two-stage特点与one-stage特点的融合。三部分的相互关系可见论文中图1。

Single-Shot Refinement Neural Network for Object Detection (RefineDet) 论文笔记_第1张图片

首先温习一下SSD检测网络的结构,如下图,先在不同层级的特征图上生成默认的proposal,随后这些proposal直接进入后续的检测部分,在该结构中相比于RefineDet有两点可以改进的地方,(1)proposal的初始化(即候选框的初始坐标)对检测精度有重要影响,如果能够借鉴RPN网络的思想对proposal进行refine,那么检测精度应该会有很大的提升。(2)SSD结构中各个层级的特征图没有融合,这导致底层的特征图缺少高度抽象的语义信息,高层的特征图当中缺少图像细节,这导致小目标的检测效果不佳。那么在RefineDet网络当中是怎样通过ARM、ODM、TCB实现上述两点的改进的呢?

Single-Shot Refinement Neural Network for Object Detection (RefineDet) 论文笔记_第2张图片

Anchor Refinement Module(ARM):该部分相当于two-stage当中的RPN网络,只不过是对多个层级上的特征图产生的proposal进行预选以及对proposal的坐标进行初步的回归修正。由于在默认产生的proposal当中存在大量的负样本(即背景),这导致了严重的正负样本的不平衡,不利于网络的训练,所以在ARM中首先对这些proposal进行二分类,并且将易于识别的负样本直接去掉,以减少ODM网络的搜索空间。对于剩余的负样本依据其loss得分进行排序,选择较大loss的负样本用于后续网络的的训练,整体上使正负样本比例保持在1:3。ARM的另一作用则是对proposal坐标的初步修正,使得proposal的初始化坐标能够更加逼近groundtruth,这样在ODM当中能够实现更高的检测精度,尤其是对于小目标的检测。

Transfer Connection Block(TCB):该部分主要实现的两个作用,即(1)实现将高层级的特征图传递到低层级,进行不同层级之间特征图的融合(类似于FPN的思想),其结构可见论文图2。首先对当前层的特征图进行反卷积,之后与上一层的特征图相加。这样不同层级之间特征图的融合使得底层特征图包含更多细节信息的同时包含更多的高度抽象语义信息,利于小目标的检测。(2)TCB的另一作用在于对融合之后的特征图大小加以调整,使其适应ODM检测格式的要求。

Single-Shot Refinement Neural Network for Object Detection (RefineDet) 论文笔记_第3张图片

Object Detection Module(ODM):这一部分相比于SSD并没有结构上的实质区别,主要作用是实现对待检测proposal的多分类以及框坐标的回归。但其输入的特征图是多个层级融合之后的特征图,待检测的proposal是经过ARM网络refine的,这两点不同使得RefineDet网络检测效果有了很大的提高。

整个网络可以分为两大主体,即ARM和ODM,前者实现对默认生成的proposal进行预处理,后者实现多分类和回归的检测,整体和faster-RCNN很相似。当然其损失函数也要同时顾及这两部分的损失,损失函数:L\left ( \left \{ p_{i}\right \},\left \{ x_{i}\right \},\left \{ c_{i}\right \},\left \{t_{i}\right\} \right )=\frac{1}{N_{arm}}\left ( \sum _{i}L_{b}\left ( p_{i},[l_{i}^{*}\geqslant 1] \right )+\sum _{i}[l_{i}^{*}\geqslant 1]L_{r}\left ( x_{i},g_{i}^{*} \right ) \right )+\frac{1}{N_{odm}}\left ( \sum _{i}L_{m}\left ( c_{i},l_{i}^{*} \right )+\sum _{i}[l_{i}^{*}\geqslant 1]L_{r}\left ( t_{i},g_{i}^{*} \right ) \right )

损失函数中前半部分为ARM当中的二分类损失和初步的回归损失,后半部分是ODM中多分类损失和回归损失,l_{i}^{*}\geqslant 1表示只有正样本参与计算,最终实现end-to-end的计算。

实验结果:RefineDet的实验结果非常不错,相比于以前的one-stage结果有了很大的提高,具体的实验数据如下图:

Single-Shot Refinement Neural Network for Object Detection (RefineDet) 论文笔记_第4张图片

Single-Shot Refinement Neural Network for Object Detection (RefineDet) 论文笔记_第5张图片

在VOC和COCO数据集上进行训练之后的测试结果非常不错。

Single-Shot Refinement Neural Network for Object Detection (RefineDet) 论文笔记_第6张图片

总结分析:结合RefineDet和上一篇博客的Cascade R-CNN,对于proposal的预先回归处理的重要性可见一斑,RefineDet整个网络相当于对proposal坐标定位应用了两次回归操作,Cascade R-CNN则结合不同IOU阈值反复应用了3次回归操作,对proposal的反复回归训练可以很大程度上提高目标检测的精度,而对proposal的反复回归的次数可以作为超参数,值得讨论。

你可能感兴趣的:(目标检测论文)