融合DBSCAN的改进YOLOv3目标检测算法

2022-05-19 13:29李云红李传真苏雪平聂梦瑄毕远东谢蓉蓉
计算机工程与应用 2022年10期
关键词:候选框聚类卷积

李云红,张 轩,李传真,苏雪平,聂梦瑄,毕远东,谢蓉蓉

西安工程大学 电子信息学院,西安 710048

当前基于计算机视觉的深度学习算法[1]应用领域十分广泛,结合目标检测技术可用来解决一些公共场所的公共资源分配问题,以便节省人力和物力。

近年来深度学习逐渐被应用于图像的检测与识别中,大大推进了该领域的研究。传统的检测识别方法有方向梯度直方图(histogram of oriented gradient,HOG)特征、局部二值模式(local binary pattern,LBP)特征以及尺度不变特征变换(scale invariant feature transform,SIFT),通过设计特征提取器获得图像特征,然后将提取出来的特征输入一个可训练的分类器。常用分类模型有AlexNet、VGG、GoogleNet、ResNet(residual network)等。Krizhevsky等提出基于深度学习理论的深度卷积神经网络(deep convolutional neural network,DCNN)的图像分类算法,大幅提升了图像分类的准确率,同时目标检测准确率也得以提升[2],但运算速度慢,带来沉重的计算机负担。Szegedy等将目标检测问题看作目标的回归问题,使用深度卷积神经网络作为回归器来预测输入图像中的目标[3],但对目标特征泛化性较差,实际应用效果不佳。Erhan等使用深度卷积神经网络对目标的AnchorBox进行回归预测,并给出每个AnchorBox包含类别无关对象的置信度[4],提升了识别率,但该方法移植性较差,对特定场合目标需要分别训练。He等提出了一个可看作单层的网络层,称为感兴趣区域(region of interest,ROI)Pooling[5],该方法提高了检测速率,但是对小目标识别率较低。Liu等提出了单点多盒探测器(single shot multibox detector,SSD)的检测方法[6],该方法进一步提升了检测速度,但对小目标以及模糊目标检测效果不佳。YOLO[7]在检测速度上优于SSD算法,但对于相互遮挡目标存在漏检问题。

针对以上问题,本文提出一种基于改进YOLOv3算法的目标检测方法,该方法可在快速检测的前提下提升对小目标、遮挡目标的检测准确率。

1 YOLOv3目标检测算法

1.1 YOLOv3算法原理

YOLOv3是YOLO和YOLOv2[8]的改进,传统的检测算法对目标识别效率相对较低且优化困难,例如以区域卷积神经网络(region-convolutional neural network,R-CNN)[9]为首的候选框加预测位置、分类的这种策略。R-CNN首先产生一些潜在的Region Proposal,然后利用分类器对每一个区域进行分类的同时进行目标边界修正,最后利用非极大值抑制(non-maximum suppression,NMS)合并、消除重复检测框,这个过程被称为two-stage[10],如图1所示。YOLO系列算法的创新就是提出one-stage,如图2所示。即将目标检测仅看作单一的回归问题,可以直接通过对检测图像优化来得到所检测物体的边界位置和分类。YOLOv3之所以检测速度快正是因为其基于回归的方法来提取特征,是一种典型的端到端训练,目标类别和边框会直接在特征层回归之后得到,相比两步检测类算法节省了提取边框的时间,提升了检测速度。

图1 两步法Fig.1 Two-stage method

图2 单步法Fig.2 One-stage method

YOLOv3网络采用Darknet-53网络结构(含有53个卷积层),如图3所示。一方面采用全卷积网络,另一方面网络结构增添了5个残差块,每个残差块中包括两个DBL(DarknetConv2D_BN_Leaky)单元在残差块中进行残差操作,如图4(a)所示。其中DBL单元包含了卷积层(convolutional)、批量归一化(batch normalization)和Leaky ReLU激活函数,如图4(b)所示。通过引入残差结构网络架构,网络深度得以增加,并且可以有效避免在数据训练的过程中造成的梯度爆炸和消失等问题。得益于ResNet的残差结构,网络训练时的难度大大减小,因此这里可以将网络层数由之前的Darknet-19增加到53层,从而加强了网络的学习能力,检测精度较之前也有明显提升。Darknet-53网络结构只是用来获取图像的特征,在图3网络结构中可以看到经过特征层传入之后,该网络分别进行了两次上采样,经过上采样的堆叠可以获取更多检测图像特征,提升了检测精度。同时YOLOv3采用了多尺度训练,网络输出3个尺度,分别是13×13、26×26、52×52,对应于大、中和小目标的检测,每个尺度之间存在着特殊联系,增强了模型鲁棒性。

