YOLOv5至YOLOv12升级:扑克牌识别软件系统的设计与实现(完整代码+界面+数据集项目)
摘要:扑克牌目标的高精度识别与实时统计是娱乐交互、智能桌面与轻量级视觉应用中的典型需求,但在复杂光照、反光材质、遮挡叠放、尺度变化与牌面纹理相近等场景下,传统基于规则与特征的方案往往鲁棒性不足。本文围绕“YOLOv5 至 YOLOv12 全系列升级对比”这一主线,给出一套可复现实用的扑克牌识别软件系统设计与实现:在算法侧构建并标注专用数据集,完成清洗、增强与划分,训练并评估 YOLOv5–YOLOv12 共 8 种模型在同一任务上的检测性能与速度差异,形成可用于工程选型的对比结论;在工程侧基于 PySide6 实现美观友好的桌面端界面,支持图片、视频与摄像头多源输入,提供置信度/IOU 阈值调节、检测框与类别显示、结果统计与可视化展示,并支持将推理结果导出到文件与数据库;同时设计基于 SQLite 的登录注册、用户配置与历史结果管理,实现多用户独立空间与数据持久化。本文最终打包提供完整代码、可运行界面与数据集项目,便于读者复现训练流程、替换权重并进行二次开发。
讲解视频地址: https://www.bilibili.com/video/BV1izdHBhEHv/
文章目录
1. 前言综述
扑克牌识别看似是“桌面小物体检测”,但在真实使用场景里往往比通用目标检测更苛刻:牌面材质带来镜面反光,手持与叠放导致大面积遮挡,牌角花色与点数区域像素占比很小且纹理高度相似,甚至同一张牌在不同视角下会产生明显的透视形变与局部模糊,这些因素共同抬高了对鲁棒性与实时性的要求。早期系统通常依赖边缘、角点、模板匹配与局部不变特征来做“定位→裁剪→分类”,其中以尺度不变特征变换为代表的方法在受控环境中具有一定可用性,但在强反光与遮挡条件下易出现特征点稀疏、误匹配和几何估计失败等问题。1
深度学习将目标检测从“手工特征+分类器”的范式推进到端到端的特征学习与位置回归,两阶段检测器通过候选区域与精细分类回归显著提升了复杂背景下的定位与识别能力,为后续“牌面区域定位+细粒度类别”奠定了基线思路。2 为满足实时应用需求,一阶段检测器进一步将分类与回归在单网络中并行预测,在保持可观精度的同时显著降低推理延迟,使得视频流扑克牌识别从“离线处理”走向“交互式桌面端”。3 由于扑克牌目标跨尺度明显(整牌与牌角信息并存),特征金字塔等多尺度表征机制成为提升小区域语义与定位稳定性的关键结构之一。4
在实时检测方向,YOLO 将检测任务统一为网格化的回归问题,以较高吞吐率支撑了摄像头在线识别、计数与统计等应用形态,因此也成为扑克牌识别系统工程落地时最常见的主干框架之一。[5] 然而,扑克牌数据往往存在类别不均衡与“难例”(如背面、强反光、半遮挡、相似花色)比例偏高的问题,训练过程中若无法有效抑制易分类样本主导梯度,就会导致对难例的召回不足,而面向密集检测的焦点损失为此提供了可迁移的解决思路。[6]
从误差来源看,扑克牌识别的失败模式主要集中在三类:一是遮挡叠放造成的框重叠与边界不完整,二是反光导致局部对比度塌陷与纹理缺失,三是牌角区域的小目标属性使得定位误差会被进一步放大并传导到点数花色判别。为提高回归质量与评价一致性,基于交并比扩展的边界框度量与损失函数可在训练阶段更直接地约束几何对齐,从而缓解“框位置略偏但语义正确”在小目标场景下引发的识别级联误差。[7] 与此同时,端到端检测范式也在持续演化,基于 Transformer 的检测器通过集合预测与全局建模减弱了对后处理的依赖,为“遮挡导致候选框重复、NMS 误抑制”的问题提供了另一条结构性路径。[8]
在牌类视觉任务中,已有研究尝试将目标检测用于桥牌赛事的自动登记与转播辅助,并围绕“自建数据、复杂桌面背景、多目标同时出现”构建检测与识别流程,这类工作从应用侧验证了卡牌检测在真实视频流中的可行性,也揭示了数据合成与标注规范对性能上限的直接影响。[9] 但从更广的研究版图看,扑克牌识别仍属于“高相似细粒度目标+桌面遮挡”的小众任务域,公开可复现实验往往缺乏统一的数据划分、评测协议与端侧部署约束,因此在工程层面更需要一套从数据集、训练到软件交互的完整闭环来支撑公平对比与快速迭代。
国内研究在多尺度表征与特征融合方面已形成系统化总结,相关综述从两阶段与一阶段检测器的发展脉络出发,梳理了图像金字塔、网络内特征金字塔与跨层融合等策略的效果边界与代价,为“牌面整体与牌角细节并重”的结构设计提供了方法论参照。[10] 面向小目标检测,国内综述进一步指出小目标像素占比低、语义弱、易聚集遮挡等内在难点,并从数据增强、多尺度融合、上下文建模与注意力机制等方向归纳了可复用的技术路线,这与扑克牌点数花色区域的检测痛点高度一致。[11] 为了更直观呈现研究线索,下面以“方法范式—典型数据—优势与局限—对扑克牌任务启示”的角度做一个紧凑对照:
| 方法范式 | 代表方法/工作 | 常用数据与设置 | 优势 | 局限 | 对扑克牌任务的启示 |
|---|---|---|---|---|---|
| 传统特征与几何匹配 | 基于局部不变特征的匹配与位姿估计 | 受控拍摄、固定光照、单牌为主 | 实现简单、无需大规模标注 | 反光/遮挡下特征不稳定 | 可用于辅助标注、规则校验,但难作为主方案 |
| 两阶段检测 | 候选区域+精细回归分类 | COCO/VOC式标注 | 定位精细、对复杂背景更稳 | 延迟较高、部署成本偏大 | 可作为高精度离线基线或蒸馏教师 |
| 一阶段实时检测 | YOLO/SSD 等 | 多尺度训练、在线推理 | 速度优势明显、工程生态成熟 | 小目标与遮挡下易漏检 | 适合作为桌面端主模型,并配合增强与后处理改造 |
| 端到端集合预测 | Transformer 检测 | 端到端匹配、弱化NMS | 全局建模、减少NMS副作用 | 训练与部署门槛较高 | 可用于探索“免NMS”的遮挡鲁棒方案 |
| 卡牌场景应用化系统 | 桥牌自动登记检测流程 | 自建/合成数据、桌面视频流 | 贴近真实流程、强调数据工程 | 协议不统一、迁移成本高 | 强化“数据集规范+系统闭环”对复现的重要性 |
在 YOLO 系列的持续迭代中,国内已有面向通用目标检测的综述按照骨干、颈部与检测头等模块归纳了 YOLO 的关键改进路径,并讨论了速度与精度权衡在不同应用域的具体呈现,这为在同一扑克牌数据集上进行 YOLOv5 至 YOLOv12 的公平对比提供了可引用的框架视角。[12] 近期 Springer 的综述进一步以十年尺度回顾了 YOLO 的演进谱系,将模型结构、训练策略与部署生态放在同一坐标系下讨论,为“为什么同一任务上不同 YOLO 版本会呈现不同的误检/漏检模式”提供了宏观解释线索。[13]
更贴近本文主题的“版本升级”层面,YOLOv10 在顶级会议中提出面向端到端推理的设计取向,试图通过一致性的分配策略与结构优化降低对 NMS 的依赖,并在效率与精度边界上推进了一步,这为遮挡叠放导致的候选框冲突提供了值得借鉴的方向。 (NeurIPS Proceedings) [14] YOLOv12 则进一步强调注意力机制与实时性兼容的设计,在保持速度竞争力的同时提升表示能力,使得在复杂光照与纹理相似场景下的特征建模具备新的可能性。 (arXiv) [15]
基于上述背景,博主在本文的主要工作并不追求提出新的检测理论,而是面向“可复现、可对比、可落地”的工程目标:其一,在同一扑克牌数据集与统一评测协议下对 YOLOv5–YOLOv12 共 8 个版本进行训练与测试,给出速度与精度差异的经验结论;其二,构建并整理面向扑克牌任务的数据集标注、预处理与划分流程,保证后续复现实验的一致性;其三,基于 PySide6 设计桌面端交互界面并结合 SQLite 实现账户与结果持久化,使模型推理、统计与导出形成闭环,最终以完整代码、界面与数据集项目的形式交付,便于直接运行与二次开发。
主要功能演示:
(1)软件启动后首先进入登录界面,用户可注册或直接登录;系统基于 SQLite 完成身份校验,并在登录成功后自动加载该用户的历史记录与个性化配置,保证不同用户的检测结果与界面参数相互独立。
(2)主界面支持摄像头、视频、单图与图片文件夹四类输入,均复用同一推理流程(读取→预处理→YOLO 推理→后处理→可视化→统计/导出)。实时模式下同步展示检测框与类别/置信度/数量统计,视频与摄像头提供基本的播放与状态反馈,文件夹模式支持批量推理与一键导出,便于实验复现与演示。
(3)系统内置模型选择入口,可加载 YOLOv5–YOLOv12 不同权重,并对同一输入进行一致性切换对比;界面同时给出推理耗时或 FPS、检测数量等信息,使“精度差异”和“速度差异”能在同一场景下直观呈现。
(4)新增主题修改功能,支持浅色/深色模式与背景、主色调等外观配置;主题与账号绑定并持久化保存,重启或重新登录后可自动恢复,提升展示效果与可用性。
2. 数据集介绍
本项目使用的扑克牌检测数据集共 24,240 张图像,并按照训练/验证/测试进行划分,其中 21,210 张构成训练集(占 87.5%),2,020 张构成验证集(占 8.33%),1,010 张构成测试集(占 4.17%)。从样例可视化结果来看,图像背景覆盖了多种桌面材质与纹理(如木纹、织物、颗粒面等),同时包含叠放遮挡、局部露出、强反光与不同拍摄距离造成的尺度变化;这些因素使得“牌面信息局部可见”的情况显著增多,也更贴合桌面交互式应用对鲁棒性的需求。结合标注统计图可以观察到,各类别实例数整体较为均衡(单类标注框数量大体集中在相近区间),这有助于减少类别不均衡对训练梯度的影响,并使得不同 YOLO 版本的对比实验更具可解释性。
Chinese_name = {'10C': "梅花10", '10D': "方块10", '10H': "红桃10", '10S': "黑桃10",
'2C': "梅花2", '2D': "方块2", '2H': "红桃2", '2S': "黑桃2",
'3C': "梅花3", '3D': "方块3", '3H': "红桃3", '3S': "黑桃3",
'4C': "梅花4", '4D': "方块4", '4H': "红桃4", '4S': "黑桃4",
'5C': "梅花5", '5D': "方块5", '5H': "红桃5", '5S': "黑桃5",
'6C': "梅花6", '6D': "方块6", '6H': "红桃6", '6S': "黑桃6",
'7C': "梅花7", '7D': "方块7", '7H': "红桃7", '7S': "黑桃7",
'8C': "梅花8", '8D': "方块8", '8H': "红桃8", '8S': "黑桃8",
'9C': "梅花9", '9D': "方块9", '9H': "红桃9", '9S': "黑桃9",
'AC': "梅花A", 'AD': "方块A", 'AH': "红桃A", 'AS': "黑桃A",
'JC': "梅花J", 'JD': "方块J", 'JH': "红桃J", 'JS': "黑桃J",
'KC': "梅花K", 'KD': "方块K", 'KH': "红桃K", 'KS': "黑桃K",
'QC': "梅花Q", 'QD': "方块Q", 'QH': "红桃Q", 'QS': "黑桃Q"}

