基于深度学习的自动驾驶目标检测系统(YOLOv8,目标检测,深度学习,YOLO模型,高质量,15000字)
基于深度学习的自动驾驶目标检测系统
随着自动驾驶技术的不断发展,准确可靠的目标检测系统在自动驾驶车辆中发挥着至关重要的作用。深度学习技术,特别是卷积神经网络(CNN),已经成为目标检测的核心方法之一,广泛应用于自动驾驶的感知系统中。车辆在复杂的道路环境中需要实时识别行人、车辆、交通标志、路障等各种目标,以保障安全驾驶。
本课题提出了一种基于深度学习的自动驾驶目标检测系统,该系统通过集成实时摄像头检测、图片检测和视频文件检测功能,为用户提供多种目标检测方式。系统支持通过简单的按钮点击启用摄像头进行实时目标检测,并自动标出视频流中的目标物品。此外,用户可以选择本地存储的图片进行目标识别,系统会逐步分析图片内容并标记出检测到的目标。对于视频文件,系统能够逐帧处理并实时标记目标物品,适应动态场景下的目标检测需求。
本系统提供了多种灵活的检测选项,支持实时、图片及视频检测,满足不同使用场景的需求。通过模型选择、结果展示和结果导出功能,用户能够高效地进行目标识别和后续分析,显著提高了自动驾驶系统的可靠性和适应性。
关键词:自动驾驶,目标检测,深度学习,YOLO模型
Autonomous Driving Target Detection System Based On Deep Learning
Abstract
With the continuous development of autonomous driving technology, accurate and reliable target detection systems are playing a crucial role in autonomous vehicles. Deep learning technology, especially convolutional neural network (CNN), has become one of the core methods of target detection, and is widely used in the perception systems of autonomous driving. In the complex road environment, vehicles need to identify pedestrians, vehicles, traffic signs, roadblocks and other targets in real time to ensure safe driving.
This topic proposes an autonomous driving target detection system based on deep learning, which provides users with multiple target detection methods by integrating real-time camera detection, picture detection and video file detection functions. The system supports real-time target detection through a simple button click-enabled camera, and automatically marks the target items in the video stream. In addition, users can select locally stored images for target identification, and the system will gradually analyze the content of the images and mark the detected target. For video files, the system can process frame by frame and mark the target items in real time to meet the target detection requirements in dynamic scenarios.
This system provides a variety of flexible detection options, to support real-time, picture and video detection, to meet the needs of different usage scenarios. Through the model selection, result presentation and result export function, users can efficiently conduct target identification and follow-up analysis, which significantly improves the reliability and adaptability of the autonomous driving system.
Key words: Autonomous Driving, Target Detection, Deep Learning, YOLO Model
目 录
1 绪 论.............................................................. 1
1.1 研究背景................................................ 1
1.2 研究目的及意义.................................... 1
1.3 国内外研究现状.................................... 2
1.3.1 国内研究现状..................................... 2
1.3.2国外研究现状...................................... 3
1.4 主要研究内容........................................ 4
2 系统关键技术.................................................. 6
2.1 YOLOv8检测算法.................................. 6
2.2 Streamlit开源库................................ 6
2.3 Python编程语言.................................. 6
2.4 Pytorch深度学习框架........................ 7
2.5 PyCharm开发工具................................ 7
3 系统设计.......................................................... 9
3.1 系统设计目标....................................... 9
3.2 数据集处理........................................... 9
3.3 数据预处理设计................................. 10
3.4 YOLOv8算法原理................................. 11
4 系统实现........................................................ 13
4.1 系统运行环境要求............................. 13
4.2 系统功能模块实现............................. 13
4.2.1 模型构建......................................... 13
4.2.2 训练代码......................................... 15
4.3 实验结果与分析................................. 18
4.3.1 训练曲线......................................... 18
4.3.2 混淆矩阵......................................... 19
4.3.3 YOLOv8/v7/v6/v5对比实验.......... 20
4.4 系统界面实现..................................... 21
4.4.1 图片检测界面实现......................... 21
4.4.2 视频文件检测界面实现................. 22
4.4.3 摄像头实时检测界面实现............. 22
4.4.4 结果导出界面实现......................... 23
结 论.................................................................. 24
参考文献............................................................ 25
致 谢.................................................................. 27
该数据集的预处理标准非常严格,确保了数据的高质量与一致性,这对于深度学习模型的训练至关重要。在处理过程中,每张图片的标签和目标类别被明确标定,确保模型能够准确地识别各种目标(如行人、车辆、交通标志等)。这种清晰的类别定义和精准的标注,使得模型可以有效地学习目标的特征,并在实际应用中作出正确反应,数据集如3.1所示。
表3.1 数据含义表
|
序号 |
字段名 |
数据类型 |
字段描述 |
|
1 |
Biker |
String |
骑手 |
|
2 |
Car |
String |
汽车 |
|
3 |
Pedestrian |
String |
行人 |
|
4 |
TrafficLight |
String |
交通灯 |
|
5 |
TrafficLight-Green |
String |
绿灯 |
|
6 |
TrafficLight-GreenLeft |
String |
左转绿灯 |
|
7 |
TrafficLight-Red |
String |
红灯 |
|
8 |
TrafficLight-RedLeft |
String |
左转红灯 |
|
9 |
TrafficLight-Yellow |
String |
黄灯 |
|
10 |
TrafficLight-YellowLeft |
String |
左转黄灯 |
|
11 |
Truck |
String |
卡车 |
3.3 数据预处理设计
在预处理阶段,所有的图片都进行了自动方向校正,这一步是必要的,因为它确保了图片的方向一致,对于基于图像的深度学习模型而言非常关键。此外,所有的图像都被拉伸至统一的640x640分辨率,这保证了输入神经网络的图像尺寸一致性,有利于模型的训练和收敛。在类别映射上,进行了必要的调整:4个类别被重新映射,2个类别被丢弃。这表明数据集经过了精心策划,以确保只有最相关和有助于模型学习的类别被包含。这些类别不仅涵盖了交通参与者,还细致地区分了交通信号灯的不同状态,这对于自动驾驶系统的决策至关重要。例如,不同颜色的交通灯指示了驾驶行为,如停车、减速或行驶,而左转信号灯的状态则为自动驾驶系统提供了更详细的路口导航信息。

