最新YOLO实现的交通信号灯识别实时检测平台(Flask+SocketIO+HTML_CSS_JS)

摘要

本文面向交通信号灯识别的实时目标检测,构建一套端到端平台,涵盖YOLOv5–YOLOv12八种实现的训练、推理与评测,并以Flask + Flask-SocketIO/HTML/CSS/JS打造Web 网页界面。系统同时支持图片/视频/浏览器摄像头输入,提供即时双画面对比(原图与检测结果并列)、进度控制(播放/暂停/续播/停止、帧步进)、类别筛选与Conf/IoU调节CSV 导出带框结果一键下载,并将任务元数据与检测记录写入SQLite以便检索与追溯。平台包含登录/注册(可跳过)与会话管理,内置模型选择/权重上传实现热切换;训练端与评测端统一输出mAP、F1、PR 曲线、混淆矩阵与训练曲线,并以轻量化与加速策略保障浏览器侧顺畅交互。针对红/黄/绿灯、小目标远距离与夜间眩光等难点,我们给出数据增强与阈值策略,支持CSV 高亮定位与“最近记录”快速回溯,满足道路场景的实时与可追溯需求。文末提供完整工程与数据集下载链接

讲解视频地址基于深度学习的交通信号灯识别(Web系统+完整项目分享+数据集+多YOLO模型)
YOLOv12-v11/v10/v9/v8/v7/v6/v5系统(八个模型,含说明论文)合集下载:https://mbd.pub/o/bread/YZWck59rZA==
说明论文下载:https://mbd.pub/o/bread/YZWck5xraQ==
YOLOv12下载:https://mbd.pub/o/bread/YZWbmpptZg==
YOLOv11下载:https://mbd.pub/o/bread/YZWbm5prbA==
YOLOv10下载:https://mbd.pub/o/bread/YZWbm5lsaw==
YOLOv9下载:https://mbd.pub/o/bread/YZWbm5ZpaA==
安装与教程文档:https://deeppython.feishu.cn/wiki/RG5IwXxsxiO52GkbpgychQN7ncc

@

➷点击跳转至文末所有涉及的完整代码文件下载页☇


1. 网页功能与效果

(1)登录注册:提供登录、注册与一次性跳过三种入口,未登录会话仅在当前标签页生效,登录后加载个性化配置与历史记录。口令采用哈希存储并限制会话时长,支持头像与密码修改;失败与异常以非打断式提示呈现,保障流程连续性。
在这里插入图片描述

(2)功能概况:导航按“概览 → 图片检测 / 视频检测 / 摄像头检测 → 模型选择 → 导出视图”组织,顶部保持阈值与会话状态同步。支持CSV导出、带框结果一键下载与最近记录快速回溯,跨页检索保留筛选条件,便于复核与审计。
在这里插入图片描述

(3)视频检测:双画面同步渲染原帧与检测结果,比例等宽并自适应16:9,支持播放、暂停、继续、停止与逐帧步进。面板提供Conf/IoU调节与类别筛选,进度条可拖拽定位并显示时间戳;缓冲区可按片段导出MP4,附带同名CSV。
在这里插入图片描述

(4)更换模型:上传权重后即可切换当前YOLO模型,类别与配色自动刷新且保留现有阈值、筛选与导出设置。切换过程不阻断会话,推理服务平滑热载入并记录版本与时间戳,便于结果追溯与对比。
在这里插入图片描述

(5)概览界面:以卡片汇总最近任务、平均FPS、有效检测数与告警统计,并支持按文件名或时间快速高亮定位到详细记录。支持主题色与品牌元素本地持久化,表格列可定制显示,导出入口集中呈现以缩短操作路径。
在这里插入图片描述


2. 绪论

2.1 研究背景与意义

交通信号灯识别是车路协同与自动驾驶的关键小目标任务,其性能直接影响启停控制与路口通行安全,真实道路数据表明该目标在远距、遮挡与多相位切换下极易造成误检与漏检[1]。跨城市场景与全天候数据集揭示了强域偏移与成像条件变化对模型鲁棒性的挑战,要求检测器在多天气、多光照环境下保持稳定召回与低时延[2]。浏览器侧可视化与弱算推理正在成为端到端部署的新入口,WebGPU+ONNX Runtime Web 为“云-边-端-页”协同提供了轻量路径[3]。边缘端推理方面,TensorRT 的图优化与低比特量化已成为车规与路侧盒实现高吞吐/低时延的事实标准,为在线闭环控制提供工程支撑[4]。