图3 Darknet-53结构图Fig.3 Darknet-53 structure diagram

图4 结构单元Fig.4 Structural unit

YOLOv3算法保留了之前版本的优点,“分而治之”就是其一,依然通过划分单元格的方式来对目标进行检测,这种方式保证了算法的检测效率。在YOLO算法的第二代版本之后,YOLO选择使用批量归一化,通过这种方法有效避免了训练过程中的过拟合问题,同时加速了收敛。网络在每一层卷积之后增加激活函数Leaky ReLU,与ReLU激活函数相比该激活函数可以保留更多图像信息。

除此之外对于不同的类别判断,YOLOv3使用了80个逻辑分类器,通过设置候选框阈值来判断检测目标是否为同一类目标。YOLO系列算法在目标检测准确率和速度上一直有着很大优势,是图像检测热门研究方法,但是该算法只通过单一方法进行特征提取,因此在小范围的信息上表现并不理想。本文通过对YOLOv3算法聚类方式的改进来优化解决这一问题。

1.2 目标边界框的预测

在所有深度学习的目标检测算法中,卷积层一般只获取目标的特征,随后将所获取特征传递到分类器或回归器中进行结果预测。YOLO系列算法采用1×1的卷积核来完成对目标的预测,这样得到的预测图大小与特征图的大小相等。在YOLOv3目标边界框的数量为3,由预测图中每个单元格确定,此外特征图中包含b×(5+C)个信息。C表示类别总数,b表示得到的边界框数量,不同目标有自己唯一的边界框,5+C为每个边界框的参数,分别是边界框的中心坐标、尺寸、目标分数和C个类的置信度。通过以下几个公式可以知道边界框的预测和网络输出之间的关系:

如图5所示,预测的中心坐标为(b x,b y),宽度和高度分别是b w、b h,t x、t y代表预测目标相对于中心坐标的偏移值,通过sigmoid函数将t x、t y的值控制在[0,1]区间上。该方法保证目标中心处于预测网格单元中,防止偏移过大。t w、t h为尺度缩放。网格原点在左上角,用c x和c y表示。p w和p h即为候选框的宽度和高度。

图5 边界框预测示意图Fig.5 Schematic diagram of bounding box prediction

2 改进YOLOv3算法

YOLOv3算法由两部分组成,分别是训练和测试。在训练样本时需要给模型大量数据,预测过程中通过候选框判断是否有检测目标落入候选框。若有目标落入框内,则其概率为:

在对目标进行检测过程中图像大小不一,种类繁多,针对如何确定候选框初始位置,YOLOv3选择采用K-means聚类算法对边界框的初始位置进行确定。Kmeans聚类算法属于无监督学习,通过指定K值作为中心,对周围靠近它们的对象进行聚类操作。通过重复迭代,对聚类中心值进行更新,当类内部差异越小,外部差异越大时即达到所期望效果,而“差异”大小的衡量是通过样本点到所属类质心的距离来决定的。通常情况采用欧氏距离进行衡量,式(6)为欧式距离衡量算法,式中x为类中样本点,μ为该类的质心,n为每个类中的样本数目,i为每个点标号。