图3.1 类别分布的直方图
分从类别分布的直方图3.1可以看出,类别之间存在显著的不平衡。其中,"汽车(car)"类别的样本数量最多,远超其他类别,这意味着在实际道路环境中汽车是最常见的对象,而且在自动驾驶系统中准确检测汽车是非常重要的。然而,这种不平衡也可能导致模型在训练过程中对“汽车”类别过拟合,对其他类别(如“交通灯-黄(trafficLight-Yellow)”和“卡车(truck)”等)的检测能力不足。在模型训练时,可能需要采用某些技术,如过采样少数类或对损失函数进行调整,以缓解类别不平衡问题。
目标位置分布的热图3.2显示了目标在图像中的位置偏好。横轴“x”和纵轴“y”代表了目标中心点的相对位置。从图中可以观察到,大部分目标集中在图像的中心区域,这可能是因为在自动驾驶场景中,相机通常对准道路中央,而道路中央往往是车辆和行人出现的地方。但是,也有一定数量的目标分布在图像的边缘区域,这对于识别部分遮挡或者进入/离开镜头的对象同样重要。

图3.2 目标位置分布的热图
3.4 YOLOv8算法原理
YOLOv8算法是YOLO(You Only Look Once)系列的最新版本,继承了YOLO算法的核心理念,即在单次前向传播过程中同时进行目标定位和分类。这种一步到位的检测方式使得YOLO在速度和效率上具有显著优势。YOLOv8不仅延续了前代算法的优点,还在网络结构和性能方面做出了优化,以进一步提升目标检测的准确性和速度。相较于之前版本,YOLOv8在处理复杂场景和高密度目标时,表现出更强的鲁棒性和更高的精度,适用于更广泛的实际应用。
YOLOv8的网络结构主要由Backbone(主干网络)、Neck(连接网络)和Head(检测头)组成。在Backbone部分,YOLOv8引入了CSP(Cross Stage Partial networks)结构,该结构通过部分跨阶段连接,促进了梯度的有效传播,解决了深层网络中梯度消失的问题。CSP结构有效平衡了模型的学习能力和计算量,减少了冗余计算,同时提高了特征学习的深度和精度。这种设计使得YOLOv8在参数量相对较少的情况下,仍能保持出色的检测性能,尤其适合需要快速响应的自动驾驶、视频监控等应用场景,原理如图3.3所示。

