郭 飞,郝 琨,赵 璐
(天津城建大学计算机与信息工程学院,天津 300384)
目标检测的任务是找出图像中所有感兴趣的目标,并确定它们的位置和类别,它给图像分类、图像分割和视频理解提供了丰富的信息,因此受到广泛的关注.同时作为众多实践领域的核心技术,目标检测也被广泛应用于无人驾驶、视频监控、交通安全等众多领域,尤其是在检测日常生活场景中的对象(人、动物、交通车辆和家具用品等)具有重要的研究意义.
近年来,随着卷积神经网络[1](convolutional neural network,CNN)的出现,图像目标检测取得了显著的成就,在基于深度学习的目标检测时代,现有的图像目标检测方法大多数遵循“两阶段”和“一阶段”两种模式,前者是一个由粗略到精细的过程,而后者则是一步到位完成.目前经典两阶段目标检测方法有RCNN、SPPNet、Fast R-CNN 和Faster R-CNN 等,文献[2]中首次提出了具有CNN 特征的候选区域网络(regioncnn,R-CNN),利用selective search[3]区域建议方法对可能存在目标位置进行筛选,并对每个建议框进一步缩放,将建议框输入到提前训练好的CNN 模型中进行特征的提取,借助分类器判断各个区域中是否含有特定类型目标,最后通过非极大值抑制、边框位置回归等后处理操作得到最终目标的位置;文献[4]提出空间金字塔池化网络(spatial pyramid pooling networks,SPPNet),通过引入空间金字塔池化来解决R-CNN 重复计算大量重叠候选区域的问题,从而避免了卷积特征的重复计算;针对空间金字塔网络的训练过程仍是一个多阶段过程,文献[5]提出Fast R-CNN,实现了检测器和边框回归器的同步训练,另外通过共享计算加速特征提取,使得检测速度比R-CNN 快将近200 倍;文献[6]中采用区域建议网络(region proposal network,RPN)和共享跨阶段特征的方案,实现了第一个接近实时的端到端的深度学习检测器,突破了目标检测速度的瓶颈.虽然经典的两阶段目标检测方法实现了较高的精确度,但检测速度还有待提升.针对检测速度慢的问题,研究者提出YOLO 系列、Focal Loss、Cornernet和FoveaBox 等一阶段目标检测方法.文献[7]首次提出完全不同于R-CNN 系列的一阶段目标检测方法YOLO(youonlylookonce:unified,real-timeobjectdetection),代替了两阶段目标检测方法的“proposal detection +verification”模式,将整张原始图像划分为多个区域后直接预测每个区域的边界框和类别置信度值.尽管YOLO 的检测速度提升了很多,但与两级检测器相比,检测精度却有所下降,接着YOLOv2[8]和YOLOv3[9]相继被提出,在保持较高检测速度的同时,检测能力进一步得到提高;针对正负样本分布不均衡的问题,文献[10]中提出用焦点损失函数来进一步解决正样本和负样本之间的不平衡问题,从而提升一阶段目标检测方法的准确率;文献[11]首次将检测目标框变成了一对关键点的定位问题,消除了对锚框的依赖,同时利用角点池化技术更有效地定位角点;针对Cornernet 中需对识别的关键点进行正确的分类,文献[12]将实例类和边界框关联在一起直接预测框和类,避免了不同实例的分隔.虽然一阶段类目标检测方法摒弃了提取建议区域的过程,整个神经网络可以直接应用于完整图像,只需一步就完成了识别/回归,速度较快,但因训练过程中正负样本分布的不均衡性,使得检测精度远远比不上两阶段目标检测器.
综上,针对目标检测方法中存在正负样本分布不均衡、检测精度低等问题,本文提出一种基于混合池化YOLO 的目标检测方法(object detection method based on mixed-pooling YOLO,ODMMP-YOLO).ODMMPYOLO 设计并使用含有混合池化的特征提取网络DMP(darknet based on mixed pooling,DMP),避免了因网络过深而造成的过拟合问题,同时也可减少特征空间信息丢失;利用GIoU(generalized intersection over union,GIoU)来衡量真实边框与预测边框之间的差距,进一步优化边框之间无重叠的部分,以获得更好的定位精度;在计算目标置信度loss 权重时,给予误分检测框更多的loss 惩罚,从而减少正样本和负样本之间的不平衡问题,达到提升检测精度的目的.
YOLOv3 目标检测方法是将含有特定目标的图像作为卷积神经网络的输入,直接在输出层回归预测边界框的位置及其所属类别,在保证准确率较高的前提下,仅使用一个卷积网络就实现了目标的快速识别[13].
YOLOv3 在YOLOv1、YOLOv2 的基础上进行了一些适应性的改进,包括多标签分类、尺度预测、损失函数的调整等,提出了一种Darknet-53 模型.YOLOv3中将原始图像进行缩放,充分借鉴FPN[14](feature pyramid networks,FPN)网络的思想,将浅层特征与深层特征融合以获得更容易识别的深层特征,完成对不同大小尺寸目标的识别.将输入的图像分成S×S 等大的网格单元,目标的中心落在哪个网格单元中,那么这个网格单元就负责检测这个目标.因为每个网格都会预测固定数量的边框,采用IoU(intersection over union,IoU)来衡量预测边框和真实边框之间的距离,选取和真实目标的置信度值最大的那个预测边框作为最终预测边框,如果预测边框与真实边框的重叠率大于某一值,但又不是最大,则忽略该预测边框.如果预测边框中没有包含目标对象,则在计算定位损失时可以忽略不计.最理想的情况是IoU=1,即预测边框与真实边框重叠.计算真实边框集合GT(GroundTruth)与预测边框集合DR(DetectionResult)的交集与并集之比,最终得出IoU 值
YOLOv3 在每个单元格上给出对应边框的4 个预测值,记为(tx,ty,tw,th),若目标网格偏离图像左上角的边距为cx,cy,且它对应锚框的宽和高为pw,ph,则最终预测边框的值为(bx,by,bw,bh),如图1 所示.
(bx,by,bw,bh)公式如下
式中:cx,cy是目标网格偏移图像的偏移量;pw,ph是对应锚框的宽和高;(bx,by,bw,bh)为最终预测得到的边框坐标值;(tx,ty,tw,th)为特征提取网络学习目标;x,y为目标对象的中心位置坐标;w,h 为目标对象坐标相对于网格偏移的宽度和高度.为了数据处理方便,x,y,w,h 均作归一化处理.
损失函数是用来衡量模型预测和真实标签之间的差异,YOLOv3 的损失函数为[15]
式中:λ 为损失权重;S×S 为网格大小;N 为每个网格中的候选边框数;Iijobj表示判断第i 个单元格的第j 个边框是否存在目标,若存在值为1,反之为0;Iijnoobj表示第i 个单元格的第j 个先验框不存在目标值为1,反之为分别为预测边框的横坐标、纵坐标、高度、宽度、类别预测值、置信度值,xi,yi,wi,hi,pi,Ci分别为其对应的真实值.YOLOv3 的损失由目标定位损失Ibbox、目标置信度损失Iconf、目标分类损失Iprob三者求和得到.
YOLOv3 中采用大量简化的残差块代替原有的1×1 和3×3 卷积核的卷积层和引入确定性连接的“shortcut”模块,解决了网络中梯度消失或梯度弥散的问题,但是使用带步长的卷积下采样操作依旧属于局部邻域的线性计算,没考虑到邻域之间的空间关系,所以YOLOv3 仍没有解决YOLOv2 中因采用最大池化而导致空间特征信息丢失的问题.
因此,在随机Dropout 和Drop-Connect 两种技术的启发下,ODMMP-YOLO 采用“混合池化”方式完成特征图的下采样,整体网络结构如图2 所示.ODMMPYOLO 在Darknet-53 网络基础上将原来3×3 下采样卷积层替换成混合池化层,构造出一种新颖的DMP特征提取网络模型,如图2 中实线框位置所示.Darknet-53 中卷积核大小为3×3、步长为2 的卷积层替换成Mixed-Pooling 层,可以最大概率保留特征图空间信息.
DMP 特征提取网络模型的下采样层中采用混合池化,先使用步长为1 的最大池化(利用不对称式填充,仅在特征图的右侧和下侧填充像素0),得到一张与特征图大小相同的特征图,再使用混合池化方式进行特征图的下采样.图3 为使用窗口为2、步长为2 的下采样混合池化过程,混合池化比例系数取0.5,这样既能够降低特征映射的分辨率,也能够实现特征的平移不变性和旋转不变性.池化层中最为常见的池化方式有两种:average pooling、max pooling,但是采用单独的池化方式均有各自的缺陷:最大池化仅考虑区域中的最大元素而忽略其他区域的值,这样会造成不可预料的结果.例如,如果池化区域的大多数元素都是高量级的,则池化后会出现特征消失的现象.对于平均池化,它计算的是池化区域内所有元素的平均值,并将所有低量级元素也考虑在内,池化后造成新特征图对比度降低,最严重的是如果零元素太多,则新特征图的特性就会大大降低.
因此,ODMMP-YOLO 的下采样层中采用最大池化和平均池化相组合的下采样方式,下采样后输出第k 个特征图的大小yk,i,j为
式中:λ 为混合池化比例系数;xk,p,q为池化区域Ri,j中位于(p,q)处的元素,该元素表示位置(i,j)周围的局部邻域.
下采样阶段采用混合池化隐式地增加了训练数据,使得学习模型具有更强的泛化能力,与使用带步长的卷积方式进行特征图像压缩相比,混合池化不会引入额外参数.DMP 特征提取网络模型中先使用步长为1 的最大池化方法(见图1),保留特征图之间更多的空间关系,再使用混合池化在每个2×2 的区域内进行下采样,最后输出下采样之后的特征图(见表1).DMP 特征提取网络模型不仅可以解决训练过程中因网络过深而造成的过拟合问题,也可以减少在下采样阶段特征空间信息的丢失,进而有效提升识别精度.
表1 DMP 特征提取网络
此外,混合池化技术可以与任何其他形式的正则化(权重衰减、Dropout、数据增强等)结合使用,混合池化方法优于传统的最大池化和均值池化的方法,其先进的性能已在CIFAR-10、CIFAR-100 和SVHN(street view house numbers)数据集上得到了验证.ODMMPYOLO 巧妙利用混合池化技术,解决了过拟合问题并提升了检测精度.混合池化技术所需的开销可忽略不计,也不需要调整任何超参数(如学习率),因此可以广泛应用于卷积神经网络.
损失函数是衡量期望结果与真实结果之间差异的重要标准,选择一个合适的损失函数需要考虑是否有离群点、运行梯度下降的时间效率、是否容易找到损失函数的导数等众多因素,那么如何设计合适的损失函数获得优异的预测结果也成为模型优化的重要方向[16].
ODMMP-YOLO 利用GIoU 来替换边框回归损失函数,对原有的目标定位损失函数进行重构.采用IoU来直接衡量两个边界框的相似性时会出现一些极端情况:当真实边框和预测边框之间相互重合且IoU 值相同时,检测效果却存在较大差异;当真实边框和预测边框之间没有重叠时,IoU 的值为0,就会导致优化损失函数的梯度为0,则无法进行下一步优化.采用GIoU 不仅关注到重叠区域,也关注到其他非重叠区域,更好地反映了真实边框和预测边框的重合度.当真实边框和预测边框无限重合时,GIoU 取最大值为1;当真实边框和预测边框无重叠且无限远时,GIoU 取最小值为-1.因此本文采用GIoU 来衡量真实边框和预测边框之间的距离,选取和真实目标的置信度值最大的预测边框作为最终预测边框,如果预测边框和真实边框的重叠率大于某一值,但又不是最大,则忽略这个预测边框.如果某预测边框中不包含目标对象,则在计算定位损失时忽略该预测边框的损失.找到真实边框集合GT(GroundTruth)与预测边框集合DR(DetectionResult)的最小闭包区域面积C,最终计算的GIoU 为
由于训练过程中,目标检测方法中存在正负样本不均衡的问题,其中含有大量易分类且大多数均为背景的负样本,且易分类的负样本对Loss 梯度更新方向起着主导作用,这样就造成无法准确地识别目标.针对上述问题,本文对目标置信度的损失提出如下改进:
step1:定义二值交叉熵CE(p,y)
step2:计算损失权重Lweight
step3:计算置信度的损失Lconf(p,y)
式中:p 为前景概率;α 为权重参数,α∈[0,1],本文取为1;y 为真实标签的值,为1 或0.
无论是针对前景类还是背景类,p 值越大,那么权重(1-p)2就越小,则就可以通过权重对易分类样本进行抑制.损失函数Lconf既解决了正负样本不平衡问题,也解决了易分类与难挖掘样本的不平衡问题.对于那些数量庞大,但容易分类的纯背景类,在计算目标置信度的损失时,通过减少易分类样本损失的权重Lweight,使模型在训练时更加专注于难分类的样本,这样可有效减少正样本和负样本之间的不平衡问题,从而有效提升检测精度.
ODMMP-YOLO 损失函数如下
本文利用PASCAL VOC 07++12[17]数据集进行训练,其中包含20 类对象,由于原始数据量较少,本文所用图像数据集进行3 种方式的预处理操作,分别为①随机水平翻转:将图像进行水平翻转,得到新图像;②随机裁剪:与缩放不同,裁剪是从原始图像中随机抽取一个部分,之后将此部分的大小调整为原始图像的大小,得到新图像;③随机平移:将图像在水平和竖直方向上随机移动,可以使特征提取网络能够看到图像的所有角落.通过上述的数据增强方法得到16 551张训练图像用于本文后续实验.
实验硬件环境配置为Intel(R)Core(TM)i7-7700 CPU@3.60 GHz 处理器,模型在具有8 GB 内存NVIDIA Tesla K20M GPU 上进行训练.
训练时ODMMP-YOLO 采用以较低学习率逐渐增大至较高学习率的方式来实现网络模型训练的“预热”阶段,从而避免因较小的学习率导致模型训练缓慢的问题.但是如果一直使用较高学习率会使权重的梯度来回震荡,造成训练的损失难以达到全局最低,因此本文采用consine learning decay[18]方式逐渐减小学习率.整个训练过程学习率的变化曲线如图4 所示,当迭代步数大于200 000 时,学习率曲线趋于平缓并达到最低值.
为了更好地验证ODMMP-YOLO 在识别与定位人、常见动物、交通车辆以及家具用品等目标的可行性与有效性,本文利用PASCAL VOC 2007 测试数据集对ODMMP-YOLO 和YOLOv3 方法进行实验结果的对比,并利用平均精度AP(average precision)与均值平均精度mAP(mean average precision)值两项指标对ODMMP-YOLO 的模型进行评估.
AP 值采用PASCAL VOC CHALLENGE 的计算方式,假设M 个样本中有F 个正例,将得到F 个召回率值R(1/F,2/F,…,F/F),对每个R 值取最大的精准率P值,然后对这F 个P 值求平均即得到每类对象的AP,之后计算所有对象类别的平均AP 值即得到mAP.
式中:Nclasses表示所有对象类别的数目.
表2列出了YOLOv3、YOLOv3+Loss、YOLOv3+MaxPool、DMP-YOLO 和ODMMP-YOLO 的mAP 值对比结果.DMP-YOLO 中采用混合池化技术,当阈值大于0.75 时,mAP 值由73.65%提升到78.49%,增加4.84%;YOLOv3+MaxPool 在下采样层中只使用最大池化时,mAP 值由73.65%提升到76.37%;YOLOv3+Loss利用新损失函数进行检测对象时,mAP 值由73.65%提升到75.43%,提升约1.8%,验证了混合池化技术和损失函数的有效性.
表2 目标检测算法消融实验对比%
图5 展示了ODMMP-YOLO 在测试数据集上各类别目标的检测结果以及所有类别的mAP 值.在每类对象中检测正确和检测错误的对象数量对比结果,如图5a 所示.从图5b 中可以发现检测人、摩托车以及火车等部分单独类别时AP 值可达到约90%,检测所有类别的mAP 值为80.39%,因此验证了ODMMP-YOLO方法的有效性.
表3 列出了两阶段检测方法(Fast R-CNN、FasterR-CNN)、一阶段检测方法(YOLO、YOLOv2、YOLOv3)与ODMMP-YOLO 检测方法的实验对比结果.从表3中可以看出,相对于YOLOv3 算法,ODMMP-YOLO 在识别船只等部分单独对象类别时,AP 值提升约15%;在识别所有类别时的mAP 值由75.28%提升到80.39%,提升约5%,能够准确地识别与定位生活场景中的目标对象的类别与位置.
表3 目标检测算法性能评估结果对比%
为了更加直观展示ODMMP-YOLO 识别的视觉效果,本文随机寻找一组图片进行测试,其中包含了日常生活场景中的人、动物、交通车辆和室内家具用品等一些常见的对象,ODMMP-YOLO 测试结果如图6 所示.如图6 中第一列图所示,ODMMP-YOLO 能够从背面和侧面较好地识别动物目标;如图6 中第二列图所示,ODMMP-YOLO 在识别不同光照背景下的目标时,可以较好地适应光照变化并获得良好的检测精度,同时针对小目标也有较好的识别效果;如图6中第三列图所示,ODMMP-YOLO 在识别室外或室内存在严重遮挡或密集的目标时,也具有良好的检测效果.可以看出ODMMP-YOLO 在识别与定位遮挡严重或外观极其相似或较小的目标时具有良好效果.
图7给出了ODMMP-YOLO 检测方法与传统YOLOv3目标检测方法的实验图对比结果.图7 中第一列为检测原图、第二列为传统YOLOv3 的实验结果图、第三列为ODMMP-YOLO 的实验结果图,从第二列和第三列两组实验图对比中可以看出,ODMMP-YOLO 的检测结果明显优于传统YOLOv3 方法,尤其是在检测部分存在遮挡或重叠的物体时有很好的识别效果,如图7c 第一幅图所示,ODMMP-YOLO 可以很好地检测YOLOv3未识别到的汽车目标;图7c 第二幅图主要识别YOLOv3未检测到的公交车内重叠的乘客目标;如图7c 第三幅图主要识别目标为远处的船只.ODMMP-YOLO 在识别存在遮挡或重叠的小物体时,整体检测效果更好.
本文对现存的检测方法进行分析,提出一种基于混合池化YOLO 的目标检测方法(ODMMP-YOLO),并在PASCAL VOC 2007 数据集上进行了大量实验,实验表明,DMP 特征提取网络模型能够更好保留特征图之间的空间关系和特征信息,使提取到的特征信息更加丰富;对原有的损失函数重构之后减小了目标定位损失与置信度损失,精度及模型收敛速度均得到了有效的提升;基于混合池化的YOLO 目标检测方法的mAP 值提升大约5%,能够获得良好的检测效果.后续工作中,将采用迁移学习的方法,并对模型进行进一步的压缩与简化,将其应用到实时视频目标检测中.