摘要

本文面向“车型识别与计数”场景,构建基于 Flask + Flask-SocketIO/HTML/CSS/JS 的实时检测平台,支持 YOLOv5–YOLOv12(共 8 种)模型一键切换,用于车流中车型类别识别、目标跟踪与多路计数;平台提供Web 网页界面(含实时演示视图)、图片/视频/浏览器摄像头输入、左右等宽的双画面对比(原图/推理)、进度控制(视频暂停/继续/停止/拖拽)、CSV 导出(逐帧与聚合)、带框结果一键下载(图像与视频)、SQLite 入库(检测结果与审计日志)、登录/注册(可跳过)模型选择/权重上传等完整功能。方法层面,统一实现 YOLO 家族在车辆数据集上的训练与推理,比较 mAPF1PR 曲线训练曲线,并在同一工程中复现实验可视化与可复现实验记录;平台还提供计数线/区域配置、重识别去重与拥堵鲁棒性设置。系统强调端到端易用性与工程化细节:支持断点续传与批量评测、ONNX/TensorRT 推理加速接口、日志与异常恢复;默认提供轻量模型用于边缘侧部署,后台自动管理权重与类别映射,同步刷新前端筛选器。文末提供完整工程与数据集下载链接

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


1. 网页功能与效果

(1)登录注册:登录页提供登录、注册与“跳过体验”三种入口,会话在当前浏览器标签内生效并可自动续期;凭证采用口令哈希与最小权限策略管理。完成认证后进入主界面,可随时注销或切换账号;“一次性跳过”仅对当次会话有效,兼顾试用与安全。
在这里插入图片描述

(2)功能概况:平台围绕车型识别与计数提供图片/视频/摄像头三类输入、左右等宽双画面对比、计数线与区域配置、CSV 导出与带框结果一键下载。支持进度控制、Conf/IoU 调节与类别筛选,检测结果与日志写入 SQLite 并可追溯;统一评测 mAP、F1、PR 与训练曲线,便于模型对比与复现。
在这里插入图片描述

(3)视频检测:播放器支持同步双帧预览(原始/推理)、进度条拖拽、暂停/继续/停止与逐帧跳转,缓冲区可一键导出 MP4。推理过程可动态调节阈值与类别过滤,并在底部“检测记录”跨页共享,便于定位误检漏检与复盘。
在这里插入图片描述

(4)更换模型:上传权重即可切换至当前模型,类别列表与前端筛选器同步刷新;同时维护跨平台路径规范与数据库自动迁移,保障连续可用。支持 YOLOv5–YOLOv12 的快速切换与性能对比,历史权重集中管理并可回滚。
在这里插入图片描述

(5)概览界面:首页展示关键指标与入口,包括近期开启的任务、车型计数统计、吞吐与延迟曲线、异常告警与最近导出。侧栏提供“图片检测/视频检测/摄像头检测/模型选择/导出中心”快速导航,CSV 视图支持按文件名与时间高亮定位,提升审计与协作效率。
在这里插入图片描述


2. 绪论

2.1 研究背景与意义

面向城市路口、高速卡口与园区出入口的智能交通(ITS)应用,车型识别与计数既服务于交通组织优化与收费稽核,也关联到拥堵预警与安全管理等精细化治理需求,因此需要在多源视频流上实现稳定、低时延、可追溯的在线检测与统计能力 1。在工程侧,浏览器端依托 getUserMedia 等能力即可直接采集摄像头流并送入后端推理通道,结合 Flask-SocketIO 的双向长连接可实现毫秒级事件分发与可视化闭环,适配前端参数同步、双画面对比与导出回放等交互场景 2。随着 YOLO 系列迭代,检测器在轻量化、训练范式与部署接口上的持续演进,为“高吞吐 + 低时延 + 易部署”的交通视频在线处理奠定了方法与生态基础 3。(Flask-SocketIO)

2.2 国内外研究现状

针对车流场景的研究普遍面临细粒度车型相似度高、密集遮挡与夜间反光等挑战,这些因素导致长尾类别学习不足与再识别计数去重困难,工程工作多通过改进骨干与跟踪计数模块在弱算力平台上获得折中效果 19。中文综述指出,自动驾驶与交通监控中的目标检测需在精度与实时性间平衡,并在车辆、行人、交通标志等多类目标上实现统一鲁棒性,为本文所述的多任务前端交互与后端推理协同提出了明确约束 20。(SZU Journal)

