基于YOLO和大语言模型的交通标识智能识别系统

🚦 基于YOLO和大语言模型的交通标识智能识别系统 (Traffic Sign Recognition System)

基于 YOLO 和 LLaVA 大模型的智能交通标识检测与分析平台
代码获取:https://mbd.pub/o/bread/YZWamZ9pag==

� 项目简介 (Introduction)

本项目是一个先进的交通标识识别系统,旨在提供高精度的交通标志检测和深度的场景理解能力。系统结合了 YOLO 的实时目标检测能力和 LLaVA (Large Language-and-Vision Assistant) 多模态大语言模型的语义理解能力。

通过友好的 Gradio Web 界面,用户可以轻松进行单张图片识别、批量数据处理以及实时摄像头检测。系统还内置了模型训练模块,通过界面即可启动模型的微调训练。












✨ 项目特点 (Features)

  • 🎯 高精度识别: 采用 YOLO 算法,支持多种交通标识(限速、禁行、指示、警告等)的实时检测。
  • 🧠 深度智能分析: 集成 LLaVA 多模态大模型,不仅能"看到"标识,还能理解标识的含义、位置及周边环境,生成中文分析报告。
  • 💻 全功能 Web 界面: 基于 Gradio 构建的现代 UI,通过浏览器即可完成所有操作。
  • 🎞️ 多种检测模式 :
    • 单图分析: 详情扫描,支持生成 HTML 格式的专业检测报告。
    • 批量处理: 支持多文件上传,自动打包结果并生成统计 CSV。
    • 实时监测: 调用本地摄像头进行实时的交通标识捕捉。
  • ⚙️ 在线训练: 内置训练画板,可调整 Epoch、Batch Size 等参数,一键启动模型微调。
  • 📊 历史记录管理: 自动保存检测历史,支持数据导出和统计看板。

�️ 安装方式 (Installation)

1. 环境准备

  • Python 3.8 或更高版本
  • CUDA 支持 (推荐用于 GPU 加速)
  • Ollama (如果需要使用 LLaVA 深度分析功能)

2. 克隆项目 & 安装依赖

bash 复制代码
pip install -r requirements.txt

3. 配置 LLaVA (可选)

如果您启用了深度分析功能,请确保本地安装并启动了 Ollama,并拉取了 llava 模型:

bash 复制代码
# 安装 Ollama 后运行
ollama serve
# 在另一个终端运行
ollama pull llava

🚀 使用方法 (Usage)

启动系统

在项目根目录下运行以下命令启动 Web 界面:

bash 复制代码
python run_web_advanced.py

启动后,浏览器访问 http://localhost:7860 即可使用。

⚙️ GPU 与 CPU 配置

无需修改代码,系统会自动检测 GPU。您也可以在 config.yaml 中强制指定设备:

使用 GPU (默认推荐):

yaml 复制代码
yolov8:
  train:
    device: "0"  # 使用第一块 GPU

使用 CPU (无显卡环境):

yaml 复制代码
yolov8:
  train:
    device: "cpu"

📂 目录结构 (Directory Structure)

复制代码
TSR/
├── config.yaml                 # 系统总配置文件 (YOLO, LLaVA, Web)
├── requirements.txt            # 项目依赖列表
├── README.md                   # 项目说明文档
├── tsr_data.yaml               # YOLO 数据集配置文件
├── yolo11n.pt / yolov8n.pt     # 预训练权重文件
├── src/                        # 源代码目录
│   ├── web_interface_advanced.py  # Web 界面主程序
│   ├── yolo_detector.py           # YOLO 检测器核心封装
│   ├── traffic_sign_detection_system.py # 系统业务逻辑层
│   ├── history_manager.py         # 历史记录管理
│   └── convert_tsr_to_yolo.py     # 数据集转换工具
├── data/                       # 数据存放目录 (上传的图片/生成的报告)
├── runs/                       # 训练和检测结果输出目录
├── models/                     # 模型保存目录
└── logs/                       # 运行日志

🔧 配置说明 (Configuration)

