YOLOv5至YOLOv12升级:远距离停车位检测系统的设计与实现(完整代码+界面+数据集项目)
摘要:远距离停车位检测面临小目标尺度变化大、透视畸变强、遮挡与光照波动等问题。本文实现一套基于 YOLOv5–YOLOv12 的远距离停车位检测系统,在统一数据集与实验设置下对多版本 YOLO 的精度、速度与参数规模进行对比分析,并给出可复现的训练与推理流程。系统配套构建并标注远距离停车位数据集,完成清洗、增强与训练/验证/测试划分。工程端采用 PySide6 开发可视化界面,支持图片/视频/摄像头输入、权重一键切换、Conf/IOU 调节、检测结果与统计展示、导出保存及数据库存储等功能。文末提供完整代码、界面与数据集工程,便于直接部署与二次开发。
文章目录
1. 前言综述
城市停车资源的供需矛盾不仅体现在“是否有位”,更直接体现在“是否能被快速、可靠地感知并引导”,而停车巡游(cruising)所带来的额外行驶里程会放大拥堵、排放与时间损失等外部成本,使得面向真实道路与园区的车位感知与发布具有明确的交通系统意义与工程价值1。从智能交通系统(ITS)的研究脉络来看,信息获取与交通管理的数字化升级能够在效率收益之外进一步带来环境与经济协同效益,因此停车位感知作为“端侧感知—云侧调度—出行决策”的关键输入,其可靠性直接影响到上层策略的可用性2。在此背景下,“远距离停车位检测”成为更具挑战的一类任务:监控视角下停车位往往呈现小目标、强透视、标线低对比、遮挡频繁与光照剧烈波动等特征,导致检测结果既要“看得见”,也要“看得准、看得稳、看得快”。
早期停车视觉研究多以传统特征与分类器为核心,典型路线是对固定摄像机视角进行车位裁剪与纹理特征提取,再对“占用/空闲”进行二分类建模,其中 PKLot 等数据集的建立推动了跨场景泛化与鲁棒性评估,但也暴露出对视角变化与复杂光照的敏感性3。随着深度学习在特征表征上的优势显现,研究者开始利用卷积网络在分布式摄像头条件下完成车位占用检测,并在真实部署链路中讨论通信、算力与误检代价等工程约束,从而促使模型从“可用”走向“可部署”[4]。与此同时,CNRPark+EXT 等更大规模、跨季节与多视角的数据资源进一步将阴影、遮挡与天气扰动纳入评价范畴,使得“远距离+复杂环境”成为方法优劣分化的主要试金石[5]。
(eScholarship)
需要强调的是,车位视觉任务在工程上至少包含两条相互关联但建模目标不同的支线:其一是“车位占用检测”,侧重于对固定车位区域进行占用状态判别;其二是“车位几何/槽位检测”,需要在图像中定位车位标线结构或关键点,并输出可用于泊车规划或车位计数的几何实体。围绕后者,Zhang 等提出的 DeepPS 将停车位检测拆分为“标记点检测+局部模式分类”,并配套构建了大规模环视数据集,为后续学习式车位结构建模提供了可复现的基线框架[6]。在此基础上,DMPR-PS 进一步将车位表征为带方向约束的标记点回归问题,通过结构化回归同时预测关键点与其局部模式,从而在速度与精度之间取得更好的折中[7]。国内研究同样沿着“几何先验与学习式表征融合”的方向推进,例如以深度学习方法实现车位智能检测并针对复杂背景与弱标线条件进行鲁棒化设计,为工程落地积累了更贴近道路与停车场域的数据与经验[8]。面向远距离监控场景,亦有工作在服务区等复杂场景下结合分割、检测与先验规则进行车位状态统计,报告了遮挡与夜间强光对稳定性的显著影响,这与本文任务的难点高度一致[9]。
| 方法范式 | 典型输出 | 更适配的数据形态 | 主要优势 | 典型短板 |
|---|---|---|---|---|
| 车位占用检测(ROI 分类) | 空闲/占用 | 固定机位、可裁剪车位框 | 工程简单、易部署 | 对裁剪与标定依赖强,迁移成本高 |
| 车位结构检测(关键点/标线) | 车位角点/入口线/槽位 | 环视或监控视角全图 | 可输出几何实体,利于规划与计数 | 标注成本高,遮挡与弱标线更敏感 |
| 端到端目标检测(检测器输出) | 车位/车位线框 | 多机位、多尺度 | 训练推理流程统一,易集成 | 小目标与透视畸变下易漏检/定位漂移 |
从算法演进看,远距离车位检测的困难本质上是“多尺度小目标+强几何变化”的叠加,因而多尺度特征建模与自顶向下语义融合成为提升小目标召回的关键共性技术之一,FPN 在通用检测任务中验证了该类结构对跨尺度目标的增益,也为后续轻量化检测器的颈部设计提供了标准范式[10]。在统一检测框架层面,YOLO 将目标检测重构为单阶段回归问题,奠定了实时检测在工业与边缘端应用中的主流路线[11]。面向工程部署的迭代中,YOLOv6 系列以工业场景为目标强调硬件友好与训练/推理策略的系统化整理,为“同等算力下更高吞吐”提供了可复用的设计经验[12]。更近年的 YOLOv9 从梯度信息可获得性的角度讨论信息瓶颈并提出可编程梯度信息(PGI)与轻量化结构 GELAN,在不依赖深度可分离卷积的前提下仍提升参数利用率,为小模型精度上限提供了新的解释路径[13]。YOLOv10 进一步面向端到端部署诉求,围绕 NMS-free 训练与整体效率审视开展组件级优化,使得实时检测在延迟与精度的边界上继续前移[14]。在注意力机制逐渐成为通用表征骨干的趋势下,YOLOv12 提出以注意力为中心的实时检测框架并强调在速度约束下发挥注意力建模优势,为后续在复杂透视与细粒度结构目标上的稳定性提升提供了新的结构方向[15]。
(CVF Open Access)
基于上述研究现状,老思在本文聚焦的“远距离停车位检测”中仍观察到三类亟待系统解决的工程痛点:其一,远距离监控下车位呈现极端小尺度与强透视畸变,导致同一类别在不同区域的外观分布差异显著;其二,车辆遮挡、阴影与夜间高亮点会引起结构边界缺失,检测器往往出现漏检与定位抖动;其三,多版本模型与多源输入(图片/视频/摄像头)在实际系统中需要统一的推理接口与可视化闭环,否则难以支撑可复现对比与二次开发。为此,本文的主要工作在于:在统一数据集与实验设置下系统对比 YOLOv5–YOLOv12 的精度、速度与模型规模,并给出可复现的训练与推理流程;构建并标注面向远距离监控视角的停车位数据集,完成清洗、增强与训练/验证/测试划分;在工程端基于 PySide6 实现可视化系统,支持多源输入、权重一键切换、Conf/IOU 调节、结果与统计展示、导出保存与数据库持久化,并提供完整代码、界面与数据集工程以便直接部署与二次开发。
主要功能演示:
(1)启动与登录:启动进入登录页,支持注册/登录;登录后加载用户历史记录与个性化配置,并进入主界面。
(2)多源输入与实时检测:支持摄像头实时流、视频、单张图片与文件夹批量导入;推理时同步显示检测框、置信度与统计信息,支持暂停/继续与结果导出。
(3)模型选择与对比演示:界面可一键切换 YOLOv5–YOLOv12 权重,在同一输入与阈值下对比不同模型的检测效果与推理速度,并记录耗时/帧率用于复核。
(4)主题修改功能:新增主题切换与自定义(浅色/深色、主色调、背景/图标等),配置与账号绑定并持久化保存,登录自动恢复。
2. 数据集介绍
本文使用的数据集由高分辨率航拍(俯视)图像构成,面向“远距离停车位检测”这一典型的小目标密集场景。数据集中每个停车位均以目标检测的方式进行标注,并按占用状态划分为两类:space-empty(空车位)与 space-occupied(已泊车)。由于航拍视角覆盖范围大、单帧内车位数量多,样本呈现出明显的“密集目标”特征;从标注统计图可见,两类样本数量整体较为接近,但空车位略多于已泊车,属于轻度类别不均衡。更关键的是,标注框的归一化宽高主要集中在较小区间(width 约 0.03–0.09、height 约 0.06–0.12),若以常用输入尺寸 640 × 640 640\times640 640×640 计,则多数目标仅为几十像素量级,叠加透视与弱标线/遮挡干扰,构成该任务的主要难点。
Chinese_name = {'space-empty': "空车位", 'space-occupied': "已泊车"}
在数据划分上,本数据集共 12,415 张图片,按训练/验证/测试三部分组织,使得模型选择、超参数调优与最终评估相互独立。训练阶段对图像执行统一尺寸缩放与归一化,并结合检测框的尺度分布采用更适配小目标的增强策略(例如 Mosaic、随机仿射与颜色扰动等),以提升对光照变化、阴影遮挡与跨场景背景差异的鲁棒性;同时,针对航拍画面中车位呈“行列结构”分布的特点,标注框中心点在图像平面上会出现一定的带状聚集,这也提示模型需要在全局布局与局部细节之间取得更好的表征平衡,从而在远距离区域减少漏检并抑制密集框下的误检与定位漂移。
📊 数据集规格说明 (Dataset Specification)
| 维度 | 参数项 | 详细数据 |
|---|---|---|
| 基础信息 | 标注软件 | LabelImg(项目默认) |
| 标注格式 | YOLO TXT (Normalized) | |
| 数量统计 | 训练集 (Train) | 8,690 张 (70%) |
| 验证集 (Val) | 2,483 张 (20%) | |
| 测试集 (Test) | 1,242 张 (10%) | |
| 总计 (Total) | 12,415 张 | |
| 类别清单 | Class ID: 0 | space-empty(空车位) |
| Class ID: 1 | space-occupied(已泊车) |
|
| 图像规格 | 输入尺寸 | 640 * 640(训练/推理阶段统一缩放) |
| 数据来源 | 高分辨率航拍图片(无人机/高机位俯视采集) |
(中文映射:space-empty → 空车位,space-occupied → 已泊车。)
3. 模型设计与实现
远距离停车位检测的核心矛盾在于“目标小、形变大、背景复杂”:停车位在航拍视角下往往只占据少量像素,透视导致同一类别在不同区域呈现明显尺度与长宽比漂移,遮挡(车辆、树荫、路灯)与强光/阴影进一步放大了误检与漏检的概率。老思在模型侧的设计思路,是以 YOLO 系列一阶段检测器作为统一框架,将问题建模为“在多尺度特征上同时完成位置回归与两类状态判别(空车位/已泊车)”,并通过 YOLOv5–YOLOv12 的结构演化来观察:当骨干特征表达、跨层融合与检测头解耦逐步完善后,小目标与透视畸变场景的鲁棒性是否能稳定提升。
在基线模型选择上,传统两阶段检测器(如 Faster R-CNN)通常具备较强的候选框筛选能力,但其推理链路更长、工程部署复杂,且在实时视频流上不易稳定满足延迟预算;相对而言,YOLO 族将检测过程组织为单网络端到端回归,便于在摄像头/视频流中实现“逐帧稳定吞吐”。因此本文以 YOLOv12n 作为主力模型,辅以 YOLOv5/6/7-tiny/8n/9t/10n/11n 等轻量变体进行同一数据集、同一评测协议下的对比实验,以保证“精度—速度—参数量”的结论具备可复现性与可解释性。YOLOv12 的设计强调注意力在实时检测中的可用性,通过更高效的注意力形态与结构化特征聚合,在不牺牲吞吐的前提下扩大有效感受野并增强全局建模能力,这对远距离、小目标与遮挡场景尤为关键。(Ultralytics Docs)
从网络结构上看,本文沿用 YOLO 系列的经典三段式范式:Backbone 负责提取分层语义特征,Neck 负责跨尺度融合(把高层语义下传、把低层细节上送),Head 在多尺度特征上同时输出类别置信与边界框参数。对于远距离停车位,小目标对浅层细节依赖更强,而遮挡与背景干扰又要求模型具备一定全局上下文理解,因此博主在实现中采用“多尺度输出 + 强融合”的结构习惯:一方面保留浅层高分辨率特征用于小目标定位,另一方面通过自顶向下/自底向上的双向融合缓解透视带来的尺度漂移。对于 YOLOv12,注意力机制的引入使得模型在拥挤车位行列与强透视区域更容易形成稳定的空间关联表征,从而降低“把车位线/道路纹理当成车位”的误检倾向。(Ultralytics Docs)
在任务建模与损失函数层面,停车位检测可形式化为给定输入图像 I I I,预测一组候选框 b i {b_i} bi 及其类别概率 p i {p_i} pi,并在后处理阶段以置信度阈值与非极大值抑制(NMS)得到最终结果。训练阶段通常由分类损失与回归损失共同驱动:分类项鼓励正确的空车位/已泊车判别,回归项约束预测框与标注框在位置与形状上对齐。回归项常采用 IoU 家族度量,基本 IoU 定义为
I o U ( B , B ^ ) = ∣ B ∩ B ^ ∣ ∣ B ∪ B ^ ∣ , \mathrm{IoU}(B, \hat{B})=\frac{|B\cap \hat{B}|}{|B\cup \hat{B}|}, IoU(B,B^)=∣B∪B^∣∣B∩B^∣,
并进一步结合中心点距离与长宽比一致性形成更强约束(工程实现中不同 YOLO 版本的默认配置略有差异,本文以各版本官方/框架默认实现为准)。在二分类场景下,为减轻类别不均衡与难例主导训练的问题,实践中往往会在采样策略、置信度分支与损失权重上做配平;但为了保证跨版本对比的公平性,本文对各 YOLO 版本尽量保持相同的数据增强与训练协议,仅在框架要求下做必要的适配。
工程实现上,老思将“多版本 YOLO 权重的一键切换”抽象为统一的 Detector 接口:初始化时加载权重并绑定类别映射(space-empty/space-occupied),推理阶段对来自图片/视频/摄像头的帧执行一致的预处理(尺度归一、letterbox 对齐等)、前向推理与后处理(阈值过滤、NMS),最后把检测框、类别与置信度回传 UI 层完成绘制与统计。为了便于在 PySide6 中维护响应性,推理逻辑通常放在工作线程中,通过 Qt 信号槽把结果异步推送到主线程更新界面,从而避免界面卡顿;同时在导出与数据库写入时采用批量提交与惰性写策略,降低 I/O 对实时性的影响。
4. 训练策略与模型优化
PCB电子元件识别具有典型的小目标与密集分布特征,训练过程往往同时受到“有效像素占比低、类别外观相近、长尾分布明显(晶体管样本偏少)”三类因素影响。老思在本文的训练设置中,首先坚持一个基本原则:跨YOLOv5–YOLOv12做对比时,尽量保持训练管线、数据划分与评估口径一致,避免因为增强策略或学习率配置差异导致结论失真。具体实现上,所有模型均采用COCO预训练权重进行迁移学习,在相同输入分辨率与批大小下训练到收敛,并以验证集mAP及分类混淆情况作为选择最佳权重与调参的主要依据;硬件侧以RTX 4090为主,训练启用AMP混合精度以提升吞吐并降低显存压力,从而保证在较稳定的批大小下获得更可比的收敛曲线。
迁移学习阶段的关键在于“先稳后快”。初始化时加载预训练权重能够让骨干网络具备通用边缘与纹理表征,随后通过较短的warmup将学习率从较低水平平滑抬升,减少前期梯度震荡对小目标回归分支的破坏;学习率衰减采用余弦退火更利于末期细化收敛,其形式可写为
η t = η min + 1 2 ( η 0 − η min ) ( 1 + cos π t T ) , \eta_t=\eta_{\min}+\frac{1}{2}\left(\eta_0-\eta_{\min}\right)\left(1+\cos\frac{\pi t}{T}\right), ηt=ηmin+21(η0−ηmin)(1+cosTπt),
其中 η 0 \eta_0 η0 为初始学习率, T T T 为总迭代步数, η min \eta_{\min} ηmin 为最终学习率下界。对于PCB这种“类间差异细、定位精度敏感”的任务,余弦末期的缓慢下降通常比粗粒度阶梯下降更容易得到边界框与分类同时稳定的解。与此同时,训练过程中启用EMA(指数滑动平均)对权重做平滑,有助于减小验证集指标的抖动,使模型选择更可靠。
数据增强侧,本文以Ultralytics系默认增强为基础,并对小目标任务做了两点取舍:训练前中期保留Mosaic以提升目标尺度多样性与密集场景出现概率,但在训练后期按轮次关闭Mosaic(close_mosaic),让网络在更接近真实分布的单图输入上完成收敛,从而降低推理时因“拼接域差”带来的置信度偏移。结合你的标注统计可知晶体管样本显著少于其余三类,因此老思更倾向于用“增强驱动的再平衡”而非简单重复采样:在保证整体分布不被破坏的前提下,通过随机仿射、尺度扰动与颜色空间轻量扰动,让少样本类别在不同背景与曝光条件下更频繁地出现为“有效难例”,以缓解长尾类别在分类头上的欠拟合风险。若在后续实验中观察到晶体管AP持续偏低且与二极管/电阻发生混淆,还可以引入更强的难例挖掘策略(例如提高该类样本的最小出现概率或针对性Copy-Paste),但这类操作应在对比实验结束后单独开展,以免破坏跨版本公平性。
为了抑制过拟合并稳定回归精度,本文采用权重衰减与Batch Normalization的常规正则化配置,并将早停(patience)作为“训练预算控制器”:当验证集指标在连续若干轮无显著提升时终止训练,避免在后期对训练集噪声反复拟合。对PCB小目标而言,过拟合的典型表现不是训练损失下降,而是验证集上置信度分布变得过于极端、同类器件在不同光照下的召回明显分叉,因此早停与EMA配合能在工程上减少“看起来更好但泛化更差”的权重被误选。
在部署侧的“模型优化”主要围绕推理延迟与界面交互体验展开。本文在推理阶段默认启用FP16推理(若后端支持)以降低显存与提升吞吐,并通过将Conf与IoU阈值开放到UI侧实现“误检—漏检”可调:在产线复核更关注漏检时可适当降低Conf提高召回,在需要减少误检干扰时提高Conf并适度提高IoU以增强抑制冗余框的效果。对于视频与摄像头实时流,系统侧进一步采用帧缓冲与异步推理的方式,使推理线程与UI渲染线程解耦,从而避免推理波动导致界面卡顿;这一点对4090这类高吞吐GPU尤为重要,因为瓶颈往往不在模型前向,而在图像解码、数据搬运与绘制开销。
下表给出本文默认训练超参数配置(用于YOLOv5–YOLOv12的统一对比基线);若你后续希望做“精度优先”的强化实验,通常优先考虑增大输入分辨率或引入切片训练/推理策略,但这会显著改变速度与训练成本,应与基线对比实验分开汇报。
| 名称 | 数值 | 说明 |
|---|---|---|
| epochs | 120 | 最大训练轮数(配合早停) |
| patience | 50 | 验证集无提升则提前终止 |
| batch | 16 | 总批大小(AMP下更易稳定) |
| imgsz | 640 | 输入分辨率(LetterBox到方形) |
| pretrained | true | 加载COCO等预训练权重迁移学习 |
| optimizer | auto | 框架自动选择(SGD/AdamW等) |
| lr0 | 0.01 | 初始学习率 η 0 \eta_0 η0 |
| lrf | 0.01 | 末期学习率占比(对应 η min \eta_{\min} ηmin) |
| momentum | 0.937 | 动量项(若使用SGD类优化器) |
| weight_decay | 0.0005 | 权重衰减抑制过拟合 |
| warmup_epochs | 3.0 | 学习率预热轮数 |
| mosaic | 1.0 | 前中期启用Mosaic增强 |
| close_mosaic | 10 | 末期关闭Mosaic以贴近真实分布 |
5. 实验与结果分析
5.1 实验设计
本节面向“远距离航拍车位检测”任务,对 YOLOv5–YOLOv12 的多版本模型进行统一设置下的横向对比,目标是在同一数据划分与训练策略下同时回答两个问题:其一,不同版本在精度指标(F1、mAP)上的差异是否显著;其二,在桌面端可视化系统的实时推理链路中,不同模型的端到端耗时(预处理/推理/后处理)能否满足多源输入的交互需求。实验数据采用第 2 节给出的 ParkingSpaces 航拍数据集(Train 8,690 / Val 2,483 / Test 1,242),类别为 space-empty 与 space-occupied 两类,输入尺度与训练轮次沿用第 4 节默认配置。推理测速与指标统计由同一硬件环境完成,结果文件中记录的设备为 NVIDIA GeForce RTX 3070 Laptop GPU(8GB),并将耗时拆分为 PreTime、InfTime、PostTime 以便定位瓶颈。
为便于解释模型容量对性能的影响,本文分别组织了两组对比:其一为轻量组(n_type),包含 YOLOv5nu、YOLOv6n、YOLOv7-tiny、YOLOv8n、YOLOv9t、YOLOv10n、YOLOv11n、YOLOv12n;其二为中等容量组(s_type),包含 YOLOv5su、YOLOv6s、YOLOv7、YOLOv8s、YOLOv9s、YOLOv10s、YOLOv11s(本轮实验未纳入 YOLOv12s)。
5.2 度量指标
精度侧采用目标检测常用的 Precision、Recall、F1 与 mAP,其中 F1 定义为
F 1 = 2 P R P + R , F1=\frac{2PR}{P+R}, F1=P+R2PR,
用于综合衡量误检与漏检的平衡;mAP50 表示 IoU 阈值为 0.5 时的平均精度,mAP50–95 则在多个 IoU 阈值上取均值,更能反映定位精度在“严格匹配”条件下的稳定性。速度侧统计 PreTime、InfTime、PostTime,并给出三者之和作为端到端总延迟(便于与 PySide6 的实时播放帧率直接对照)。
5.3 实验结果分析
从整体精度表现看,两组模型在该数据集上的 mAP50 与 F1 均接近饱和,说明“空车位/已泊车”两类在航拍视角下具有较强的可分性,同时也意味着版本间的优势更多体现在定位严格度(mAP50–95)与推理效率的差异上。以 n_type 为例,柱状对比图显示各模型 F1 与 mAP50 基本都贴近 1.0(差距非常有限),PR 曲线整体贴近右上角,表明在较高召回区间仍能维持很高的精度;训练过程中 mAP50 在前若干 epoch 内迅速提升并趋于平稳,验证了第 4 节“warmup + 余弦衰减 + 后期关闭 Mosaic”的收敛节奏对该任务是有效的。
进一步结合数值表可以看到,YOLOv7-tiny 在 mAP50 上达到最高(0.9981),但其 mAP50–95 明显偏低(0.9564),这通常意味着模型在 IoU=0.5 的“宽松匹配”下能够检出目标,但在更严格阈值下框的几何对齐不够稳定;对于车位这种“细长、小尺度、透视强”的目标,这类差异往往来自回归头对长宽比漂移的刻画不足或对密集目标的框抖动。相对地,YOLOv9t 在 mAP50–95 上取得本组最佳(0.9908),且 F1 也为最高(0.9987),更体现“严格定位”意义下的优势,但其 InfTime 与总延迟较高(TotalTime 约 19.67ms),在多路视频并发或高分辨率输入时更容易成为系统帧率瓶颈。若以实时交互为优先,YOLOv8n/YOLOv6n 的端到端总延迟最低(约 10.17/10.34ms,对应约 98/97 FPS),在保持 mAP50 约 0.9946 的同时提供更高吞吐,是更贴近桌面端实时检测的“默认可用解”。
在 s_type 中,整体趋势与 n_type 一致:F1 与 mAP50 同样接近饱和,PR 曲线几乎重合,训练曲线在早期迅速收敛并长期稳定。值得注意的是,YOLOv7 取得最高 mAP50(0.9979)与最高 F1(0.9990),但其推理链路最慢(TotalTime 约 29.52ms),且 mAP50–95 反而低于大多数 s 模型(0.9877),呈现出“粗匹配很强、严匹配一般、吞吐偏低”的特征。相比之下,YOLOv10s 的 mAP50–95 为本组最高(0.9947),并且 PostTime 仅 0.60ms,反映出其在后处理环节的负担更小;而 YOLOv8s 的总延迟最低(约 11.39ms,约 88 FPS),在精度几乎不损失的前提下更适合作为系统的实时默认模型。
为了把“指标接近饱和”这一现象落到工程结论上,老思更建议从系统部署视角做选择:如果 UI 侧以单路摄像头实时检测为主,并希望在笔记本端保持更高帧率,则 n 规模中优先选择 YOLOv8n(或 YOLOv6n)更稳妥;如果后续要把检测框用于更严格的几何分析或需要更强的定位一致性,则可以在 s 规模中优先考虑 YOLOv10s,或在 n 规模中对 YOLOv9t 做进一步的推理优化。与此同时,这一组结果也提示后续提升空间主要来自“更难的测试分布”:例如引入更强遮挡、夜间强反光、跨场景机位变化,或通过提高输入分辨率/切片推理强化远距离区域的小目标召回,否则在当前数据分布下版本差异会被饱和指标所掩盖。
表 5-1 n_type(轻量组)性能与速度统计(Test 集)
| Model | Params(M) | FLOPs(G) | TotalTime(ms) | FPS | Precision | Recall | F1 Score | mAP50 | mAP50-95 |
|---|---|---|---|---|---|---|---|---|---|
| YOLOv5nu | 2.6 | 7.7 | 10.94 | 91.4 | 0.9986 | 0.9910 | 0.9948 | 0.9925 | 0.9798 |
| YOLOv6n | 4.3 | 11.1 | 10.34 | 96.7 | 0.9983 | 0.9985 | 0.9984 | 0.9945 | 0.9851 |
| YOLOv7-tiny | 6.2 | 13.8 | 21.08 | 47.4 | 0.9984 | 0.9987 | 0.9985 | 0.9981 | 0.9564 |
| YOLOv8n | 3.2 | 8.7 | 10.17 | 98.3 | 0.9985 | 0.9934 | 0.9959 | 0.9946 | 0.9860 |
| YOLOv9t | 2.0 | 7.7 | 19.67 | 50.8 | 0.9986 | 0.9987 | 0.9987 | 0.9947 | 0.9908 |
| YOLOv10n | 2.3 | 6.7 | 13.95 | 71.7 | 0.9960 | 0.9959 | 0.9960 | 0.9946 | 0.9903 |
| YOLOv11n | 2.6 | 6.5 | 12.97 | 77.1 | 0.9984 | 0.9984 | 0.9984 | 0.9946 | 0.9867 |
| YOLOv12n | 2.6 | 6.5 | 15.75 | 63.5 | 0.9987 | 0.9865 | 0.9925 | 0.9910 | 0.9859 |