然而在K-means聚类算法中K值的选取往往难以估计,且K值的选取会直接影响到聚类的效果,同时该聚类方法的聚类结果一般情况下只能保证局部最优聚类,以及对噪声干扰较敏感,另外K-means聚类算法对非凸型数据和大小相差较大的数据难以达到理想聚类效果。在实际情况中,图像中的目标个数以及类别个数一般情况下是未知的,同时目标之间的距离也可能过于分散,因此若按照指定K值进行聚类,则得到的中心点位置与实际位置相差距离太远,而DBSCAN聚类算法对聚类簇的形状没有偏倚,同时不用输入要划分的聚类个数[11],仅设定目标出现半径,由密度可达进行聚类也可以避免中心点和实际位置相差太远造成的影响,因此本文提出融合DBSCAN的DB-K聚类方法。该方法首先通过DBSCAN聚类算法,在忽略中心点的情况下得到首次较好聚类效果,得到若干已完成的类,随后增加多尺度聚类,进一步获得检测目标的局部和整体信息,具体为对检测目标的轮廓信息进行多尺度聚类。经过多尺度聚类和卷积操作,可以获得初代特征图。最后将这些类作为输入数据,通过K-means算法进行划分聚类,这样便可以获得准确的中心点位置。通过这种方法可以有效加速数据集收敛,提升小目标分类精确度。

DBSCAN聚类算法中邻域的样本分布紧密程度使用参数(ϵ,MinPts)描述,输入样本为:

如果子样本集样本个数满足式(8):

则将子样本加入到核心样本集合(9)中:

随后,核心对象通过邻域距离阈值可查找所有的子样本集,以便于更新当前簇样本集合,未访问的样本集合也会随之更新,最后经过迭代输出,输出结果为式(10):

YOLOv3中K-means聚类算法种子点是随机选取的,这种方式增加了聚类的随机性,会导致聚类效果不佳。本文提出一种减小种子点选取随机性的方法。首先通过误差平方和方法,如式(11)所示,得到K值,再经过K-means算法得到首次聚类中心。判断已得到的K个聚类情况,将最近的类进行合并,减小聚类中心数,当进行下次聚类时对应的聚类数也会随之减小,通过该方法可得到理想的聚类数。经过迭代,当评判函数收敛达到预期值,即可获得最佳聚类效果。

实验通过选取400个随机点分别由K-means聚类算法和本文提出的DB-K混合聚类算法进行测试。Kmeans聚类算法中,K值指定为3,实验结果如图6所示。在DB-K聚类算法中由DBSCAN聚类算法可得K值为3,实验结果如图7所示。通过实验结果可明显看出,本文所提出的方法有更好的聚类效果。

图6 K-means聚类算法Fig.6 K-means clustering method

图7 DB-K聚类算法Fig.7 DB-K clustering method

本文通过融合DBSCAN聚类算法以及对传统Kmeans聚类算法改进,提升了检测目标在不同数据集和复杂环境下的分类效果,使目标分类效果更佳,同时增加了抗噪声和干扰的影响。在后期目标识别中起到了事半功倍的目的。

3 候选框的确定

将检测图像输入Darknet-53网络结构中,网络中卷积层对行人特征进行提取、训练和预测。本文采用DBSCAN聚类算法先得到样本子集,再通过改进Kmeans聚类算法对数据集进行训练得到聚类候选框。输入图像分割后得到S×S个单元格,每个单元格可预测B个候选框,同时每个候选框对应5个预测参数。候选框总数为S×S×B个。式(12)为判断是否有目标在候选框内,若无目标则概率为0,有目标则概率为1。

候选框中若无预测目标则将该候选框置信度设置为0,若存在目标则该候选框置信度应为式(13)所示:

IoU(intersection over union)表示预测框和实际框交集面积与并集面积之比[12],也反映了检测目标是否存在于候选框中,如式(14)所示:

3.1 行人候选框确定

总数为S×S×B个候选框内有目标存在且为行人的概率如式(15)所示:

通过式(16)将候选框置信度和所检测目标的存在概率相乘可以得到行人类置信度:

通过以上步骤候选边框已经和检测对象对应,最后通过NMS将不合适的行人候选框剔除,仅保留最佳行人候选框。最终输出框的内容为[x,y,w,h,C,conf],分别为目标框的偏移量、宽度、高度、类别及置信度。

3.2 交通工具候选框确定

总数为S×S×B个候选框中存在目标且为交通工具的概率为式(17)所示:

相应的,若不存在交通工具则置信度conf为0,若存在交通工具则置信度为式(18)所示:

最后通过与处理行人候选框相同的方法,经过非极大值抑制后保留最佳交通工具候选框,同时给出相应参数[x,y,w,h,C,conf]。

4 实验与分析

本文实验在Linux系统环境下完成,计算机系统配置为Ubuntu18.04、CUDA(compute unified device architecture)11.0、CUDNN(CUDA deep neural network library)8.0。硬件环境搭载核心数为8核Interl-CPU-10700F,显卡选用RTX2020(Ti),计算机内存16 GB,实验过程中使用GPU进行加速训练。

4.1 行人及交通工具数据集

本文数据集选用Pascal VOC 2007、2012以及MSCOCO数据集进行训练。Pascal VOC为图像识别和分类提供了一整套标准化的优秀的数据集,从2007年到2012年该组织提供了大量图片以及对应的标签,利用这些数据,实现图像的分类、目标检测识别、图像分割三种任务[13]。在这些图片中,一共包含了4个大类、20个小类的物体。MS-COCO数据集是微软团队获取的一个可以用来进行图像识别、分割和捕捉的大型数据集[14]。该数据集主要包括日常生活中的人、交通工具、动物等类别,通过精确地分割将图像中的目标进行了准确的标定。MS-COCO数据集中包含91类目标、328 000个影像数据和2 500 000个标签,基本可以满足当前实验需要。

4.2 模型训练

在对数据集进行训练时更改YOLOv3的配置文件,包括模式选择、网络输入的宽和高以及通道数、动量、权重衰减、饱和度、曝光度和色调等,这些更改可以对图像进行数据增强预处理,提高了数据模型的泛化能力。由于YOLOv3网络的输入图像要求为416×416,在将图像数据输入到网络模型时应将图片大小调整为该尺寸来达到最佳模型训练效果。

本次实验中设置迭代次数为30 000次,动量因子(momentum)和权重衰减分别设置为0.9和0.000 5,实验过程中小批量样本数设置为32,初始学习率为0.01,为防止过拟合将正则化系数设置为0.000 5,并阶段性逐级缩小为原来的1/10。同时开启多尺度训练以增强模型对不同尺寸图像的鲁棒性。随着迭代次数的增加损失函数逐渐收敛,当迭代次数达到20 000次时,损失值已接近0.03,当训练次数达到28 000次左右时,损失值在0.03上下浮动,此时可以判定训练已达到预期效果,损失变化曲线如图8所示。

图8 损失变化曲线Fig.8 Loss change curve

当训练次数达到30 000次时,IoU值逐渐收敛于1,实验结果为理想状态,平均IoU曲线如图9所示。随着迭代次数增加召回率逐渐趋于1,精确率和召回率曲线如图10所示。

图9 IoU变化曲线Fig.9 IoU change curve

图10 Precision和Recall变化曲线Fig.10 Precision and Recall changecurve

4.3 实验结果分析

本文选择Faster-RCNN、SSD以及YOLOv3目标检测算法来做对比实验。Faster-RCNN属于两步检测算法,先提取感兴趣区域,即判断是所检测图像的前景或背景,之后再对图像中目标进行分类,Faster-RCNN目标检测算法由Ross Girshick团队在2015年提出,该算法的核心为一个RPN网络。SSD结合了Faster-RCNN和YOLO的优点,该算法借鉴了YOLO算法,将检测转化为回归机制,同时借鉴了anchor机制。SSD的anchor预测不是对目标的每个位置进行精确预测,而是跟YOLO一样将输入图像划分为一定数量的网格,然后根据每个网格生成预测框。

改进后YOLOv3目标检测算法首先通过融合DBSCAN聚类方法得到首次聚类结果,如图11所示,为测试图像DBSCAN聚类结果,可得DBSCAN聚类对检测图像的背景和目标信息进行了有效分类。

图11 DBSCAN聚类结果Fig.11 DBSCAN clustering result

然后利用多尺度聚类获取检测图像中目标的具体轮廓信息,如图12所示,为测试图像多尺度聚类结果。最后通过卷积网络获得输入图像初代特征图,如图13所示,为测试图像初代特征图。