在算法范式上,两阶段方法以 Faster R-CNN 为代表,借助 RPN 提升候选召回与最终精度,但整体延迟较高、难以满足强实时约束 18;单阶段 Anchor-based 方法中,RetinaNet 通过 Focal Loss 缓解前景-背景极度不平衡,从而在保持速度的同时显著提升精度 14;Anchor-free 思路强调以像素/关键点直接回归框,FCOS 以逐像素预测简化锚框匹配,CenterNet 则以“以点表物”在 COCO 上取得 28.1% AP@142 FPS 的速度-精度权衡,适合尺度跨度与遮挡显著的车流场景 15。(CVF Open Access)

YOLO 家族演进提供了面向工业部署的主流基线:YOLOv5 完成工程化与生态构建,成为研究与生产常用起点 3;YOLOv6 面向工业场景重构骨干与标注分配,报告在 T4 上获得数百 FPS 的吞吐并提供量化与部署策略 4;YOLOv7 通过“可训练的免费增强”与头颈部优化在实时区间刷新精度-速度边界 5;YOLOX 采用 Anchor-free + 解耦头 + SimOTA,在 V100 上实现 50.0 AP@68.9 FPS 的标杆结果 6;YOLOv9 提出 PGI 与 GELAN 以改善梯度与结构信息流 7;YOLOv10 通过一致性双重分配实现 NMS-free 训练,在相近 AP 下较 RT-DETR-R18 推理快 1.8× 8;Ultralytics YOLO11 在框架层优化训练与推理易用性 9;YOLOv12 引入注意力中心化设计,在保持实时性的同时进一步提升难样本检测能力并给出公开文档与论文说明 10。(Ultralytics Docs)

Transformer 检测器方面,DETR 以集合预测与匈牙利匹配实现端到端建模但早期训练与延迟受限,而 RT-DETR 在 T4 上达到百帧级实时并报告在多尺度与轻量化配置下超过同代 YOLO 小模型的速度-精度表现,提供了 YOLO 之外 NMS-free 的可行路径 13;同时,SSD 与 EfficientDet 分别以多尺度默认框与 BiFPN+复合缩放在工业部署中保持良好可移植性与效率,为交通场景提供了替代实现基线 18。(arXiv)

在部署与系统层面,Ultralytics 提供从 PyTorch 到 ONNX/TensorRT 的导出与推理模式说明,支撑边缘/云端的混合部署;结合 Flask-SocketIO 的会话与事件模型,可将推理结果同步至浏览器端并与参数面板联动,形成“采集-推理-渲染-导出”的闭环工作流 21。(Ultralytics Docs)

表1 方法对比(代表性指标与适用难点)

方法 范式/家族 数据集 关键改进 优势与局限 代表指标(示例) 适用难点
Faster R-CNN 两阶段 COCO RPN 共享特征 精度高、延迟大 VGG-16 约 5 FPS(论文) 细粒度区分 18
RetinaNet 单阶段/Anchor-based COCO Focal Loss 缓解类不平衡、训练稳定 官方报告超越两阶段精度 类间不平衡 14
FCOS 单阶段/Anchor-free COCO 像素级预测 少超参、匹配简单 论文实证优良权衡 尺度跨度大 15
CenterNet 单阶段/Anchor-free COCO/KITTI 以点表物 简洁、速度快 28.1% AP@142 FPS 密集遮挡 16
PP-YOLOE YOLO系 COCO 解耦头/高效骨干 工业友好、部署便捷 51.4 mAP@78.1 FPS(V100) 工程落地 17
YOLOX Anchor-free YOLO COCO 解耦头+SimOTA 高效高精度 50.0 AP@68.9 FPS(V100) 实时统计 6
YOLOv10 YOLO系 COCO 一致性双分配、NMS-free 端到端低时延 S 比 RT-DETR-R18 快 1.8× 低时延 8
RT-DETR Transformer/端到端 COCO 高效混合编码器 无 NMS、端到端 R50 53.1 AP / T4 108 FPS 复杂背景 12

注:表中指标来自各论文/官方页面之公开结果,仅作横向参考,最终以本文统一数据与硬件条件下的复现实验为准。

2.3 要解决的问题及其方案

(1)检测/计数的准确性与实时性:车型细粒度区分、夜间与逆光反光、密集遮挡导致误检/漏检与计数漂移,需要在轻量化前提下保证 mAP 与 F1 的下限 19
(2)模型环境适应与泛化:跨路口/跨天气/跨设备分布偏移显著,长尾车型与小目标在不同摄像机视角下表现不稳定 20
(3)网页端交互的直观性与完整性:要求多源输入、双画面对比、视频进度控制与参数联动,并保持端到端低时延可视化 1
(4)数据处理效率与安全性:需要统一入库、导出、溯源与会话管理,确保统计口径一致与最小权限安全控制 22