表 5-2 s_type(中等容量组)性能与速度统计(Test 集)
| Model | Params(M) | FLOPs(G) | TotalTime(ms) | FPS | Precision | Recall | F1 Score | mAP50 | mAP50-95 |
|---|---|---|---|---|---|---|---|---|---|
| YOLOv5su | 9.1 | 24.0 | 12.24 | 81.7 | 0.9989 | 0.9987 | 0.9988 | 0.9947 | 0.9932 |
| YOLOv6s | 17.2 | 44.2 | 12.26 | 81.6 | 0.9985 | 0.9989 | 0.9987 | 0.9947 | 0.9933 |
| YOLOv7 | 36.9 | 104.7 | 29.52 | 33.9 | 0.9989 | 0.9990 | 0.9990 | 0.9979 | 0.9877 |
| YOLOv8s | 11.2 | 28.6 | 11.39 | 87.8 | 0.9987 | 0.9989 | 0.9988 | 0.9949 | 0.9941 |
| YOLOv9s | 7.2 | 26.7 | 22.17 | 45.1 | 0.9990 | 0.9988 | 0.9989 | 0.9949 | 0.9946 |
| YOLOv10s | 7.2 | 21.6 | 14.19 | 70.5 | 0.9981 | 0.9986 | 0.9983 | 0.9949 | 0.9947 |
| YOLOv11s | 9.4 | 21.5 | 13.47 | 74.2 | 0.9989 | 0.9989 | 0.9989 | 0.9949 | 0.9941 |