2.2 国内外研究现状

面对“远距小尺度、遮挡与昼夜雨雾剧变、颜色/形态细粒度判别”的综合难点,单阶段与Anchor-free 路线在实用场景中占优,其中RetinaNet 以Focal Loss 缓解前景/背景极不平衡,改善密集小目标训练稳定性[5]。EfficientDet 通过BiFPN与复合缩放在多尺度上取得较高AP,但大型号对算力要求更高,适合资源较充足的部署条件[6]。FCOS 以逐像素回归与中心度抑制替代锚框设计,降低超参敏感性并提升小目标召回,而CenterNet 以“目标即中心点”的表述获得良好速准权衡,为远距信号灯提供另一建模思路[7–8]。YOLOX 采用解耦头与SimOTA,在同等参数量下提升训练与推理效率,成为工业侧常用的实时基线之一[9]。YOLOv7 通过可训练BoF与重参数化在≥30 FPS 条件下报告较高AP,巩固了高精度实时基线地位[10]。YOLOv9 引入可编程梯度信息(PGI)与GELAN 结构,提升轻量模型的参数效率与训练稳定性[11]。YOLOv10 将一致双分配与NMS-free 端到端训练结合,在同精度下显著降低后处理时延,推进了效率边界[12]。Ultralytics 的YOLO11 则完善多任务与部署接口,提升工程可用性与可维护性[13]。在Transformer 阵营,DETR 以集合预测消除NMS但原始收敛较慢,而RT-DETR 通过高效编码/解码将端到端检测推进到实时区间,形成与YOLO 系列的互补选择[14–15]。同时,PP-YOLOE 在Anchor-free 与TAL分配下提供多规格实现,兼顾高FPS与工程落地性,成为工业界的重要参照[16]。

表 1 代表性方法对比(节选)

方法 范式/家族 数据集 关键技术 优势与局限 代表指标/延迟/参数 适用场景/难点 引用
YOLOv7 单阶段/YOLO COCO 重参数化、可训练 BoF ≥30 FPS 下高 AP,训练复杂度较高 56.8% AP@≥30 FPS 实时高精度基线 ([CVF Open Access][2])
YOLOX-L 单阶段/YOLO COCO 解耦头、SimOTA 速准均衡,部署成熟 50.0 AP,68.9 FPS@V100 小目标与工程落地 ([arXiv][10])
YOLOv9 单阶段/YOLO COCO PGI、GELAN 训练稳定、轻重通吃 论文报告多规格优于同代 小目标与训练可控性 ([ECVA][11])
YOLOv10-S 单阶段/YOLO COCO NMS-free、双分配 端到端低时延 ≈1.8× RT-DETR-R18 速度 超低延迟实时 ([arXiv][12])
PP-YOLOE-L 单阶段/YOLO系 COCO TAL、ET-Head 工程友好、速度快 51.4 mAP,78.1 FPS@V100 工业部署 ([arXiv][17])
RetinaNet 单阶段 COCO Focal Loss 解决类不平衡,速度一般 典型 37.8 AP 类不平衡场景 ([CVF Open Access][7])
EfficientDet-D7 单阶段 COCO BiFPN、复合缩放 轻量可扩展,训练精细 52.2 AP 多尺度小目标 ([CVF Open Access][18])
FCOS Anchor-free COCO 中心度、逐像素回归 无锚框简洁,小目标召回优 44.7 AP(ResNeXt-101) 小目标密集 ([CVF Open Access][8])
CenterNet Anchor-free COCO 中心点回归 速准权衡好,极小目标受限 28.1 AP@142 FPS 高帧率需求 ([arXiv][9])
RT-DETR-R18 Transformer COCO 高效解码、端到端 端到端实时,轻量优 217 FPS@T4-TRT 端到端流水 ([GitHub][16])

2.3 要解决的问题及其方案

