基于 YOLO11 的多语种交通标志与信号灯识别系统

简介: 本项目基于YOLO11n构建多语种交通标志与信号灯识别系统,支持中、英、阿拉伯文34类要素(含细粒度限速、停车让行及红黄绿灯),轻量(5MB)、高精度、开箱即用。集成Streamlit前端,支持图片/视频/摄像头实时检测,专为出海驾驶、跨境物流与ADAS出海场景设计。(239字)

基于 YOLO11 的多语种交通标志与信号灯识别系统

出海驾驶最头疼的不是开车,而是"路边那块阿拉伯文/英文标志到底什么意思"。

一、背景

image.png

1.1 行业痛点

随着出海驾驶、跨境物流、海外路况巡检、ADAS 出海产品越来越普遍,多语种交通标识感知成为绕不开的一道坎:

  • 中东地区大量阿拉伯文限速 / 停车让行标识,国内训练的模型直接迁移过去基本"睁眼瞎";
  • 欧美干线常见英文限速、警示、停车让行;
  • 出海产品如果只能识别中文标识,到了海外用户那里立刻失灵;
  • 多数公开数据集类别粗、语种单一(要么纯中文,要么纯英文),无法满足跨国干线感知。

本项目针对这一痛点,构建了一套覆盖 34 类多语种交通要素 的 检测系统 ,包含:通用警示与通行标识 8 类、英文/阿拉伯文双语限速标识 20 类、停车让行 + 红绿黄交通信号灯 6 类。基于 YOLO11n + Streamlit,可作为车载前视相机、路侧抓拍、高精 地图 采集车的前置感知模块。

视频演示与源码 下载

https://www.bilibili.com/video/BV1hSHv6GEMQ/

image.png

包含: 📦完整项目源码 📦 预训练 模型权重

🗂️ 数据集

1.2 项目运行效果

image.png
image.png

1.3 项目介绍

核心创新点:

维度 说明
多语种覆盖 同时识别中、英、阿拉伯文交通标识,填补海外市场数据空白
类别细粒度 阿拉伯语限速 30/50/60/70/80/90/100/120 等独立成类,识别后可直接拿数值
信号灯独立 红 / 黄 / 绿三类信号灯单独识别,便于路口逻辑判断
前后端一体 Streamlit 提供单图 / 批量 / 视频 / 摄像头四路输入
行业话术 通过 configs/project.yaml 注入"智慧交通 / ADAS 感知"行业字段

类别明细(共 34 类):

通用管控(8 类):危险警示标志、禁止驶入、禁止停车、禁止停靠、
                禁止掉头、允许停车、行人通行标志、环岛标志
英文限速(10 类):英文限速 5/15/20/30/40/50/60/70/80/90/100/120
阿拉伯语限速(8 类):阿拉伯语限速 30/50/60/70/80/90/100/120
停车让行(2 类):英文停车让行、阿拉伯语停车让行
信号灯(3 类):红灯、黄灯、绿灯
其它(1 类):允许掉头

技术栈:

层 选型
检测模型 YOLO11n(ultralytics 官方,预训练 yolo11n.pt)
训练框架 ultralytics ≥ 8.3
后端推理 Python 3.10 + PyTorch
前端可视化 Streamlit + Plotly
视频解码 OpenCV + imageio-ffmpeg
部署形态 Streamlit / Docker;可导出 ONNX 供车载边缘盒子

image.png

二、设计框架

┌────────────────────────────────────────────┐
│ 浏览器 / 车载 HMI                          │
│ 单图 / 批量 / 视频 / 摄像头实时流           │
└─────────────┬──────────────────────────────┘
              ▼ HTTP(默认 8501)
┌────────────────────────────────────────────┐
│ Streamlit 应用 app/streamlit_app.py         │
│ ├─ infer_image_path() 单帧推理              │
│ ├─ run_batch_image_inference() 批量推理     │
│ └─ render_batch_analysis() 类别 / 置信度图表 │
└─────────────┬──────────────────────────────┘
              ▼ ultralytics.YOLO
┌────────────────────────────────────────────┐
│ YOLO11n 推理引擎                            │
│ model/best.pt(34 类多语种交通要素)         │
└────────────────────────────────────────────┘

YOLO11 网络结构(一图速通):

 输入 640×640
     │
 ┌───▼───── Backbone(C3k2 + SPPF) ─────┐
 │   多尺度特征 P3 / P4 / P5             │
 └───┬─────────────────────────────────┘
     │
 ┌───▼───── Neck(FPN + PAN) ──────────┐
 │   小目标(远处的标志牌)特征上采样融合 │
 └───┬─────────────────────────────────┘
     │
 ┌───▼─── Head(Decoupled + DFL) ──────┐
 │   34 类分类 + 边框 DFL 回归          │
 └───┬─────────────────────────────────┘
     │
   输出:N×(x1,y1,x2,y2,conf,class_id)