图3.3 YOLOv8原理图
在Head部分,YOLOv8采取了自适应标签分配(adaptive label assignment)策略,这是一种更为灵活的标签分配方式,允许模型根据目标的不同特性自动调整标签。这意味着算法能够根据目标的大小、形状以及其在图像中的上下文信息,动态地选择最合适的锚点,这种策略能够有效地减少标签分配误差,提升模型的性能。
YOLOv8通过其独特的结构设计,不仅继承了YOLO系列的高速检测特性,而且还通过CSP网络结构和先进的特征融合技术,显著提升了对于各种尺寸目标的检测能力。这些技术的融合使得YOLOv8在目标检测任务中,无论是在准确度还是速度上,都表现出了卓越的性能。
4 系统实现
4.1 系统运行环境要求
在使用Windows 11操作系统进行机器学习任务时,硬件配置是确保系统高效运行的关键。建议选择至少四核处理器(如Intel i5或i7),因为多核处理器能够更好地支持并行计算,提升数据处理和模型训练的速度。内存方面,最低配置16GB,推荐32GB或更多。较大的内存容量有助于高效处理大规模数据集及复杂的机器学习模型,避免内存溢出或过慢的运算。存储上,建议配备至少1TB的硬盘空间,并优选使用SSD(固态硬盘),这将大幅度提高数据的读取和模型训练速度,减少存储瓶颈。
在软件配置上,首先需要安装Python 3.9,并确保在安装过程中勾选“Add Python to PATH”,以便命令行访问。接下来,推荐使用虚拟环境来隔离不同项目的依赖,避免库版本冲突。
通过命令python -m venv ml-env创建虚拟环境,并通过ml-env\Scripts\activate激活虚拟环境。然后,安装常用的机器学习库,如numpy、pandas、scikit-learn、matplotlib、seaborn、xgboost和lightgbm,这些库是进行数据分析、建模和可视化的基础工具。最后,安装JupyterLab,一个强大的交互式开发环境,可以方便地进行数据探索和模型训练。通过命令pip install jupyterlab安装后,使用jupyter lab启动开发环境,进一步提高开发效率和项目管理的灵活性。
4.2 系统功能模块实现
4.2.1 模型构建
这个系统设计用于自动驾驶场景中的目标识别,包含了模型的加载、预处理、预测和后处理等关键步骤。代码中使用了多个Python库,包括用于图像处理的OpenCV库、深度学习框架PyTorch,以及专门的目标检测库ultralytics YOLO和QtFusion在构建的自动驾驶目标识别系统中,模型的构建和训练至关重要。使用Python进行开发,并选择了YOLOv8模型,这是目前最新的YOLO版本,它以其高效的处理速度和优异的检测性能著称。为了满足任务的需求,编写了一个名为YOLOv8v5Model.py的模块来完成这项工作。首先引入了处理图像的OpenCV库以及PyTorch深度学习框架。这些是构建现代计算机视觉模型的基础工具。通过利用YOLO模型和QtFusion库的Detector基类,可以确保的模型能够与更广泛的QtFusion框架协同工作,这对于创建交互式的用户界面和进一步的系统集成是非常有价值的。
程序代码及详细注释:

设定了模型的基本参数。模型的训练和预测将在选定的硬件上执行,这通过select_device函数来管理。在这里,默认使用GPU进行训练,因为GPU能提供更快的计算速度,这对于处理大量数据和复杂模型是非常重要的。接着,设置了模型训练和预测过程中的一系列参数。例如,设置了置信度阈值和IOU阈值,这些参数对于目标检测任务中决定何时认为检测到的物体是正确的至关重要。参数设置需要根据具体的应用场景和数据集特性进行调整。
程序代码及详细注释:

count_classes函数用于统计每个类别的检测数量。它接受检测信息和类别名称列表作为输入,并返回一个与类别名称列表相对应的计数列表。这个功能对于分析模型在不同类别上的表现非常有用。
程序代码及详细注释:
在类YOLOv8v5Detector中,定义了模型加载、图像预处理、预测执行以及后处理的逻辑。这个类是实现自动驾驶目标识别任务的核心,它封装了从输入图像到输出检测结果的整个流程。模型加载的方法load_model,不仅负责加载预训练的权重,还涉及到模型结构的初始化和模型的预热。预热模型是指在实际使用模型之前,先运行一些假的输入数据,这样做可以提高模型首次预测的速度。图像预处理preprocess方法简单但至关重要,它确保所有输入图像都以一种统一的方式被处理,从而满足模型的输入要求。
程序代码及详细注释:

在预测方法predict中,调用了模型对预处理后的图像进行检测。后处理postprocess则负责解析模型的输出,将其转换为易于理解的格式,例如,检测到的每个对象的类别名称、位置坐标和置信度。
4.2.2 训练代码
训练代码的主要目的是通过对机器学习模型进行反复训练,使其能够从数据中学习到规律和特征,从而在未知数据上进行有效预测。具体而言,训练代码通过定义数据集、模型结构、损失函数、优化算法等,指导模型不断调整参数,以最小化损失函数,逐步提高模型在任务中的表现。例如,在目标检测任务中,训练代码会通过不断优化模型的权重,使得模型能够准确地识别和定位图像中的目标。通过训练,模型的性能得到不断提升,最终达到预定的精度要求。此外,训练代码还涉及验证和测试环节,确保模型在真实应用中的泛化能力,避免过拟合现象的发生。因此,训练代码是机器学习工作流中的核心组成部分,直接决定了模型的效果和应用价值,YOLOv8模型训练中使用的一些重要超参数及其设置。
表4.1 YOLOv8模型训练参数及设置
|
超参数 |
设置 |
说明 |
|
学习率(lr0) |
0.01 |
决定了模型权重调整的步长大小,在训练初期有助于快速收敛。 |
|
学习率衰减(lrf) |
0.01 |
控制训练过程中学习率的降低速度,有助于模型在训练后期细致调整。 |
|
动量(momentum) |
0.937 |
加速模型在正确方向上的学习,并减少震荡,加快收敛速度。 |
|
权重衰减(weight_decay) |
0.0005 |
防止过拟合,通过在损失函数中添加正则项减少模型复杂度。 |
|
输入图像大小(imgsz) |
640 |
模型接受的输入图像的尺寸,影响模型的识别能力和计算负担。 |
环境设置与模型加载:首先需要导入必要的库,以便在训练过程中使用它们的功能。这些库提供了文件路径操作、深度学习功能和模型加载的能力。特别是ultralytics库中的YOLO类,这是训练YOLO模型的核心工具。

使用torch来检测可用的设备,并自动选择使用GPU进行训练,以加速模型的学习效率。

数据集准备:接着,确定了训练数据的位置和名称,利用abs_path函数构建了数据集配置文件的路径。此外,代码中还涵盖了对配置文件的动态读写操作,这一步骤是为了确保模型可以正确地定位到数据集所在的目录。

紧接着,读取了数据集的配置文件并根据需要更新了其中的路径,确保模型能够正确地找到数据集中的图像文件。这一步骤对于模型训练是必要的,因为训练过程需要加载大量的数据。

训练模型:在模型训练部分,使用YOLO类从预训练的权重加载了YOLOv8n模型。此处指定了detect任务,意味着模型被配置为进行目标检测。接下来,通过train方法启动了模型的训练过程,其中包括了数据路径、设备、工作进程数、输入图像大小、训练周期数和批量大小等重要参数。每个参数都经过精心设置,以确保模型可以在最优的条件下学习。