(1)准确性与实时性:在25–60 FPS 输入下对极小目标与多相位灯态保持高召回、低漏检与低时延,定位上需配合IoU族损失以改善退化样本与边界回归稳定性[17–18]。
(2)环境适应与泛化:应对跨城市、昼夜/雨雾/逆光的域偏移与长尾分布,训练阶段需采用多域增广与迁移学习并进行小目标强化[2]。
(3)交互与可视:网页需提供图片/视频/摄像头三源统一入口、左右等宽双画面对比与阈值/类别筛选,以便快速复核与可解释呈现[3]。
(4)数据治理与存储:检测记录、版本/导出与账户权限统一管理,支持追溯与批量复核,并在边缘端以加速引擎保障一致的实时体验[4]。
方案对应:以YOLOv10/YOLOv7/YOLOX/PP-YOLOE 等为主线对比,结合CIoU/GIoU、蒸馏与量化部署,后端TensorRT与ONNX Runtime 编排推理,前端以Flask+SocketIO 实现同步双帧、参数联动与CSV/媒体一键导出(具体工程实践与指标见第5–6章)[9–12,16–18]。

2.4 博文贡献与组织结构

(1)综合综述:系统梳理Anchor-based/Anchor-free、YOLOv5–YOLOv12 与DETR/RT-DETR 在信号灯检测中的适配性与部署取舍,并补充中文社区在信号灯/交通标志方向的工程实践,为后续实现提供可复用范式[19–20]。
(2)模型选择与优化:给出以YOLOv10/YOLOv7 为核心、YOLOX/PP-YOLOE 为对照的训练与推理方案,强调小目标增强、解耦头与损失调度的实战价值[9–12,16–18]。
(3)美观友好的网页设计:实现三源实时、双画面对比、参数热切换与集中导出,形成端到端可解释闭环,便于审计与复核[3–4]。
(4)效果对比与资源:提供mAP、F1、PR/训练曲线与延迟/参数/FLOPs 等多维对比,并开源工程与样例数据,支持一键复现实验与二次开发(详见文末链接与第5–6章)[2,5–16]。


3. 数据集处理

本研究采用三分类交通信号灯数据集,类别为 green/红灯/黄灯,并在前端以 Chinese_name 提供“绿灯/红灯/黄灯”的中文映射以统一展示与筛选;标注采用 YOLO 常用的归一化格式\((x,y,w,h,\mathrm{class})\in[0,1]\),其中\((x,y)\)为目标中心坐标、\(w,h\)为宽高比例,便于快速迁移至各版本 YOLO 训练与推理。数据共 20,841 张图像,划分为训练集 18,207 张、验证集 1,755 张、测试集 879 张,对应约 87.3%/8.4%/4.2% 的比例,并在整个工程中固定同一随机种子确保可复现实验。读者提供的可视化统计显示:类别实例数呈明显长尾,红、绿样本占绝大多数而黄灯占比显著偏少;目标中心在\(x!\approx!0.5,y!\approx!0.5\)附近更为密集,宽高分布以“小宽度、小高度”为峰,同时在“width–height”平面形成两条斜带,反映出纵向与横向灯具并存的外形差异与尺度极小的总体特征。结合这些统计,我们在训练阶段启用“小目标友好”的图像尺寸与采样策略,并在锚框自适应(或 Anchor-free 头)设置中使用数据驱动的先验以提高召回。

Chinese_name = {'green': "绿灯", 'red': "红灯", "yellow": "黄灯"}

        
在这里插入图片描述

针对遮挡、尺度变化与眩光反射等难点,数据预处理与增强遵循“保真优先、鲁棒为先”的原则:在不破坏颜色语义的前提下使用亮度/对比度与轻度 HSV 抖动以覆盖日夜与逆光场景;采用 Mosaic/随机仿射/随机裁剪与短边多尺度缩放来提升对远距小目标与偏转视角的适应性;对训练前样本执行重复样本去重、异常框清洗与模糊/过曝样本的软过滤,减少噪声标签对边界回归的干扰;为缓解黄灯稀缺带来的类别不均衡,我们在采样阶段引入基于类别频次的重采样与损失侧的适度重加权,并在验证/测试阶段保持与训练一致的归一化与去畸变流程,以保证线上线下统计的一致性。上述处理在不改变原始标注语义的前提下,兼顾了尺度极小与形态相近两类风险点,为后续 YOLOv5–YOLOv12 的对比训练与浏览器端实时推理提供了稳定的数据基础。
在这里插入图片描述


4. 模型原理与设计