图12 多尺度聚类结果Fig.12 Multi-scale clustering result

图13 初代特征图Fig.13 Primary feature map

最终的聚类结果通过轮廓系数法(silhouette coefficient)[15]进行评估,计算方法如式(19)所示:

式中,a(i)代表样本与其自身所在簇中的其他样本的相似度,b(i)样本与其他簇中的样本的相似度。可以得到s(i)的值为0.94,接近于1,说明样本聚类合理,结果没有偏倚。

在目标被遮挡情况下改进YOLOv3算法与Faster-RCNN、SSD以及YOLOv3目标检测算法在VOC2007+2012数据集训练后的实际检测效果图如图14所示,可明显看到改进YOLOv3算法对小目标识别率以及识别精度较论文中对比算法有显著提高。本文算法与对照组算法在MS-COCO数据集实际检测效果图如图15所示,改进后的YOLOv3算法提升了对小目标以及遮挡目标的检测准确率。

图14 VOC数据集检测效果对比Fig.14 Comparison of detection effects of VOC dataset

图15 MS-COCO数据集检测效果对比Fig.15 Comparison of detection effects of MS-COCO dataset

目标检测领域中精确率(precision)、召回率(recall)、平均精度均值(mAP)、识别耗时(s)以及F1值常被作为检测效果的评价标准。其中精确率表示为预测为正样本中真正的正样本占有比例,召回率表示样本中的正样本被预测正确的比例。用TP代表预测和实际都为正的样本,FP代表预测为正实际为负的样本,P代表精确率,则精确率计算公式如式(20)所示:

用R代表召回率,FN代表预测为正样本实际为正的样本,则召回率计算公式如式(21)所示:

平均精度均值表示各类别平均精度的均值,它反映了全局性能指标。其中AP表示平均精度,用来量化分类器性能。在图10中,曲线与坐标轴所围成的面积即为AP值,如式(22)所示:

则平均精度均值计算方法如式(23)所示:

式中,m代表类别数。

F1值为精确率和召回率的调和平均数,计算方法如式(24)所示:

改进后YOLOv3算法与其他各模型在VOC2007+2012数据集上的检测效果对比如表1所示。改进后YOLOv3算法与其他各模型在MS-COCOC数据集上的检测效果对比如表2所示。从实验结果可以得到,改进后的YOLOv3算法比原算法在VOC2007+2012数据集上mAP提升14.9个百分点,召回率提升6.5个百分点,在MS-COCO数据集上mAP提升12.5个百分点,召回率提升8.6个百分点。

表1 各模型在VOC2007+2012数据集的检测效果对比Table 1 Comparison of detection effects of each model on VOC2007+2012 dataset

表2 各模型在MS-COCO数据集的检测效果对比Table 2 Comparison of detection effects of each model on MS-COCO dataset

5 结束语

本文针对YOLOv3目标检测算法对小目标、遮挡目标识别效率不高的问题提出了相应的改进方法。通过融合DBSCAN聚类算法和对K-means聚类算法中种子点K值的合理选取分别做出了改进,并通过实验进行了论证。由实验结果可知,改进后的YOLOv3目标检测算法在VOC2007+2012数据集和MS-COCO数据集上对小目标以及遮挡目标的识别准确率上有明显提升,召回率分别达到81.9%和82.4%,平均精度均值分别达到70.2%和69.2%,降低了漏检率。下一步工作将在保证检测精度的情况下优化Darknet-53网络结构,达到节省计算机性能,同时进一步提升检测速度的目的。

猜你喜欢
候选框聚类卷积
面向自然场景文本检测的改进NMS算法
基于3D-Winograd的快速卷积算法设计及FPGA实现
基于深度学习的重叠人脸检测
卷积神经网络的分析与设计
基于K-means聚类的车-地无线通信场强研究
从滤波器理解卷积
基于单帧标注的弱监督动作定位
基于傅里叶域卷积表示的目标跟踪算法
一种针对特定目标的提议算法
基于高斯混合聚类的阵列干涉SAR三维成像