APP下载

改进YOLOv5算法及其在车型识别中的应用

2023-09-13周珂周腊吾黄文豪

电子技术与软件工程 2023年2期
关键词:卷积深度特征

周珂 周腊吾 黄文豪

(长沙理工大学电气与信息工程学院 湖南省长沙市 410114)

实时车型识别是智能交通领域的研究热点之一[1]。传统的车辆识别方法[2]需要先设计和提取车辆特征,再通过机器学习算法进行训练,而使用卷积神经网络和深度学习的方法则只需要大量标记的车辆图像来训练网络,自动学习车辆类型特征并进行分类,提高了识别效率[3]。然而,这种方法仍然存在一定的瓶颈。文献[4-6]对网络进行了改进,例如融合了多种模型进行车辆检测,但计算量较大且难以实现实时性。另外,文献[4-6]已有模型进行了修剪或扩展,但这些方法在检测精度和实时性之间存在折衷。为了综合提升目标检测网络的精度、速度及小目标检测性能,本文以YOLOv5 为基础,在主干网络上进行了三方面的改进:

(1)引入SENet 结构并对比分析引入点对网络影响,择优进行特征权重的优化;

(2)加入深度卷积分离策略,减少算法计算量,实现深度模型轻量化;

(3)浅层加入一个尺度输出节点,以满足对小目标的检测要求。通过结合K-means 对先验框的优化,本文实现了实时车型识别。

1 YOLOv5算法改进原理

YOLOv5 是一种速度快且效率高的目标检测算法,核心思想是将网络的预测信息向真实信息进行回归,结合 了Faster-RCNN、Feature Pyramid Networks(FPN)、Visual Geometry Group(VGG)、Resnet 等先进思想。利用Resnet 残差结构和FPN 进行特征提取,残差结构加深可训练网络[7],FPN 从不同卷积层深度输出特征,为后续特征加工提供输入[8],同时对所提取的特征进行维度上的聚合,实现高效检测。本文将对Darknet53 高层重复卷积层进行深度修改,以进一步提高检测性能。

1.1 通道权重学习结构SENet的引入

在卷积运算中,通过识取和融合同等位置感受野的特征,得到卷积核来感知输入特征图的空间信息变化[9]。然而,卷积核处理通道时可能会丢失部分维度信息。为了平衡空间和维度特征,引入SENet 结构来学习各通道特征权重,激发有影响力的通道并抑制低影响力的通道,实现三个维度信息的平衡。

(1)对给定形状为H'×W'×C'的输入X,经过卷积操作Ftr得到特征图U(H×W×C),计算过程如(1)(2)所示:

(2)特征图经过Squeeze 操作得到各个通道的初始权重系数zc,其中zc的形状为1*1*C,Squeeze 操作如式(3):

(3)Excitation 处理分为两个全连接层和两个激活层,都有着各自的操作任务,如果zc需要降维与升维的话必须依靠两个全连接层才能完成任务,其中进行升维处理后得到的形状是和zc保持统一的,两个全连接层能够得到一些非线性关系,而这些非线性关系是有关于各个通道间表达能力的。s为更新得到的通道权重系数,计算过程如式(4):

(4)将s 作为通道权重系数,对识别读取的特征图U 再一次给予新值,从而使得占有一定分量的通道表达性显著提升,因此特征图U 的全体表达效果也明显上升,得到下一层的输入。计算过程如式(5):

随着网络深度的增加,卷积核数量呈指数增长,同时提取无用特征会干扰模型学习。为优化通道特征,YOLOv5 采用SENet 结构抑制无效通道特征,激发重要通道特征,提高识别精度。在Darknet53 中,1×1 卷积层对特征图的升降维度操作步骤有一定效果,但对长宽数据识别较差。同时,为了避免参数数量增加导致实时检测困难,YOLOv5 使用了残差块与SENet 结合的方法,可分为将SENet 结构应用到残差模块内或外。实验结果将用于比较两种方案的效果。

1.2 卷积深度分离改进策略

本文从深度可分离卷积中获得灵感,通过在通道维度上分解和融合卷积核,改善了YOLOv5 主干网络的卷积方法,从而在一定程度上减少了卷积计算量。深度模型轻量化是当前的热点和难点[14]。为了说明方法改善的效果,下面将传统卷积和深度可分离卷积的计算量进行简单比较。假设输入特征图大小为N×N×K,输出特征图大小为M×M×L。对传统卷积进行计算时,采用L个卷积核尺寸为S×S×K进行特征提取的时候,计算量公式为C=M×M×L×S×S×K。