本文以YOLOv12 风格的单阶段、Anchor-free、解耦检测头为主线,并兼容 YOLOv5–YOLOv11 的结构与权重格式,便于在同一训练/评测框架下对比。整体范式遵循“主干(Backbone)—颈部(Neck)—检测头(Head)”三段式:主干采用带跨阶段局部残差的轻量卷积结构(CSP/ELAN 一类)提取多尺度语义;颈部以自顶向下与自底向上融合(PAN/FPN 或更高效的 BiFPN/轻量特征金字塔)汇聚\(P_3/P_4/P_5\)等多层特征;检测头使用解耦分类/回归分支并行回归中心点与宽高,默认 Anchor-free 网格预测,输出层直接回归\(\hat{\mathbf{b}}=(\hat{x},\hat{y},\hat{w},\hat{h})\)与类别置信度\(\hat{\mathbf{p}}\),减少锚框超参对小目标的敏感性与匹配开销。为适配交通信号灯的极小目标与强反光,主干中选用SiLU激活、轻注意力(如 SE/ECA)与可选的重参数化卷积(训练期多分支、推理期折叠为单分支)以保证推理延迟可控;推理侧支持 NMS-free(与 YOLOv10 同类的一致分配端到端训练)或传统 Greedy/Soft-NMS 两种路径,便于在不同硬件上折中延迟与稳定性。网络整体架构图如下图所示:
在这里插入图片描述

结构细节上,颈部的特征融合可抽象为

\[\mathbf{F}^{\text{TD}}*l=\phi!\left(\text{Conv}!\left(\mathbf{F}^{\text{TD}}*{l+1}!\uparrow\right)\oplus \text{Conv}!\left(\mathbf{F}^{\text{BU}}*{l}\right)\right),\quad \mathbf{F}^{\text{BU}}*l=\phi!\left(\text{Conv}!\left(\mathbf{F}^{\text{BU}}*{l-1}!\downarrow\right)\oplus \text{Conv}!\left(\mathbf{F}^{\text{TD}}*{l}\right)\right), \]

其中\(\uparrow/\downarrow\)表示上/下采样,\(\oplus\)为级联或逐元素加法,\(\phi(\cdot)\)为激活与归一化;这种双向融合能在\(P_3\)(步幅8)层保留更多细粒度边缘,有利于远距小灯的召回。若配置轻量 Transformer(可选)增强长程依赖,则单头缩放点积注意力为

\[\text{Attn}(\mathbf{Q},\mathbf{K},\mathbf{V})=\text{Softmax}!\left(\frac{\mathbf{Q}\mathbf{K}^{\top}}{\sqrt{d_k}}\right)\mathbf{V}, \]

其中\(\mathbf{Q},\mathbf{K},\mathbf{V}\)由特征线性映射得到,\(d_k\)为维度常数;在夜间眩光或密集遮挡下,该模块有助于抑制背景高亮带来的误匹配。解耦头以两条浅层分支分别最优化分类与定位分布,形式化为

\[\hat{\mathbf{p}}=\sigma!\left(f_{\theta_c}(\mathbf{F}*l)\right),\qquad \hat{\mathbf{b}}=g*{\theta_r}(\mathbf{F}*l), \]

其中\(f*{\theta_c}\)\(g_{\theta_r}\)分别为分类与回归子网络,\(\sigma\)为 Sigmoid;这种解耦优化能减少梯度冲突并稳定小目标框的回归。

损失与任务建模方面,边界回归采用 IoU 家族的改进损失,缓解无交并与长宽比退化。设预测框与真值框为\(B_p,B_g\),其 IoU 为\(\text{IoU}=\frac{|B_p\cap B_g|}{|B_p\cup B_g|}\),则 GIoU/CIoU/EIoU 可写作

\[\mathcal{L}*{\text{GIoU}}=1-\text{IoU}+\frac{|C\setminus(B_p\cup B_g)|}{|C|}, \]

\[\mathcal{L}*{\text{CIoU}}=1-\text{IoU}+\frac{\rho^2(\mathbf{c}*p,\mathbf{c}*g)}{d^2}+\alpha v,\quad v=\frac{4}{\pi^2}\left(\arctan\frac{w_g}{h_g}-\arctan\frac{w_p}{h_p}\right)^2, \]

\[\mathcal{L}*{\text{EIoU}}=(1-\text{IoU})+\frac{(\Delta x)^2+(\Delta y)^2}{d^2}+\frac{(\Delta w)^2}{w_g^2}+\frac{(\Delta h)^2}{h_g^2}, \]

其中\(C\)为最小包围框,\(\rho\)为中心距离,\(d\)为对角线长度,\(\alpha\)为权衡项;EIoU 通过分解宽高项提升收敛速度,更契合远距小目标的窄框回归。分类端采用带标签平滑的 BCE/Focal 组合以抑制长尾:对 one-hot 标签\(y\in{0,1}\)平滑为\(y^\prime=(1-\varepsilon)y+\varepsilon/K\),则