6. 系统设计与实现
6.1 系统设计思路
老思在工程实现上采用“界面层—控制层—处理层”的分层思路,以 PySide6 的信号槽作为跨层通信的唯一通道,从而把耗时推理与 UI 绘制解耦,避免视频流推理导致主线程卡顿。界面层由 Ui_MainWindow 负责承载按钮、标签、表格、参数滑块等交互控件,只做展示与事件发射;控制层 MainWindow 作为中枢调度,管理输入源切换、播放控制、阈值与模型切换、状态栏提示、文件导出与数据库写入等槽函数;处理层 Detector 负责权重加载、预处理、推理、后处理与结果结构化输出,并对外提供统一的 predict(frame, conf, iou, model_id) 接口,使 YOLOv5–YOLOv12 的差异被封装在内部实现中,界面侧只关心输入与输出。
在数据流上,系统把图片、视频、摄像头与文件夹批处理统一抽象为“帧序列”,每一帧经过标准化预处理(缩放、letterbox、归一化)后进入 YOLO 推理,再进行阈值过滤与 NMS,并同步生成两类输出:其一是可视化结果(检测框、类别与置信度叠加到画面);其二是统计结果(类别计数、置信度分布、推理耗时),用于界面右侧面板与历史记录页展示。为了支撑对比实验与工程复现,系统把“模型选择、Conf/IOU、输入源、导出路径、主题配置”等参数纳入同一配置体系,并在运行中动态生效,从而实现“同一输入、同一阈值、不同权重”的快速对照。
在持久化方面,系统使用 SQLite 作为轻量数据库,按用户隔离存储账号信息、个性化配置与检测结果索引;每次推理产生的结构化结果可选择写入数据库并导出为文件(图片、视频或 CSV/JSON),使得后续筛选、统计与复核具备可追溯性。主题修改功能同样作为用户配置项落库,与登录会话绑定,确保不同用户在同一设备上登录时自动恢复各自的主题风格与默认参数,并与主检测流程在状态管理层面保持一致。
图 系统流程图
图注:系统从初始化到多源输入,完成预处理、推理与界面联动,并通过交互形成闭环。
6.2 登录与账户管理