从标注框几何分布(中心点与宽高相关图)可以看出,目标中心点主要集中在图像中部但仍覆盖较大范围,说明数据既包含“居中摆放”的规范样本,也包含“偏移拍摄/裁切视角”的真实样本;另一方面,标注框宽高整体处于较小比例区间,呈现典型的小目标特征(尤其是多牌同框、遮挡叠放时更明显),因此在训练阶段需要通过统一输入尺度与在线增强来提升泛化能力。老思在工程实现中采用 YOLO 通用的 TXT 归一化标注格式,并将类别定义为标准 52 张扑克牌的“点数+花色”组合;为便于界面显示与结果导出,系统侧进一步提供了英文编码到中文名称的映射(如下方 Chinese_name 所示),从而将模型输出与用户可读的牌面语义对齐。
3. 模型设计与实现
扑克牌识别本质上是一个密集小目标检测问题:同一画面内往往存在多张牌,且“牌角”区域在遮挡叠放、强反光与光照突变下容易出现纹理缺失与局部过曝。老思在本项目中将任务统一建模为 52 类目标检测(A–K × 四种花色),以“端到端推理链路可控、实时性优先、精度可复现实验对比”为约束,选择一阶段检测器作为主干方案,并在同一数据集上对 YOLOv5–YOLOv12 系列进行横向评测与软件端集成。
从基线选择的角度看,传统两阶段检测器(如 Faster R-CNN)通常在精度上更有优势,但其候选框生成与 RoI 计算带来的时延波动不利于桌面端实时预览;相比之下,YOLO 系列的一阶段范式将“特征提取—多尺度融合—密集预测”整合为统一前向过程,更适合摄像头/视频流连续推理。与此同时,为了让工程实现更易复用,系统实现基于 Ultralytics 生态的模型定义与权重格式,便于在 UI 端对不同 YOLO 权重进行一键切换与统一后处理。
网络结构层面,YOLO 家族的主流设计可以抽象为 Backbone–Neck–Head 三段式:Backbone 负责逐级下采样并提取语义特征,Neck 以 FPN/PAN 风格进行跨层融合以兼顾小目标与大目标,Head 在多尺度特征图上输出类别与位置参数。整体结构示意可参考 YOLOv5 的官方结构图(后附可直链下载的图片),其清晰展示了 P3/P4/P5 多尺度预测与上采样融合路径。
本项目默认主模型采用 YOLOv12n(也支持切换到 v5–v11 的轻量模型),其核心动机是在保持实时性的前提下,引入更强的注意力建模以提升遮挡与复杂背景下的判别能力。Ultralytics 对 YOLOv12 的说明强调其“注意力为中心”的设计取向:通过 Area Attention 将特征图划分为若干等分区域来近似大感受野注意力,从而降低标准全局自注意力的计算与显存开销;并配合 R-ELAN 式的聚合与残差缩放改善深层注意力网络的优化稳定性,同时可选用 FlashAttention 降低显存访存瓶颈,并以“position perceiver”(7×7 可分离卷积)在不显式引入位置编码的情况下补充位置信息。
落实到可复现的网络定义上,YOLOv12 的公开配置给出了典型的多尺度检测头:Backbone 由卷积下采样与 C3 系列模块堆叠构成,在中高层引入 A2C2f 等注意力/融合单元;Head 通过两次上采样与 concat 融合形成 P3/P4/P5 三尺度输出,最后由 Detect 层统一产生预测结果。这样的结构对扑克牌场景尤为关键:牌角、点数与花色图标属于典型小目标与细粒度纹理,P3(高分辨率)分支能提供更细的空间定位,而 P4/P5 分支则为遮挡叠放与大尺度牌面提供更强语义上下文。
任务建模与损失函数方面,检测头的学习目标可写为“分类 + 回归”的联合优化。对第 i i i 个预测位置,分类通常采用交叉熵或二元交叉熵形式(视具体实现的激活与标签编码而定),例如多类 softmax 交叉熵为
L cls = − ∑ k = 1 C y k log p k , L_{\text{cls}} = -\sum_{k=1}^{C} y_k \log p_k, Lcls=−k=1∑Cyklogpk,
其中 C = 52 C=52 C=52, y k y_k yk 为 one-hot 标签, p k p_k pk 为预测概率。边界框回归常采用 IoU 系列损失以直接约束几何重叠关系,典型的 CIoU 形式为
L CIoU = 1 − I o U + ρ 2 ( b , b g t ) c 2 + α v , L_{\text{CIoU}} = 1-\mathrm{IoU} + \frac{\rho^2(\mathbf{b},\mathbf{b}^{gt})}{c^2} + \alpha v, LCIoU=1−IoU+c2ρ2(b,bgt)+αv,
其中 ρ ( ⋅ ) \rho(\cdot) ρ(⋅) 表示预测框与真值框中心点距离, c c c 为最小外接框对角线长度, v v v 衡量宽高比一致性, α \alpha α 为权衡系数。最终总损失可写为
L = λ box L box + λ cls L cls + λ obj L obj , L = \lambda_{\text{box}} L_{\text{box}} + \lambda_{\text{cls}} L_{\text{cls}} + \lambda_{\text{obj}} L_{\text{obj}}, L=λboxLbox+λclsLcls+λobjLobj,
其中 L obj L_{\text{obj}} Lobj 用于约束目标存在性(若检测头包含该分支或等价建模)。推理阶段则以置信度阈值筛选候选框,并通过 NMS 抑制重叠预测,保证桌面端显示的稳定性与可解释性。
在正则化与超参数实现层面,老思的工程实现遵循 Ultralytics 训练与推理接口的默认“稳健配置”:网络内部以 BN 保持训练稳定,优化端采用权重衰减抑制过拟合,并在推理端对输入进行尺度归一与 letterbox 对齐以减少几何畸变;对扑克牌这种高反光材质与强背景纹理的场景,后续训练策略(在第 4 节展开)会进一步通过颜色扰动、随机仿射与 Mosaic/Copy-Paste 等增强提高域外泛化能力,而模型侧的多尺度融合与注意力建模则为遮挡与叠放提供了更强的上下文推理基础。
4. 训练策略与模型优化
本项目的训练目标是同时满足“遮挡叠放与反光场景下的稳健识别”和“桌面端实时推理的时延约束”。因此老思在训练流程上采用 Ultralytics 的标准检测训练范式:以 COCO 等通用数据上的预训练权重作为初始化,在自建扑克牌数据集上进行迁移学习与微调,并通过验证集的 mAP 与 F1 共同驱动早停与最优权重选择。硬件侧以 RTX 4090 为主训练卡,训练阶段启用 AMP 混合精度以降低显存占用并提升吞吐,配合数据加载端的多进程预取保证 GPU 利用率,从而在不牺牲收敛稳定性的前提下完成较多轮次的充分训练。
考虑到本任务标注框整体偏小、且“牌角信息区域”对定位误差十分敏感,数据增强策略需要在“提升泛化”与“避免破坏细粒度纹理”之间取得平衡。训练前期保留 Mosaic 等拼接增强以扩大上下文变化并增加遮挡组合,强化模型对多牌同框、局部露出的适应性;训练后期逐步关闭 Mosaic(close_mosaic),使分布回到更接近真实拍摄的单帧形态,避免过强合成增强造成定位抖动。与此同时,适度的 HSV 颜色扰动、随机仿射/透视变化有助于覆盖不同光照色温与拍摄角度,但幅度不宜过大,否则会破坏点数与花色的局部纹理,从而带来“看似拟合、实则泛化下降”的现象。输入分辨率默认采用 640 × 640 640\times640 640×640,其工程含义是:在保证实时性的前提下尽量保留牌角小目标的像素量;当部署设备算力更充裕时,可通过提高 imgsz 或启用多尺度训练进一步改善小目标召回,但需要同步权衡推理时延与显存开销。
优化层面,本项目优先选择“收敛稳定、复现友好”的配置。学习率采用 warmup 预热避免训练初期梯度震荡,随后以余弦退火将学习率平滑下降到较低水平;其典型形式可写为
η ( t ) = η min + 1 2 ( η 0 − η min ) ( 1 + cos π t T ) , \eta(t)=\eta_{\min}+\frac{1}{2}\big(\eta_0-\eta_{\min}\big)\left(1+\cos\frac{\pi t}{T}\right), η(t)=ηmin+21(η0−ηmin)(1+cosTπt),
其中 η 0 \eta_0 η0 为初始学习率, T T T 为总迭代步数。为进一步抑制过拟合与提升泛化,训练过程中启用权重衰减与 EMA(指数滑动平均)权重,EMA 的更新可表示为
θ ema ← β θ ema + ( 1 − β ) θ , \theta_{\text{ema}} \leftarrow \beta \theta_{\text{ema}} + (1-\beta)\theta, θema←βθema+(1−β)θ,
其中 θ \theta θ 为当前参数, β \beta β 为平滑系数;在验证集上通常以 EMA 权重得到更平滑的评测曲线与更稳定的最终性能。早停机制以 patience 控制“连续若干轮验证指标无提升即停止”,既避免无效训练浪费算力,也能减少后期过拟合风险。
下表给出项目中最常用且对复现最关键的一组训练参数(其余保持框架默认或按显存动态调整),这些参数能够在 YOLOv5–YOLOv12 的横向对比中保持较好的公平性与一致性。
| 名称 | 作用(简述) | 数值 |
|---|---|---|
| epochs | 最大训练轮数 | 120 |
| patience | 早停耐心 | 50 |
| batch | 批大小 | 16 |
| imgsz | 输入尺寸 | 640 |
| pretrained | 加载预训练权重 | true |
| optimizer | 优化器 | auto |
| lr0 | 初始学习率 | 0.01 |
| lrf | 最终学习率占比 | 0.01 |
| momentum | 动量系数 | 0.937 |
| weight_decay | 权重衰减 | 0.0005 |
| warmup_epochs | 预热轮数 | 3.0 |
| mosaic | Mosaic 强度/概率 | 1.0 |
| close_mosaic | 后期关闭 Mosaic | 10 |
模型部署与推理侧的优化则以“稳定帧率与可控时延”为目标:桌面端默认使用 FP16 推理与合适的 conf/IoU 阈值组合,减少低置信度候选带来的后处理开销;当需要进一步压缩延迟时,可将模型导出为 ONNX 并在支持的环境下使用 TensorRT 加速,同时保持 UI 侧推理线程与界面线程分离,避免长耗时推理阻塞事件循环。整体上,这套训练与优化策略使得模型在反光、遮挡叠放与多背景纹理场景中具有更稳定的召回表现,也为后续 YOLOv5–YOLOv12 的对比实验提供了统一且可复现的训练基线。
5. 实验与结果分析
5.1 实验设计
本实验围绕扑克牌 52 类检测任务,在同一数据集划分(Train 21,210 / Val 2,020 / Test 1,010)与同一训练配置下,对 YOLO 系列不同版本进行横向对比。模型组分为两档:轻量档(n_type:YOLOv5nu、YOLOv6n、YOLOv7-tiny、YOLOv8n、YOLOv9t、YOLOv10n、YOLOv11n、YOLOv12n)与中等规模档(s_type:YOLOv5su、YOLOv6s、YOLOv7、YOLOv8s、YOLOv9s、YOLOv10s、YOLOv11s、YOLOv12s)。
训练采用统一输入尺寸(如 640 × 640 640\times640 640×640)与一致的数据增强/优化器策略,验证集用于模型选择与收敛监控,最终在测试集上报告精度指标;速度统计则在同一硬件环境下进行,CSV 记录显示测试设备为 NVIDIA GeForce RTX 3070 Laptop GPU(8GB),并给出了预处理、推理与后处理分解耗时,便于分析端到端延迟的来源。
5.2 度量指标
实验采用目标检测常用指标衡量分类与定位质量。对每个类别,精确率与召回率分别定义为
P = T P T P + F P , R = T P T P + F N , P=\frac{TP}{TP+FP},\qquad R=\frac{TP}{TP+FN}, P=TP+FPTP,R=TP+FNTP,
综合指标 F1 为
F 1 = 2 P R P + R . F1=\frac{2PR}{P+R}. F1=P+R2PR.
检测精度使用 m A P @ 0.5 mAP@0.5 mAP@0.5 与 m A P @ 0.5 : 0.95 mAP@0.5:0.95 mAP@0.5:0.95(记为 mAP50 与 mAP50-95)评估,其中 mAP50 更强调“检测到即可”,mAP50-95 对边界框对齐更敏感,更能反映遮挡、透视与小目标边界下的回归质量。工程侧同时统计端到端时延(TotalTime = Pre + Inf + Post)与等效 FPS,以衡量桌面端实时性。
5.3 实验结果分析
从整体结果看,两档模型在该数据集上都达到了接近饱和的检测性能:大多数模型的 F1 均接近 1.0,mAP50 也稳定在 0.995 附近,说明在当前测试分布下,“牌角区域”检测的可分性较强,模型间差异更多体现在 边界框回归精细度(mAP50-95) 与 推理时延。如下图所示(,各模型 PR 曲线基本贴近右上角,训练曲线也显示 mAP 指标在前若干 epoch 内迅速进入平台期,这意味着在同分布数据上继续拉长训练轮次带来的收益有限,更合理的做法是启用早停或缩短 epochs,将算力留给难例扩充与数据域增强。
在 n_type 组中,YOLOv7-tiny 的 mAP50 达到 0.9992,但其 mAP50-95 仅 0.9656,同时端到端延迟显著增大(约 21.08 ms);这类现象通常意味着在 IoU=0.5 的“粗定位”层面足够稳定,但在更严格的 IoU 阈值下框的贴合度下降,且候选框数量与后处理成本上升会放大端到端时延。相对而言,YOLOv8n 在保持 0.9997 F1 / 0.9781 mAP50-95 的同时给出了该组最佳实时性(约 10.17 ms,98.3 FPS),更贴合桌面端实时预览的工程约束。YOLOv10n 的 mAP50-95 达到 0.9817,表明其在框回归质量上占优,但 F1 略低(约 0.9981)且延迟高于 v8n,这更适合作为“定位更严谨、延迟可接受”的折中选择。
在 s_type 组中,YOLOv7 的 mAP50 最高(0.9996),但参数量与 FLOPs 显著更大(约 36.9M / 104.7G),端到端延迟达到 29.52 ms(约 33.9 FPS),在桌面端实时交互上性价比并不理想。YOLOv8s 在该组给出最佳实时性(约 11.39 ms,87.8 FPS),且精度并未明显落后;YOLOv10s 的 mAP50-95 达到 0.9842,在“严格 IoU 下的框贴合度”方面最优,若系统更强调对牌角区域边界的稳定对齐(例如后续需要更精细的裁剪或二阶段识别),则可优先考虑 v10s。
从部署角度,老思更倾向于将 YOLOv8n/YOLOv8s 作为默认实时模型,将 YOLOv10n/YOLOv10s 作为“更重定位质量”的可选项;而要进一步拉开 YOLOv5–YOLOv12 的对比差距,关键不在继续堆模型,而在数据侧增加更具挑战的样本:强反光过曝、极端透视、运动模糊、密集叠放仅露出极小牌角、以及与花色颜色相近的干扰背景等,这些难例会显著放大不同结构(注意力、颈部融合、检测头设计)在泛化能力上的差别。
n_type 组核心结果表(含速度与复杂度)
| Model | Params(M) | FLOPs(G) | TotalTime(ms) | FPS | F1 Score | mAP50 | mAP50-95 |
|---|---|---|---|---|---|---|---|
| YOLOv5nu | 2.6 | 7.7 | 10.94 | 91.4 | 0.9998 | 0.9950 | 0.9761 |
| YOLOv6n | 4.3 | 11.1 | 10.34 | 96.7 | 0.9998 | 0.9950 | 0.9771 |
| YOLOv7-tiny | 6.2 | 13.8 | 21.08 | 47.4 | 0.9996 | 0.9992 | 0.9656 |
| YOLOv8n | 3.2 | 8.7 | 10.17 | 98.3 | 0.9997 | 0.9950 | 0.9781 |
| YOLOv9t | 2.0 | 7.7 | 19.67 | 50.8 | 0.9998 | 0.9950 | 0.9790 |
| YOLOv10n | 2.3 | 6.7 | 13.95 | 71.7 | 0.9981 | 0.9950 | 0.9817 |
| YOLOv11n | 2.6 | 6.5 | 12.97 | 77.1 | 0.9996 | 0.9950 | 0.9779 |
| YOLOv12n | 2.6 | 6.5 | 15.75 | 63.5 | 0.9998 | 0.9950 | 0.9786 |

s_type 组核心结果表(含速度与复杂度)
| Model | Params(M) | FLOPs(G) | TotalTime(ms) | FPS | F1 Score | mAP50 | mAP50-95 |
|---|---|---|---|---|---|---|---|
| YOLOv5su | 9.1 | 24.0 | 12.24 | 81.7 | 0.9998 | 0.9950 | 0.9793 |
| YOLOv6s | 17.2 | 44.2 | 12.26 | 81.6 | 0.9998 | 0.9950 | 0.9809 |
| YOLOv7 | 36.9 | 104.7 | 29.52 | 33.9 | 0.9996 | 0.9996 | 0.9809 |
| YOLOv8s | 11.2 | 28.6 | 11.39 | 87.8 | 0.9998 | 0.9950 | 0.9805 |
| YOLOv9s | 7.2 | 26.7 | 22.17 | 45.1 | 0.9998 | 0.9950 | 0.9821 |
| YOLOv10s | 7.2 | 21.6 | 14.19 | 70.5 | 0.9995 | 0.9950 | 0.9842 |
| YOLOv11s | 9.4 | 21.5 | 13.47 | 74.2 | 0.9998 | 0.9950 | 0.9815 |
| YOLOv12s | 9.3 | 21.4 | 16.74 | 59.7 | 0.9998 | 0.9950 | 0.9822 |

6. 系统设计与实现
6.1 系统设计思路
本项目以桌面端“可交互、可切换、可追溯”为工程目标,整体采用分层解耦的结构组织代码:界面层由 Ui_MainWindow 承载控件布局、样式与资源加载,控制层 MainWindow 作为中枢调度器统一管理状态机与槽函数,处理层 Detector 负责模型加载、推理与后处理。这样的划分使得模型迭代(例如从 YOLOv8n 切换到 YOLOv12n,或导入自训练权重)不会牵动 UI 逻辑,同时也便于把训练侧与部署侧的差异隔离在推理模块内部,降低二次开发成本。
系统的跨层通信采用 PySide6 的信号-槽机制实现:界面层的按钮、滑块与表格操作仅发出“输入源切换、阈值更新、模型切换、开始/暂停/停止”等高层事件,由 MainWindow 在槽函数中完成状态校验与任务分发;推理计算在独立工作线程(或异步任务)中执行,推理结果以结构化数据(检测框、类别、置信度、计数统计、可选热力图)回传控制层,再由控制层驱动界面刷新,从而避免耗时推理阻塞 Qt 事件循环,保证视频流预览的连续性与交互响应。
为了覆盖“图片/视频/摄像头/文件夹”多输入源,系统将输入统一抽象为帧流接口:单图被视为长度为 1 的帧序列,文件夹被视为可迭代的离线帧流,视频与摄像头则是在线帧流。所有输入都复用同一条推理管线——预处理(Letterbox、归一化与张量化)→ YOLO 推理(默认 YOLOv12n,支持导入其它 YOLO 族权重)→ 后处理(阈值过滤与 NMS/解码)→ 统计与可视化叠加——因此模型对比时只需要更换权重文件即可保持评测协议一致。结果侧引入 SQLite 作为轻量持久化存储,用户的主题与阈值配置、历史检测记录与导出索引均可按账号隔离管理,使系统既能演示交互,也能支撑实验数据留存与复现。
图 系统流程图
图注:系统从初始化到多源输入,完成预处理、推理与界面联动,并通过交互形成闭环。
6.2 登录与账户管理

登录与账户管理模块以“用户隔离的配置与结果空间”为核心约束:注册阶段对输入信息做完整性校验并对口令进行哈希后写入 SQLite;登录阶段通过查询与校验决定是否放行,并在成功后同步加载该用户的主题、阈值参数与历史检测记录,使主检测流程在进入主界面时就具备可复现的默认状态。用户在主界面可随时修改头像与密码,系统将变更写回数据库并即时生效;注销或切换账号会回到登录界面,从而保证不同用户之间的界面偏好、模型选择与检测结果不会混用,既提升交互体验,也为后续实验对比与结果导出提供了清晰的归档边界。
7. 下载链接
若您想获得博文中涉及的实现完整全部资源文件(包括测试图片、视频,py, UI文件,训练数据集、训练代码、界面代码等),这里见可参考博客与视频,已将所有涉及的文件同时打包到里面,点击即可运行,完整文件截图如下:

完整资源中包含数据集及训练代码,环境配置与界面中文字、图片、logo等的修改方法请见视频,项目完整文件请见项目介绍及功能演示视频处给出:➷➷➷
项目介绍地址:https://my.feishu.cn/wiki/NXPswup3HifvmpkL618c5W1wnbb
功能效果展示视频:YOLOv5至YOLOv12升级:扑克牌识别软件系统的设计与实现(完整代码+界面+数据集项目)
环境配置博客教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境配置教程;
或者环境配置视频教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境依赖配置教程
数据集标注教程(如需自行标注数据):数据标注合集
8. 参考文献(GB/T 7714)
1 Lowe D G. Distinctive image features from scale-invariant keypoints[J]. International Journal of Computer Vision, 2004, 60(2): 91-110.
2 Ren S, He K, Girshick R, et al. Faster R-CNN: Towards real-time object detection with region proposal networks[C]//Advances in Neural Information Processing Systems (NeurIPS). 2015.
3 Liu W, Anguelov D, Erhan D, et al. SSD: Single shot multibox detector[C]//European Conference on Computer Vision (ECCV). Springer, 2016: 21-37.
4 Lin T Y, Dollár P, Girshick R, et al. Feature pyramid networks for object detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2017: 2117-2125.
[5] Redmon J, Divvala S, Girshick R, et al. You only look once: Unified, real-time object detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2016: 779-788.
[6] Lin T Y, Goyal P, Girshick R, et al. Focal loss for dense object detection[C]//Proceedings of the IEEE International Conference on Computer Vision (ICCV). 2017: 2980-2988.
[7] Rezatofighi H, Tsoi N, Gwak J, et al. Generalized intersection over union: A metric and a loss for bounding box regression[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR). 2019: 658-666.
[8] Carion N, Massa F, Synnaeve G, et al. End-to-end object detection with transformers[C]//European Conference on Computer Vision (ECCV). Springer, 2020: 213-229.
[9] Wzorek P, Kryjak T. Playing cards and bidding calls detection for automatic registration of a duplicate bridge game[C]//Proceedings of the 3rd Polish Conference on Artificial Intelligence (PP-RAI 2022). 2022: 37-40.
[10] 陈科圻, 朱志亮, 邓小明, 等. 多尺度目标检测的深度学习研究综述[J]. 软件学报, 2021, 32(4): 1201-1227.
[11] 潘晓英, 贾凝心, 穆元震, 高炫蓉. 小目标检测研究综述[J]. 中国图象图形学报, 2023, 28(9): 2587-2615.
[12] 米增, 连哲. 面向通用目标检测的YOLO方法研究综述[J]. 计算机工程与应用, 2024, 60(21): 38-54. (CEA)
[13] Sapkota R, Flores-Calero M, Qureshi R, et al. YOLO advances to its genesis: a decadal and comprehensive review of the You Only Look Once (YOLO) series[J]. Artificial Intelligence Review, 2025, 58: 274. (Springer)
[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. (NeurIPS Proceedings)
[15] Tian Y, Ye Q, Doermann D. YOLOv12: Attention-Centric Real-Time Object Detectors[EB/OL]. arXiv:2502.12524, 2025. (arXiv)
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)