\[\mathcal{L}*{\text{BCE}}=-!\sum_{k=1}^K!\left[y_k^\prime\log \hat{p}*k+(1-y_k^\prime)\log (1-\hat{p}*k)\right],\quad \mathcal{L}*{\text{Focal}}=-(1-\hat{p}*t)^\gamma \log \hat{p}*t, \]

其中\(K\)为类别数、\(\hat{p}*t\)为正类概率、\(\gamma\)为调制因子。多任务总损失为

\[\mathcal{L}=\lambda*{\text{box}}\mathcal{L}*{{\text{G},\text{C},\text{E}}\text{IoU}}+\lambda*{\text{cls}}\mathcal{L}*{\text{BCE/Focal}}+\lambda_{\text{obj}}\mathcal{L}*{\text{obj}}, \]

各权重\(\lambda*\cdot\)依据验证集性能网格搜索设定;在样本匹配上默认动态标签分配(SimOTA/TAL 一类),与 Anchor-free 网格协同以提升正负样本质量。若启用知识蒸馏,教师与学生在同位置特征上加入 KL/IoU 蒸馏项,可进一步稳定轻量模型的颜色判别。

训练与正则化要点围绕“小目标、强光照变化、实时性”展开。首先采用多尺度训练与步幅自适应:在\({640,704,768}\)等尺寸中随机取值,确保\(P_3\)层覆盖足够像素;配合 EMA、BatchNorm 动量微调与轻量混合精度(AMP)提升吞吐。学习率使用余弦退火,其更新为

\[\eta_t=\eta_{\min}+\frac{1}{2}(\eta_{\max}-\eta_{\min})\left(1+\cos\frac{\pi t}{T}\right), \]

其中\(T\)为总迭代;前若干轮采用线性 warm-up 抑制早期震荡。推理侧默认阈值\(\text{conf}\in[0.25,0.5]\)\(\text{IoU}_{\text{NMS}}\in[0.5,0.7]\),并在视频流上启用时间一致性(如相邻帧 IoU/中心距离门控与置信度时序平滑),缓解红尾灯/反光体造成的闪烁误检;当选用 NMS-free 端到端配置时,后处理时延进一步降低,适合 Flask-SocketIO 的同步双帧实时推送。整体设计既保证了浏览器端双画面对比的稳定帧率,又在夜间与远距场景下提供更稳健的定位与判别,为第5章的大规模对比与第6章的在线演示提供可靠支撑。


5. 实验结果与分析

本节基于提供的数据与图(混淆矩阵、F1–Confidence、PR 曲线、训练曲线),在同一硬件 RTX 3070 Laptop 8GB、统一评测流程下,对 YOLOv5–YOLOv12 两组规格(n 与 s)进行对比。
在这里插入图片描述

总体上,所有模型在本数据上 mAP50≈0.97 水平,差异更多体现在延迟与后处理以及高召回端的稳定性:n 组中 YOLOv6n/YOLOv8n 以≈6.8–6.9 ms 的推理时间获得 0.9718/0.9761 的 mAP50,速度–精度均衡;YOLOv9t 的 F1=0.9521 为 n 组最高但推理 16.5 ms,适合延迟不敏感场景;YOLOv10nPostTime=0.63 ms 显著低于同组,体现 NMS-free 思路的时延优势。
在这里插入图片描述

s 组中 YOLOv7 以 mAP50=0.9789、F1=0.9515 达到该组最好精度,但推理 23.6 ms;YOLOv8s 则以 7.66 ms 的最快推理拿到 0.9755 mAP50,工程折中最佳。
在这里插入图片描述

结合 F1–Confidence 曲线,“全类最佳 F1≈0.95 出现在 conf≈0.40” 的阈值附近;混淆矩阵显示对 background 的误判主要来自“红灯-尾灯/刹车灯”相似外观,这与夜间/逆光车流密集场景一致;
在这里插入图片描述

PR 曲线在高召回端(R>0.9)略有分化,反映了模型在极小目标与眩光样本上的稳健性差异;训练曲线呈现平稳收敛、无明显过拟合迹象。
在这里插入图片描述

表 1 统一对比(关键指标)

