目标检测算法的演进

462 阅读7分钟

目标检测就是找到图像中所有感兴趣的对象并确定它们的位置和大小,由于各种物体在成像过程中具有不同的外观、形状、姿势以及会受到不同照明、遮挡和其他噪声因素的干扰,目标检测一直是机器视觉领域的具有挑战性的问题之一。

本文将介绍传统目标检测方法与基于深度学习的目标检测算法。

传统目标检测方法

计算机对于图像的感知与人眼感知不同,计算机感知图像得到的是图像中每个点的像素值,而非某个定义的高层语义概念的具体目标,目标检测的过程即是让计算机模拟人类的视觉系统,来感知和标定图像中感兴趣的目标区域位置。传统目标检测过程如图1所示。

image.png

图1 传统目标检测过程

传统目标检测首先对图像进行预处理。在原始图像的获取过程中容易被拍摄条件以及拍摄环境所限制,图像往往存在尺寸过大或过小、不均匀光照、颜色饱和度较弱、随机噪声点等因素干扰,因此传统目标检测需要使用并对比多种图像预处理算法,选择其中效果最佳的图像预处理算法以尽量削减图像中的无关细节。

传统目标检测其次对图像特征进行候选区域选取,使用滑动窗口遍历整个图像,滑动窗口选取不同的长宽比依次进行遍历。以不同尺寸的滑动窗口不断进行区域选取,得出可能是目标特征的区域。

然后,传统目标检测使用特征提取相关算法对上一步得出的候选区域进行筛选,并提取相应的目标特征。特征提取是传统目标检测中至关重要的步骤,直接影响了整个目标检测体系的精度与检测效果。常用的特征提取算法有:方向梯度直方图(Histogram Of Oriented Gradient,HOG)、尺度不变特征转换(Scale Invariant Feature Transfrom,SIFT)等。 传统目标检测方法的最后一步是使用分类器对提取的特征进行分类,以确定该特征是否属于待检测的目标。常用的机器学习分类算法有:支持向量机、人工神经网络、决策树、朴素贝叶斯等。

传统的目标检测方法有三个较为明显的缺点,

(1)人工设计的特征提取算法对于具备多样性的目标特征缺乏鲁棒性,在多目标图像的检测识别中精度较低,并且速度较慢。

(2)在候选区域生成过程中,以滑动窗口遍历整个图像的方式生成候选区域对于待检测的目标而言没有针对性。完整遍历整个图像的过程导致算法的候选区域生成冗余度过高,同时算法的时间复杂度较高。

(3) 目标检测结果过度依赖于特征提取算法的选择,在实验过程中往往需要比较不同的特征提取算法以选择效果最佳的算法。并且在多数情况下,为了达到理想的识别精度与检测效果,不同的待检测目标需要选取不同的特征提取算法。

基于深度学习的目标检测方法

卷积神经网络应用于目标检测分为Two-stage和One-stage两种方式。其中Two-stage方法以R-CNN(Region with CNN feature)系列为代表,包括 R-CNN,Fast R-CNN和Faster R-CNN等,这些方法首先提取可能是目标的候选区域,然后这些候选区域应用卷积神经网络进行分类,并使用边界框回归对目标边界进行微调,最后使用非极大值抑制方法输出图像中的目标类别与对应的边界框。One-stage方法包括YOLO(You Only Look Once)和SSD(Single Shot multibox Detector)等,相比于Two-stage方法不须要提取目标的候选区域,速度更快,但是检测精度不及Faster R-CNN,而Faster R-CNN在GPU加速下检测速度有了极大的提升。

R-CNN是卷积神经网络应用于目标检测问题的一个里程碑的飞跃。CNN具有良好的特征提取和分类性能,采用区域建议(Region Proposal)方法实现目标检测问题。算法可以分为三步:候选区域选择、CNN特征提取、分类与边界回归。2014年R-CNN问世,在目标检测与行人检测上取得了巨大的成就,然而因为检测效率低下,训练时间过长等一系列的问题的产生,导致了R-CNN的运用并没有取得更大范围的应用,出现此类问题的主要原因如下:

(1)R-CNN需要事先提取多个候选区域对应的图像,这一行为会占用大量的磁盘空间。

(2)R-CNN需要输入固定尺寸的特征图,而归一化过程中对特征图形变会导致图片大小改变,这对CNN的特征提取有致命的坏处。

(3)每个候选区域都需要进入CNN网络计算,这将导致多次重复的相同特征提取,因此会造成检测效率过低,冗余计算等问题。

Faster R-CNN与R-CNN相比,速度与精度均得到了提升、Faster R-CNN不再需要额外储存,因此训练所需的空间也大大减小。其与R-CNN和Fast R-CNN最大的区别在于目标检测所需要的四个步骤,即候选区域生成、特征提取、分类器分类、边界框回归都由深度神经网络来做,并且全部运行在 GPU上,有效提高了图像处理的效率。Faster R-CNN还将选择性搜索算法(Selective Search)替换为候选区域生成网络(RPN),进一步提升了检测效率。Faster R-CNN目标检测流程如图2所示。

image.png

图2 Faster R-CNN目标检测流程

对卷积计算的共享程度不同是影响R-CNN系列的三种算法速度和精度的重要因素。三种算法在目标检测过程中区域推荐和特征提取两阶段对卷积计算的共享程度如图3所示。卷积计算在R-CNN中基本没有共享,Fast R-CNN 减少了区域重复计算,Faster R-CNN 实现了两阶段的卷积计算共享,共享程度最高。

image.png 

图3 卷积计算共享程度

非极大值抑制

在目标检测体系中,每种目标会输出海量带置信度的检测框,这些检测框之间存在相互重叠或者包含的情况。就理论而言,置信度越大,则检测框包含目标物体的概率越大,但这些置信度较大的检测框有可能检测的是同一个物体。因此,若仅仅以置信度进行检测框排序,可能会出现漏检的情况。

在目标检测的评价体系中,重叠联合比(Intersection over Union, IoU) 是计算检测框和真值框(人工标记框)重叠率的一项指标。IoU计算公式如下所示

image.png

其中集合A为人工标记的真值框(Ground Truth Box),集合B为检测算法给出的预测框(Default Box)。当检测框B与真值框A的重叠率越大时,说明预测的准确率也越大,如图4所示。

image.png

图4 重叠联合比示意图

Faster R-CNN算法使用非极大值抑制算法(Non-Maximum Suppression,NMS)对检测框进行筛选,算法思想是筛选出局部最大值,抑制局部最小值。非极大值抑制算法如下所示,其中集合S为带置信度的检测框的集合,是经过筛选之后的检测框集合。

非极大值抑制算法
1:根据置信度对集合S的检测框进行排序;
2:只要集合S不为空,进行以下步骤:
  a:从集合S中取出最高置信度检测框W;
  b:将W插入到集合中;
  c:对于保留在集合S中的每个检测框,如果检测框与W之间的重叠率大于阈值,则从集合S中删除该检测框。