对应方案为:
(1)以 YOLOv12 为核心模型,联合 YOLOv5/6/7/9/10/11 做横向对比;使用难例挖掘、CIoU/GIoU 与锚点自由解耦头以提升密集遮挡与小目标表现 11
(2)基于 Flask-SocketIO 实现帧级事件广播与参数同步,前端采用 MediaDevices/getUserMedia 捕获摄像头流,形成“采集-推理-渲染”闭环 1
(3)打通 PyTorch→ONNX/TensorRT 导出链路并启用 FP16/INT8,结合批量评测脚本统一 mAP/F1/PR 曲线、训练曲线与延迟统计 21
(4)以 SQLite 记录检测结果、计数线配置与导出日志,结合登录/注册/跳过体验的会话策略与口令哈希,保障复盘与审计;SocketIO 端事件增加访问控制 22。(arXiv)

2.4 博文贡献与组织结构

(1)综合文献综述:系统梳理 Anchor-based、Anchor-free、两阶段与 Transformer 检测器在车流场景的适配性与权衡,并对 YOLOv5–YOLOv12 的技术演进与部署趋势进行归纳 1411
(2)模型选择与优化:给出 YOLOv12 主线与多模型对比的训练/推理细节,覆盖阈值策略、损失设计与部署压缩实践,聚焦“毫秒级交互”的工程可达性 8
(3)美观友好的网页设计:实现图片/视频/摄像头三类输入、双画面对比、进度控制与参数联动,统一导出与入库口径,支持历史复盘与协作。
(4)算法效果对比分析:在统一数据与硬件上对比 mAP、F1、PR/训练曲线与端到端延迟;提供可复现实验脚本与示例。
(5)完整数据与代码资源:提供开源工程与示例数据,便于二次开发与教学复用。文后章节安排:第3章数据集处理,第4章模型原理与设计,第5章实验结果与分析,第6章系统设计与实现,第7章结论与未来工作。(arXiv)


3. 数据集处理

本研究使用的车辆目标检测数据集共计 3569 张图像,覆盖七类目标:tiny-car(小型车)、mid-car(中型车)、big-car(大型车)、small-truck(小型卡车)、big-truck(大型卡车)、oil-truck(油罐车)、special-car(特种车)。标注采用 YOLO 格式,即每个标注行为“class x_center y_center width height”,所有坐标与尺寸均为相对于图像宽高的 [0,1] 归一化值;从提供的散点与成对分布图可见,目标中心主要集中在画幅中部,宽高呈偏宽且高的分布,符合交通场景中车辆在画面中部、占比较大的成像特征。类别柱状图显示 small-truck 数量最多、special-car 最少,存在轻度长尾;随机马赛克预览与标注叠加图表明数据来源与拍摄条件多样,包含室外自然光、厂区与道路等背景,这对模型的域泛化有正向作用。
在这里插入图片描述

数据划分为 2775/412/382(训练/验证/测试),约占 77.8%/11.5%/10.7%,并在工程配置中固定随机种子(默认 42)以保证可复现。训练阶段统一采用等比 letterbox 预处理、颜色空间扰动(HSV/亮度对比度微调)与 Mosaic/MixUp 增强以缓解小样本与遮挡问题;针对夜间强反光与尺度差异,通过随机仿射、随机裁切与尺度抖动提升鲁棒性,同时开启标签检查(去除极小框与越界框)、重复图去重与类别映射校验,确保标注质量与中英文类名一致(已按 Chinese_name 完成双语对照)。验证与测试阶段仅保留尺度对齐与归一化,不使用增强,指标口径与平台前端保持一致,后续所有 mAP、F1、PR 曲线与混淆矩阵均以此划分与口径为准。

Chinese_name = {'tiny-car': "小型车", 'mid-car': "中型车", 'big-car': "大型车", 'small-truck': "小型卡车",
                'big-truck': "大型卡车", 'oil-truck': "油罐车", 'special-car': "特种车"}

        
在这里插入图片描述


4. 模型原理与设计

