尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

基于 YOLO11 的多语种交通标志与信号灯识别系统 | 完整源码分享

基于 YOLO11 的多语种交通标志与信号灯识别系统 | 完整源码分享 基于 YOLO11 的多语种交通标志与信号灯识别系统出海驾驶最头疼的不是开车而是路边那块阿拉伯文/英文标志到底什么意思。一、背景1.1 行业痛点随着出海驾驶、跨境物流、海外路况巡检、ADAS 出海产品越来越普遍多语种交通标识感知成为绕不开的一道坎中东地区大量阿拉伯文限速 / 停车让行标识国内训练的模型直接迁移过去基本睁眼瞎欧美干线常见英文限速、警示、停车让行出海产品如果只能识别中文标识到了海外用户那里立刻失灵多数公开数据集类别粗、语种单一要么纯中文要么纯英文无法满足跨国干线感知。本项目针对这一痛点构建了一套覆盖34 类多语种交通要素的检测系统包含通用警示与通行标识 8 类、英文/阿拉伯文双语限速标识 20 类、停车让行 红绿黄交通信号灯 6 类。基于 YOLO11n Streamlit可作为车载前视相机、路侧抓拍、高精地图采集车的前置感知模块。视频演示与源码下载https://www.bilibili.com/video/BV1hSHv6GEMQ/包含完整项目源码预训练模型权重️数据集1.2 项目运行效果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 类允许掉头技术栈层选型检测模型YOLO11nultralytics 官方预训练 yolo11n.pt训练框架ultralytics ≥ 8.3后端推理Python 3.10 PyTorch前端可视化Streamlit Plotly视频解码OpenCV imageio-ffmpeg部署形态Streamlit / Docker可导出 ONNX 供车载边缘盒子二、设计框架┌────────────────────────────────────────────┐ │ 浏览器 / 车载 HMI │ │ 单图 / 批量 / 视频 / 摄像头实时流 │ └─────────────┬──────────────────────────────┘ ▼ HTTP默认 8501 ┌────────────────────────────────────────────┐ │ Streamlit 应用 app/streamlit_app.py │ │ ├─ infer_image_path() 单帧推理 │ │ ├─ run_batch_image_inference() 批量推理 │ │ └─ render_batch_analysis() 类别 / 置信度图表 │ └─────────────┬──────────────────────────────┘ ▼ ultralytics.YOLO ┌────────────────────────────────────────────┐ │ YOLO11n 推理引擎 │ │ model/best.pt34 类多语种交通要素 │ └────────────────────────────────────────────┘YOLO11 网络结构一图速通输入 640×640 │ ┌───▼───── BackboneC3k2 SPPF ─────┐ │ 多尺度特征 P3 / P4 / P5 │ └───┬─────────────────────────────────┘ │ ┌───▼───── NeckFPN PAN ──────────┐ │ 小目标远处的标志牌特征上采样融合 │ └───┬─────────────────────────────────┘ │ ┌───▼─── HeadDecoupled DFL ──────┐ │ 34 类分类 边框 DFL 回归 │ └───┬─────────────────────────────────┘ │ 输出N×(x1,y1,x2,y2,conf,class_id)YOLO11 的 C3k2 模块在保持精度的同时显著降低参数量特别适合类别多 类别间形似限速 50 vs 限速 60 仅数字差异的细粒度场景DFL 回归则保证了远距离小标志的边界框依然贴合。检测流程摄像头/上传图 ──▶ letterbox 640 ──▶ YOLO11n 推理 │ ▼ conf ≥ 0.25 NMSIoU 0.7 │ ▼ result.plot() 画框 │ ▼ 类别 → 中文显示名映射 → 报表 图表三、代码结构核心 50 行# app/streamlit_app.py节选frompathlibimportPathimportstreamlitasst,pandasaspd,yamlfromultralyticsimportYOLO ROOTPath(__file__).parent.parent MODEL_PATHROOT/model/best.ptCFGyaml.safe_load(open(ROOT/configs/project.yaml,encodingutf-8))DISPLAY_NAMESCFG.get(app,{}).get(class_display_names,{})or{}st.cache_resource(show_spinnerFalse)defload_model(p:str)-YOLO:returnYOLO(p)# ① 缓存权重defapply_display(name:str)-str:returnDISPLAY_NAMES.get(name,name)# ② 类别中英对照definfer_image_path(model:YOLO,image_path:Path,conf:float):resultmodel.predict(str(image_path),confconf,verboseFalse)[0]# ③ 推理annotatedresult.plot()# ④ 画框rows[]ifresult.boxesisnotNone:forboxinresult.boxes:cls_idint(box.cls.item())x1,y1,x2,y2[float(v)forvinbox.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),})returnannotated[:,:,::-1],pd.DataFrame(rows)# ⑤ BGR→RGB 结构化结果# ---------- Streamlit 入口 ----------st.set_page_config(page_titleCFG[app][title],layoutwide)confst.sidebar.slider(置信度阈值,0.1,0.9,0.25,0.05)modelload_model(str(MODEL_PATH))ifst.radio(输入类型,[单张图片,批量图片,视频,摄像头],horizontalTrue)单张图片:upst.file_uploader(上传待检测图片,type[jpg,jpeg,png,webp,bmp])ifupisnotNone:annotated,dfinfer_image_path(model,Path(up.name),conf)st.image(annotated,caption检测结果)df[display_name]df[class_name].map(apply_display)st.dataframe(df)5 段解析st.cache_resource—— YOLO 权重只加载一次避免每次刷新都冷启动 1~2 秒。apply_display()—— 把权重内置类名中文和兼容映射统一成 UI 友好的显示名多语种场景特别需要。model.predict(...)[0]—— ultralytics 的一行调用自动完成 letterbox、归一化、推理、NMS。result.plot()—— 直接拿到带框/类别/置信度的渲染图BGR 排列。把每个 box 拆成结构化记录扔进 DataFrame给下游类别分布柱状图平均置信度卡片等图表统一消费。四、训练效果模型基于yolo11n.pt在 5000 张真实道路图像上训练 200 个 epochimgsz640、batch16覆盖中、英、阿拉伯文三种语种、34 类目标。模型在测试集上检测效果良好可稳定识别通用警示/通行标志、英文与阿拉伯文双语限速标识、红黄绿交通信号灯等 34 类多语种交通要素已能满足跨国干线、海外驾驶、多语种路况巡检等场景的初筛与感知使用需要。五、项目总结做对了什么数据维度走差异化直接补齐了阿拉伯语限速这一类公开数据集稀缺的赛道而不是再卷一个中文数据集。类别细粒度 单语种独立英文限速 60、阿拉伯语限速 60 各算一类识别完直接能拿到限速数值 语种对下游 ADAS 决策非常友好。工程化模板Streamlit 配置驱动 UI把训练 → 测试 → 演示一条龙打通业务方扫码就能体验。还能怎么做接 OCR对识别到的限速标识 ROI 再做一次 OCR把英文限速 60细化到任意数字避免类别爆炸时序融合连续 N 帧投票输出当前限速降低单帧抖动多任务联合标志检测 信号灯状态 车道线分割共享 Backbone节省车载算力数据扩充法语 / 西语 / 俄语限速标识把多语种从 3 种再扩到 6。一句话总结用 YOLO11n 把中 / 英 / 阿三种语种的 34 类交通要素塞进一个权重只占 5MB 多是出海 ADAS 与跨国巡检很轻量也很实用的一块拼图。
返回列表