基于YOLO11的路口交通信号灯通行规则识别(v2.0.0)
新变化
在v2.0.0版本中,我们引入了YOLO11模型,并搭配更为丰富的数据集来训练模型。这一改进带来了显著的变化:原本独立的目标检测和信号分类两个步骤得以整合。在以往的流程中,这两个步骤存在较多冗余的过滤筛选操作,而此次改进将其简化,实现了交通信号灯识别的一步到位。经过这样的优化,得到的新模型不仅在识别准确率上有了少量提升,在推理效率方面同样有所增强,并且整体部署变得更加便捷。
项目简介
本项目聚焦于路口交通信号灯通行规则的识别,整个过程分为两个关键步骤:
目标检测
借助YOLO11目标检测模型,精准定位图像中的交通信号灯,并识别其颜色、形状等特征。交通信号灯的形状主要包括圆形、左箭头、上箭头和右箭头。
规则解析
针对图像中检测到的交通信号灯,深入分析其所代表的通行规则,即明确车辆能否直行、左转以及右转。
在通行规则方面,圆形信号灯对三个方向(直行、左转、右转)的通行规则进行控制,但其优先级相对较低;而箭头形信号灯仅针对对应方向(如左箭头对应左转方向)的通行规则进行控制,不过优先级较高。另外,在没有明确信号指示的情况下,例如没有红色的右箭头信号灯时,默认车辆可以右转。
效果展示
性能评估
• 推理耗时:模型输入尺寸固定为640x480。在该输入条件下,使用PyTorch进行平均一张图片的推理,耗时大约为50ms;采用ONNX Runtime进行推理,平均耗时约为40ms。测试环境为:CPU为11th Intel Core i5 - 1155G7 ,主频2.50GHz,模型为YOLO11n。
• 目标检测准确性指标:在当前数据集下,信号灯目标检测的各项准确性指标如下:
Class | Precision | Recall | mAP50 | mAP50 - 95 |
---|---|---|---|---|
ALL | 0.97 | 0.971 | 0.989 | 0.89 |
F0 | 0.99 | 1 | 0.995 | 0.871 |
F1 | 1 | 0.981 | 0.995 | 0.872 |
L0 | 0.981 | 0.985 | 0.994 | 0.912 |
L1 | 0.982 | 1 | 0.995 | 0.915 |
S0 | 1 | 0.817 | 0.944 | 0.878 |
S1 | 1 | 0.987 | 0.995 | 0.885 |
R0 | 0.815 | 1 | 0.995 | 0.914 |
R1 | 0.993 | 1 | 0.995 | 0.876 |
需要特别说明的是,由于本项目训练所用的数据集规模相对较小,因此在真实环境中的鲁棒性可能存在一定不足。
使用说明
环境准备与模型推理部署
首先,安装项目所需的环境依赖包。目前项目采用ONNX Runtime进行模型推理,可通过以下命令安装依赖:
pip install -r requirements.txt
若希望使用GPU进行推理,则还需安装 onnxruntime-gpu
:
pip install onnxruntime-gpu
图像目录与模型权重设置
待识别的图像默认存放在 inferences/images/
目录下,识别结果默认保存在 inferences/results/
目录。若这两个目录不存在,请先手动创建。
将所有待识别的图像放入 inferences/images/
目录,要求图像尺寸为640x480。您可以在本项目的Releases中下载训练好的模型权重文件,并将其解压到 inferences/models/
目录下。
运行识别程序
完成上述准备工作后,运行 main.py
即可启动识别程序:
python main.py
配置文件说明
本项目识别程序的默认配置文件为 configs/inference.yaml
,其中各属性含义如下:
• precision: "fp32"
:推理运算精度,可选择 “fp32”(单精度)或 “fp16”(半精度)。
• session-providers
:ONNX Runtime Providers参数,目前默认设置为 "CPUExecutionProvider"
。
• conf-threshold: 0.25
:目标检测置信度阈值。
• iou-threshold: 0.45
:目标检测非极大值抑制IoU阈值。
• model-path: "inferences/models/detection-fp32.onnx"
:模型加载路径。
自定义数据集训练模型
如果您希望使用自己的数据集训练模型,则需要安装 ultralytics
框架,并参照Ultralytics官方文档进行模型的训练。训练完成后,将模型转换为ONNX格式,即可用于部署:
pip install ultralytics
通过以上步骤,您就可以顺利使用本项目进行路口交通信号灯通行规则的识别工作 。