本系统以 YOLOv12 风格的单阶段、Anchor-free、解耦头检测器为主线,在“车型识别与计数”场景中优先满足低时延与可部署性。整体流程为:输入帧经轻量骨干网络提取多尺度语义特征,颈部以自顶向下/自底向上融合形成 P 3 , P 4 , P 5 {P_3,P_4,P_5} P3,P4,P5 的金字塔表征,再交由解耦检测头分别完成分类、边界框回归与目标存在性估计;平台前端的计数线/计数区在后处理阶段与跟踪(或帧内去重逻辑)结合,以时间维度统计过线事件。Anchor-free 头直接在各尺度网格点上预测框参数 b ^ = ( x ^ , y ^ , w ^ , h ^ ) \hat{\mathbf{b}}=(\hat{x},\hat{y},\hat{w},\hat{h}) b^=(x^,y^,w^,h^) 与类别分布 p ^ \hat{\mathbf{p}} p^,避免锚框超参与匹配开销,适配尺度跨度大、密集遮挡、类间相似的车流视频。

结构上,骨干以“可重参数化卷积(Rep)+ 轻量注意力”构成主干单元,训练时多分支、推理时折叠为单分支卷积以降低时延;颈部采用 FPN+PAN 融合,必要时插入门控或通道注意力以强化显著目标。以通道注意力为例,给出简化表述:对特征 F ∈ R C × H × W \mathbf{F}\in\mathbb{R}^{C\times H\times W} FRC×H×W,先做全局池化 z = G A P ( F ) ∈ R C \mathbf{z}=\mathrm{GAP}(\mathbf{F})\in\mathbb{R}^{C} z=GAP(F)RC,经两层感知器产生权重 α = σ ( W 2 δ ( W 1 z ) ) \boldsymbol{\alpha}=\sigma(\mathbf{W}_2\delta(\mathbf{W}_1\mathbf{z})) α=σ(W2δ(W1z)),得到加权特征 F ~ = α ⊙ F \tilde{\mathbf{F}}=\boldsymbol{\alpha}\odot\mathbf{F} F~=αF;其中 σ \sigma σ 为 Sigmoid, δ \delta δ 为 ReLU, ⊙ \odot 为逐通道乘法。解耦头包含三个分支:分类分支输出 p ^ ∈ [ 0 , 1 ] K \hat{\mathbf{p}}\in[0,1]^K p^[0,1]K,回归分支输出 b ^ \hat{\mathbf{b}} b^,对象性分支输出 o ^ ∈ [ 0 , 1 ] \hat{o}\in[0,1] o^[0,1];训练期采用任务对齐的正负样本分配(如点到框的距离与分类置信的加权排序)以提升对小车/大车与卡车边界模糊样本的鲁棒性。

损失函数与任务建模遵循“回归-分类-对象性”解耦思想。边界框采用 IoU 家族损失,示例如 CIoU:
L ∗ CIoU = 1 − I o U ( b , b ^ ) + ρ 2 ! ( c , c ^ ) d 2 + α v , \mathcal{L}*{\text{CIoU}} = 1-\mathrm{IoU}(\mathbf{b},\hat{\mathbf{b}}) + \frac{\rho^2!\left(\mathbf{c},\hat{\mathbf{c}}\right)}{d^2} + \alpha v, LCIoU=1IoU(b,b^)+d2ρ2!(c,c^)+αv,
其中 I o U \mathrm{IoU} IoU 为预测框与真值框的交并比, ρ ( ⋅ ) \rho(\cdot) ρ() 是两框中心点的欧氏距离, d d d 为外接框对角线长度, v v v 衡量长宽比一致性, α \alpha α 为平衡系数;分类使用 Focal Loss 抑制易样本:
L ∗ FL = − ∑ k = 1 K , α k ( 1 − p ^ ∗ k ) γ , y k log ⁡ ( p ^ ∗ k ) , \mathcal{L}*{\text{FL}}=-\sum_{k=1}^{K}, \alpha_k(1-\hat{p}*k)^\gamma,y_k\log(\hat{p}*k), LFL=k=1K,αk(1p^k)γ,yklog(p^k),
其中 y k ∈ 0 , 1 y_k\in{0,1} yk0,1 为第 k k k 类标签、 p ^ ∗ k \hat{p}*k p^k 为其预测概率, α k \alpha_k αk γ \gamma γ 控制类不均衡与难例聚焦;对象性分支采用二元交叉熵 L ∗ obj \mathcal{L}*{\text{obj}} Lobj。总损失为
L = λ ∗ box L ∗ CIoU + λ cls L ∗ FL + λ ∗ obj L ∗ obj , \mathcal{L}=\lambda*{\text{box}}\mathcal{L}*{\text{CIoU}}+\lambda_{\text{cls}}\mathcal{L}*{\text{FL}}+\lambda*{\text{obj}}\mathcal{L}*{\text{obj}}, L=λboxLCIoU+λclsLFL+λobjLobj,
其中 λ ∗ ∗ \lambda*{*} λ 为各项权重,训练中对小目标与长尾类别可适度上调 λ box \lambda_{\text{box}} λbox 与难例采样比,以缓解“special-car/油罐车”等稀有类的欠拟合。