4.3 实验结果与分析
4.3.1 训练曲线
在目标检测任务中,损失函数的下降和评价指标的提升反映了模型在学习和适应过程中不断优化的过程。类别损失(cls_loss)的减少意味着模型在区分不同类别(如行人、车辆、交通信号等)上表现越来越好,尤其在自动驾驶场景中,准确分类不同对象对决策系统至关重要。随着训练的推进,模型不仅能够识别物体的存在,还能精确地进行分类,为自动驾驶系统提供可靠的信息。
同时,目标损失(dfI_loss)的下降反映了模型在检测目标时的确信度或其他质量指标的提高。YOLOv8模型中这一损失项的优化表明,随着训练过程的进行,模型对目标的识别和定位精度逐步提升,这对于自动驾驶系统中高效和安全的目标检测具有直接影响。
在评价指标方面,精确度(precision)和召回率(recall)是两项重要的性能衡量标准。精确度提升表明模型能更准确地识别正样本,尽量减少误报,而召回率的提高则表明模型能够更全面地检测到所有正样本,减少漏检。mAP(平均精确度均值)作为综合指标,通过考虑不同置信度阈值下的精确度和召回率,为模型整体性能提供了一个权衡。
综合来看,YOLOv8模型在训练过程中表现出了持续的性能提升,损失函数和评价指标的变化都显示了模型在自动驾驶应用中的潜力和可靠性,训练曲线如图4.1所示。

图4.1 训练曲线
4.3.2 混淆矩阵
混淆矩阵是评估分类模型性能的重要工具,特别是在多类别分类问题中,它能详细展示模型在各个类别上的预测准确性。根据提供的混淆矩阵,我们可以对模型在自动驾驶目标识别任务上的性能进行深入分析,如图4.2所示。

