基于yolov8、yolov10、yolov11的道路车辆种类检测识别系统
随着交通流量的增加,道路车辆检测与识别技术的重要性日益提升。本文基于YOLOv8、YOLOv10和YOLOv11深度学习框架,设计并实现了一套道路车辆检测识别系统。通过23078张日常维修工具图片训练模型,系统能够检测11种车辆类别,包括汽车、公交车、卡车等。文章对比了YOLOv8n、YOLOv10n和YOLOv11在验证集上的性能表现,并开发了带UI界面的检测系统,支持图片、视频和摄像头输入,检
摘要: 随着交通流量的不断增加,道路车辆检测与识别技术的重要性日益凸显。基于深度学习的目标检测算法,如YOLO系列,因其高效性和准确性,成为该领域的热门选择。本文探讨了基于YOLOv8、YOLOv10和YOLOv11的道路车辆检测识别系统的设计与实现。本文基于YOLOv11/v10/v8的深度学习框架,通过23078张日常维修工具的相关图片,训练了可进行常用维修工具目标检测的模型,可以分别检测11种类别:['car', 'bus', 'truck', 'tank_truck', 'dg_vehicle', 's_firetruck', 's_policecar', 's_engineeringvehicle', 's_ambulance'],同时全面对比分析# YOLOv8n、YOLOv10n、YOLO11这3种模型在验证集上的评估性能表现。最终基于训练好的模型制作了一款带UI界面的路车辆种类检测识别系统,更便于进行功能的展示。该本文提供了完整的Python代码和使用教程,该系统是基于python3.8.10与pyside6开发的,支持图片、视频以及摄像头进行目标检测,并保存检测结果。本文提供了完整的Python代码和使用教程,给感兴趣的小伙伴参考学习,完整的代码资源文件获取方式见文末。
)
前言:
在现代智能交通系统(ITS)的宏大版图中,道路车辆种类检测识别系统占据着举足轻重的地位,其重要性如同基石之于高楼,为整个智能交通体系的高效运转奠定基础。随着城市化进程的迅猛推进,城市规模持续扩张,道路上的车辆数量呈爆发式增长。据相关统计数据显示,过去十年间,全球多个大型城市的机动车保有量年增长率达到了 10% - 15%,交通场景变得日益复杂和多样化。在这样的背景下,准确且高效地检测和识别道路上的车辆种类,已然成为解决交通拥堵、提升交通安全以及优化交通管理的核心需求。
近年来,基于深度学习的道路车辆种类检测识别研究取得了丰硕的成果,众多学者和研究团队提出了一系列性能卓越的模型和算法。例如,在目标检测领域广泛应用的单发多框检测器(Single Shot MultiBox Detector,SSD)算法,能够在一次前向传播过程中,同时预测图像中多个目标的类别和位置,实现了检测速度和精度的较好平衡;你只需看一次(You Only Look Once,YOLO)系列算法更是以其超高速的检测能力而闻名,特别适用于对实时性要求极高的智能交通监控场景,其中最新的 YOLOv8 在保持较高检测精度的同时,将检测速度提升到了一个新的高度,能够在普通硬件设备上实现每秒数十帧的检测帧率。而区域卷积神经网络(Region - Convolutional Neural Network,R - CNN)系列算法,如 Faster R - CNN,则通过引入区域建议网络(Region Proposal Network,RPN),先生成可能包含目标的候选区域,再对这些候选区域进行精细的分类和定位,在复杂场景下的车辆检测识别任务中表现出了较高的准确率。
尽管基于深度学习的道路车辆种类检测识别技术已经取得了长足的进步,但在实际应用过程中,仍然面临着诸多严峻的挑战。一方面,现实交通场景的复杂性远远超出实验室环境,车辆的外观特征因品牌、型号、颜色、年份的不同而千差万别,而且不同地区的车辆类型分布也存在显著差异,这对模型的泛化能力提出了极高的要求;另一方面,在一些特定场景下,如高速公路上远距离行驶的车辆、城市街道中密集停放或行驶的车辆,由于车辆尺度变化大、相互遮挡严重,现有的检测识别算法往往难以准确地检测和分类。此外,深度学习模型通常需要大量的标注数据进行训练,而高质量的车辆标注数据获取难度大、成本高,标注过程也极为繁琐,这在一定程度上限制了模型性能的进一步提升。
1. 交通流量监测与分析: 部署于城市主干道、高速公路、交叉路口等关键路段的摄像头,实时检测过往车辆的类型(如轿车、卡车、公交车、摩托车等)及数量。为交通管理部门提供实时交通流量数据,优化信号灯配时方案,缓解拥堵;统计不同车型的通行占比,辅助道路规划(如货车禁行区域划分、公交车专用道设置;预测高峰时段车流趋势,提前部署警力或应急措施。
2. 违章抓拍与执法: 结合车牌识别技术,对闯红灯、超速、不按规定车道行驶、货车闯入禁行区域等违章行为进行自动检测与抓拍。减少人工巡查成本,提高执法效率,实现 24 小时无间断监管;通过车型识别辅助区分车辆类型,确保违章处罚的准确性(如区分小型车与大型车的限速标准)。
3. 道路安全隐患预警: 检测异常车辆行为(如逆行、长时间停滞、低速行驶)或危险车型(如未按规定悬挂警示标志的危险品运输车),实时触发预警。提前识别道路安全隐患,降低交通事故发生率;对高风险车辆(如超载货车、故障车辆)进行实时追踪,引导至安全区域。
5. 自动泊车与车位引导: 在智慧停车场入口或内部部署检测系统,识别车辆类型(如小型车、SUV、大型客车),匹配合适的车位尺寸,引导车辆停放。提高车位利用率,避免大型车辆占用小型车位导致的资源浪费;结合自动驾驶技术,为不同车型提供定制化泊车路径规划。
6. 差异化收费与无感支付: 根据车辆类型(如普通轿车、新能源汽车、出租车)实施差异化收费策略,通过识别结果自动计算费用并完成无感支付。支持新能源汽车优惠政策(如免费停车时长),推动绿色出行;减少人工收费环节,提升停车场通行效率。
7. 交通场景模拟与测试: 利用检测系统采集的大量车辆数据(如车型分布、行驶轨迹),构建高精度交通场景数据库,用于自动驾驶算法的训练与仿真测试。降低自动驾驶路测成本,覆盖 “长尾” 场景(如罕见车型、特殊交通组合);验证算法在复杂车型混合场景下的鲁棒性。
8. 车队管理与油耗优化: 对物流车队中的车辆类型进行统计分析,结合车型特性(如燃油车、电动车的能耗差异)制定节油策略或电动化替换计划。降低企业运营成本,推动绿色物流发展; 为新能源车辆的普及提供数据支撑(如不同路段、车型的续航表现分析)。
9. 反恐与治安监控: 在机场、车站、政府机构等敏感区域,检测可疑车辆类型(如无牌车辆、多次违规车辆),联动公安系统进行预警或追踪。增强公共安全防控能力,预防恐怖袭击或犯罪活动;为案件侦破提供关键线索(如车辆类型特征辅助排查)。
10. 交通行为研究 通过长期收集车辆类型及行驶数据,分析不同车型的驾驶习惯(如变道频率、车速分布),为交通心理学、城市规划等研究提供数据支持。揭示交通行为规律,为交通政策制定提供科学依据;辅助开发更贴合实际需求的交通仿真模型。
11. 数据商业化服务: 向车企、保险公司、地图服务提供商等输出匿名化的车辆类型分布数据,用于精准营销或风险评估。车企可基于区域车型偏好优化产品投放策略;保险公司可根据车型出险率调整保费定价。
深度学习技术的不断迭代(如轻量化模型、多模态融合算法)将进一步推动道路车辆检测识别系统在低功耗边缘设备(如车载摄像头、智能路侧单元)和复杂场景(如夜间、雨雾天气)中的应用落地。未来,随着算力提升与数据积累,该系统将与 5G、边缘计算、数字孪生等技术深度融合,构建更智能、更安全的交通生态体系。
通过搜集不同种类的道路车辆相关数据图片,根据目标检测技术,基于python与pyside6开发了一款界面简洁的道路车辆种类的检测与识别系统,可支持图片、视频以及摄像头检测,同时可以将图片或者视频检测结果进行保存。
一、软件核心功能介绍及效果演示
软件主要功能:
-
可进行9种道路车辆种类检测与识别; -
支持图片、视频及摄像头进行检测,同时支持图片的批量检测; -
界面可实时显示目标位置、目标总数、置信度、用时等信息; -
支持图片或者视频的检测结果保存;
(1)图片检测演示
点击图片图标,选择需要检测的图片,或者点击文件夹图标,选择需要批量检测图片所在的文件夹,操作演示如下:点击目标下拉框后,可以选定指定目标的结果信息进行显示。 点击保存按钮,会对视频检测结果进行保存,存储路径为:runs目录下。参考视频操作
(2)视频检测演示
点击视频图标,打开选择需要检测的视频,就会自动显示检测结果。点击保存按钮,会对视频检测结果进行保存,存储路径为:runs目录下。参考视频操作
(3)摄像头检测演示
点击摄像头图标,可以打开摄像头,可以实时进行检测,再次点击摄像头图标,可关闭摄像头。参考视频操作
(4)保存图片与视频检测结果
点击保存按钮后,会将当前选择的图片【含批量图片】或者视频的检测结果进行保存。检测的图片与视频结果会存储在runs目录下。参考视频操作
二、模型的训练、评估与推理
1. 使用模型基本原理
YOLOv8是一种前沿的目标检测技术,它基于先前YOLO版本在目标检测任务上的成功,进一步提升了性能和灵活性。主要的创新点包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数,可以在从 CPU 到 GPU 的各种硬件平台上运行。其主要网络结构如下:
YOLOv10 的架构建立在以前 YOLO 模型的优势之上,通过消除非最大抑制 (NMS) 和优化各种模型组件, 实现了最先进的性能,并显著降低了计算开销。
模型网络结构由以下组件组成: 主干网:YOLOv10 中的主干网负责特征提取,使用增强版的 CSPNet(Cross Stage Partial Network)来改善梯度流并减少计算冗余。颈部:颈部被设计成聚合来自不同尺度的特征,并将它们传递到头部。它包括 PAN(路径聚合网络)层,用于有效的多尺度特征融合。一对多头:在训练过程中为每个对象生成多个预测,以提供丰富的监督信号,提高学习准确性。一对一头:在推理过程中为每个对象生成一个最佳预测,消除对 NMS 的需求,从而减少延迟并提高效率。YOLOv10创新点如下无 NMS 训练: 利用一致的双重分配来消除对 NMS 的需求,从而减少推理延迟。整体模型设计: 从效率和精度两个角度对各种组件进行全面优化,包括轻量级分类头、空间通道解耦下采样和秩引导块设计。增强的模型功能: 整合大核卷积和部分自注意力模块,可在不增加大量计算成本的情况下提高性能。
YOLOV11 2024 年 9 月 30 日,Ultralytics 在其活动 YOLOVision 中正式发布了 YOLOv11。YOLOv11 是 YOLO 的最新版本,由美国和西班牙的 Ultralytics 团队开发。YOLO 是一种用于基于图像的人工智能的计算机模型。 YOLO11 是Ultralytics YOLO 系列实时物体检测器的最新版本,以尖端的精度、速度和效率重新定义了可能性。基于先前 YOLO 版本的令人印象深刻的进步,YOLO11 在架构和训练方法方面引入了重大改进,使其成为各种计算机视觉任务的多功能选择。
Key Features 主要特点
-
增强的特征提取:YOLO11采用改进的主干和颈部架构,增强了特征提取能力,以实现更精确的目标检测和复杂任务性能。
-
针对效率和速度进行优化:YOLO11 引入了精致的架构设计和优化的训练管道,提供更快的处理速度并保持准确性和性能之间的最佳平衡。
-
使用更少的参数获得更高的精度:随着模型设计的进步,YOLO11m 在 COCO 数据集上实现了更高的平均精度(mAP),同时使用的参数比 YOLOv8m 少 22%,从而在不影响精度的情况下提高计算效率。
-
跨环境适应性:YOLO11可以无缝部署在各种环境中,包括边缘设备、云平台以及支持NVIDIA GPU的系统,确保最大的灵活性。
-
支持的任务范围广泛:无论是对象检测、实例分割、图像分类、姿态估计还是定向对象检测 (OBB),YOLO11 旨在应对各种计算机视觉挑战。
Ultralytics YOLO11 与其前身相比引入了多项重大进步。
主要改进包括:
-
增强的特征提取:YOLO11采用改进的主干和颈部架构,增强了特征提取能力,以实现更精确的目标检测。 -
优化的效率和速度:精细的架构设计和优化的训练管道可提供更快的处理速度,同时保持准确性和性能之间的平衡。 -
使用更少的参数获得更高的精度:YOLO11m 在 COCO 数据集上实现了更高的平均精度(mAP),参数比 YOLOv8m 少 22%,从而在不影响精度的情况下提高计算效率。 -
跨环境适应性:YOLO11可以跨各种环境部署,包括边缘设备、云平台和支持NVIDIA GPU的系统。 -
支持的任务范围广泛:YOLO11 支持多种计算机视觉任务,例如对象检测、实例分割、图像分类、姿态估计和定向对象检测 (OBB)。
2.数据集准备
本文使用的数据集为道路车辆图片,选取其中图片进行模型训练,并将原始标签转换为yolo格式标签。最终一共包含23078张图片,其中训练集包含15353张图片,验证集包含4816张图片,测试集包含3909张图片.部分图像及标注如下图所示。最终共有11种道路车辆参与模型训练,中英文名称对照如下:
模型训练时,使用的名称对照表如下:
其中训练的11个道路车辆类别中文名称为:
['轿车', '大巴车', '货车', '槽罐车', '危化车', '消防车', '警车', '工程车', '救护车']
在项目目录中新建datasets目录,同时将检测的图片分为训练集与验证集放入道路车辆种类目录下。
同时我们需要新建一个data.yaml文件,用于存储训练数据的路径及模型需要进行检测的类别。具体内容如下:
path: /home/test/projects/Projectpractice/yolov11/ultralytics/datasets/vehicle_type
train: images/train
val: images/valid
test: images/test
nc: 9
names:
0: car
1: bus
2: truck
3: tank_truck
4: dg_vehicle
5: s_firetruck
6: s_policecar
7: s_engineeringvehicle
8: s_ambulance
# ['car', 'bus', 'truck', 'tank_truck', 'dg_vehicle', 's_firetruck', 's_policecar', 's_engineeringvehicle', 's_ambulance']
chinesenames: ['轿车', '大巴车', '货车', '槽罐车', '危化车', '消防车', '警车', '工程车', '救护车']
数据准备完成,准备开始训练。
3. 训练结果评估
深度学习中,我通常用损失函数下降的曲线来观察模型训练的情况。在训练时主要包含三个方面的损失:定位损失(box_loss)、分类损失(cls_loss)和动态特征损失(dfl_loss),在训练结束后,可以在runs/目录下找到训练过程及结果文件,如下所示:
各损失函数作用说明:
定位损失box_loss: 预测框与标定框之间的误差(GIoU),越小定位得越准;
分类损失cls_loss: 计算锚框与对应的标定分类是否正确,越小分类得越准;
动态特征损失(dfl_loss): DFLLoss是一种用于回归预测框与目标框之间距离的损失函数。在计算损失时,目标框需要缩放到特征图尺度,即除以相应的stride,并与预测的边界框计算Ciou Loss,同时与预测的anchors中心点到各边的距离计算回归DFLLoss。 当然还存在其他损失函数进行调节训练。此处展示了yolov8的损失函数, 具体的训练结果如下所示: 
我们通常用PR曲线来体现精确率和召回率的关系,本文训练结果的PR曲线如下。mAP表示Precision和Recall作为两轴作图后围成的面积,m表示平均,@后面的数表示判定iou为正负样本的阈值。mAP@.5:表示阈值大于0.5的平均mAP,可以看到本文模型11类目标检测的mAP@0.5平均值为0.95,结果还是很不错的。
4. 检测结果识别
模型训练完成后,我们可以得到一个最佳的训练结果模型best.pt文件,在runs/trian/weights目录下。我们可以使用该文件进行后续的推理检测。图片检测代码如下:
这就是道路车辆检测与识别系统的原理与代码介绍。基于深度学习模型,用python与pyside6开发了一个带界面的软件系统,即文中第二部分的演示内容,能够很好的支持图片、视频及摄像头进行检测,同时支持检测结果的保存。
视频频参考链接:https://www.bilibili.com/video/BV1TwEHzTETR/?spm_id_from=333.1387.upload.video_card.click
关于该系统涉及到的完整源码、UI界面代码、数据集、训练代码、测试图片视频等相关文件,均已打包准备完毕,感兴趣的小伙伴可以通过公众号获取。
更多推荐
所有评论(0)