Relation-Network目标检测算法详细总结分析(one/two-stage)(深度学习)(CVPR 2018)

版权声明:转载时,请务必注明文章出处网址,谢谢! https://blog.csdn.net/Gentleman_Qin/article/details/84429023

论文名称:《 Single-Shot Refinement Neural Network for Object Detection 》

论文下载:https://arxiv.org/abs/1711.06897

论文代码:https://github.com/sfzhang15/RefineDet


主要思想​​​​

引入 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 的检测精度和高效率。

1.Introduction & 2.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 )生成一个稀疏的候选对象提议集,第二部分进一步分类和回归,使用卷积网络确定准确的对象区域和相应的类别标签。进一步改进性能,如架构图,训练策略,上下文推理和多层利用。

 两阶段相比一阶段有三个优点:

           (1) 采用带采样启发式的两阶段结构处理类不平衡问题;

           (2) 使用两步级联回归对象框参数;

           (3) 使用两阶段特征描述对象。

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 后融合的思想。

主要贡献:

(1)提出了一个新颖的一阶段框架用于目标检测,由两个相互连接的模块组成,即 ARM 和 ODM。性能比两阶段方法更好,同时保持一阶段方法的高效率。

(2)为确保有效性,设计了 TCB 来传输 ARM 的特征,来处理更具挑战性的任务,即预测 ODM 中准确的对象位置、大小和类别标签。

(3)实现了最新的 state-of-the-art 通用目标检测(PASCAL VOC 2007,PASCAL VOC 2012 和 MS COCO)。

3.Network Architecture

 图 1 RefineDet 结构

       与 SSD 类似,RefineDet 基于前馈卷积网络生成 bounding boxes 和目标的不同类的预测分数,通过非最大值抑制来产生最终结果。RefineDet 由两个相互连接的模块组成,即 ARM 和 ODM。删除 VGG-16 和 ResNet-101 的分类层并添加辅助结构来构建 ARM,它们在 ImageNet 上进行了预训练来满足我们的需求。

       网络结构构建,以 ResNet101,输入图像大小为 320 为例,在 Anchor Refinement Module 部分的 4 个灰色矩形块(feature map)的 size 分别是 40*40,20*20,10*10,5*5,其中前三个是 ResNet101 网络本身的输出层,最后 5*5 输出是另外添加的一个 residual block。有了特征提取的主网络后,就要开始做融合层操作了,首先是 5*5 的 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 的三个核心组件:(1)传输连接块(TCB),传输 ARM 的特征到 ODM 进行检测; (2)两步级联回归,准确地回归物体的位置和大小; (3)负锚过滤,在早期拒绝分类良好的负锚,缓解类不平衡问题。

Transfer Connection Block

图 2 TCB 结构

       为了建立 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 进行检测时丢弃。

4.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 两个部分的损失函数都是一起向前传递的。 

图 2 TCB 结构

      其中i表示一个 batch 中的第几个 anchor,表示anchor_i的 ground truth 的类别 ,表示anchor_i的 ground truth 位置和大小,表示置信度,表示 ARM 中 anchor 的坐标。表示预测类别,表示 ODM 中的预测框坐标信息。和分别表示 ARM 和 ODM 中的positive anchor数量。表示二值分类损失(有目标 \ 没有目标),表示多类别损失,表示回归损失。就表示如果negative confidence大于一个阈值θ,那么返回 1,否则返回 0。如果=0,设置=0 和=0;如果=0,那么设置=0 和=0。

Optimization
       用 “xavier” 方法随机初始化基于 VGG-16 的 RefineDet 的两个添加的卷积层中(conv6_1 和 conv6_2)的参数。对于基于 ResNet-101 的 RefineDet,绘制参数来自具有标准的零均值高斯分布,额外残余块(res6)的偏差为 0.01。 

1.default batch size:32
2.momentum:0.9(加速收敛)
3.weight decay:0.0005(防止过拟合)
4.initial learing rate:0.01
5.different learning rate decay
Inference
      在预测阶段,首先,ARM 过滤掉负置信度分数大于阈值θ的 anchors,refine 剩余 anchors 的位置和大小。然后, ODM 输出每个检测图像前 400 名高置信度的 anchors。 最后,应用 NMS,jaccard 重叠率限定为 0.45 ,并保留前 200 名高置信度 anchors,产生最终的检测结果。

5.Experiments

Table1

Table1 是非常详细的实验结果对比,测试数据包括 VOC2007 和 VOC2012 数据集。以 VGG-16 为特征提取网络的 RefineDet320 在达到实时的前提下能在 VOC 2007 测试集上达到 80 以上的 mAP,这个效果基本上是目前看到过的单模型在相同输入图像情况下的最好成绩了。表格中最后两行在算法名称后面多了 +,表示采用 multi scale test,因此效果会更优一些。 

6.Conclusion

在本文中,提出了一种新的单次目标检测器,由两个相互连接模块组成,即 ARM 和 ODM。使用 multi-task loss 对整个网络进行 end-to-end 训练。在 PASCAL VOC 2007,PASCAL VOC 2012 和 MS COCO 数据集上进行了几次实验,结果表明 RefineDet 实现了目标最先进的检测精度和高效率。

       将来,计划使用 RefineDet 来检测一些其他特定类型的物体,例如行人,车辆和面部,并在 RefineDet 中引入注意机制以进一步改善性能。

猜你喜欢

转载自blog.csdn.net/Gentleman_Qin/article/details/84429023