2019年的目标检测指南-创新互联
目标检测在视频监控、自动驾驶汽车、目标/人跟踪等领域得到了广泛的应用。在本文中,我们将了解目标检测的基础知识,并回顾一些最常用的算法和一些全新的方法。
原标题 | A 2019 Guide to Object Detection
作 者 | Derrick Mwiti
翻 译 | 林肯二百一十三(西安交通大学)、陈华Mark(武汉大学)、BBuf(西南科技大学)
编 辑 | Pita
目标检测是一种为了检测汽车、建筑物和人类等目标对象的计算机视觉技术,这些对象通常可以通过图片或视频来识别。
目标检测在视频监控、自动驾驶汽车、目标/人跟踪等领域得到了广泛的应用。在本文中,我们将了解目标检测的基础知识,并回顾一些最常用的算法和一些全新的方法。
目标检测的工作原理
目标检测会定位图像中的对象,并在该对象周围绘制一个包围框。这过程通常分为两步:目标分类并确定类型,然后在该对象周围绘制一个框。我们之前已经讨论过图像分类,现在让我们来回顾一些用于目标检测的常见模型架构:
R-CNN
Fast R-CNN
Faster R-CNN
Mask R-CNN
SSD(单点多框检测器)
YOLO (You Only Look Once)
将目标视作一个点
用于目标检测的数据增强策略
R-CNN 模型
该技术 结合 了两种主要方法:将大容量卷积神经网络应用于自底向上的区域方案中,对目标进行定位和分割;有监督的预训练。
查看论文: 特征层次结构丰富,可以精确的进行目标检测和语义分割 (https://arxiv.org/abs/1311.2524)
这是通过 domain-specific fine-tuning 来获得高性能提升。由于将区域(Regional)划分的 建议 与卷积神经网络相 结合 ,这篇论文的作者将该算法命名为 R-CNN (具有 CNN 特征的区域)。
论文链接:https://arxiv.org/pdf/1311.2524.pdf
该模型先基于图片提取出大约2000个自底向上的候选区域。然后使用一个大型CNN模型计算每个候选区域的特征向量。最后利用线性支持向量机 (SVMs)对每个区域进行分类。该模型在PASCAL VOC 2010( http ://host.robots.ox.ac.uk/pascal/VOC/voc2010/index.html)上的平均精度达到53.7%。
该模型的目标检测系统实现由三个模块组成。第一个模块负责生成分类独立的候选区域,这些区域是检测可用的候选数据集。第二个模块是一个大型卷积神经网络CNN模型,负责从每个区域提取固定长度的特征向量。第三个模块是多类别SVM分类器 。
论文链接:https://arxiv.org/pdf/1311.2524.pdf
该模型使用selective search方法来生成候选区域集。根据颜色、纹理、形状和大小选择 搜索 相似的区域。在特征提取方面,该模型采用4096维特征向量,并将Caffe CNN实现应用于每个区域提案。将227×227 RGB图像通过5个卷积层和2个完全连通层进行正向传播,计算特征。本文所诠释的模型与之前PASCAL VOC 2012的结果相比,取得了 30 %相关的效果改进。
R-CNN的一些缺点:
训练是一个多阶段的流程。对卷积神经网络进行目标 建议 优化,将svm与ConvNet特征进行拟合,最后学习边界框回归器。
模型训练在空间占用和时间消耗上代价都很高昂,因为VGG16这样的深度网络占用了大量的空间。
对象检测比较慢,因为它对每个对象 建议 执行一个ConvNet转发。
Fast R-CNN
下文提出了一种基于区域卷积网络的快速目标检测方法(Fast R-CNN)。
查看论文: 快速R-CNN (https://arxiv.org/abs/1504.08083)
它是用Caffe通过Python和c++(https://github .com /rbgirshick/fast-rcnn)实现的。该模型在PASCAL VOC 2012上的平均精度为66%,而R-CNN的平均精度为62%。
论文链接:https://arxiv.org/pdf/1504.08083.pdf
与R-CNN相比,Fast R-CNN具有:更高的平均精度值,单阶段训练特性,可更新所有网络层训练的特性,并且它也不需要磁盘存储来进行特征缓存。
在其架构中,一个 Fast R-CNN接收的图像既作为输入也作为一组目标 建议 集。模型对图像进行卷积和大池化处理,生成卷积特征图,通过针对每个区域 建议 的兴趣池层区域从每个特征图中提取出固定层的特征向量。
接下来,将特征向量提供给完全连接的层,这些将分支成两个输出层,其中一个为多个对象类生成softmax概率估计,而另一个为每个对象类生成四个实值数字,而这4个数字就代表了每个对象包围框的位置。
Faster R-CNN
查看论文: 更快的 R-CNN:利用区域 建议 网络实现实时目标检测 (https://arxiv.org/abs/1506.01497)
本文提出了一种训练机制,该机制可交替进行区域 建议 任务的微调和目标检测的微调。
source:https://arxiv.org/pdf/1506.01497.pdf
Faster R-CNN模型由两个模块组成:负责区域候选框生成的的深度卷积网络和使用产生的候选框的R-CNN检测器。区域 建议 网络以图像为输入,产生一系列矩形目标候选框。每个矩形目标框都有属于某个类别的分数。
source:https://arxiv.org/pdf/1506.01497.pdf
Mask R-CNN
查看论文: Mask R-CNN (https://arxiv.org/abs/1703.06870)
本文提出的模型是上述Faster R-CNN体系结构的扩展,它还可以对人体姿势进行估计。
图源:https://arxiv.org/pdf/1703.06870.pdf
在这个模型中,目标通过标注的目标框和一个标注相同类别的像素集合的语义分割标签来对目标进行分类和定位。这个模型在Faster R-CNN的基础上对每个感兴趣区域添加了对分割掩膜的预测。Mask R-CNN产生两个输出:一个分类标签和一个目标框。
SSD: 单点多框检测器
这篇论文 (https://arxiv.org/abs/1512.02325)提出了使用单个深度神经网络来对图像中的目标进行检测的模型。该网络使用了应用于特征映射的小卷积核为每个目标出现的区域进行打分。
来源:https://arxiv.org/pdf/1512.02325.pdf
这种方法使用一个前馈式卷积神经网络,产生了一个边界框的集合以及对每个边界框所属类别进行打分。增加了卷积特征层以允许网络能在多个尺度上进行特征检测。在这个网络模型中,每个特征图都和一组目标候选框相关联。下面的图像展示了SSD512的模型在动物,交通工具和家具数据上进行目标检测的表现。
来源:https://arxiv.org/pdf/1512.02325.pdf
YOLO (You Only Look Once)
You only look once,顾名思义,你只看一遍。这篇文章提出了一种使用单个神经网络一次运行即可预测物体边框与类别概率的方法,是单阶段目标检测模型的代表之一(与Faster R-CNN为代表的两阶段目标检测方法的区别)。
论文地址: You Only Look Once: Unified, Real-Time Object Detection(https://arxiv.org/abs/1506.02640)
YOLO 模型可以跑到每秒钟45帧的实时速度。YOLO 把图像目标检测视作回归问题,这使得它处理图像的流水线相当简单,这也是它速度很快的主要原因。
YOLO 可以在不超过25秒延迟下实时处理视频流。在训练过程中,YOLO看到的是整张图像,因此在目标检测时可以考虑上下文信息。
在YOLO中,每个物体边框是使用整个图像的特征预测出来的。每一个边框的预测值有5个:x、y、w、h和置信度(confidence)。(x, y)代表边框中心相对于每个网格的位置偏移,w和h代表物体相对于整张图片的相对宽度和高度。
YOLO模型是使用卷积神经网络实现并在PASCAL VOC目标检测数据集上进行训练的。网络的卷积层用来提取特征,之后的全连接层用于预测边框坐标和物体属于各个类别的概率。
YOLO网络的架构设计受到了用于图像分类的GoogLeNet(https://ai.google/research/pubs/pub4 30 22)的启发。网络又24个卷积层和两个全连接层。YOLO模型的主要问题是它对每个网格仅能够预测一个类别的物体,而且对较小的目标(比如鸟)的检测效果较差。
译者注 1: 很多朋友对YOLO“划分网格”的操作不是很理解。请看上图最右的一个方块,这就是YOLO模型输出的原始结果——一个shape为7×7× 30 的特征图。7×7是原始的416×416尺寸的图像通过经过一系列的卷积、下采样和padding后得到的尺寸。换句话说,这7×7个网格各自对应着原图中的某一个区域。卷积层的通道数为 30 意味着每一个网格被预测出了 30 个数值,这三十个数值分别是这个网格内预测的两个候选框的(x, y, w, h, confidence)以及网格内物体可能属于的20个类(PASCAL VOC数据集包含20个类别的物体)。读者可能会疑惑:为什么预测了两个候选框却只预测了一次类别概率呢?这也就是我们上文提到的YOLO的缺点了:它对每个网格,确实只能预测一个类别的物体。
YOLO在PASCAL VOC数据集上达到了63.4%的mAP,并且作者在原文中还提出了更小的版本——Fast YOLO。Fast YOLO在当时PASCAL数据集上最快的通用目标检测器,而且达到了52.7%的mAP指标。
译者注 2: 截至2019年7月,YOLO的作者还提出了两个后续升级版本:YOLO9000(又称YOLOv2)和YOLOv3。YOLO9000将网络主干改为更快速的全卷积网络DarkNet-19,并引入了Faster R-CNN的anchor机制使得检测效果更佳。YOLOv3改进了损失函数计算方式、引入了特征金字塔并提出了高效的主干网络DarkNet-53。目前YOLOv3已成为目标检测最常用的算法之一。
论文地址:YOLO9000: Better, Faster, Stronger(https://arxiv.org/abs/1612.08242)
YOLOv3: An Incremental Improvement(https://pjreddie .com /media/files/papers/YOLOv3.pdf)
CenterNet:将目标视作点
论文地址: Objects as Points (https://arxiv.org/abs/1904.07850v2)
这篇论文提出了一种将物体视作一个点的建模方式。它使用关键点估计来检测物体的中心点,并对物体的其他属性进行回归。这些属性包括:3D位置,人体姿势,朝向,尺寸等等。也就是说——使用CenterNet,物体的各种属性也作为网络的输出被一并回归出来。CenterNet成为了一种更快、更准确的基于边框回归的目标检测器。
译者注 3: 有另一篇目标检测论文与该论文几乎同时发布:CenterNet: Keypoint Triplets for Object Detection,其简称也是CenterNet。但本文提到的CenterNet都是指Objects as Points这篇工作。
那么这些属性究竟是如何回归得到的呢?在CenterNet模型中,原始图像被输入网络并得到一个热图(置信图),这个热图表示了可能存在物体中心的位置(热值的峰极有可能是出现物体中心点的位置)。除了这个热图以外,CenterNet模型的输出还有一些其他的通道,从各个通道取出置信图的峰值处的值,即可得到网络对这个物体各种属性值的预测。
CenterNet在COCO将目标检测数据集上达到了45.1%的AP和1.4 fps的速度。下表为CenterNet与其他目标检测器的效果对比。
用于目标检测的数据增强策略
数据增强,即通过操作原始图像(如旋转、缩放等)来获得新的图像数据的过程。通过数据增强,往往可以达到更好的训练效果。
论文地址: Learning Data Augmentation Strategies for Object Detection (https://arxiv.org/abs/1906.11172v1)
这篇论文没有提出新的模型结构,而是提出了一些可以迁移到其他目标检测数据集上的图像变换策略,这些策略经常被用在目标检测网络的训练中。
在该论文的模型中,训练时的增强策略包含N种操作。作者在模型中使用的增强方法包括改变颜色通道值、几何变换或仅改变标注的物体边框中的像素。
通过在COCO数据集上的实验,作者发现使用优化的数据增强策略可以在mAP指标(mean average precision)上得到2.3%的提升,使得单模型可以达到50.7%的mAP。
结论
通过阅读本文,你应该已经对最近最常见的一般场景目标检测方法有所了解了。
本文提到的一些论文中也包括他们的代码实现。各位不妨自己测试一下看看效果如何。
https://www.toutiao.com/i6723778178361328136/
网页题目:2019年的目标检测指南-创新互联
网页路径:http://scyanting.com/article/cccgde.html