Model Params(M) FLOPs(G) InfTime(ms) PostTime(ms) F1 mAP50 mAP50-95
YOLOv5nu 2.6 7.7 7.73 1.31 0.9447 0.9694 0.7436
YOLOv6n 4.3 11.1 6.78 1.39 0.9471 0.9718 0.7725
YOLOv7-tiny 6.2 13.8 14.74 4.06 0.9490 0.9722 0.7252
YOLOv8n 3.2 8.7 6.83 1.39 0.9466 0.9761 0.7567
YOLOv9t 2.0 7.7 16.51 1.29 0.9521 0.9732 0.7534
YOLOv10n 2.3 6.7 11.24 0.63 0.9404 0.9696 0.7562
YOLOv11n 2.6 6.5 9.44 1.42 0.9433 0.9754 0.7515
YOLOv12n 2.6 6.5 12.47 1.37 0.9432 0.9740 0.7579
YOLOv5su 9.1 24.0 8.45 1.51 0.9430 0.9743 0.7576
YOLOv6s 17.2 44.2 8.59 1.45 0.9440 0.9705 0.7863
YOLOv7 36.9 104.7 23.62 3.46 0.9515 0.9789 0.7685
YOLOv8s 11.2 28.6 7.66 1.42 0.9435 0.9755 0.7650
YOLOv9s 7.2 26.7 18.66 1.39 0.9458 0.9727 0.7587
YOLOv10s 7.2 21.6 11.38 0.60 0.9456 0.9737 0.7777
YOLOv11s 9.4 21.5 9.74 1.36 0.9472 0.9748 0.7737
YOLOv12s 9.3 21.4 13.23 1.42 0.9451 0.9762 0.7755

图 5-1 双条形图(n 组:F1 与 mAP50)
在这里插入图片描述

