基于改进YOLOv3 的骑车人识别研究
2022-10-31马佳峰陈凌珊
马佳峰,陈凌珊
(201620 上海市 上海工程技术大学 机械与汽车工程学院)
0 引言
随着近年来城市化进度加快,汽车越来越普及,一方面给人们带来更多便利,另一方面,骑行人作为公路环境中易受伤的群体[1],安全出行受到潜在威胁,识别骑行人对行车安全具有重要意义。
目前,识别骑行人的算法都是基于机器学习[2],主要有传统机器视觉方法和深度学习。随着智能网联汽车对骑车人保护意识的提高,为了降低事故风险,识别骑车人的研究也逐渐开展[3]。本文采用深度学习算法对公路环境下的骑车人识别进行研究,主要采用YOLOv3 算法对公路环境下骑车人识别技术进行研究。
1 YOLOv3 网络结构模型
YOLOv3 借鉴了相关ResNet 的思想[4],主干网络用的是Darknet-53,其作为特征提取网络,网络深度较高,鲁棒性也不错。采用ResNet 的快速连接思想,由于池化操作往往产生梯度方面的负效果,所以舍弃了池化,借助卷积层里的步长去完成降采样。改进后不仅提高了速度,检测精确度也有某种程度的提升。YOLOv3 的网络结构图如图1 所示。
在YOLOv3 的网络结构里引入了多种尺度预测的理念[5]。图1 中,YOLOv3 检测层的数目是3 层,代表3 种不同尺度的特征图,分别是13×13、15×15、52×52,该算法同YOLOv2 一样,用了K-means 聚类算法来得出锚框的大小,个数为9 个。这3 个层级由锚框的大小得出,这种多种尺度检测的方式能够让所处的检测层对上下文调整信息进行较好的融合,对于模型应用于多尺度目标进行预测时较为方便。
图1 YOLOv3 网络结构图Fig.1 Network structure of YOLOv3
YOLOv3 将FPN网络、残差网络的特点与YOLOv2 算法相结合,其主干网络用的是DarkNet-53,网络结构如图2 所展示。
图2 DarkNet-53 网络结构Fig.2 Network structure of Darknet-53
Darknet-53 加入了残差网络,解除了在深层网络方面会出现退化的缺陷,进而使YOLOv3 算法能够用较多的3×3 和1×1 的卷积核进行特征提取,对网络的深度进行了提升。
在损失函数方面,该算法coordError 与YOLOv2[6]相比没有变化,主要对分类预测损失和置信度损失进行了改善。第2 代算法对框里的类别进行预测时用的是softmax 函数计算损失,该函数的应用场景是要进行分类的目标相互没有关系。在处理有交集的多个类别时(比如行人和人),softmax 函数对数据的拟合效果不是很好,为解决这种单个目标可能属于多个类别的问题,使用了二元交叉熵函数来替换,交叉熵函数如式(1)所示:
式中:q——对这个类别进行预测的概率。
交叉熵函数对所有类别的得分进行预测,同时设定某个阈值,从而对单个目标采取多个标签的预测,超过这个阈值的类别即当下目标框的真正分类。
在检测方式上,其参考了FPN 网络理念[7]。FPN 网络结构如图3 所示。
图3 FPN 网络结构图Fig.3 FPN network structure diagram
FPN 网络结构原理:将特征点采取接连的下采样操作,得出一些包含高语义信息的特征层,下一步再次实行上采样操作,由此特征层尺寸再次增大,以大尺寸的特征图来对小物体检测,将上采样和下采样尺寸一样的特征层叠加,进而确保小物体的语义信息和特征。
使用FPN 算法的目的是跨连层地把多种不一样尺度的卷积层链接起来,跨层连接网络里最终3个不同尺度的卷积特征层,将3 个层进行融合,然后再进行目标检测,从而保证既能更多地对高层网络的信息进行学习,同时也能让网络的定位精准。
2 基于YOLOv3 算法的改进
2.1 基于网络结构的改进
YOLOv3 的主干网络是Darknet-53,结构中包含多个残差网络,引入残差网络让模型训练变得相对容易,通过Darknet-53 让YOLOv3 网络能进行多种类别识别。然而,Backbone 应用于单个目标场景时,复杂的结构显得繁杂多余。网络结构复杂必然带来相关参数数目的增加,使模型训练过程变得繁琐,效果大打折扣,同时还会对目标识别的速度产生影响。然而本文主要对公路环境下的骑车人进行识别,检测目标类型单一,且目标数目相对较少,所以更换Backbone,采用Darknet-19 代替原Darknet53[40]。图4 所示为Darknet-19 的网络结构。
由图4 可看出,该网络结构不包含Darknet-53中的残差网络块,简化了网络结构,同时保留了原YOLOv3 中的多尺度融合思想。多尺度融合是将不同特征层进行上采样或者下采样,然后进行融合,本文选定图4 中3 个特征层进行融合,改进后的YOLOv3 网络结构如图5 所示。
图4 Darknet19 网络结构Fig.4 Darknet19 network architecture
图5 改进后的YOLOv3 网络结构Fig.5 Improved YOLOv3 network structure
2.2 基于损失函数的改进
有些情况下,YOLOv3 算法训练得出同样的损失值时,应用于现实识别中往往产生不同效果,说明其并不能真实地将预测框与真实框相对位置反映出来,针对这类缺陷,采用CIoU(Complete-Intersection over Union)作为损失函数替换原来的IoU,IoU 的公式如式(2):
式中:A——真实框面积;B——候选框面积。
IoU本质上是比值,它对待检测目标的scale敏感度不高,然而常态下,关于bounding box 的回归损失方面的优化和IoU往往并非全相等。一般的IoU不能对没有相互重叠的区域采取直接优化,为解决此问题,让IoU被直接作为回归优化loss。而CIoU 可以很好地解决此问题,它将待检测物体和锚(anchor)的相互距离、尺度、处罚项、叠合率都作为影响因素,提高了回归框稳定性,从而消除IoU训练中产生的发现现象。CIoU 公式如式(3):
式中:ρ2(b,bgt)——候选框与真实值的中心坐标的欧氏距离;c——既包含真实值又包含候选框的尺寸最小包合区域的对角线数值;α和υ的公式分别如式(4)、式(5)。
LOSS 的计算公式为
3 实验及结果分析
实验环境:Windows10 64 位操作系统,GPU型号英伟达2080Ti。对骑车人检测仿真实验的结果采用3 个评价指标:平均检测精度AP(Average Precision),召回率(Recall),检测速度DR(Detection Rate)。
3.1 对神经网络进行训练
对深度学习卷积神经网络的结果影响因素有很多,其中数据集扮演了十分重要的角色,一个数据集的质量对网络模型的训练结果有举足轻重的效果。本文的识别对象为骑车人,选取了一个包含骑车人数量较多的数据集,名为TDCB 数据集[8],该数据集是2016 年清华大学Li 与戴姆勒公司合作制作而成[9]。
数据集内含有6 种目标,分别为:行人、骑自行车人、摩托车手、乘轮椅人、骑电瓶车人和骑三轮车人。训练集和测试集的比例大约为3∶1,训练集共有9 741 张图片,标注文件内只有骑车人,测试集含有图片2 914 张,包含行人、自行车手、摩托车手、乘轮椅人、骑电瓶车人和骑三轮车人,此数据集的诞生很好地满足了有关骑车人数据集的需求。该数据集标注格式并非主流通用的VOC 数据集格式[10],经过相应的程序脚本改进后,变为了可用的VOC 数据集格式。使用改进后的YOLOv3算法在TDCB 数据进行训练后,相关的损失函数值如图6 所示。
图6 训练完成后的损失函数值Fig.6 Loss function value after training is complete
3.2 实验结果
改进后的YOLOv3 算法识别效果示例图如图7所示。
图7 改进YOLOv3 后的识别效果Fig.7 Target recognition effect of improved YOLOv3
实验结果显示,改进后的算法具有良好的检测效果,对多种方向和角度均可识别出骑车人,检测小目标也有一定效果,当遮挡不太严重时,同样可以检测识别骑车人。
本次实验中,用TP表示自身是正样本检测结果是正样本事件的个数,NN表示自身是负样本检测结果为正样本事件的个数;YN表示自身是负样本检测结果是负样本事件的个数;NP表示自身是正样本检测结果为负样本事件的个数。则召回率(Recall)和准确率(Precision)表达式分别如式(7)和式(8)所示。
为了进一步分析实验结果,将原YOLOv3 和改进的YOLOv3 在所有测试集上进行仿真实验,得出PR曲线,如图9 所示。
从PR曲线可以看出,改进后的YOLOv3 算法在识别准确率上有了整体提升,最终识别结果统计如表1 所示。
图8 改进后的YOLOv3 与YOLOv3对骑车人检测的PR 曲线Fig.8 PR curve of improved YOLOv3 and YOLOv3 for cyclist detection
表1 YOLOv3 和改进后的YOLOv3 识别结果对比Tab.1 Comparison of recognition results between YOLOv3 and improved YOLOv3
在平均识别精度(AP)指标上,改进后的YOLOv3 为0.698,原YOLOv3 为0.664,识别精度提升了约3%;平均检测时间提高0.013 s。总体上提升了YOLOv3 算法的识别性能,对于提高公路环境下骑车人的安全有重要意义。
4 总结
对 YOLOv3 算法应用于公路环境下骑车人识别技术进行了研究,对YOLOv3 算法进行了尝试性改进和优化。针对目标识别场景是单种类目标,更换了特征提取主干网络,将原先YOLOv3 中的Darknet-53 替换为Darknet-19,简化了网络结构模型,使检测速度提升。对原先的损失函数进行了优化,用CIoU 替换IoU,使检测精度提高。然后,依托TDCB 进行了仿真实验。
经过初步验证和数据统计,改进后的YOLOv3在识别效果上,识别精度提高了约3%,平均检测时间提高了0.013 s。表明改进后的YOLOv3 算法在检测速度和精度上都有所提升,且满足实施要求。