YOLO11 的 C3k2 模块在保持精度的同时显著降低参数量,特别适合类别多 + 类别间形似(限速 50 vs 限速 60 仅数字差异)的细粒度场景;DFL 回归则保证了远距离小标志的边界框依然贴合。

检测流程:

 摄像头/上传图  ──▶ letterbox 640  ──▶ YOLO11n 推理
                                          │
                                          ▼
                                conf ≥ 0.25  + NMS(IoU 0.7)
                                          │
                                          ▼
                                 result.plot() 画框
                                          │
                                          ▼
                            类别 → 中文显示名映射 → 报表 + 图表

三、代码结构(核心 50 行)

# app/streamlit_app.py(节选)
from pathlib import Path
import streamlit as st, pandas as pd, yaml
from ultralytics import YOLO

ROOT       = Path(__file__).parent.parent
MODEL_PATH = ROOT / "model" / "best.pt"
CFG        = yaml.safe_load(open(ROOT / "configs" / "project.yaml", encoding="utf-8"))
DISPLAY_NAMES = CFG.get("app", {
   }).get("class_display_names", {
   }) or {
   }

@st.cache_resource(show_spinner=False)
def load_model(p: str) -> YOLO:
    return YOLO(p)                                       # ① 缓存权重

def apply_display(name: str) -> str:
    return DISPLAY_NAMES.get(name, name)                 # ② 类别中英对照

def infer_image_path(model: YOLO, image_path: Path, conf: float):
    result = model.predict(str(image_path), conf=conf, verbose=False)[0]   # ③ 推理
    annotated = result.plot()                            # ④ 画框
    rows = []
    if result.boxes is not None:
        for box in result.boxes:
            cls_id = int(box.cls.item())
            x1, y1, x2, y2 = [float(v) for v in box.xyxy[0].tolist()]
            rows.append({
   
                "class_name": result.names[cls_id],
                "confidence": round(float(box.conf.item()), 4),
                "x1": round(x1, 1), "y1": round(y1, 1),
                "x2": round(x2, 1), "y2": round(y2, 1),
            })
    return annotated[:, :, ::-1], pd.DataFrame(rows)     # ⑤ BGR→RGB + 结构化结果

# ---------- Streamlit 入口 ----------
st.set_page_config(page_title=CFG["app"]["title"], layout="wide")
conf  = st.sidebar.slider("置信度阈值", 0.1, 0.9, 0.25, 0.05)
model = load_model(str(MODEL_PATH))

if st.radio("输入类型", ["单张图片", "批量图片", "视频", "摄像头"], horizontal=True) == "单张图片":
    up = st.file_uploader("上传待检测图片", type=["jpg", "jpeg", "png", "webp", "bmp"])
    if up is not None:
        annotated, df = infer_image_path(model, Path(up.name), conf)
        st.image(annotated, caption="检测结果")
        df["display_name"] = df["class_name"].map(apply_display)
        st.dataframe(df)

5 段解析:

  1. @st.cache_resource —— YOLO 权重只加载一次,避免每次刷新都冷启动 1~2 秒。
  2. apply_display() —— 把权重内置类名(中文)和兼容映射统一成 UI 友好的显示名,多语种场景特别需要。
  3. model.predict(...)[0] —— ultralytics 的"一行调用",自动完成 letterbox、归一化、推理、NMS。
  4. result.plot() —— 直接拿到带框/类别/置信度的渲染图,BGR 排列。
  5. 把每个 box 拆成结构化记录扔进 DataFrame,给下游"类别分布柱状图""平均置信度卡片"等图表统一消费。

四、训练效果

模型基于 yolo11n.pt 在 5000 张真实道路图像上训练 200 个 epoch,imgsz=640、batch=16,覆盖中、英、阿拉伯文三种语种、34 类 目标。

模型在测试集上检测效果良好,可稳定识别通用警示/通行标志、英文与阿拉伯文双语限速标识、红黄绿交通信号灯等 34 类多语种交通要素,已能满足跨国干线、海外驾驶、多语种路况巡检等场景的初筛与感知使用需要。

五、项目总结

做对了什么:

  • 数据维度走差异化:直接补齐了"阿拉伯语限速"这一类公开数据集稀缺的赛道,而不是再卷一个中文数据集。
  • 类别细粒度 + 单语种独立:英文限速 60、阿拉伯语限速 60 各算一类,识别完直接能拿到限速数值 + 语种,对下游 ADAS 决策非常友好。
  • 工程化模板:Streamlit + 配置驱动 UI,把"训练 → 测试 → 演示"一条龙打通,业务方扫码就能体验。

还能怎么做:

  1. 接 OCR:对识别到的限速标识 ROI 再做一次 OCR,把"英文限速 60"细化到任意数字,避免类别爆炸;
  2. 时序融合:连续 N 帧投票输出当前限速,降低单帧抖动;
  3. 多任务联合:标志检测 + 信号灯状态 + 车道线分割共享 Backbone,节省车载算力;
  4. 数据扩充:法语 / 西语 / 俄语限速标识,把多语种从 3 种再扩到 6+。

