目录
摘要
【目的】 目前,行人检测算法存在模型复杂、检测精度较低、检测速度慢的问题。为了解决这些问题,将YOLOv5算法进行了改进,能够更好地应用于行人检测。【方法】 首先使用深度可分离卷积替换YOLOv5算法骨干网络中的普通卷积,降低了模型的计算量和参数量,提高模型的检测效率;然后在骨干网络的特征融合部分添加通道注意力和空间注意力机制,让网络关注于图像中行人的位置信息和通道信息;最后使用EIOU损失函数优化训练模型,并使用K-means++聚类算法来生成先验框。【结果】 将改进后的模型在INRIA行人检测数据集上与其他算法进行了对比实验。结果表明,改进后的模型精确度达到89%,相比于原模型提高了7.6%,检测速度达到每秒106帧。【结论】 本文改进算法提高了行人检测的速度和精度,且模型数据量小,易于实时检测和部署。
关键词: 行人检测; 深度学习; YOLOv5; 深度可分离卷积; 注意力机制
引言
行人检测是计算机从视频或者图像中定位出行人目标。随着深度学习的发展,行人检测在安防监控、无人驾驶、机器视觉等方面的应用越来越广泛。由于现实环境复杂,行人通常呈现姿态各异、衣着不同、相互遮挡等情况。如何在复杂环境下保证较高的检测准确率和检测速度,对行人检测算法提出了挑战。
传统的行人检测方法利用人工设置特征算子来完成检测任务,首先基于形状特征、边缘特征、变换特征或统计特征描述图像中的行人信息,然后使用支持向量机分类模型将行人检测转换为分类任务对行人进行定位。Dalal等[1]首次使用了梯度直方图法 (Histogram of Oriented Gradient, HOG),根据图像中不同区域像素的梯度变化情况来提取图像中的特征信息,然后将提取到的图像特征信息通过支持向量机分类。Dollár等[2]将待检测图片中的局部通道特征和增强算法相结合然后开展行人检测。由于人工设置的特征算子只关注图像中某一类特征信息,对原图像中的特征提取能力不足,而且过于依赖人工设定,因此不易泛化,鲁棒性较差。
目前,采用深度学习方式开展行人检测算法可以根据处理流程分为两类:一类是将目标的位置与分类进行回归计算的一阶段检测算法,具有代表性的算法包括SSD[3]、YOLO[4]系列算法等;另一类则首先利用区域候选网络或者选择搜索方法生成包含目标的候选框,然后进一步对目标种类和位置信息进行预测,代表性的算法有R-CNN[5]系列算法。不同算法的性能对比如表1所示。二阶段的算法模型虽然精度较高,但由于需要预先生成候选框而消耗大量的计算资源检测速度较慢。一阶段检测模型直接通过网络预测目标位置以及类别信息,无需生成候选区域,因此检测速度更快。
表1 目标检测算法性能对比
Table 1 Performance comparison of target detection algorithms
Algorithms |
Input size |
Test dataset |
Speed/(frame s-1) |
mAP(0.5)/% |
Fast RCNN |
600×1000 |
VOC2007 |
0.5 |
70.2 |
Faster RCNN |
600×1000 |
VOC2007 |
5 |
73.5 |
SSD |
512×512 |
VOC2007 |
18 |
76.6 |
YOLOv1 |
448×448 |
VOC2007 |
46 |
62.8 |
YOLOv2 |
544×544 |
MS COCO |
40 |
43.6 |
YOLOv3 |
608×608 |
MS COCO |
24 |
58.7 |
YOLOv4 |
608×608 |
MS COCO |
58 |
66.9 |
YOLOv5s |
608×608 |
MS COCO |
69 |
57.8 |
新窗口打开| 下载CSV
本文提出了一种改进后的YOLOv5[6]轻量级行人检测算法。主要的工作内容如下:
(1)使用深度可分离卷积替换YOLOv5算法骨干网络中的普通卷积,降低了模型的计算量和参数量,提高模型的检测效率。
(2)在骨干网络的特征融合部分添加通道注意力和空间注意力机制[7](CBAM),让网络关注于图像中行人的位置信息和通道信息。
(3)使用EIOU[8]损失函数优化训练模型,并使用K-means++[9]聚类算法来生成先验框。
1 YOLOv5网络结构
通过YOLOv5的网络结构图(图1)可以看出,网络主体由4个部分组成,分别是图片输入端Input模块、骨干网络主体Backbone模块、特征融合Neck模块以及预测部分Prediction模块,下面将对这4个部分详细介绍。
图1
图1 YOLOv5网络结构
Fig.1 YOLOv5 network structure
1.1 输入模块
在YOLOv5网络输入端,采用了自适应锚框算法、Mosaic数据增强以及图片尺寸缩放技术。自适应锚框算法是YOLOv5算法为不同的数据集设定不同的初始化锚框尺寸。在训练的过程中,网络会通过预测锚框与真实锚框的对比计算反向更新并优化网络参数。YOLOv5算法的图片输入部分采用了Mosaic数据增强对输入图片采用随机缩放、裁剪与随机排布的方式处理,使检测数据集更加多样,增强了网络泛化能力。图片尺寸缩放则是将输入原始图片缩放到统一尺寸再输入网络。
1.2 骨干网络模块
YOLOv5的骨干网络由Focus和CSPNet结构组成。Focus结构在骨干网络中主要执行切片任务,保持数据量不变,将图像尺寸减小,如图2所示。
图2
图2 Focus中的切片
Fig.2 Slices in Focus
YOLOv5继承了YOLOv4骨干网络中的CSP结构,并且将其应用到Neck模块中。其中CSP_X结构存在于骨干网络中,CSP2_X结构则存在于Neck模块中。
1.3 颈部网络模块
Neck中使用了特征金字塔[10](FPN)与金字塔注意力网络(PAN)的组合结构。如图3所示,FPN特征金字塔是一种自上而下的金字塔结构,将抽象信息以上采样的方式来传递融合,传达语义特征。PAN结构则为自下而上的倒金字塔结构,主要传达定位特征从不同的骨干网络层对不同参数进行聚合。
图3
图3 Neck中的FPN+PAN结构
Fig.3 FPN+PAN structure in Neck
1.4 预测模块
预测模块主要由两个部分组成,分别是预测框损失函数部分和非极大值抑制组件。在YOLOv5的网络结构中使用GIOU loss[11]作为预测框的损失函数。考虑了边界框中心点的距离信息和边界框宽高比的尺度信息,有效地解决了边界框不重合时的问题,使预测框的精度和速度有了提高。同时使用NMS非极大值抑制有利于在多目标框重叠以及遮挡情况下筛选出最优目标框。
2 改进YOLOv5算法
针对YOLOv5模型数据量大,行人检测框定位不够准确的问题,本文引入深度可分离卷积来减小网络模型的数据量。引入注意力模块CBAM使网络重点关注行人检测任务重的关键特征并抑制非关键特征,从而提高算法的检测精度。引入EIOU损失函数作为目标框回归损失函数,改善定位精度低和训练过程中检测框回归速度慢的问题。