而深度分离卷积方式的计算量C'由以下部分组成:

第一部分:进行特征识取的时候,对卷积核的要求就是所采纳的数量需要和输入特征通道数数量保持统一,卷积核大小为S×S×1,每一个卷积核仅仅只识取输入特征图的一个通道,不提取多余的通道,输出特征图为M×M×K,它的计算量是C1=M×M×K×S×S×1。

第二部分:采用L 个尺寸为1×1 的卷积核做升维或者降维操作步骤,针对的是第一步导出的特征图,输出特征图尺寸为M×M×L,与传统卷积方式中输出的结果是一模一样的,它的计算量是C2=M×M×L×1×1×K。

则深度分离卷积C'比传统卷积C 为:

一般情况下卷积核尺寸是大于等于3,其中如果L越大,则比值越小,也就是说明深度分离卷积远小于传统卷积。

为了提高YOLOv5 的检测性能,我们采用了可分离卷积结构来替代之前的深度分离卷积方法。可分离卷积结构可以更好地拟合通道中的低分辨率特征图,从而减少计算损耗并提高正向计算速度。此外,这种结构增强了模型的层级结构和非线性表达能力,促进了通道维度上的信息提取,使各种特征维度上的信息量更加平衡,最终提高了网络的检测性能。

1.3 多尺度改进策略

YOLOv5 检测物体的原始比例对应的有效区域相对较大,所以在检测小物体方面就不是很准确。为解决这一问题,提出了一种新方案,将其引入到Darknet53 中。我们可以通过减小输入图像的特征图单元格的空间感受面积来改进模型,这样可以增强模型输出特征图单元对原始图像中小区域的有效信息转化比。换句话说,模型可以更准确地捕捉到原始图像中的小细节信息,从而提高模型的性能。因此,改进后的YOLOv5 模型在检测小物体方面表现出更强的能力,所提出的方法为物体检测任务中检测小物体的挑战提供了一种有前途的解决方案。调整了主要的网络层数,并在第23、40、57 和66层生成了四个不同比例大小的特征图,分别对应原始图像的最大有效区域面积为73、209、481 和769。通过添加新的小目标检测通道,原图区域,增强了前景和背景目标区域之间的比率,提高了有效特征的表达能力,减少了背景特征的干扰,从而提高了模型检测小目标的能力。

2 实验结果与分析

2.1 研究实验基础

实验平台选用的操作系统为Ubuntu20.04.2 LTS,编程语言使用python3.9,深度学习框架采用tensorflow2.1,训练IDE 选择pycharm2018.3.7,显卡运算平台为cuda10.1,加速器为Cudnn7.5.0,相关硬件配置:

(1)CPU 为I9-9700K;

(2)GPU 为NVIDIA RTX2080;

(3)内存为16GB RAM 等。

本实验使用BIT-Vehicle 公开车辆数据集,包含9800 多张车辆图像和对应的标注文件,共有六类目标,数量占比分别为8.18%、5.55%、58.91%、8.78%、4.73%和13.85%。实验中采用batch size 为8,使用adam 优化函数进行优化,同时采用两阶段的warmup 策略设计学习率计划。具体来说,前1 到3 个epoch 学习率为0.0001,第3 到6 个epoch 学习率为0.0005,第6 到10 个epoch学习率为0.001。在第10 个epoch 之后,每10 个epoch学习率衰减0.1 倍,以提高网络的学习速度并保持权重分布的稳定性。

2.2 先验框设定

在目标检测任务中,合理的先验框的选择对模型性能至关重要。先验框是模型的锚点,用于定位目标位置和尺寸。数据集中目标的尺寸信息可以通过聚类算法选择合适的先验框,其中K-means 聚类算法是一种常用的方法。需要注意的是,在选择先验框时要考虑数据集中目标的尺寸分布情况,并对其进行归一化,以确保更接近真实框。最大交并比可以作为选择更好先验框的指标,并将其作为K-means 聚类算法的距离度量,以提高检测性能。MaxIOU 的定义如式(6)。

Gx为目标真实框的宽,Gy为目标真实框的高;Px为簇中心的宽,Py为簇中心的高;使用K-means 聚类算法进行聚类,总共使用9 个中心簇。得到的9 个聚类先验框分别为大尺度:(168,267),(221,232),(242,282);中尺度:(141,181),(150,200),(157,225);小尺度:(71,140),(91,203),(132,166)。

2.3 通道权重优化实验结果及分析

