第5 章 目标检测 5.1 目标检测任务介绍 5.1.1 目标检测任务 目标检测是计算机视觉的一个热门研究方向,广泛应用于智能视频监控、机器人导航、 工业检测、航空航天等诸多领域,通过目标检测可以减少对人力资本的消耗,具有重要的现 实意义。目标检测还是目标跟踪、人脸识别、人流统计、目标实例分割等任务的基础,对这些 问题的解决起着至关重要的作用。 如图5.1(a)所示的图像分类解决的是图像中的目标是什么的问题,图像中只有一个目 标。图5.1(b)图像分类和定位解决的是图像中的目标是什么及在图像中的位置,同样图像 中只有一个目标。图5.1(c)目标检测解决的是图像中都有哪些目标,各属于哪种分类及在 图像中的位置的问题。在目标检测的图像中一般会有多个目标,目标相互间的尺寸差异可 能很大。目标检测可以看作是多个目标的定位和分类任务。图像中的目标也称为前景,其 他的部分称为背景。 图5.1 图像识别和目标检测 目标检测任务可以概括为两个方面。 (1)目标位置预测。目标位置通常用外接矩形表示,称为边界框(BoundingBox, BBox)。边界框的参数包括中心坐标和宽高(x,y,w ,h),也有按照左上角和右下角(xlt, ylt,xrb,yrb)来确定边界框的。 (2)目标类别预测。类别预测可分为单标签分类和多标签分类。单标签分类的类别之 间是互斥的关系,目标只能属于一种类别,如猫、狗、电视等。分类时一般采用Softmax分 类器,计算出目标属于各个类别的概率,各类别概率之和为1,其中概率得分最大的类别就 是目标所属类别。多标签分类的类别之间可能存在从属关系,如人、男人、女人。分类时一 扫码查看 彩图 第 5 章 目标检测143 般采用二分类器,计算出目标对每一个类别的是或否的概率,目标可能属于一个或多个 类别。 目标检测任务最早是采用传统的图像处理算法来完成的,经历了VJ 检测算法、HOG 检测算法、DPM 检测算法。如图5.伴随着AlexNe基于卷积神 2所示,t等分类网络的出现, 经网络的目标检测算法近年来也开始蓬勃发展。 图5.目标检测算法发展里程碑 2 基于卷积神经网络的主流目标检测算法框架分为两阶段目标检测算法(Two-Stage)与 单阶段目标检测算法(One-Stage)。两阶段目标检测算法的代表有R-CNN 系列、SPPNet、 FPN 等,起步略早,单阶段目标检测算法的代表有YOLO 系列、SSD 、RetinaNet等。两阶 段目标检测算法如图5.3所示,第一步生成目标区域候选框,第二步进行候选区域的目标分 类与定位。单阶段目标检测算法只需要一个步骤就可以完成目标分类和定位。 扫码查看 彩图 图5.两阶段目标检测算法示意图 3 由于图像中的目标往往具有不同姿态、不同视角、不同大小、天气光照等条件复杂多样, 即使在技术相对发达的今天,目标检测这一视觉任务仍然是非常具有挑战性的课题。 5.1.2 预备知识 1. 交并比(n,U) IntersectionoverUioIo 交并比表示预测边界框(prediction)与真实边界框(groundtruth,训练样本的标注数 据)的重合程度,即二者的交集和并集的比值。IoU 值越大,表示两者的重合程度越高。在 144 深度学习算法与实践 理想情况下,当预测边界框与真实边界框完全重合时,IoU为1;当两边界框没有交集时, IoU为0,如图5. 4所示。 扫码查看 彩图 图5. U 计算方法 4 Io 2.非极大值抑制(NonMaximumSuppresion,NMS) 在目标检测的过程中,算法对同一个目标可能预测出多个重叠的边界框,使用NMS非 极大值抑制算法对预测边界框进行筛选,消除冗余的预测边界框,得到最终预测边界框。 以图5.图中两只鸽子为检测目标, 每 5目标检测为例, 分别有3个和2个预测边界框, 个预测边界框都有置信度得分,置信度得分用于评估目标在边界框内可能性,置信度得分越 高的预测边界框越接近真实边界框。通过NMS算法去除每个目标的冗余预测边界框,保 留置信度最大的预测边界框。NMS的计算过程如下: (1)将所有预测边界框按照置信度或概率得分排序。 (2)图5.9为最高, C、D、E的 5中A的置信度得分0.计算A与所有剩余预测边界框B、 IoU, oU≥0. 剔除I5的预测边界框B、C,剩余预测边界框D、E,此时A成为NMS筛选得到 的第一个结果。 扫码查看 彩图 图5. 5 NMS非极大值抑制算法 (3)找出下一个置信度最大的预测边界框,D的置信度得分0.计算D与剩余预测边 8, 界框E的I剔除I5的候选框E,此时E成为NMS筛选得到的第二个结果。 oU, oU≥0. 第 5 章 目标检测145 (4)按照过程(3)的规则不断迭代,直至没有剩余的预测边界框 。 本例中,预测边界框A、D为NMS 边界框筛选后的结果 。 3. 上采样(upsampling) 在卷积神经网络中,池化操作会缩小特征图的尺寸,实现特征选择和信息过滤的目的, 这个过程称为下采样(downsampling)或降采样(subsampling)操作。在目标检测和图像分 割算法中,需要将深层的小尺寸特征图放大到中、浅层特征图或原图的尺寸,来实现特征融 合或映射的目的,这样的过程是上采样(upsampling)操作。上采样操作可以通过传统插值、 反采样、反池化、转置卷积等方法实现。 传统插值方法一般有最近邻插值(nearest)、双线性插值(bilinear)等算法。传统插值方 法、反采样、反池化等方法是预先定义好的操作,计算简单,没有可学习参数。转置卷积与插 值法不同,需要学习一些参数,更能体现神经网络学习的优点。 1)最近邻插值法(nearest) 最近邻插值法指在待求元素的所有近邻元素中,将距离待求元素最近的邻元素值赋给 待求元素。最近邻插值法会造成插值后生成的图像在灰度上不连续,有明显的锯齿现象。 2)双线性插值法(bilinear) 6所示。利用待求元素的4个邻元素的值在两个方向上作线性内插,如图5. 图5.双线性插值 6 其中:f(i,j)、i,f(f(j+1) j+ f(j+1 )、j)、为4个已知元素的值;( i+1,i+1,i+u, v) u,j) 为插入元素的坐标; v 为插入元素距(元素的距离,取值范围在01。双线性插值 i,~ 的计算方法如公式(1)所示。双线性插值法虽然算法较为复杂,但得到的插入值连续、平 滑,在上采样算法中应用较为广泛。 f(i+u,j+v)1-u)(1-f(j)+v(f(j+1) + 5. =(v)i,1-u)i, u(1-v)f(i+1,j)+uf(i+1,j+1) (1) v5.3)反采样法(unsampling) 7所示。反采样法就是直接将特征图的元素复制在扩充的特征图空白区块上,如图5.4)反池化法(unpooling) 反池化法是将特征图元素复制到下采样之前特征图各区块原先最大值的位置,其他位 置用“0”填充,反池化是对最大池化操作结果进行的上采样操作,需要在最大池化操作时记 146 深度学习算法与实践 图5.池化和反采样操作 7 录区块最大值的位置,如图5. 8所示。 图5.反池化 8 5)转置卷积法(pn) transosedconvolutio 转置卷积能够起到上采样的作用,需要注意的是转置卷积不是卷积的逆运算,而是一种 卷积。在网络中,转置卷积的卷积核不是预先设定的,而是与其他卷积核一样,是通过学习 得到的。 转置卷积的运算步骤如图5. 9所示: 图5.转置卷积的运算步骤 9 (1)在输入特征图元素之间插入(S-1)行和列,填充值为0, S 为步长。 (2)在输入特征图四周扩展(F-P-1)行和列,填充值为0, F 为卷积核大小, P 为零 填充 ( 。 3)将卷积核参数上下、左右翻转。 (4)做步长为1的正常卷积运算。 第 5 章 目标检测147 转置卷积运算后得到的输出特征图宽和高为 Wo =S× (Wi-1)+F-2×P Ho =S× (Hi-1)+F-2×P 其中:Wi、Hi 为输入特征图的宽和高;Wo 、Ho 为输出特征图的宽和高; S 为步长; P 为填 充; F 为卷积核高和宽。 转置卷积法的计算过程比较烦琐,感兴趣的读者可以参阅论文Aguidetocvolution arttcfepln论文地址:htp//axv.rf07285.f)。(n) (o) ihmeirdig( s:riog/pd/1603.pd深度学习(o) 框架提供(e) 了(a) 转(n) 置卷积的API函数 。 (1)TensorFlow的转置卷积函数:conv2d_transpose(x,kernel,output_shape,strides, padding)。 rh的转置卷积函数:Cnrnps2d(n_hnes,u_hnes,enl (2)PyTocovTasoeicanlotcanlkre_ e,e,s) 。 sizstridbia 5.1.3 评估准则 正样本:在所有检测样本中,与目标的真实样本对应的样本为正样本。例如:猫狗 分 类中,在统计猫的数量时,所有的真实为猫的样本为正样本;在目标检测任务中,目标预测 边 界框与真实样本边界框的IoU超过设定阈值时确定为正样本 。 负样本:在所有检测样本中,与目标的真实样本不同的样本为负样本。例如:猫狗 分 类中,在统计猫的数量时,所有的真实类别为狗的样本为负样本;在目标检测任务中,目标 预 测边界框与真实样本边界框的IoU小于设定阈值时确定为负样本 。 混淆矩阵的判断方法如表5. 1所示。 表5.混淆矩阵的判断方法 1 样本的真实属性 预测/判断/检测的样本类别 判断为正样本判断为负样本 正样本真正例假负例 负样本假正例真负例 真正例(TruePositives,TP):将正样本判断成正样本,判断是正确的。在目标检测中, 预测样本与真实样本的边界框IoU大于设定阈值( 5) 一般为0.的边界框为真正例。 假正例(FalsePositives,FP):将负样本判断成正样本,判断是错误的。在目标检测中, 预测样本与真实样本的边界框IoU小于设定阈值的边界框(即将背景预测为目标)为假 正例。 真负例(TrueNegatives,TN):将负样本判断成负样本,判断是正确的。 假负例(FalseNegatives,FN):将正样本判断成负样本,判断是错误的。在目标检测中, 未检测出的目标为假负例。 为便于理解,以目标检测为例:在一张图像中,有3只猫和7条狗,要求检出图片中所 有的猫,即猫为检测对象,是正样本,狗为负样本。预测结果有6只猫,其中真实类别为猫的 有2只,真实类别为狗的有4只。 148 深度学习算法与实践 在上例中,真正例TP假正例FP真负例TN=3,假负例FN=1。 1.准确率(Acuracy) =2, =4, 准确率指在所有的检测样本中,正确检测出的样本总数占总检测样本数的比例。公 式为 正确检测出的样本总数TP+TN Acuracy= 总检测样本数=TP+FN+FP+TN 上例预测的准确率 为 Acuracy= 2+3 50% 2.精度(Precision) 2+1+4+3= 精度(又称查准率)是指在所有检测出的正样本中,正确检测出的正样本所占的比例。 公式为 Precision= 正确检测出的正样本数量= TP 所有检测出的正样本数量TP+FP 上例预测猫的精度 为 Prcso2+4=33. eiin= 2 3% 3.召回率(Recal) 召回率(又称查全率)是指正确检测出的正样本占正样本总数的比例。公式 为 正确检测的正样本TP Recal= 所有真实正样本的数量=TP+FN 上例预测猫的召回率 为 Recal= 2 7% 2+1=66. 召回率越高,漏检的样本就越少。 4.平均精度(AveragePrecision,AP) 如前所述,目标检测的正、负样本是由预测边界框与真实边界框的IoU来确定的。当 两者IoU大于阈值时,预测边界框被确定为正样本,否则确定为负样本。如果一个真实边 界框存在多个预测边界框与其IoU大于阈值,则选取两者IoU最大的预测边界框为正样 本,其余为负样本。IoU阈值不同,得到的正负样本数量不同,由此得到的精度和召回率也 不同。在性能评估中,oU阈值通常取0.75 。 I5或0. 如图5.对5张图像中的目标进行检测, 虚线框为 10所示, 实线框为真实样本的边界框, 检测样本的预测边界框。5张图像中共有11个真实样本,预测输出19个检测样本,即 TP+FP=19 。预测边界框的顶部标签为预测边界框号+置信度。以0.oU阈值可得 5为IDB1 、DB2 、DB5 、DB7 、DB9 、DB10 、DB12 、DB13 、DB16 、DB18预测边界框为正样本,正确检测 出的真实样本数为10个,即TP=10,未检测出的真实样本数为1个,即FN=1,TP+ FN=11 。 将所有检测出的预测边界框按照置信度降序排序,并计算TP累计、FP累计、精度和召 回率。如表5. 2所示。 第 5 章 目标检测149 图5.检测样本与真实样本 10 表5.精度、召回率计算 2 图像预测边界框置信度TP FP TP累计FP累计 精度 Precision 召回率 Recal 预测框累计数 图像5 DB18 96% 1 1 0 1.00 0.09 1 图像3 DB10 94% 1 2 0 1.00 0.18 2 图像1 DB1 85% 1 3 0 1.00 0.27 3 图像1 DB3 81% 1 3 1 0.75 0.27 4 图像4 DB13 79% 1 4 1 0.80 0.36 5 图像2 DB6 75% 1 4 2 0.67 0.36 6 图像2 DB4 73% 1 4 3 0.57 0.36 7 图像1 DB2 67% 1 5 3 0.63 0.45 8 图像3 DB8 65% 1 5 4 0.56 0.45 9 图像5 DB16 61% 1 6 4 0.60 0.55 10 图像2 DB5 55% 1 7 4 0.64 0.64 11 图像4 DB14 43% 1 7 5 0.58 0.64 12 图像3 DB11 42% 1 7 6 0.54 0.64 13 图像5 DB17 41% 1 7 7 0.50 0.64 14 图像3 DB9 37% 1 8 7 0.53 0.73 15 图像4 DB12 36% 1 9 7 0.56 0.82 16 图像5 DB19 30% 1 9 8 0.53 0.82 17 图像3 DB7 19% 1 10 8 0.56 0.91 18 图像4 DB15 15% 1 10 9 0.53 0.91 19 在表5.TP列” FP列”当TP=FP=1时表示 2中“和“, 1时表示预测边界框为真正例, 预测边界框为假正例。“TP累计”列和“FP累计”列表示按照行顺序累计TP和FP的数 量。精度Precision”列和“召回率Recal”列的计算是一个不断累计的过程,而不是每个预 测框独立计算的。每行中精度Precision=该行的TP累计/该行的预测框累计数,每行中召 回率Recal=该行的TP累计/真实样本数。 PR曲线(是以召回率为横轴、以精度为纵轴绘制的曲线,根据表5. Precision-Recal) 2 的数据绘制PR曲线如图5.所示。 11(a) 平均精度AP是对一个类别目标的检测精度的平均值,是PR曲线下的面积。PR曲线 150 深度学习算法与实践 图5. 11 PR 曲线 下的面积越大,AP 值越高,检测效果越好。在实际应用中,需要先对PR 曲线进行平滑处 理,然后再计算AP 的值。 如图5.所示,如果由检测模型B得到的PR 曲线外包围检测模型A的曲线,则模 11(b) 型B的平均精度优于模型A。当两个模型的PR 曲线发生交叉时,如图中模型C和模型B, 则由曲线原点开始绘制斜率为1(P=R)的直线,直线与模型PR 曲线的交点称为平衡点 (BEP), 平衡点越大的模型平均精度AP 越高,图中模型C的AP 值高于模型B。 对于同一个检测模型,oU 阈值设置不同时,得到的AP 也不同,在MSCOCO 数据集 I 中采用IoU 阈值=0.75 来计算AP 值, 50 和AP75,评估指标AP 是 5和0.分别为评估指标API5~0.05 计算出各个I除 oU 阈值从0.95 按照间隔0.oU 阈值下的AP 值后再取平均得到, 此之外还有针对大、中、小目标的APL、APM、APS,如图5. 12 所示。 图5.目标检测模型的平均精度指标 12 5. 多类别平均精度(meanAveragePrecision,mAP) 综合衡量检测效果,是所有类别AP 值的平均值。值的大小在[0,1]上,越大越好。 6. 帧率(FramePerSecond,FPS) 每秒处理图像的数量,反映了模型算法的速度 。 5.两阶段目标检测算法 2 两阶段目标检测算法以R-CNN 系列为代表,包括R-CNN 、FastR-CNN 、FasterR- CNN,除此之外还有SPPNet、PyramidNetwork等。这类算法在第一阶段需要通过区域建 议(l)先在图像上产生一些可能包含目标的候选区域,第二阶段对每个候选 regionproposa 区域使用CNN 网络进行分类与回归,得到目标的类别和精细边界框。 5.2.1 R-CNN R-CNN 将区域建议算法与CNN 相结合,将CNN 从图像分类任务扩展到目标检测任 第 5 章 目标检测151 务,确定了候选区域生成+分类定位的两级目标检测网络结构。 如图5.R-CNN 算法流程分为5个步骤: 13 所示, (1)在待测图像上采用SelectiveSearch传统算法,产生1000~2000 个可能包含目标 的候选区域图像。 (2)将每一个候选区域图像缩放为227×227 固定尺寸,输入到已训练好的卷积神经网 络模型进行特征提取。网络包括卷积层、池化层和2个全连接层,输出4096 维特征向量。 (3)将每一个候选区域的特征输入到SVM 分类器进行二分类(是/否), 判断候选区域 的对象是否属于该类别。一个SVM 分类器只能判断一个分类类别,因此需要将候选区域 特征遍历所有类别的SVM 分类器。 (4)对每一类候选区域进行NMS 非极大值抑制,剔除冗余候选框,对于同一目标保留 该类得分最高的候选框。 (5)使用边界框回归器精细修正候选边界框位置。 扫码查看 彩图 图5.13 R-CNN 算法流程 R-CNN 算法存在的问题: (1)R-CNN 训练阶段多,过程烦琐,需要预训练、微调CNN 网络、训练SVM 分类器和 训练边界框回归器。 (2)R-CNN 使用SelectiveSearch这一传统方法进行候选区域提取,产生1000~2000 个候选区域,这个过程计算量大,耗时很长。 (3)R-CNN 需要对每个候选区域独立进行CNN 特征提取和SVM 分类,计算量非常 大,如图5. 14 所示。 (4)对候选区域图像的裁剪和缩放操作不可避免地带来图像失真。 5.2.2 Fast R-CNN 针对R-CNN 的不足,Girshick等于2015 年提出了FastR-CNN,旨在提高训练和测试 的速度,同时检测精度也得到了提升。 如图5.15 所示,FastR-CNN 的算法流程步骤如下: (1)与R-CNN 相同,FastR-CNN 采用SelectiveSearch传统算法在待测图像上产生 1000~2000 个可能包含目标的候选区域图像或称为感兴趣区域图像(RegionOfInterest, ROI )。 (2)将整个图像通过一个卷积神经网络提取全图特征。 (3)将图像的ROI 映射到特征图上,通过裁剪得到ROI 特征图,将ROI 特征图通过兴