本文主要是介绍【论文学习】A Survey of Deep Learning-based Object Detection-基于深度学习的目标检测综述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
A Survey of Deep Learning-based Object Detection
基于深度学习的目标检测综述
原文:https://arxiv.org/pdf/1907.09408.pdf
Abstract
【目标检测】是计算机视觉最重要和具有挑战性的分支之一,广泛应用于监控安全,自主驾驶等。 对于检测任务,深度学习网络的飞速发展,给目标检测器性能带来极大的提升。
目标检测的目的:定位某类的语义对象。
1.分析现有典型检测模型的方法并描述基准数据集。
2.对各种目标检测方法的提供全面系统地概述,涵盖one-stage 和 two-stage 探测器。
3.列出了传统和新的应用。对目标检测的一些代表性分支也一并分析。
4.讨论利用这些目标检测方法的体系结构,以建立有效和高效的系统。
并为更好的跟进最新算法及进一步的研究,指出发展趋势。
I. 介绍
• 两类目标检测器
【two-stage 】 如 Faster R-CNN
【one-stage 】 如 YOLO, SSD
• 贡献
(1)
(2)
(3)
II. BACKBONE NETWORKS
Backbone network作为目标检测任务的基础特征提取器,将输入的图像转换为相应的特征图。
对于精度和速度的不同的需求,可选的backbone有 ResNet [11], ResNeXt [17], AmoebaNet [18] or lightweight backbones like MobileNet [19], ShuffleNet [20],
SqueezeNet [21], Xception [22], MobileNetV2 [23].
III. TYPICAL BASELINES
A. Two-stage Detectors
1. R-CNN
第一个基于CNN的物体检测方法R-CNN。Ross Girshick et al.提出。在数据集 PASCAL VOC上应用,而不是在像HOG特征之类的简单系统上。深度学习方法在物体检测领域被验证更加的高效。
R-CNN包含四个模块。第一个模块产生种类独立的区域建议。第二个模块在每一个区块建议的基础上提取一个修正长度(4096维)的特征向量。第三个模块是一系列的特殊线性SVM分类器,用来将每张图像中的物体分类。最后一个模块是一个bounding-box回归器,用于准确的预测bounding-box。
从图像分类到物体识别,想要达到快速收敛的一个方法是:在ImageNet classification dataset上预训练CNN。最后的全连接层用 the CNNs ImageNet specific 1000-way classification layer代替。然后在变形的建议窗口使用SGD精确调整CNN参数。
正负样本的确定:proposal boxes 和ground-truth boxes的IoU值低于0.3的定义为负样本,超过0.5的定义为正样本。
2. Fast R-CNN
Ross Girshick et al.一年后提出Fast R-CNN。 R-CNN完成的是一个前向的ConvNet并且没有共享计算结果,并在SVMs分类中花费了很长时间。Fast R-CNN从整张图中提取了特征,并传到RoI pooling层获取修正大小的特征作为接下来分类和bounding box回归的输入。这样,特征只需要提取一次,并传送到了CNN用于分类和定位,这节省了大量CNN计算时间和很大的硬盘存储。
R-CNN的训练是一个多阶段的处理:pre-training stage, fine-tuning stage, SVMs classification stage and bounding box regression stage。Fast R-CNN是一个阶段的end-to-end的训练处理,在每个标记的RoI上联合训练分类和定位是采用多任务损失的方法。
Fast R-CNN的 另一个提升采用了RoI pooling层从region proposals提取修正大小的特征图。而R-CNN中的region proposals有不同的大小。这个操作不需要为变形区域保留空间信息。为了更快检测,作者采用了截断的SVD,这加速了全连接层计算的前向通过。
在 PASCAL VOC 2007数据集上,mAP从66.0%提升到66.9%;训练时间从84个小时降低到了9.5个小时;测试效率因为截断SVD从47秒提升到0.32秒,快了213倍。(测试平台 Nvidia K40 GPU)
3. Faster R-CNN
三个月后,基于区域的CNN基线提出,即Faster R-CNN。Fast R-CNN对于建议的RoI采用选择性搜索,这种方式很慢,并且与检测网络需要相同的时间。Faster R-CNN用一种新的RPN(region proposal network)代替它。这种新的RPN是一种全卷积网络,可以有效地预测建议区域,这种建议区域有着广泛的尺寸和宽高比例。它加速了建议区域的产生,并且分享了全图的卷积特征和一些通用的卷积层。
对于不同尺寸物体的检测,另一个新的方法是采用多尺寸的anchors作为推理依据。这种anchors不需要输入图像或者特征的多个尺寸,就可以更大的简化错尺寸建议区域的产生。
在最后共享的卷积层的输出上,采用了一个3*3的滑动窗口,每一个特征窗口的中心点与原始图像上的一个点相关,这个点就是K个anchor boxes的中心点。作者设置了3个不同尺寸和3个不同矿高比的anchor boxes。通过测量预测box和ground truth box之间的距离,来优化预测box的位置。
实验证明Faster R-CNN在精度和效率上都得到了很大提升。 在 PASCAL VOC 2007数据集上,mAP从66.9%提升到69.9%;整个训练时间降低了10倍(从1830ms降到198ms);处理效率从0.5帧达到了5帧。
4. Mask R-CNN
Mask R-CNN是Faster R-CNN的一项扩展工作,主要应用在分割任务中。葫芦哦增加的平行mask分支,它可以看做更精确的物体检测。 与Faster R-CNN相比, Mask R-CNN从两个方面提升了精度。
第一方面,增加了FPN(Feature Pyramid Network)。FPN包含了一个 bottom-up和 top-down并从侧面链接。 bottom-up通道是一个backbone ConvNet,它计算了一个特征层次结构,其中包含了以2为倍数的几个尺寸的特征图。 top-down通道通过简单特殊的上采样(语义更强,更高金字塔层的特征图)处理高分辨率的特征。这种特征金字塔网络提供了重要的特征信息:高分辨率的特征图检测小物体,低分辨率的特征图在语义信息中更丰富的检测大物体。
第二方面, 用RoIAlign代替RoI Pooling。传统的RoI Pooling在两个地方量化浮点数来获取近似的特征值。一是用在了每个RoI特征图中计算位置信息,二是在将RoI特征图分成大小相同的小格子的过程中用到了量化操作。这两次量化操作引起了RoI和提取特征的不对齐问题。
RoIAlign首先在每个RoI特征图计算浮点位置时,采用双线性插值的方法,在每个小格子中的四个定期采样位置计算提取的特征值。然后使用最大或者平局池化来获取每个格子的值,并聚合所有结果。
实验证明,在MS COCO数据集上,采用Resnet-FPN提升了1.7点的box AP, RoIAlign提升了1.1个点的box AP。
B. One-stage Detectors
1. YOLO
Joseph Redmon et al 提出。主要贡献是实时检测。一是预测框少于100个;二是它是一个统一的结构,是一个回归问题,可以从输入图像中直接提取特征用于预测位置和分类。
YOLO先将输入图像分成一个SS的网格,每个网格单元责任作用于检测物中心位置落入点。可信度用两部分相乘,P(object)是一个box包含一个物体的可能性, IOU显示了一个box包含一个物体的精确度。每个网格单元预测了B个bounding boxes和他们的可信度,以及C个类的C维条件概率。特征提取网络包含了24个卷积网络和2个全连接层。作者在一个全连接层之后使用了20个卷积层和一个平均池化层,用来在ImageNet数据集上的预训练。预训练阶段的输入图像分辨率是224224,在检测阶段输入图像的分辨率是448*448。
实现显示YOLO不善于精准定位,而且定位错误是主要的预测错误。在 PASCAL VOC数据集上,YOLO获得63.4%mAP和45帧, Fast R-CNN 获得70.0%mAP和0.5帧, Faster R-CNN 获73.2%mAP和7帧。
2. YOLOv2
YOLOv2是YOLO的升级版。更新内容如下:
-
Batch Normalization. 由于优化步骤中采用了随机梯度下降SGD,所以标准化整个训练集是不可能的。但是对于一个卷积网络层修正它的输入分布具有正向结果。那么怎么做呢? 由于在训练中SGD采用了mini-batch,所以我们标准化一个大小为m的mini-batch的激活函数,标准化后这个大小为m的mini-batch均值为0,方差为1. 最后每个mini-batch的元素从相同的分布中被抽样。这钟操作就可以被看做一个BN层。YOLOv2在每个卷积层前增加了一个BN层。这个操作可以提升至少2%mAP。
-
High Resolution Classifier。YOLO的分类器采用的是224224的分辨率,检测阶段采用448448的分辨率。在使用物体检测任务前必须将图像转到448448的大小。而YOLOv2在分类网络中增加了一个fine-tuning处理使用448448输入。这提高了4%的mAP。
-
Convolutional With Anchor Boxes。YOLO通过全连接层产生物体的位置信息。参考Faster R-CNN,YOLOv2shouci移除了全连接层,并采用anchor boxes预测分类和位置信息。这提高了7%的召回率,降低了0.3%的mAP。
-
采用K-means聚类在训练集上的bounding boxes自动获取较好的先验率,然后采用dimension clusters直接预测bounding box的中心位置。
-
Fine-Grained Features。用于提高小物体的识别。通过不同通道的临近特征堆叠,将高分辨率特征和低分辨率特征级联起来,提升1%。
-
Multi-Scale Training。用于预测不同分辨率的图像。每10个batches,网络自动从{320,352,……,608}选择一个新的图像大小进行训练。在VOC 2007数据集上,从63.4%mAP提升到78.6%mAP,帧率从45变为40.
-
YOLOv2提出新的分类架构Darknet-19(含有19个卷积层和5个最大池化层)。
3. YOLOv3
YOLOv3是YOLOv2的提升版本。
-
采用多标签分类,这是独立的逻辑分类器,可以适应更多负责的数据集包含标签重叠的问题。
-
采用三种不同尺寸的特征图预测bounding box。
-
受到ResNet的启发,提出一种更深的,robust的特征提取器——Darknet-53。
YOLOv3可以更多检测出小物体,但相比较而言,大中物体的检测有很逊色。
4 . SSD
SSD(single-shot detector)可在one-stage 中针对多个类别的单次检测器,直接预测多个尺度不同的特征图中,每个位置上一组固定比例边界框的类别score和框偏移。如图4。
每个特征图中,默认的 bounding boxes 具有不同的宽高比和尺度。不同的特征图中,默认 bounding boxes 的尺度,是在最高layer和最低layer间有规则间隔的情况下计算的,每个特征图都学习如何对特定尺度的目标作出响应。对于每个默认框,它将预测所有目标类别的偏移量和置信度。Fig.3 © 展示了这种方法。
Predicting each of the pyramidal feature hierarchy from a ConvNet as if it is a image pyramid like SSD
在训练阶段,默认的bounding boxes与ground truth boxes匹配上时作为正样本,剩余的为负样本。对于大量的负样本,作者对每个默认box采用高置信度损失,然后选取排名靠前的一些,使得负样本与正样本占比最高为3:1。同样,作者也采用了数据增广以提升精度和效率。
SSD512在测试数据集PASCAL VOC 2007上达到了81.6%mAP,在测试数据集PASCAL VOC
2012 上达到了80.0%mAP。而Faster R-CNN在这两个数据集上的mAP分别是78.8%和75.9%,YOLO在VOC2012 为 57.9%mAP。在 MS COCO DET数据集上SSD512完胜Faster R-CNN。
4 . RetinaNet
Tsung-Yi Lin et al.2018年2月提出。 RetinaNet是一个one-state的物体检测采用中心损失作为损失函数。对于R-CNN为什么要分两个阶段才能检测出准确的物体,原因是一阶段检测器训练网络聚合时出现前景和背景极端不平衡。因此作者提出一个中心损失函数,来降低好分类或者简单样本的比重损失,重点关注南训练的样本,以避免大量的简单负样本在训练的过程中压制分类器。
RetinaNet继承了之前一阶段检测器的快速性能,并且极大地客服了一阶段检测器对于正负样本不平衡时难以训练的问题。它对中小物体的检测大幅度提升。
5. DSSD
Deconvolutional Single Shot Detector,是SSD的修正版本。增加了预测陌路昂和反卷积模块,同样采用了ResNet-101作为主干。
在预测模块, Fu et al.增加了一个残差块给每个预测层,然后 再预测层和残差块的输出执行元素对元素的处理。反卷积模块为了加强特征增加了特征图的分辨率。反卷积层跟在预测层之后。
如何训练的呢?首先在基于ResNet-101的主干网络上预训练,基于数据集 ILSVRC CLS-LOC; 然后在检测数据上采用321321或者513513的输入训练原始SSD模型;最后冻结所有SSD模块权重训练反卷积模型。
实验证明,当增加了预测模块和反卷积模块后, DSSD513模型在测试数据集 PASCAL VOC 2007带来了2.2%的增强。
6 . RetinaNet
Tsung-Yi Lin et al.2018年2月提出。 RetinaNet是一个one-state的物体检测采用中心损失作为损失函数。对于R-CNN为什么要分两个阶段才能检测出准确的物体,原因是一阶段检测器训练网络聚合时出现前景和背景极端不平衡。因此作者提出一个中心损失函数,来降低好分类或者简单样本的比重损失,重点关注南训练的样本,以避免大量的简单负样本在训练的过程中压制分类器。
RetinaNet继承了之前一阶段检测器的快速性能,并且极大地客服了一阶段检测器对于正负样本不平衡时难以训练的问题。它对中小物体的检测大幅度提升。
7. M2Det
为了适应大量尺寸变化的物体实例检测, Zhao et al. 提出多水平特征金字塔网络(multi-level feature pyramid network (MLFPN)),构造更多有效的特征金字塔。作者分三步获取最终增强的特征金字塔:
首先,类似于FPN,从多层网络中提取多层特征融合作为基本特征。
其次,基本特征输入到一个block中,组成可替代的联合Thinned U型模型和特征融合模型。同时获取TUM的解码层作为下一步的特征。
最后,具有相同尺寸的解码层聚到一起构造一个包含多层特征的特征金字塔。
剩余的工作就是以一种端到端的方式遵循SSD架构获取boundingbox位置和分类结果。
8 . RefineDet
这个网络包含两个内关联的模块:一个anchor提炼模块和物体检测模块。这两个模块通过一个专一链接块连接到一起。训练过程是一个端到端的方法,有三个阶段引导:预处理,检测,NMS。
经典的一阶段检测器如SSD,YOLO,RetinaNet等使用一步回归的方法获取最终结果。作者发现使用两步级联回归方法可以更好的预测难以检测的物体,特别是小物体,并且可以提高检测和定位的精度。
C. Latest Detectors
1. Relation Networks for Object Detection
Hu et al.提出的一种适应注意力模型。这种相关模型添加在检测器前,两个全连接层之前,用于获得更强的特征。
2. DCNv2
Deformable convolutional networks DCN。 Jifeng Dai et al. 提出。目的是为了学习在有效的空间目标的支持区域内适应几何变化反应。DCN可以处理变形的核和位移。变形的ROI 池化也可以适应部分不同形状的物体位置。DCNv1获得了很好的精度提升。DCNv2 比 DCNv1利用更多的变形卷积层,在conv3-conv5阶段中代替常规的卷积层;所有变形层被一个学习的标量调节;作者采用特征模仿去更多的提升检测精度:通过结合DCN中每个ROI特征的特征模仿损失,这些特征是相似于从剪切图像中提取的好的特征。
在数据集COCO 2017 test-dev上, DCNv2获得了45.3%的mAP, DCNv1获得了41.7%的mAP, 常规 Faster R-CNN 在ResNet-101上获得了40.1%的mAP。
3. NAS-FPN
作者从谷歌大脑中采用了神经架构搜索找到了一些新的特征金字塔架构,称为NAS-FPN。包含top-down,bottom-up连接融合了各种尺寸的特征;重复FPN架构N次,将它们级联到一个大的结构中;高分辨率的特征用于检测小目标。堆叠更多的金字塔网络,增加特征维度,使用高容量的架构都提升了检测精度。
在 COCO test-dev数据集上, NAS-FPN 使用ResNet-50,拥有256个特征维度,吵多了原始FPN2.9%平均精度。NAS-FPN 利用 AmoebaNet作为主干网络,并堆叠7个FPN,拥有384个特征维度,在该数据及上可以达到48%的平均精度。
IV. DATASETS AND METRICS
目标检测需要标出目标所属的类别和及其在图像中的位置。其中目标的位置常用外接框来表示。如图5。
V. ANALYSIS OF GENERAL IMAGE OBJECT DETECTION METHODS
VI. APPLICATIONS AND BRANCHES
VII. CONCLUSIONS AND TRENDS
A. 结论
B. 趋势
REFERENCE
这篇关于【论文学习】A Survey of Deep Learning-based Object Detection-基于深度学习的目标检测综述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!