本文通过引入SENet 对比了内部引入SENet 的model_1、外部引入SENet 的model_2 和原版YOLOv5模型的性能表现。在训练过程中,随着训练周期的增加,三个模型的mAP 值有所变化。虽然在前期模型训练中,YOLOv5 相对于model_1 和model_2 表现更好,但随着训练的深入,model_1 在平均精度上表现优于model_2 和YOLOv5,而model_2 的平均精度略高于YOLOv5。在测试集上,引入SENet 虽然略微降低了检测速度约5.4%,但显著提高了模型的mAP 值,特别是model_1,其mAP 提高了约2.8%。这是由于model_1使用通道权重优化策略,在增加通道间信息特征的同时保持了特征图的平衡,从而提高了特征提取效率和模型性能。虽然引入SENet 增加了计算量和参数,但使用深度可分离卷积进行优化可以抵消这种影响。总之,引入SENet 对目标检测模型的性能有显著提升,但需要在速度和精度之间权衡。

2.4 深度分离实验结果及分析

实验结果表明,通过深度可分离卷积引入策略,可以有效地降低检测过程的计算量,提高检测速度。SCYOLO 模型相比于原YOLOv5 模型,在检测速度上提升了81%,但在数据学习能力上稍弱于原模型,其mAP为0.8745,检测能力约为原YOLOv5 模型的97%。同时,由于SC-YOLO 的参数数量较少,因此其对训练集的拟合速度略高于YOLOv5,这也意味着SC-YOLO 在参数学习方面比YOLOv5 更加快速。在训练过程中,SC-YOLO 和YOLOv5 表现出相似的loss 下降趋势。因此,通过采用深度可分离卷积引入策略,可以在不损失太多检测能力的前提下提高模型的检测速度。

2.5 小目标检测优化实验

实验对小目标检测进行了优化,通过在YOLOv5主干网络中增加一个低层特征输出节点并进行调整,形成了多尺度YOLO(M-YOLO)。实验结果显示,M-YOLO的mAP 值为0.9588,相比于YOLOv5 的mAP 值0.9021,提高了5.64%的识别性能。这表明增加低级特征输出节点以增加有效特征占用率是提高模型性能的有效策略。然而,M-YOLO 的骨干网络中引入比例和增加层数会带来显著的计算负担,使得每秒可检测的图片数量从YOLOv5 的38 张降低到M-YOLO 的22 张,速度降低了近40%。

深度卷积特征图对于小目标检测存在着感受野与目标大小失衡的问题,而在较低层引入特征输出节点可以部分克服这种限制,优化正负样本特征的比例和特征图单元在原始图像上的有效区域与真实目标占据区域之间的平衡,从而增强网络的检测精度,特别是针对具有较大感受野的小目标。该优化策略为目标检测网络的性能提升提供了一种有效的方法。

2.6 综合改进实验结果及分析

本文改进的车型识别算法在多通道特征、特征金字塔和激活函数的融合方面进行了优化,取得了比YOLOv4 更高的精度和更快的速度。实验结果表明,在相同环境和参数条件下,本文算法的整体精度优于YOLOv4,同时FPS 达到了实时车型识别的要求。与基于Faster-RCNN 和ZF-Net 结合的模型相比,本文算法在BIT-Vehicle 数据集上的检测精度也更优秀。本文算法对不同车型的检测表现良好,在阈值不同的情况下召回率和精确率一直比较高。实时车型识别的实验结果显示,本文算法在遮挡、阴影和高密度车流等复杂环境下也表现良好,但仍需进一步改进以提高在复杂天气情况下的车型识别表现。

3 总结

本研究改进了YOLOv5 车辆识别算法的检测准确性和速度。优化方法包括特征权重优化、深度可分离卷积核和小规模特征图输出。特征权重优化提高了重要特征通道的表达能力,进而提高检测准确性;使用深度可分离卷积核和添加小规模特征图输出优化了检测计算和减小感受野,提高了小物体的检测准确性和降低了误检率。实验结果表明,改进后的YOLOv5算法在检测精度上提升了6.26%,在检测速度上提升了11%,并具有先进性和实用性。在实时道路交通视频的车辆检测识别实验中,算法表现良好,但在高密度车流情况下仍存在错误识别,需要进一步数据样本训练。下一步的研究将探索适应性关系式以实现准确且快速的目标检测。

猜你喜欢

卷积深度特征
基于3D-Winograd的快速卷积算法设计及FPGA实现
深度理解一元一次方程
如何表达“特征”
从滤波器理解卷积
不忠诚的四个特征
深度观察
深度观察
深度观察
基于傅里叶域卷积表示的目标跟踪算法
抓住特征巧观察