💡本文主要内容: 详细介绍了基于YOLOv11的交通标志牌检测系统,包括算法原理、Pytorch源码、训练数据集、Flask可视化Web界面。系统支持图片、视频、摄像头实时检测,支持置信度、IoU阈值调节,检测结果可视化与导出等功能。
01 数据集介绍
数据集
本项目采用自建交通标志牌检测数据集,包含数百张交通标志图片及对应标注,涵盖“警告标志(warning)”和“提示标志(alert)”等类别。所有图片均为真实交通场景采集,标注格式为YOLO标准格式。数据集已整理为训练集,便于直接用于目标检测模型的训练与评估。
细节图
02 基于YOLOv11的交通标志牌检测
修改dataset.yaml:
train: images
val: images
nc: 2
names: ['warning', 'alert']
启动训练:
from ultralytics import YOLO
import torch
from pathlib import Path
def main():
model_path = "models/yolo11n.pt"
config_path = "data1211/dataset.yaml"
device = 'cuda' if torch.cuda.is_available() else 'cpu'
model = YOLO(model_path)
model.train(
data=config_path,
epochs=100,
imgsz=640,
batch=16,
device=device,
project='traffic_sign_results',
name='yolo11n_traffic_sign',
exist_ok=True,
patience=50,
save=True,
verbose=True,
val=True,
plots=True,
lr0=0.01,
lrf=0.01,
momentum=0.937,
weight_decay=0.0005,
warmup_epochs=3,
hsv_h=0.015,
hsv_s=0.7,
hsv_v=0.4,
degrees=0.0,
translate=0.1,
scale=0.5,
shear=0.0,
perspective=0.0,
flipud=0.0,
fliplr=0.5,
mosaic=1.0,
mixup=0.0,
copy_paste=0.0,
)
03 训练结果分析
3.1 混淆矩阵
本图展示了模型在warning、alert和background三类上的预测分布。对角线上的深蓝色块占主导,表明大多数交通标志目标被准确检测。warning类别的召回率为1.00,alert类别的召回率为0.97,说明模型对主要类别的检测能力较强。background类别的误检率较低,整体误判较少。
3.2 F1分数-置信度曲线
曲线显示F1分数随置信度阈值的变化趋势。在置信度为0.472时,所有类别的F1分数达到最高点0.99,说明此时模型在精度和召回率之间取得了最佳平衡。置信度过低时,F1分数较低,说明误报较多;置信度过高时,F1分数也下降,说明漏检增多。该图反映了当前模型在不同置信度下的最优表现区间。
3.3 精度-置信度曲线
曲线反映了随着置信度阈值的提高,模型预测精度的变化。当置信度为0.726时,所有类别的精度达到完美值1.0,说明高置信度下模型几乎不会误报。随着置信度提升,精度稳步上升,在较高置信度时达到接近1.0的精度。该图有助于选择合适的置信度阈值,平衡准确率和召回率。
3.4 精度-召回率曲线
曲线展示了模型在不同召回率下的精度表现。当前模型mAP@0.5=0.995,属于极高的精度指标。曲线大部分区域保持在高位,说明模型在不同阈值下都能保持较高精度和召回率。曲线下的面积(mAP值)反映了模型在不同召回率下的平均精度表现。
3.5 召回率-置信度曲线
曲线反映了随着置信度阈值的提高,模型检出所有真实交通标志目标的比例变化。在置信度为0时,召回率接近1.0,说明模型几乎能检出所有目标。随着置信度提升,召回率逐渐下降,说明模型变得更"保守",漏检增多。该图直观反映了当前模型在不同置信度下的漏检趋势。
04 Flask Web界面与系统设计
4.1 Flask简介
Flask 是一个用 Python 编写的轻量级 Web 应用框架,具有简单易用、扩展性强等特点。它非常适合快速开发和部署基于 Web 的人工智能应用。通过 Flask,可以将深度学习模型与前端界面无缝集成,实现模型的在线推理和结果可视化
4.2 依赖安装
pip install -r requirement.txt
4.3 系统功能与运行方式
python app.py
图片检测