训练与推理策略面向“实时 + 稳定”。训练期使用 EMA 权重跟踪、余弦退火或 One-Cycle 学习率、BN 冻结与混合精度以提升收敛与吞吐;针对强反光/夜间噪声,在数据增强中引入色彩抖动与随机对比度并限制马赛克强度,避免目标结构破坏。推理期采用 阈值/IoU 参数可视化联动与两套后处理:一是经典 NMS,二是在特定模型(如 NMS-free 训练)上启用“拓扑或解码一致性抑制”以降低重复框;最终输出与平台的“计数线/计数区”联动完成过线统计与 CSV/SQLite 入库。网络整体架构图如下图所示:
在这里插入图片描述


5. 实验结果与分析

本节在统一的数据划分与评测口径下,对 YOLOv5nu、YOLOv6n、YOLOv7-tiny、YOLOv8n、YOLOv9t、YOLOv10n、YOLOv11n、YOLOv12nYOLOv5su、YOLOv6s、YOLOv7、YOLOv8s、YOLOv9s、YOLOv10s、YOLOv11s、YOLOv12s 进行端到端对比;硬件为 RTX 3070 Laptop 8GB,指标包含 Precision / Recall / F1、mAP@0.5 / mAP@0.5:0.95 以及预处理/推理/后处理时延(ms)。
在这里插入图片描述

从整体精度看,各模型在本数据集上均达到很高水准:n 系列中 YOLOv12n 的 mAP@0.5 最高(0.994),但 mAP@0.5:0.95 的“综合难度指标”由 YOLOv9t 领先(0.882);s 系列中 YOLOv10s 拿到最高的 mAP@0.5:0.95(0.885),而 YOLOv9s 取得最高 F1(0.984)。

在这里插入图片描述

训练曲线与 PR/F1-Confidence 曲线显示收敛平稳,F1 在 Conf≈0.70 达到全类最佳(all classes ≈0.98),随后在阈值过高时略有下降;据此,前端默认阈值建议设为 0.70±0.05,NMS IoU 建议 0.50–0.60,以兼顾小车/卡车的召回与抑制重复框。
在这里插入图片描述

从时延与算力占用看,n 系列更利于边缘侧:YOLOv6n/YOLOv8n 推理最快(≈6.8 ms/帧),在保持 0.975–0.978 的 F1 与 0.991 的 mAP@0.5 的同时具备良好的吞吐;YOLOv10n 的后处理时延最低(0.63 ms),体现了 NMS-free/轻后处理 的工程优势,但其主干/解码带来的整体推理时延略高(11.24 ms);YOLOv9t 在本测试下推理最慢(16.51 ms),但 mAP@0.5:0.95 较强,适合作离线高精度评测基线。
在这里插入图片描述

s 系列中 YOLOv8s 推理最快(7.66 ms),YOLOv11s/YOLOv10s 在精度与时延间取得更平衡的工业可用区间(mAP@0.5≈0.991、F1≈0.979、推理 9–11 ms)。若结合平台“同步双帧 + 进度控制”的交互需求,在 30 FPS 摄像流下推荐 YOLOv6n/8n/11n 作为在线默认模型,离线审计或高精度评测可切换 YOLOv9t/10s
在这里插入图片描述

从类别层表现看(混淆矩阵与 PR 曲线),各主流车型类别在 0.99 左右的精确率区间内表现稳定,“special-car(特种车)”因样本量相对更少与外观多样,PR 曲线相对更陡,建议在训练时启用 类别重加权/采样均衡目标抖动增强;“big-truck/small-truck”在远距画面下存在少量互混,可通过 更长边输入尺寸(如 1280)金字塔特征蒸馏 提高远距细节的可分性。结合 F1-Confidence 曲线的平坦区(0.3–0.85),平台端支持 阈值热更新 能够在“白天/夜间、通道曝光不同”情况下快速做域内自适应;此外,计数线建议配合 匀速/非匀速轨迹去重最小停留时长过滤,以降低拥堵场景下的重复计数。
在这里插入图片描述

