基于 LYTNetV2 ONNX 的实时交通信号灯识别 · 视障人士出行辅助 · WebSocket 实时处理
系统通过手机摄像头实时采集交通灯图像,浏览器将 JPEG 帧通过 WebSocket 发送至 Flask 服务端。服务端执行多阶段识别流水线,将结果(灯色、方向、倒计时、瞄准指导)实时返回前端,并通过 TTS 语音播报。
| 模型名称 | LYTNetV2 (Light-weight YOLO-based Traffic light Network) |
| 格式 | ONNX (Open Neural Network Exchange) |
| 推理引擎 | OpenCV DNN (cv2.dnn.readNetFromONNX) |
| 输入尺寸 | 768×768 (resize + pad, 保持宽高比) |
| 预处理 | BGR→RGB, /255.0 归一化到 [0,1], mean=[0,0,0], std=[255,255,255] |
| 推理速度 | ~30ms/frame (CPU, OpenCV DNN) |
| 准确率 | 94~98% |
| 模型大小 | 14.3 MB (lytnetv2.onnx) |
| Class ID | 类别 | 含义 | 触发行为 |
|---|---|---|---|
| 0 | red | 红灯 | 语音播报"红灯,请等待" |
| 1 | green | 绿灯 | 语音播报"绿灯,可以通行" |
| 2 | none | 无信号灯 | 保持HSV检测结果 |
| 3 | countdown_blank | 倒计时黑屏 | 忽略 |
| 4 | countdown_green | 绿灯+倒计时 | 逐秒播报倒计时(5秒内) |
LYTNetV2 作为二级验证分类器:HSV 色彩检测初步定位信号灯区域 → 裁剪 ROI 四周扩展 60% → LYTNetV2 对裁剪区域分类 → 置信度 >40% 时采用模型结果覆盖 HSV 判定。有效过滤 HSV 的误检(如橙黄色广告牌、红色车尾灯)。
基于 HSV 色彩空间的初级检测器。红色: H[0,10]∪[170,180], S>80, V>80;绿色: H[50,90], S>80, V>80。输出包围盒+颜色标签。速度快但存在误检(广告牌、尾灯等)。
LYTNetV2 ONNX 模型,OpenCV DNN CPU 推理 ~30ms。对 HSV 检测到的 ROI 区域进行二次分类验证,conf>40% 时覆盖 HSV 结果。5 分类: red/green/none/countdown_blank/countdown_green。
对原始高分辨率帧上映射的 big_roi 区域做灰度化+自适应二值化+轮廓提取,识别倒计时数字。HSV→原图坐标映射: sx=Worig/640, sy=Horig/480。
对 ROI 区域做形态学分析,提取箭头轮廓,判断方向:直行(straight)/左转(left)/右转(right)。辅助视障用户区分不同方向的信号灯。
hold_frames=150 (5秒) + expand_ratio=2.0。信号灯短暂被遮挡或闪烁时不丢失目标。追踪激活时限制 HSV 检测范围到上次 ROI 的扩展区域(2x),减少误检。
计算 ROI 中心偏离画面中心的偏移量。死区 25%,触发阈值 32%。输出: center/left/right/up/down,指导视障用户调整手机角度对准信号灯。
优先级: ①绿灯≤5秒逐秒倒计时 ②红绿灯状态切换 ③方向+倒计时 ④偏离指导 ⑤无信号提示。去重: 相同内容 2~8秒内不重复播报。间隔: ≥0.8秒。
缓冲队列管理,自动跳过积压帧(取最新帧),防止处理延迟累积。配合 FPSMeter 实时统计处理帧率。
HSV 快速初筛 (轻量) → LYTNetV2 ONNX 深度验证 (精确)。兼顾速度与准确率,有效过滤尾灯、广告牌等误检源。
信号灯短暂被遮挡(行人/车辆经过)不丢失目标。追踪激活时 HSV 检测范围限制在上次 ROI 的 2x 扩展区域,减少全局误检。
HSV/LYTNet 使用 640×480 (速度优先),OCR 使用原始高分辨率 (精度优先)。ROI 坐标自动映射 (sx, sy),兼顾速度与 OCR 可读性。
Socket.IO 双向通信: 浏览器→服务端发送 JPEG 帧,服务端→浏览器推送识别结果+语音文本。每客户端独立线程+独立追踪器,支持多用户并发。
智能去重+优先级调度: 绿灯倒计时 ≤5秒时逐秒播报,红绿灯切换即时播报,偏离指导按需播报。相同内容不重复、不同内容不冲突。
LYTNetV2 转为 ONNX 格式,OpenCV DNN 推理无需 PyTorch/TensorFlow。CPU 推理 ~30ms,支持 Ubuntu/Windows/macOS 跨平台部署。
| 类别 | 技术 | 说明 |
|---|---|---|
| Web 框架 | Flask + Flask-SocketIO | HTTP路由 + WebSocket 实时双向通信 |
| 深度学习 | LYTNetV2 ONNX + OpenCV DNN | 14MB模型, CPU推理~30ms, 94~98%准确率 |
| 图像处理 | OpenCV (cv2) | CLAHE增强, HSV色彩空间, 形态学, 轮廓提取 |
| 数值计算 | NumPy | JPEG解码, 矩阵运算, 坐标映射 |
| 语音合成 | Edge-TTS / 浏览器 Web Speech API | TTS 文本转语音, 前端播放 |
| 前端 | 原生 HTML/CSS/JS + Socket.IO Client | 摄像头采集, Canvas渲染, 语音播报 |
| 部署 | Ubuntu 22.04 + systemd + nginx | HTTPS 反向代理, 开机自启 |