登录与账户管理模块的价值不只是“进系统的门槛”,更重要的是把个性化与可追溯性嵌入到检测闭环中:用户完成注册或登录后,系统立即从 SQLite 载入该用户的主题风格、默认模型与 Conf/IOU 等偏好参数,并同步挂载历史检测记录与导出索引,使得后续在主界面进行多源输入检测、模型切换对比与结果保存时,所有配置与产出都自动归属于当前用户空间;当用户修改头像或密码时,界面与数据库状态保持一致,避免会话漂移;而注销/切换账号则显式清理会话与临时缓存并回到登录页,从而保证同机多用户场景下的配置隔离与结果独立存储,最终提升系统的可维护性与使用一致性。
7. 下载链接
若您想获得博文中涉及的实现完整全部资源文件(包括测试图片、视频,py, UI文件,训练数据集、训练代码、界面代码等),这里见可参考博客与视频,已将所有涉及的文件同时打包到里面,点击即可运行,完整文件截图如下:

完整资源中包含数据集及训练代码,环境配置与界面中文字、图片、logo等的修改方法请见视频:➷➷➷
详细介绍文档博客:YOLOv5至YOLOv12升级:远距离停车位检测系统的设计与实现(完整代码+界面+数据集项目)
环境配置博客教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境配置教程;
或者环境配置视频教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境依赖配置教程
数据集标注教程(如需自行标注数据):数据标注合集
参考文献(GB/T 7714)
1 WEINBERGER R R, MILLARD-BALL A, HAMPSHIRE R C. Parking search caused congestion: Where’s all the fuss?[J]. Transportation Research Part C: Emerging Technologies, 2020, 120: 102781.
2 GRANT-MULLER S, USHER M. Intelligent Transport Systems: The propensity for environmental and economic benefits[J]. Technological Forecasting and Social Change, 2014, 82: 149-166.
3 DE ALMEIDA P R, OLIVEIRA L S, BRITTO A S, et al. PKLot—A robust dataset for parking lot classification[J]. Expert Systems with Applications, 2015, 42(11): 4937-4949.
[4] AMATO G, CARRARA F, FALCHI F, et al. Deep learning for decentralized parking lot occupancy detection[J]. Expert Systems with Applications, 2017, 72: 327-334.
[5] AMATO G, CARRARA F, FALCHI F, et al. CNRPark+EXT: A dataset for visual occupancy detection of parking spaces[DB/OL]. Consiglio Nazionale delle Ricerche (CNR), 2016.
[6] ZHANG L, HUANG J, LI X, XIONG L. Vision-Based Parking-Slot Detection: A DCNN-Based Approach and a Large-Scale Benchmark Dataset[J]. IEEE Transactions on Image Processing, 2018, 27(11): 5350-5364.
[7] HUANG J, ZHANG L, SHEN Y, et al. DMPR-PS: A Novel Approach for Parking-Slot Detection Using Directional Marking-Point Regression[C]//2019 IEEE International Conference on Multimedia and Expo (ICME). 2019: 212-217.
[8] 徐乐先, 陈西江, 班亚, 黄丹. 基于深度学习的车位智能检测方法[J]. 中国激光, 2019, 46(4): 0404013.
[9] 邵奇可, 卢熠, 陈一苇. 基于深度学习的高速服务区车位检测算法[J]. 计算机系统应用, 2019, 28(6): 62-68.
[10] LIN T Y, DOLLÁR P, GIRSHICK R, et al. Feature Pyramid Networks for Object Detection[C]//Proceedings of CVPR 2017. 2017: 2117-2125.
[11] REDMON J, DIVVALA S, GIRSHICK R, FARHADI A. You Only Look Once: Unified, Real-Time Object Detection[C]//Proceedings of CVPR 2016. 2016: 779-788.
[12] LI C, LI L, JIANG H, et al. YOLOv6: A Single-Stage Object Detection Framework for Industrial Applications[J/OL]. arXiv:2209.02976, 2022.
[13] WANG C Y, YEH I H, LIAO H Y M. YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information[C]//European Conference on Computer Vision (ECCV). Cham: Springer, 2024.
[14] WANG A, CHEN H, LIU L, et al. YOLOv10: Real-Time End-to-End Object Detection[C]//Advances in Neural Information Processing Systems (NeurIPS). 2024.
[15] TIAN Y, YE Q, DOERMANN D. YOLOv12: Attention-Centric Real-Time Object Detectors[J/OL]. arXiv:2502.12524, 2025.
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)