基于深度学习的车辆智能检测方法研究

2023-11-20 10:59冯思嘉
科学技术创新 2023年26期
关键词:置信度卷积矩阵

冯思嘉

(四川工商学院 计算机学院,四川 成都)

引言

随着现代化社会的发展,尤其是在进入“十四五”时期之后,工业和制造业进入了高速的发展,这也使得城市交通拥堵变得愈发严重。交通拥堵所带来的危害除了会耽误市民的出行时间之外,同时还会造成额外的交通污染和经济损失。根据中国交通部发表的数据显示,交通拥堵带来的经济损失占城市人口可支配收入的20%, 相当于每年国内生产总值损失5~8%,每年达2500 亿元人民币。

实施智慧交通能够有效地缓解城市交通拥堵情况,其中交通数据是智慧交通有效管理的重要依据之一,因此对车辆进行检测,获得实时交通数据成为至关重要的环节[1]。

近年来随着深度学习技术的飞速发展,使得目标检测技术也得到了发展,将基于深度学习的目标检测技术用于智慧交通能够有效地提高道路交通管理的效率,有助于城市交通拥堵的改善。

1 基于深度学习的目标检测方法

1.1 研究思路

基于深度学习的目标检测算法分为两类:基于分类的卷积神经网络目标检测和基于回归的卷积神经网络目标检测[2]。

基于分类的卷积神经网络目标检测算法有:R-CNN 算法[3]、SPP-NET 算法[4]以及Fast R-CNN[5],这种类型的检测算法优势在于检测速度较快。

基于回归的卷积神经网络目标检测算法是YOLO算法[6]。故论文以 Yolov5 算法作为基础,以UA-DETRAC 为数据集训练和验证算法,并对实验结果进行可视化处理。

1.2 Yolov5 算法介绍

Yolov5 的网络结构主要可以分为输入端、Backbone、Neck、Prediction 四个部分[7]。Yolov5 相比于Yolov3 而言,输入端中新增了Mosaic 数据增强、自适应锚框计算、自适应图片缩放;Backbone 主要新增了Focus 结构、CSPNet 结构;Neck 中使用了FPN 结构、PAN 结构;Prediction 中使用了GIoU_Loss 损失函数。Yolov5 的输入端(Input)任务主要是对图像做预处理操作,它的网络模型的输入图像尺寸是640×640,因此在图像传入模型之前要将图像自适应地缩放成640×640,以提高检测速度。

主干网络部分(Backbone)的任务主要是对图像进行特征提取。主要流程如下:先对图片进行切片,然后进行拼接,再卷积。在切片和拼接的过程中使用到了Focus 结构。

颈部网络(Neck)的主要任务是收集主干网络不同阶段的特征图,然后再将这些特征进行混合,以便对特征信息进行增强。在颈部网络中包含了FPN 结构和PAN 结构。

预测端(Prediction)的主要任务是对特征进行映射,对不同尺度的特征图进行预测。在预测端里主要结构有损失函数和非极大值抑制,使用CIOU_Loss 函数作为预测框的损失函数,进行反向传播并且进行不断优化,最后再使用非极大值抑制对结果进行筛选。

2 深度学习实验建立

2.1 数据集与运行环境介绍

实验采用UA-DETRAC 数据集,该数据集是车辆检测和跟踪的大规模数据集,数据集主要拍摄于北京和天津的道路过街天桥(京津冀场景),并标注了8 250 个车辆和121 万目标对象外框。车辆分为轿车、公共汽车、厢式货车和其他车辆四类。天气情况分为多云、夜间、晴天和雨天四类。

Yolov5 算法在Python 环境下进行运行,Python 环境使用pip 严格按照requirements.txt 中的要求进行搭建。其中IDE 采用PyCharm,与其他开发环境相比,pycharm 有可视化的界面,输入代码,调试都非常方便。利于调试以及大型项目开发。Numpy 依赖库用于数组快速操作的各种API,包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等等。pillow依赖库是常用的图像处理库。