为便于直观比较,下表汇总了核心指标;随后给出两幅“F1 & mAP50 双条形图”,分别对应 n/s 两条模型线。

表5-1 模型精度与时延汇总(RTX 3070 Laptop,单位:ms)

Model Params(M) FLOPs(G) Pre Inf Post Precision Recall F1 mAP50 mAP50-95
YOLOv5nu 2.6 7.7 1.90 7.73 1.31 0.974 0.990 0.982 0.9889 0.8725
YOLOv6n 4.3 11.1 2.17 6.78 1.39 0.983 0.968 0.975 0.9901 0.8692
YOLOv7-tiny 6.2 13.8 2.28 14.74 4.06 0.953 0.935 0.944 0.9767 0.7966
YOLOv8n 3.2 8.7 1.95 6.83 1.39 0.983 0.973 0.978 0.9908 0.8698
YOLOv9t 2.0 7.7 1.87 16.51 1.29 0.966 0.973 0.969 0.9903 0.8817
YOLOv10n 2.3 6.7 2.08 11.24 0.63 0.978 0.968 0.973 0.9908 0.8766
YOLOv11n 2.6 6.5 2.11 9.44 1.42 0.983 0.980 0.982 0.9914 0.8750
YOLOv12n 2.6 6.5 1.91 12.47 1.37 0.974 0.984 0.979 0.9940 0.8746
YOLOv5su 9.1 24.0 2.28 8.45 1.51 0.975 0.981 0.978 0.9881 0.8701
YOLOv6s 17.2 44.2 2.22 8.59 1.45 0.954 0.953 0.953 0.9840 0.8634
YOLOv7 36.9 104.7 2.44 23.62 3.46 0.957 0.923 0.940 0.9701 0.7913
YOLOv8s 11.2 28.6 2.31 7.66 1.42 0.966 0.972 0.969 0.9893 0.8739
YOLOv9s 7.2 26.7 2.12 18.66 1.39 0.984 0.984 0.984 0.9898 0.8825
YOLOv10s 7.2 21.6 2.21 11.38 0.60 0.980 0.977 0.979 0.9911 0.8847
YOLOv11s 9.4 21.5 2.37 9.74 1.36 0.986 0.972 0.979 0.9917 0.8777
YOLOv12s 9.3 21.4 2.09 13.23 1.42 0.984 0.977 0.980 0.9902 0.8811

图5-1 F1 与 mAP@0.5(n 型号,双条形图)
在这里插入图片描述

图5-2 F1 与 mAP@0.5(s 型号,双条形图)
在这里插入图片描述

结合系统目标与前端使用场景,给出三点可执行结论:其一,在线实时优先选择 YOLOv6n/8n/11n,阈值 0.70、IoU 0.55 可获得稳定的计数体验;其二,高精度复盘/离线评测推荐 YOLOv9t/10s/11s,在 mAP@0.5:0.95 上更具优势;其三,对于“特种车/远距卡车”易混样本,配套 类重采样 + 大分辨率验证 + 轻量注意力 能进一步降低混淆(混淆矩阵右列与卡车相关单元的蓝色更深处即为主要误差来源)。平台端已将这些经验固化为“模型一键切换 + 阈值热调 + 导出/入库”的标准流程,便于在不同路口与时段快速迁移与复用。


6. 系统设计与实现

6.1 系统设计思路

本系统采用四层分层架构:表现与交互层(浏览器 Web 界面)业务与会话管理层(Flask/Flask-SocketIO)推理与任务调度层(PyTorch/ONNX/TensorRT)数据持久化层(SQLite/对象存储/日志)。工作流自“多源输入(图片/视频/摄像头)”开始,经前端采集与参数面板生成会话上下文,由 SocketIO 建立低时延通道;后端统一进行预处理(尺寸对齐、归一化、色域转换),将帧与配置打包提交到推理队列;推理完成后的框、分数与类别进入后处理与统计模块(NMS 或 NMS-free 抑制、计数线/区域统计、轨迹去重),再以同步双帧(原图/推理图)形式推送回前端,实现所见即所得的交互闭环。

为保证实时性与一致性,系统在任务调度层采用“单会话多任务”模型:每个会话持有独立的参数快照(置信度/IoU/类别筛选/计数线),由事件广播在推理与渲染两端保持一致;视频任务使用时间戳与环形缓冲实现帧级对齐,避免进度拖拽或暂停/继续造成的画面撕裂;摄像头任务采用最小帧距与自适应丢帧策略,优先保障端到端延迟。安全侧以会话令牌和最小权限控制受理上传的权重与导出请求,所有敏感操作写入审计日志并与结果一同入库,满足复盘与追溯。

