主要思想
引入two stage类型的object detection算法中对box的由粗到细的回归思想(由粗到细回归其实就是先通过RPN网络得到粗粒度的box信息,然后再通过常规的回归支路进行进一步回归从而得到更加精确的框信息,这也是two stage类型的object detection算法效果优于one stage类型的一个重要原因)。
引入类似FPN网络的特征融合操作用于检测网络,可以有效提高对小目标的检测效果,检测网络的框架还是SSD。
Abstract
对于目标检测,two-stage方法(例如Faster R-CNN)可以获得最高精度,而one-stage方法(例如SSD)具有高效率的优点。继承两者的优点且克服其缺点,本文提出了一种新的单次目标检测器,名为RefineDet,它比two-stage方法更精准,同时保持了one-stage方法的效率。 RefineDet由两个相互连接的模块组成,即anchor refinement module和object detection module。具体来说,ARM旨在(1)过滤掉negative anchors,以减少分类器的搜索空间,(2)粗略调整anchors的位置和大小,为后续的回归提供更好的初始化。ODM将refined anchors作为输入,进一步改善回归和预测多级标签。同时,我们设计transfer connection block来传输ARM的特征,用于ODM中预测目标的位置,大小和类别标签。Multi-task loss function使我们能够以端到端的方式训练整个网络。 PASCAL VOC 2007,PASCAL VOC 2012和MS COCO的实验,证明了RefineDet实现了state-of-the-art的检测精度和高效率。
YOLO和SSD系列的单阶段检测算法本质上与RPN网络无异,只不过RPN网络不做多类别预测,只是简单地区分物体和背景。在双阶段方法中,RPN起到的作用是给出Region proposals做出粗糙检测,而对于单阶段算法想一步到位,直接采用”RPN”做出精确预测,因此要在网络设计上做出很多tricks。
RefineDet 是基于SSD算法的改进。继承了两种方法(例如,单一阶段设计方法,两阶段设计方法)的优点,并克服了它们的缺点。它改进了采用单一阶段设计的方法,使用两个相连的模块(见图1),即 anchor 细化模块(the anchor refinement module,ARM)和目标检测模块(the object detection module,ODM)。
Introduction & Related Work
-
Classical Object Detectors:Haar+AdaBoost,DPM等
基于滑动窗口方法手工制造特征和分类器,在密集图像网格上的目标寻找。
-
Two-Stage Approach:R-CNN,SPPNet,Fast R-CNN,Faster
R-CNN,R-FCN,FPN,Mask R-CNN等
两阶段方法包括两部分:第一部分(例如,Selective Search,EdgeBoxes,DeepMask,RPN )生成一个稀疏的候选对象提议集,第二部分进一步分类和回归,使用卷积网络确定准确的对象区域和相应的类别标签。进一步改进性能,如架构图,训练策略,上下文推理和多层利用。
两阶段相比一阶段有三个优点:
-
采用带采样启发式的两阶段结构处理类不平衡问题;
-
使用两步级联回归对象框参数;
-
使用两阶段特征描述对象。
-
-
One-Stage Approach:OverFeat,YOLO,YOLOv2,SSD,DSSD,DSOD,RetinaNet等
通过对位置、比例和纵横比进行定期密集采样来检测目标,主要优点是计算效率高,但是,检测精度通常落后于两阶段方法。
OverFeat方法基于端对端的深度ConvNets来分类、定位和检测。YOLO使用单个前馈卷积网络直接预测对象类和位置,非常快速。之后,YOLOv2改进了YOLO的几个方面:添加所有卷积层上的批量标准化,使用高分辨率分类器,使用带anchor boxes的卷积层替代全连接层来预测bounding boxes等。SSD方法在多个ConvNet层扩展了不同尺度的anchors,强制每个层专注于预测确定的尺寸对象。
DSSD在SSD中引入了额外的上下文,通过反卷积来提高准确性。
DSOD在SSD结构的基础上,设计了一个有效的框架和一套原则来从头开始学习目标检测器。
一阶段方法检测精度低的一个主要原因是类不平衡问题。为了提高准确性,一些新方法通过重新设计损失函数或分类来解决类不平衡问题。 RetinaNet重塑标准交叉熵损失,来聚焦训练在一组稀疏的hard examples,降低分配给分类良好的例子的损失权重。虽然一阶段检测器取得了良好的进展,但准确性仍然落后于两阶段方法。
-
Two-Stage和One-Stage方法的结合:RON,RefineDet等
RON研究设计了反向连接,使网络能够检测多层 CNN 中的对象;提出了 objectness prior 来引导搜索目标对象,在卷积特征图上显着减少对象的搜索空间;利用多任务损失函数优化整个网络,这样网络就能直接预测最终检测结果。
RefineDet继承了一阶段和两阶段方法的优点,并克服它们的缺点。它使用两个相互连接的模块,即ARM和ODM,来改进一阶段方法的体系结构。
ARM识别并删除negative anchors,以减少分类器的搜索空间;粗略调整anchors的位置和大小,为后续提供更好的初始化回归。 这部分类似Faster R-CNN算法中的RPN网络,主要用来得到bbox(类似Faster R-CNN中的ROI或proposal)和去除一些负样本(这是因为负样本数量远大于正样本)。因此基于4层特征最后得到的还是两条支路,一个bbox的坐标回归支路,另一个是bbox的二分类支路。我们知道在Faster R-CNN算法中RPN网络存在的意义就是生成proposal(或者叫ROI),这些proposal会给后续检测网络提供较好的初始信息,这也是one stage的object detection算法和two stage的object detection算法的重要区别,这里的ARM基本上扮演了RPN网络的角色,如果一定要说不同点的话,那应该就是这里的输入利用了多层特征,而RPN网络的输入是单层特征。
ODM采用ARM产生的refined anchors作为输入,进一步改善回归和预测多类标签。这两个互连模块模仿两阶段结构,因此继承了其三个优点来产生准确的检测结果,效率也高。这部分就基本上是SSD了,也是融合不同层的特征,然后做multi class classification和regression。主要的不同点一方面在于这部分的输入anchors是ARM部分得到的refined anchors,类似RPN网络输出的proposal。另一方面和FPN算法类似,这里的浅层feature map(size较大的蓝色矩形块)融合了高层feature map的信息,然后预测bbox是基于每层feature map(每个蓝色矩形块)进行,最后将各层结果再整合到一起。而在SSD中浅层的feature map是直接拿来用的(并没有和高层的feature map融合),也就是对bbox的预测是在每一层上进行的,预测得到结果后再将各层结果整合在一起,这是非常重要的区别。这样做的好处就是对小目标物体的检测效果更好,这在FPN和RON等算法中已经证明过了。
TCB将ARM中的特征传输到ODM中用以预测位置、大小和类别标签。这部分是做特征的转换操作,也就是将ARM部分的输出feature map转换成ODM部分的输入,这部分其实和FPN算法的特征融合很像,FPN也是这样的upsample后融合的思想。
主要贡献:
- 提出了一个新颖的一阶段框架用于目标检测,由两个相互连接的模块组成,即ARM和ODM。性能比两阶段方法更好,同时保持一阶段方法的高效率。
- 为确保有效性,设计了TCB来传输ARM的特征,来处理更具挑战性的任务,即预测ODM中准确的对象位置、大小和类别标签。
- 实现了最新的state-of-the-art通用目标检测(PASCAL VOC 2007,PASCAL VOC 2012和MS COCO)。
Network Architecture
与SSD类似,RefineDet基于前馈卷积网络生成bounding boxes和目标的不同类的预测分数,通过非最大值抑制来产生最终结果。RefineDet由两个相互连接的模块组成,即ARM和ODM。删除VGG-16和ResNet-101的分类层并添加辅助结构来构建ARM,它们在ImageNet上进行了预训练来满足我们的需求。
网络结构构建,以ResNet101,输入图像大小为320为例,在Anchor Refinement Module部分的4个灰色矩形块(feature map)的size分别是4040,2020,1010,55,其中前三个是ResNet101网络本身的输出层,最后55输出是另外添加的一个residual block。有了特征提取的主网络后,就要开始做融合层操作了,首先是55的feature map经过一个transfer connection block得到对应大小的蓝色矩形块(P6),transfer connection block后面会介绍 ,对于生成P6的这条支路而言只是3个卷积层而已。接着基于10*10的灰色矩形块(feature map)经过transfer connection block得到对应大小的蓝色矩形块(P5),此处的transfer connection block相比P6增加了反卷积支路,反卷积支路的输入来自于生成P6的中间层输出。P4和P3的生成与P5同理。
因此,整体来看该网络和two stage的结构很像(都可以概括为two-step cascaded regression),一个子模块做RPN的事,另一个子模块做SSD的事。因此SSD是直接在default box的基础上进行回归的,而在RefineDet中是先通过ARM部分生成refined anchor boxes(类似RPN网络输出的propsoal),然后在refined anchor boxes基础上进行回归,所以能有更高的准确率,而且得益于特征融合,该算法对于小目标物体的检测更有效。
以下解释RefineDet的三个核心组件:
- 传输连接块(TCB),传输ARM的特征到ODM进行检测;
- 两步级联回归,准确地回归物体的位置和大小;
- 负锚过滤,在早期拒绝分类良好的负锚,缓解类不平衡问题。
Transfer Connection Block
为了建立ARM和ODM的联系,我们引入TCB来将ARM中的特征图转换到ODM中,这样ODM可以共享ARM的特征。值得注意的是,从ARM中,我们只在与anchors有联系的特征图上使用TCBs。 TCB通过添加高级特征来整合大规模上下文,以改善检测精度。 要匹配它们之间的尺寸,我们使用反卷积操作来扩大高级特征图,并以元素方式对它们求和。 然后,我们在求和后添加卷积层以确保检测特征的可辨性。
Two-Step Cascaded Regression
目前的一阶段方法依靠基于具有不同尺度的特征图层的一步回归来预测位置和物体的大小,在某些场景中相当不准确,尤其是小目标检测。因此,我们提出了一个两步级联回归策略回归对象的位置和大小。我们先使用ARM调整anchors的位置和大小,为ODM中的回归提供更好的初始化。我们将n个anchor boxes和在特征图上划分的单元格关联起来。最初的位置每个anchor boxes相对于其对应的单元是固定的。在每个特征映射单元格中,我们预测refined anchors的四个偏移量相对于原始anchors和指示前景存在的两个置信度分数。因此,我们可以在每个特征图单元格产生n个refined anchors。获得refined anchors后,我们将其传到ODM相应的特征图中,进一步生成对象类别和准确的对象位置、尺寸。ARM和ODM中相应的特征图具有相同的维度。我们计算refined anchors的c个类别分数和四个准确的偏移量,产生c + 4的输出以完成检测任务。此过程类似于SSD 中的默认框。但是,与SSD 不同,RefineDet使用两步策略,即ARM生成refined anchor boxes,ODM采取其作为输入进一步检测,因此检测结果更精准,特别适用于小物体。
Negative Anchor Filtering
One-stage精度落后于two-stage的一个主要原因是类别不平衡问题。为了解决这种问题,作者采用了negative anchor过滤。在训练阶段,针对ARM中的anchor,如果negative confidence大于一个阈值θ(θ=0.99,经验值),那么在训练ODM时将它舍弃。也就是通过hard negative anchor和refined anchor来训练ODM。 与此同时,在预测阶段,如果refined anchor box负置信度大于θ,则在ODM进行检测时丢弃。
Training and Inference
Data Augmentation
使用了几种数据扩充方法生成训练样本,来构建一个强大的模型来适应对象的变化,包括随机扩展,随机剪裁,随机光度失真和翻转。
Backbone Network
使用在ILSVRC CLS-LOC数据集上预训练的VGG-16和ResNet-101作为RefineDet中的骨干网络。RefineDet也可以在其他预训练网络上工作,如Inception v2 ,Inception ResNet和ResNeXt101。 与DeepLab-LargeFOV类似,通过子采样参数,将VGG-16的fc6和fc7转换成卷积层conv_fc6和conv_fc7。与其他层相比,conv4_3和conv5_3具有不同的特征尺度,所以使用L2正则化来扩展特征到10和8中,然后在反向传播中学习尺度。 同时,为了捕捉高层次多种尺度的信息和引导对象检测,还分别在剪裁的VGG-16和ResNet101的末尾添加了额外的卷积层(即conv6_1和conv6_2)和额外的剩余块(即res6)。
Anchors Design and Matching
处理不同的规模对象,在VGG-16和ResNet101上选择尺寸分别为8,16,32和64像素步幅大小的特征层,与几种不同尺度的anchor相关联进行预测。 每个特征图层都与一个特定特征anchor的尺度(尺度是相应层步幅的4倍)和三个比率(0.5,1.0和2.0)相关联。 我们遵循不同层上的anchor尺度设计,确保了不同尺度的anchor在图像上具有相同的平铺密度。 同时,在训练期间阶段,我们确定之间的对应关系基于anchors和ground truth boxes的jaccard重叠率(IoU),并端到端地训练整个网络。具体来说,我们首先将每个ground truth boxes与具有最佳重叠分数的anchor boxes相匹配,然后匹配anchor重叠高于0.5的任何ground truth boxes。
Hard Negative Mining
关于正负样本界定的标准基本上和其他object detection类似,比如和ground truth的IoU超过阈值0.5的box为正样本,也就是label是1。显然这样做后很多box的标签都是背景标签,也就是所谓的负样本,通过前面说的ARM部分可以过滤掉一些负样本,但接下来还是要采用类似SSD算法中的hard negative mining来设定正负样本的比例(一般设定为1:3),当然负样本不是随机选的,而是根据box的分类loss排序来选的,按照指定比例选择loss最高的那些负样本即可。
Loss Function
损失函数方面主要包含ARM和ODM两方面。在ARM部分包含binary classification损失Lb和回归损失Lr;同理在ODM部分包含multi-class classification损失Lm和回归损失Lr。需要注意的是虽然本文大致上是RPN网络和SSD的结合,但是在Faster R-CNN算法中RPN网络和检测网络的训练可以分开也可以end to end,而这里的训练方式就纯粹是end to end了,ARM和ODM两个部分的损失函数都是一起向前传递的。
optimization
用“xavier”方法随机初始化基于VGG-16的RefineDet的两个添加的卷积层中(conv6_1和conv6_2)的参数。对于基于ResNet-101的RefineDet,绘制参数来自具有标准的零均值高斯分布,额外残余块(res6)的偏差为0.01。
- default batch size:32
- momentum:0.9(加速收敛)
- weight decay:0.0005(防止过拟合)
- initial learing rate:10-3
- different learning rate decay
Inference
在预测阶段,首先,ARM过滤掉负置信度分数大于阈值θ的anchors,refine剩余anchors的位置和大小。然后, ODM输出每个检测图像前400名高置信度的anchors。 最后,应用NMS,jaccard重叠率限定为0.45 ,并保留前200名高置信度anchors,产生最终的检测结果。
Experiments
Conclusion
在本文中,提出了一种新的单次目标检测器,由两个相互连接模块组成,即ARM和ODM。使用multi-task loss对整个网络进行end-to-end训练。在PASCAL VOC 2007,PASCAL VOC 2012和MS COCO数据集上进行了几次实验,结果表明RefineDet实现了目标最先进的检测精度和高效率。
将来,计划使用RefineDet来检测一些其他特定类型的物体,例如行人,车辆和面部,并在RefineDet中引入注意机制以进一步改善性能。