2.2 模型训练与推理过程

在使用Yolov5 进行训练时,参数如表1 所示。

表1 训练参数

在对模型进行训练之前,首先利用labelimg 工具对数据集中的图片进行人工打标、基础数据增强以及去噪等操作。然后对模型使用上述参数进行训练,训练结束之后,使用该模型对测试集中的数据进行预测。

2.3 训练数据可视化与分析

对模型训练期间的数据进行可视化分析,图1 为混淆矩阵(confusion matrix),混淆矩阵是对分类问题的预测结果的总结。使用计数值汇总正确和不正确预测的数量,并按每个类进行细分,这是混淆矩阵的关键所在。混淆矩阵显示了分类模型的在进行预测时会对哪一部分产生混淆。它不仅可以让我们了解分类模型所犯的错误,更重要的是可以了解哪些错误类型正在发生。

图1 混淆矩阵

混淆矩阵的每一列代表一个类的实例预测,而每一行表示一个实际的类的实例,这样可以通过矩阵就能看出机器是否将两个不同的类混淆。图1 的混淆矩阵可以看出经过训练之后,其结果较好。

接着获取训练过程中的单一准确率和召回率。图2 和图3 分别为P_curve、R_curve。其中P_curve 为单一类准确率,反应的是准确率和置信度的关系图。R_curve 为召回率额置信度的关系图,当置信度越小的时候,类别检测越全面。

图2 P_curve

图3 R_curve

图2 中Precision 代表预测为positive 的准确率,它从预测结果角度出发,描述了二分类器预测出来的正例结果中有多少是真实正例,即该二分类器预测的正例有多少是准确的,公式为:

其中,TP 代表真阳性,即样本的真实类别是正例,并且模型预测的结果也是正例,预测正确;FP 代表假阳性样本的真实类别是负例,但是模型将其预测成为正例,预测错误。从图2 中可以看出Precision 的数值随着训练的进行逐渐平稳地趋近于1,说明经过训练模型的准确度较高。

图3 中Recall 代表真实为positive 的准确率,即正样本有多少被找出来了,公式为:

其中,FN 表示假阴性,样本的真实类别是正例,但是模型将其预测成为负例,预测错误。

图4 为训练的损失函数,损失函数是用于衡量预测模型和真实值不一样的程度,其中box_loss 描述了预测框与标定框之间的误差从图中可以看出,随着训练地不断进行box_loss 的值越来越小;obj_loss 描述了网络的置信度,cls_loss 用于计算锚框与对应的分类是否正确。从图4 可以看出,随着训练的进行,box_loss、obj_loss 和cls_loss 都趋近于0。

图4 训练过程损失函数

2.4 实际检测

对训练好的Yolov5 模型的准确度进行检测,使用该模型检测,检测结果如图5 所示。根据图5 可以看出,该模型可以准确地检测出途中的车辆,并且将车辆用方框标注出来,同时置信度较高在0.69~0.88 之间,可以说明模型训练结果较好。

图5 车辆实际检测结果

结束语

论文将深度学习算法中的Yolov5 算法应用于道路车辆检测中,利用UA-DETRAC 数据集进行训练、测试和验证。通过分析训练过程中的数据和实际的检测效果发现,可以对道路车辆进行准确地检测,实现了道路车辆的检测,对于缓解城市交通拥堵有着一定的意义,可以提高城市对于道路车辆的效率,同时为车辆的智能驾驶奠定基础。

猜你喜欢
置信度卷积矩阵
硼铝复合材料硼含量置信度临界安全分析研究
基于3D-Winograd的快速卷积算法设计及FPGA实现
从滤波器理解卷积
正负关联规则两级置信度阈值设置方法
基于傅里叶域卷积表示的目标跟踪算法
初等行变换与初等列变换并用求逆矩阵
矩阵
矩阵
矩阵
置信度条件下轴承寿命的可靠度分析