系统在可扩展性上提供模型与资源的热插拔:权重管理器维护 YOLOv5–YOLOv12 的版本、类别映射与张量精度,支持 PyTorch、ONNX、TensorRT 三态切换;当上传新权重或切换模型时,类别列表与前端筛选器自动刷新,历史任务不受影响;导出中心统一管理“带框图像/视频”“逐帧与聚合 CSV”“会话日志”,并提供按文件名/时间/会话的快速定位。持久化层设计了结构化表(检测结果、计数统计、账号与权限、导出记录)与对象存储(图像/视频/缩略图),配合自动迁移脚本保障数据在版本演进中的连续可用。

** 图6-1 系统流程图**
在这里插入图片描述

图注:系统自初始化后接入三类输入源,经预处理—推理—后处理—统计后以同步双帧回显;参数与控制从前端回流至推理链路,形成可交互闭环。

** 图6-2 系统设计框图**

在这里插入图片描述

图注:四层架构通过事件总线与推理队列解耦,权重与类别映射由数据层统一管理;前端的参数与导出请求经业务层路由到推理与存储,形成可扩展的端到端闭环。


6.2 登录与账户管理

在这里插入图片描述

图注:登录子系统以“注册/登录/跳过体验”三入口承载不同使用场景;会话令牌与最小权限策略保护导出与权重上传等敏感操作,个性化配置与历史记录在进入主界面时自动加载。

随后过程在业务层以单段式状态机实现:用户进入登录界面后若尚无账号则填写基础信息注册,后端对口令进行哈希并检查唯一性,将用户资料与偏好插入数据库;已注册用户直接登录,服务端在速率限制下完成凭证校验并签发会话令牌,随即加载个性化配置(主题、默认模型、导出偏好)与历史检测记录,进入“概览—图片/视频/摄像头—模型选择—导出中心”的主流程;在会话有效期内可随时修改头像与密码,敏感操作写入审计日志,注销或切换账号后会话状态与本地缓存即刻失效,从而确保结果与设置在主检测流程中的可追溯、可恢复与可控


代码下载链接

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

在这里插入图片描述

在这里插入图片描述

        资源包中涵盖了你需要的训练测试数据集、训练测试代码、UI界面代码等完整资源➷➷➷

详细介绍文档博客最新YOLO实现的车型识别与计数实时检测平台(Flask+SocketIO+HTML/CSS/JS)

完整安装运行教程:

        这个项目的运行需要用到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. 结论与未来工作

本文围绕“车型识别与计数”构建了基于 Flask + Flask-SocketIO/HTML/CSS/JS 的实时检测平台,统一集成 YOLOv5–YOLOv12 八类模型与 PyTorch→ONNX/TensorRT 的部署链路,在浏览器侧实现图片/视频/摄像头三源输入、同步双帧对比、进度与参数联动、CSV/带框一键导出及 SQLite 可追溯入库;在相同数据与口径下,我们给出端到端评测:n 系列中 YOLOv12n 的 mAP@0.5 最高(0.994),YOLOv6n/YOLOv8n在 6–7 ms 的推理时延下达到 0.975–0.978 的 F1,适合在线实时;s 系列中 YOLOv10s 的 mAP@0.5:0.95 最优(≈0.885),YOLOv9s 的 F1 最高(≈0.984),适合离线复盘与高精审计。混淆矩阵显示特种车与大小卡车在远距与遮挡条件下仍有少量互混,平台通过阈值热更新、类别筛选和计数线去重在交互侧予以缓解。总体来看,系统在准确性、实时性与工程可用性上达成平衡,满足多路口、多场景的在线统计与审计留痕需求,并为后续横向复现实验提供了可重复的基线与工具链。

未来工作将从三条主线推进:其一是模型侧的更轻量与更稳健,包括蒸馏与结构化剪枝、FP16/INT8 量化校准、类别重加权与难例挖掘、长边 1280 的多尺度验证,以及引入轻量注意力与时序一致性损失以降低远距卡车与特种车的混淆;其二是系统侧的可扩展与运维友好,如 Docker 镜像化与 CI/CD、分布式任务队列与批评测调度、WebRTC 直连推流降低端到端时延、角色权限与审计归档、国际化与多租户支持,并探索浏览器端 WebGPU/WebNN 与边缘端的本地推理以减少回传带宽;其三是数据侧的闭环治理,落地主动学习与持续标注、跨路口/跨天气的域自适应与漂移监测、负样本与弱监督扩充、跨摄像头的轨迹关联与去重,从而在保证隐私与安全合规的前提下进一步提升复杂交通环境中的鲁棒性与可迁移性。文末将附完整工程与数据示例的下载入口,便于读者复现、对比与二次开发。