项目的主要配置位于 config.yaml 文件中:

  • yolov8 : 配置模型大小 (n, s, m, l, x)、训练参数 (epochs, batch_size) 和推理阈值。
  • llava : 配置 Ollama 的地址 (默认 http://localhost:11434)、模型名称和 Prompt 提示词模板。
  • web: 配置 Gradio 服务的端口和主机地址。
  • system: 配置输出和日志路径。

📊 数据集说明 (Dataset)

本项目使用 TSRD (Chinese Traffic Sign Recognition Database) 格式的数据集进行训练,并已转换为标准的 YOLO 格式。数据集共包含 58 个类别的中国交通标志。

📁 目录结构

复制代码
data/
├── images/
│   ├── train/  # 训练集图片
│   └── val/    # 验证集图片
└── labels/
    ├── train/  # 训练集标签 (YOLO格式 txt)
    └── val/    # 验证集标签 (YOLO格式 txt)

🏷️ 类别详情 (Classes)

本系统支持识别以下 58 种交通标识:
👉 点击展开查看完整类别列表 (Click to expand)

ID 名称 (Name) ID 名称 (Name)
0 限速 5km/h 29 应当鸣笛
1 限速 15km/h 30 非机动车行驶
2 限速 30km/h 31 掉头
3 限速 40km/h 32 路面双向通行
4 限速 50km/h 33 注意信号灯标志
5 限速 60km/h 34 注意危险
6 限速 70km/h 35 注意行人
7 限速 80km/h 36 注意非机动车
8 禁止左转或直行 37 注意儿童
9 禁止右转或直行 38 向右急转弯
10 禁止直行 39 向左急转弯
11 禁止左转 40 左侧变窄
12 禁止向左和向右转 41 下陡坡
13 禁止右转 42 慢行
14 禁止超车 43 左侧交叉路口
15 禁止掉头 44 十字交叉口
16 禁止机动车通行 45 村庄
17 禁止鸣笛 46 反向弯道
18 最低限速40 47 铁路道口
19 最低限速50 48 施工路段
20 直行或右转 49 连续弯道
21 直行 50 路面不平
22 左转 51 前方施工
23 左转或右转 52 减速让行
24 右转 53 停车让行
25 左侧行驶 54 封闭道路
26 右侧行驶 55 禁止通行
27 环形岛 56 注意让行
28 机动车行驶 57 检查

tsr_data.yaml 配置文件中定义了详细的路径和类别名称。

💻 核心代码 (Core Code)

检测器加载与推理 (src/yolo_detector.py)

python 复制代码
def predict(self, image_path: str, conf: float = 0.25) -> Tuple[list, np.ndarray]:
    # 加载模型
    if self.model is None:
        self.reload_model()
    
    # 执行推理
    results = self.model.predict(
        source=image_path,
        conf=conf,
        save=False
    )
    
    # 结果可视化绘制...
    return results, annotated_img

Web 界面交互 (src/web_interface_advanced.py)

python 复制代码
def detect_image(self, image, conf, use_llava):
    # 保存临时文件
    # ...
    # 调用检测系统
    plot_img, detections, report, _, _ = self.system.detect_image(temp_path, conf=conf, use_llava=use_llava)
    
    # 生成统计 HTML
    if len(detections) > 0:
        stat = f"<div>Traffic Sign Detected: {len(detections)}</div>"
    
    return display_img, report, stat

🧠 自适应阈值检测 (src/traffic_sign_detection_system.py)

系统针对稀有类别(如施工、检查等)采用了自适应阈值策略,以提高召回率:

python 复制代码
# --- Adaptive Thresholding Logic ---
# 如果是稀有类别,接受较低的置信度 (>= 0.05)
# 如果是常见类别,执行严格的用户设定阈值 'conf'
is_rare = cls_id in self.RARE_CLASSES

if is_rare:
    if prob < 0.05: continue # Absolute minimum
else:
    if prob < conf: continue # Enforce standard threshold

💾 历史记录数据库管理 (src/history_manager.py)

使用 SQLite 自动记录每一次检测结果:

python 复制代码
def _init_database(self):
    conn = sqlite3.connect(str(self.db_path))
    cursor = conn.cursor()
    
    # 创建检测历史表
    cursor.execute('''
        CREATE TABLE IF NOT EXISTS detection_history (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            timestamp TEXT NOT NULL,
            task_type TEXT NOT NULL,
            source_path TEXT NOT NULL,
            num_defects INTEGER DEFAULT 0,
            use_llava BOOLEAN DEFAULT 0,
            result_path TEXT,
            notes TEXT,
            created_at TEXT DEFAULT CURRENT_TIMESTAMP
        )
    ''')
相关推荐
LaughingZhu2 小时前
Product Hunt 每日热榜 | 2026-01-18
大数据·人工智能·经验分享·搜索引擎·产品运营
向上的车轮2 小时前
AI编辑器要解决哪些关键问题?
人工智能·编辑器
啊阿狸不会拉杆2 小时前
《数字图像处理》第 10 章 - 图像分割
图像处理·人工智能·深度学习·算法·计算机视觉·数字图像处理
huazi-J2 小时前
Datawhale Happy-LLM 课程 task 4:Encoder-Decoder
语言模型·大模型·transformer·datawhale
Dev7z2 小时前
基于深度学习的车辆品牌与类型智能识别系统设计与实现
人工智能·深度学习
国科安芯2 小时前
强辐射环境无人机视频系统MCU可靠性分析
人工智能·单片机·嵌入式硬件·音视频·无人机·边缘计算·安全性测试
华奥系科技2 小时前
社区治理创新模式:智慧社区如何通过数字化工具激活邻里活力
大数据·人工智能
AI_56782 小时前
Airflow“3分钟上手”教程:用Python定义定时数据清洗任务
开发语言·人工智能·python
蓝海星梦2 小时前
【强化学习】深度解析 DAPO:从 GRPO 到 Decoupled Clip & Dynamic Sampling
人工智能·深度学习·自然语言处理·强化学习