图 5-2 双条形图(s 组:F1 与 mAP50
在这里插入图片描述

结果解读与工程建议(结合图与表)
首先,速度–精度:若前端 Web 端到端预算 ≤10 ms/帧,n 组的 YOLOv6n/YOLOv8n 是首选;若追求更高稳定 F1,可考虑 YOLOv9t,但需接受 16.5 ms 的时延。s 组里,YOLOv8s 以最低推理时延配合 0.9755 mAP50,适合“实时演示 + 浏览器摄像头”场景;若算力宽裕且以极致精度为先,YOLOv7 仍是可靠上限。其次,后处理:YOLOv10(n/s)在 PostTime≈0.6 ms 的表现验证了端到端 NMS-free 的价值,适合 SocketIO 的同步双帧推送链路。再次,阈值与稳健性:F1–Confidence 曲线表明 conf≈0.40 为全局较优;在夜间或红尾灯密度高路段,可将 conf 提升到 0.45–0.50 并启用时间一致性平滑(相邻帧 IoU/中心距离门控),能明显抑制“红灯↔背景”的闪烁误检。最后,长尾与极小目标:黄灯样本占比偏低,建议在训练端结合类别重采样Focal/BCE 组合损失;对远距路口,提升输入到 704/768 并加密 P3 层监督通常能带来更稳的高召回,不显著拉高延迟。

推荐配置
在线演示/浏览器摄像头:YOLOv8n(或 6n)+ conf=0.40、IoU-NMS=0.60、时间平滑开启、输入 640;
路侧盒/稳定高精度:YOLOv7(或 12s)+ INT8/FP16 TensorRT、输入 704、曝光鲁棒增广打开;
端到端低时延:YOLOv10n/s(NMS-free),配合批量导出+SQLite 追溯,保障双画面对比时的帧同步与一致性。


6. 系统设计与实现

6.1 系统设计思路

系统采用分层解耦架构:表现与交互层(浏览器端)负责多源输入与可视化,业务与会话管理层(Flask)负责路由、权限与参数同步,推理与任务调度层(SocketIO 后端协程)承载预处理、YOLO 推理与后处理,数据持久化层(SQLite/文件存储)沉淀检测记录、导出与模型版本。多源输入(图片/视频/摄像头)经统一预处理进入推理通道,输出框与类别经后处理与统计(阈值过滤、时序一致性、PR/F1 在线采样)后,按双帧同步协议推送到前端“原图/结果”双画面,用户在浏览器侧调节 Conf/IoU、类别筛选或逐帧控制,参数变更以事件广播回写后端,形成实时闭环。

为保障实时性与一致性,后端采用同步双帧与时间戳对齐策略:视频与摄像头流进入环形缓冲区,主线程只在“原帧/结果帧”成对可用时向前端推送,避免画面撕裂;参数的修改(阈值、类别、帧步进)通过 Socket 频道进行会话隔离广播合并,在高并发页面下保持同一会话内的状态一致。工程扩展性体现在权重热切换(上传权重触发模型管理器热重载并刷新类别映射)、导出集中管理(CSV 与带框媒体统一归档,支持按文件名高亮与批量下载)、数据库自动迁移(结构变更自动升级,同时保留历史版本以便审计)。

数据与日志链路与推理通道并行:每帧的检测结果、系统版本、模型哈希与用户会话号一并写入 SQLite,并在导出时生成可追溯的“结果—来源—参数”三元组;异常情况(帧丢失、推理超时、导出失败)进入统一监控与告警接口。上述设计确保在不改变算法与评测逻辑的前提下,以Flask + Flask-SocketIO/HTML/CSS/JS构建稳定的 Web 网页界面与端到端数据闭环。

图 6-1 系统流程图
图注:系统自初始化到多源输入,完成预处理、推理与界面联动,并在交互控制中形成闭环。
在这里插入图片描述

图 6-2 系统设计框图
图注:体现浏览器端、业务与会话层、推理与任务调度层、数据层的模块边界与数据流向,模型权重管理与监控接口与各层松耦合。

在这里插入图片描述

6.2 登录与账户管理

在这里插入图片描述

登录流程以“最小暴露、可追溯”为原则:用户打开登录界面后可选择登录、注册或一次性跳过;注册将账户信息以口令哈希写入数据库并回到登录页,登录校验成功后载入个性化配置与历史记录进入主界面;在主界面可修改头像/密码并实时写回数据库,所有检测结果与导出均与会话绑定;若选择跳过则创建仅在当前窗口生效的临时会话,但不开放跨会话导出合并;注销或切换账号会清理令牌与本地配置缓存,从而与主检测流程实现干净衔接与权限隔离。


代码下载链接

        如果您希望获取博客中提及的完整资源包,包含测试图片、视频、Python文件(*.py)、网页配置文件、训练数据集、代码及界面设计等,可访问博主在面包多平台的上传内容。相关的博客和视频资料提供了所有必要文件的下载链接,以便一键运行。完整资源的预览如下图所示:

在这里插入图片描述

在这里插入图片描述

        资源包中涵盖了你需要的训练测试数据集、训练测试代码、UI界面代码等完整资源,完整项目文件的下载链接可在Gitee项目中找到➷➷➷

完整项目下载、论文word范文下载与安装文档https://deeppython.feishu.cn/wiki/RG5IwXxsxiO52GkbpgychQN7ncc

讲解视频地址https://www.bilibili.com/video/BV1WwD9BEEZB/

完整安装运行教程:

        这个项目的运行需要用到Anaconda和Pycharm两个软件,下载到资源代码后,您可以按照以下链接提供的详细安装教程操作即可运行成功,如仍有运行问题可私信博主解决:

  1. Pycharm和Anaconda的安装教程https://deepcode.blog.csdn.net/article/details/136639378

        软件安装好后需要为本项目新建Python环境、安装依赖库,并在Pycharm中设置环境,这几步采用下面的教程可选在线安装(pip install直接在线下载包):

  1. Python环境配置教程https://deepcode.blog.csdn.net/article/details/136639396

7. 结论与未来工作

本文围绕“交通信号灯识别的实时检测平台”,在统一的数据流程与评测协议下完成了 YOLOv5–YOLOv12 的系统化对比与在线可视化实现。实验表明,在所用数据集与 RTX 3070 Laptop 8GB 环境中,各模型整体 mAP50≈0.97、F1≈0.95,其中 YOLOv8s 以约 7.66 ms 的推理时延取得 0.9755 的 mAP50,适合 Web 端实时演示;YOLOv10(n/s) 的极低后处理时延验证了端到端 NMS-free 路线的工程价值;夜间与远距场景的误检主要集中在“红灯—尾灯/反光”混淆,通过时序一致性与适度提高置信度阈值可得到有效抑制。平台侧,Flask + Flask-SocketIO/HTML/CSS/JS 的双画面对比、阈值/类别联动、CSV 与带框结果一键导出、SQLite 可追溯存证,形成“训练—推理—评测—导出”的闭环;权重热切换与类别自动刷新让多模型对比与上线验证更顺滑。综合来看,该方案对其他小目标与强光照变化场景(如路侧信号器、指示灯、电子器件缺陷点)同样具有良好的可迁移性与工程复用价值。

面向未来,模型侧将继续沿 更轻量化与端到端一致性 推进:结合结构蒸馏与 INT8/FP8 量化、尺度自适应监督与更强的时空建模(短时追踪/时序注意力),在不牺牲召回的前提下进一步压缩延迟与抖动;探索多模态融合(相位/配时表、车道/地图矢量、光照传感)以缓解红尾灯与眩光干扰。系统侧计划推进 Docker 化与分布式任务队列,引入 WebRTC 超低时延推流、角色权限与审计i18n 与多租户 支持,并扩展 WebGPU/ONNX Runtime Web 的边端协同推理,使浏览器端具备轻量算力与离线模式。数据侧将建设 主动学习与持续标注 管线,落地数据治理、漂移监测与难例自动采样,配套统一指标看板与告警规则,形成“线上反馈—离线再训练—灰度回归”的闭环。最终目标是把本文的平台扩展为面向道路与工业小目标的通用实时检测与可视化基座,在保持可解释与可追溯的同时,实现开箱即用、可持续演进与低成本部署。


参考文献(GB/T 7714)

[1] Behrendt K, Novak L, Botros R. A Deep Learning Approach to Traffic Lights: Detection, Tracking, and Classification for Autonomous Vehicles[C]//ICRA. 2017.
[2] Yu F, Chen H, Wang X, et al. BDD100K: A Diverse Driving Dataset for Heterogeneous Multitask Learning[C]//CVPR. 2020.
[3] Microsoft Open Source Blog. ONNX Runtime Web unleashes generative AI in the browser using WebGPU[EB/OL]. 2024.
[4] NVIDIA. TensorRT Developer Guide: Quantization and Precision[EB/OL]. 2024–2025.
[5] Lin T-Y, Goyal P, Girshick R, et al. Focal Loss for Dense Object Detection[C]//ICCV. 2017.
[6] Tan M, Pang R, Le Q V. EfficientDet: Scalable and Efficient Object Detection[C]//CVPR. 2020.
[7] Tian Z, Shen C, Chen H, He T. FCOS: Fully Convolutional One-Stage Object Detection[C]//ICCV. 2019.
[8] Zhou X, Wang D, Krähenbühl P. Objects as Points[EB/OL]. arXiv:1904.07850, 2019.
[9] Ge Z, Liu S, Wang F, et al. YOLOX: Exceeding YOLO Series in 2021[EB/OL]. arXiv:2107.08430, 2021.
[10] Wang C-Y, Bochkovskiy A, Liao H-Y M. YOLOv7: Trainable Bag-of-Freebies Sets New State of the Art for Real-Time Object Detectors[C]//CVPR Workshops. 2023.
[11] Wang C-Y, Yeh I-H, Liao H-Y M. YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information[C]//ECCV. 2024.
[12] Wang A, Chen H, Liu L, et al. YOLOv10: Real-Time End-to-End Object Detection[EB/OL]. arXiv:2405.14458, 2024.
[13] Ultralytics. YOLO11 Docs: Tasks and Usage[EB/OL]. 2024.
[14] Carion N, Massa F, Synnaeve G, et al. End-to-End Object Detection with Transformers[C]//ECCV. 2020.
[15] Lv W, Zhao Y, Xu S, et al. RT-DETR: DETRs Beat YOLOs on Real-time Object Detection[C]//CVPR. 2024.
[16] Xu S, Wang X, Lv W, et al. PP-YOLOE: An Evolved Version of YOLO[EB/OL]. arXiv:2203.16250, 2022.
[17] Rezatofighi H, Tsoi N, Gwak J, et al. Generalized IoU: A Metric and A Loss for Bounding Box Regression[C]//CVPR. 2019.
[18] Zheng Z, Wang P, Liu W, et al. Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression[C]//AAAI. 2020.
[19] 赵恩兴, 王超. 基于YOLOv8的交通信号灯识别[J]. 人工智能与机器人研究, 2023.
[20] (示例)计算机工程与应用编辑部. 改进YOLOX-S实时多尺度交通标志检测算法[J]. 计算机工程与应用, 2023.

说明:以上文内引文已按首次出现顺序编号并以“[n]”格式标注,同一句只保留单条引文;若你有更精确的中文文献信息(作者/卷期/页码),可直接替换第[20]条以提升可追溯性。

posted @ 2026-04-23 13:19  逗逗班学Python  阅读(13)  评论(0)    收藏  举报