参考文献(GB/T 7714)

1 Miguel Grinberg. Flask-SocketIO — Documentation[EB/OL]. 2025-12-25. (Flask-SocketIO)
2 MDN Web Docs. MediaDevices.getUserMedia()[EB/OL]. 2025-12-01. (MDN Web Docs)
3 Ultralytics. Comprehensive Guide to YOLOv5[EB/OL]. 2025-12-14. (Ultralytics Docs)
4 Li C, Li L, Jiang H, et al. YOLOv6: A Single-Stage Object Detection Framework for Industrial Applications[EB/OL]. arXiv:2209.02976, 2022. (arXiv)
5 Wang C-Y, Bochkovskiy A, Liao H-Y M. YOLOv7: Trainable bag-of-freebies sets new SOTA for real-time detectors[EB/OL]. arXiv:2207.02696, 2022. (arXiv)
6 Ge Z, Liu S, Wang F, Li Z, Sun J. YOLOX: Exceeding YOLO Series in 2021[EB/OL]. arXiv:2107.08430, 2021. (arXiv)
7 Wang C-Y, Yeh I-H, Liao H-Y M. YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information[EB/OL]. arXiv:2402.13616, 2024. (arXiv)
8 Wang A, Chen H, Liu L, et al. YOLOv10: Real-Time End-to-End Object Detection[EB/OL]. arXiv:2405.14458, 2024. (arXiv)
9 Ultralytics. YOLO11 — Model Docs[EB/OL]. 2025-12-12. (Ultralytics Docs)
10 Ultralytics. YOLO12 — Attention-Centric Object Detection Docs[EB/OL]. 2025-02-20. (Ultralytics Docs)
11 Tian Y, Ye Q, Doermann D. YOLOv12: Attention-Centric Real-Time Object Detectors[EB/OL]. arXiv:2502.12524, 2025. (arXiv)
12 Zhao Y, Lv W, Xu S, et al. RT-DETR: DETRs Beat YOLOs on Real-Time Object Detection[EB/OL]. arXiv:2304.08069, 2023. (arXiv)
13 Carion N, Massa F, Synnaeve G, et al. End-to-End Object Detection with Transformers[C]//ECCV. 2020. (arXiv)
14 Lin T-Y, Goyal P, Girshick R, He K, Dollár P. Focal Loss for Dense Object Detection[C]//ICCV. 2017. (CVF Open Access)
15 Tian Z, Shen C, Chen H, He T. FCOS: Fully Convolutional One-Stage Object Detection[C]//ICCV. 2019. (CVF Open Access)
16 Zhou X, Wang D, Krähenbühl P. Objects as Points[EB/OL]. arXiv:1904.07850, 2019. (arXiv)
17 Xu S, Wang X, Lv W, et al. PP-YOLOE: An evolved version of YOLO[EB/OL]. arXiv:2203.16250, 2022. (arXiv)
18 Ren S, He K, Girshick R, Sun J. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks[EB/OL]. arXiv:1506.01497, 2015. (arXiv)
19 文奴, 郭仁忠, 贺彪. 基于DCN-Mobile-YOLO模型的多车道车辆计数[J]. 深圳大学学报(理工版), 2021, DOI:10.3724/SP.J.1249.2021.06628. (SZU Journal)
20 茅智慧, 朱佳利, 吴鑫, 李君. 基于YOLO的自动驾驶目标检测研究综述[J]. 计算机工程与应用, 2022, 58(15):68-77. (CEA)
21 Ultralytics. Model Prediction / Export — YOLO Docs[EB/OL]. 2025-12-10. (Ultralytics Docs)
22 Miguel Grinberg. Flask-SocketIO and the User Session[EB/OL]. 2024-05-06. (Miguel Grinberg’s Blog)

(自检:2.2 节共 5 段,含 1 张对比表;单句单引且均为可追溯来源;含中英文文献且不少于 16 篇;近三年工作涵盖 YOLOv9/10/11/12 与 RT-DETR;其余小节为整段阐述并与任务场景紧密对应。)

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