图4.2 混淆矩阵
混淆矩阵是评估自动驾驶目标识别模型性能的重要工具。对角线上的数值代表了模型对各类别的正确识别率,显示了真正例的比例。大多数类别表现较好,如“汽车(car)”的准确率为0.82,“交通灯(trafficLight)”和“交通灯-红(trafficLight-Red)”的准确率分别为0.79和0.76,表明模型在这些重要类别上具备较强的识别能力。这对自动驾驶系统至关重要,尤其是交通信号的识别直接关系到行车安全。
然而,一些类别的预测准确度较低,可能是由于样本数量不足或目标特征不够显著,难以与其他类别区分。例如,“paper”和“cardboard”之间的混淆可能与它们在材质和颜色上的相似性有关。矩阵中的深色格反映了高度混淆,通常发生在类别间相似性高或样本不平衡时。
为了解决这些问题,可以在未来的工作中通过增加样本多样性、调整样本权重、采用数据增强等方式来提高模型的区分能力。此外,针对难以区分的类别,可以引入多任务学习或对抗性训练等策略,或者使用更深的网络结构来提取更加复杂的特征。通过这些优化措施,可以进一步提升模型的准确性和实用性,增强自动驾驶目标识别系统的整体性能。
4.3.3 YOLOv8/v7/v6/v5对比实验
(1)实验设计:
本实验旨在评估和比较YOLOv5、YOLOv6、YOLOv7和YOLOv8几种模型在自动驾驶目标目标检测任务上的性能。为了实现这一目标,博主分别使用使用相同的数据集训练和测试了这四个模型,从而可以进行直接的性能比较。该数据集包含自动驾驶目标的图像。本文将比较分析四种模型,旨在揭示每种模型的优缺点,探讨它们在工业环境中实际应用的场景选择,四种模型对比因素如下表4.2所示。
表4.2 四种模型对比因素
|
模型 |
图像大小 (像素) |
mAPval 50-95 |
CPU ONNX 速度 (毫秒) |
A100 TensorRT 速度 (毫秒) |
参数数量 (百万) |
|
YOLOv5nu |
640 |
34.3 |
73.6 |
1.06 |
2.6 |
|
YOLOv8n |
640 |
37.3 |
80.4 |
0.99 |
3.2 |
|
YOLOv6N |
640 |
37.5 |
- |
- |
4.7 |
|
YOLOv7-tiny |
640 |
37.4 |
- |
- |
6.01 |
(2)度量指标:
F1-Score:F1-Score 作为衡量模型性能的重要指标,尤其在处理类别分布不均的数据集时显得尤为关键。它通过结合精确率与召回率,提供了一个单一的度量标准,能够全面评价模型的效能。精确率衡量的是模型在所有被标记为正例中真正属于正例的比例,而召回率则关注于模型能够识别出的真正正例占所有实际正例的比例。F1-Score通过两者的调和平均,确保了只有当精确率和召回率同时高时,模型的性能评估才会高,从而确保了模型对于正例的预测既准确又完整。
mAP(Mean Average Precision):在目标检测任务中,Mean Average Precision(mAP)是评估模型性能的重要标准。它不仅反映了模型对单个类别的识别精度,而且还考虑了所有类别的平均表现,因此提供了一个全局的性能度量。在计算mAP时,模型对于每个类别的预测被单独考虑,然后计算每个类别的平均精度(AP),最后这些AP值的平均数形成了mAP,度量指标如下表4.3所示。
表4.3 度量指标
|
名称 |
YOLOv5nu |
YOLOv6n |
YOLOv7-tiny |
YOLOv8n |
|
mAP |
0.704 |
0.714 |
0.842 |
0.742 |
|
F1-Score |
0.68 |
0.72 |
0.85 |
0.70 |
(3)实验结果分析:
在本次实验中,我们对YOLOv5nu、YOLOv6n、YOLOv7-tiny和YOLOv8n四个版本的YOLO模型在同一数据集上的表现进行了详细的对比分析。实验的目标是评估各个模型在自动驾驶目标识别任务上的性能,以决定哪个版本更适合此项任务。为此,我们使用了F1-Score和mAP作为评估指标,它们分别代表了模型准确性和整体性能的衡量标准。
从实验结果中可以观察到,YOLOv7-tiny以0.842的mAP和0.85的F1-Score领先于其他版本,表现出卓越的目标检测能力。这可能归因于YOLOv7-tiny在模型结构和算法优化方面的进步。紧随其后的是YOLOv6n,它展现了与YOLOv5nu相比更优的性能,这显示了YOLO系列随着版本迭代在检测性能上的逐步提升。而YOLOv8n,尽管在mAP上达到了0.742的结果,比YOLOv5nu的0.704有所提高,但其F1-Score仅为0.70,这表明在精确率和召回率的平衡方面还有提升空间。
4.4 系统界面实现
4.4.1 图片检测界面实现
用户可以上传本地的图片文件到系统中进行自动驾驶目标识别。系统会分析上传的图片,识别出图片中的自动驾驶目标,并在界面上展示带有自动驾驶目标标签和置信度的检测结果,让用户能够清晰地了解到每个自动驾驶目标状态,如图4.3所示。

图4.3 图片检测界面
4.4.2 视频文件检测界面实现
系统支持用户上传视频文件进行自动驾驶目标识别。上传的视频将被系统逐帧分析,以识别和标记视频中每一帧的自动驾驶目标。用户可以观看带有自动驾驶目标识别标记的视频,了解视频中自动驾驶目标的变化,如图4.4所示。

图4.4 视频文件检测界面
4.4.3 摄像头实时检测界面实现
本系统允许用户通过网页直接开启摄像头,实现对实时视频流中自动驾驶目标的检测。系统将自动识别并分析画面中的自动驾驶目标,并将检测结果实时显示在用户界面上,为用户提供即时的反馈,如图4.5所示。

图4.4 摄像头实时检测界面
4.4.4 结果导出界面实现
结果导出功能允许检测结果的表格通过点击按钮导出为csv格式文件。同时,图像和视频导出功能支持将标记后的图片、视频及摄像头画面结果导出为avi格式图像文件,方便用户保存和分享检测结果,如图4.5所示。

图4.5 结果导出界面
更多推荐


所有评论(0)