一句话总结: 用 YOLO11n 把"中 / 英 / 阿"三种语种的 34 类交通要素塞进一个权重,只占 5MB 多,是出海 ADAS 与跨国巡检很轻量也很实用的一块拼图。

相关文章
|
5天前
|
云安全 人工智能 运维
当攻击全面Agent化,你的安全防御能否跟上AI Speed?
多起客户侧AK泄露事件应急的真实观察
1246 4
|
28天前
|
人工智能 JSON API
全网刷屏的 Jev 模型正式开放!一手实战测评 + 保姆级教程
全网爆火的 Jev 模型是什么?有什么用?怎么使用?怎么接入 AI 编程工具?效果真的好么?傻子可懂的 Jev 保姆级实战教程 + 项目实战测评来啦
9798 32
|
8天前
|
存储 人工智能 安全
千问办公官网入口网页版登录:qwenwork.cn 注册送2000积分、登录送100积分
阿里云千问办公(QwenWork)是AI智能工作平台,支持一句话生成PPT、表格、网页、视频及数据分析。个人免费版送2000积分+每日登录赠100分,含1GB存储、5个发布页;企业版198元/席/月起。阿里千问办公QwenWork官网:https://t.aliyun.com/U/0VCTGt 阿里AI工作平台,一句话完成数据分析、PPT 生成、视频剪辑、网页搭建等复杂任务
|
3天前
|
人工智能 API 开发工具
DeepSeek Harness 神插件:白嫖 13 家大厂模型
`dsh-our-free-model` 是 DeepSeek Harness 神级插件:零配置、零API Key、零账号,聚合13家大厂免费模型(含DeepSeek V4.1 Flash、Kimi K3等),支持本地网关、用量看板与自动降级,真正实现“白嫖即用”。
|
14天前
|
存储 人工智能 并行计算
大模型本地部署终端选型方法论:以 Qwen3.8-27B 为例的四档分层完整流程
本文提出一套大模型本地部署终端选型方法论:定约束、定档位、定框架、定参数四步决策法,配合入门、主力、质量、无损四档分层模型。以 Qwen3.8-27B 实测数据为例,逐环节解读显存、带宽、存储、散热、系统、预算等要素,给出面向不同预算的优选方案、决策自查清单与市场观察框架。文末前瞻 AI 笔记本的 CPU+GPU 与统一内存两条路线,论证四步决策法在新品类上的延续性。
|
5天前
|
Web App开发 人工智能 JavaScript
太猛了,一个月干到15W+,给大家推荐一个最近爆火的开源逆向工具:REA
REA(Reverse Engineer Anything)是近期爆火的开源AI逆向工具,4月发布,1个月内斩获15万+ Star。它让AI Agent无需源码即可分析二进制、APK、JS/Electron、HAR包等17类目标,自动反编译、生成可运行代码,并强制返回带证据与局限的结论。全本地执行,MIT协议,支持Hopper/Ghidra/IDA等引擎,一行命令即可上手。
640 1
太猛了,一个月干到15W+,给大家推荐一个最近爆火的开源逆向工具:REA
|
13天前
|
人工智能 JSON 自然语言处理
2026 年 Jev 决策模型深度拆解:原理解读、实战测评与保姆级落地教程
有一款特殊AI模型在开发者圈子刷屏,它摒弃传统大模型擅长的对话聊天能力,专注做高速结构化决策,它就是TypeSafe AI推出的Jev模型。该模型由ChatGPT共同发明人Diogo Almeida主导研发,定位为**System One Model(系统一模型)**,对标人类大脑快速直觉判断的思维模式,在响应延迟、调用成本、结构化输出稳定性上相比传统生成式大模型有着巨大差异。本文会完整拆解Jev底层原理、三大核心原语能力、适用业务场景,同时提供可直接运行的curl、Python代码示例,并且结合多组实测数据,客观分析模型优势与能力边界,帮助普通开发者和AI应用从业者快速上手落地。
936 1
|
9天前
|
人工智能 JSON 自然语言处理
2026 年 Jev 决策模型全解析:核心原理拆解,性能实战测评与落地部署教程
有一款特殊AI模型在开发者圈子刷屏,它摒弃传统大模型擅长的对话聊天能力,专注做高速结构化决策,它就是TypeSafe AI推出的Jev模型。该模型由ChatGPT共同发明人Diogo Almeida主导研发,定位为System One Model(系统一模型),对标人类大脑快速直觉判断的思维模式,在响应延迟、调用成本、结构化输出稳定性上相比传统生成式大模型有着巨大差异。本文会完整拆解Jev底层原理、三大核心原语能力、适用业务场景,同时提供可直接运行的curl、Python代码示例,并且结合多组实测数据,客观分析模型优势与能力边界,帮助普通开发者和AI应用从业者快速上手落地。
597 0

热门文章

最新文章