摘要 :面向门禁考勤、相册整理与人机交互等应用中的日常场景人脸检测 需求,本文给出一个从算法对比到桌面端落地的完整实现。系统以 YOLOv5--YOLOv12 为核心检测骨干,梳理各版本在骨干网络、特征金字塔、检测头与训练配置上的关键演进,并在自建与清洗的人脸数据集 上进行统一训练与评测,给出 mAP、F1、速度、参数量及 PR/训练曲线等可复现实验结果。工程侧基于 Python 3.12 与 PySide6 构建可交互界面,通过 Qt 信号槽与多线程推理实现图片/视频/摄像头输入、Conf/IoU 动态调节、检测框与置信度可视化、批量统计、结果保存与导出,并可选配 SQLite 账户与历史记录管理。文末提供完整代码、界面工程与数据集资源包,便于复现与二次开发。
文章目录
- [1. 前言综述](#1. 前言综述)
- [2. 数据集介绍](#2. 数据集介绍)
- [3. 模型设计与实现](#3. 模型设计与实现)
- [4. 训练策略与模型优化](#4. 训练策略与模型优化)
- [5. 实验与结果分析](#5. 实验与结果分析)
- [6. 系统设计与实现](#6. 系统设计与实现)
-
- [6.1 系统设计思路](#6.1 系统设计思路)
- [6.2 登录与账户管理](#6.2 登录与账户管理)
- [7. 下载链接](#7. 下载链接)
- [8. 参考文献(GB/T 7714)](#8. 参考文献(GB/T 7714))
1. 前言综述
在"人脸识别---活体检测---身份核验"等典型链路中,人脸检测承担着前置定位与质量门控的角色,其鲁棒性往往决定后续识别与决策的上限,尤其在日常场景里更容易遭遇遮挡、姿态、光照与尺度等复杂扰动。1 (College of Engineering) 以门禁考勤、智能家居、移动端解锁、公共安全与内容合规为代表的应用,都在追求"可解释、可复现、可部署"的工程形态:既要在普通摄像头与复杂背景下稳定检出,也要具备实时性与跨设备一致性。博主在实际调研中发现,很多开源检测模型能在标准基准上给出漂亮指标,但迁移到日常采集数据后,往往会因成像质量差异、目标尺度偏移和遮挡模式变化而出现明显性能回落;因此,将算法演进脉络与可落地系统实现结合起来,仍然具有直接的工程意义。
早期人脸检测研究主要依赖人工特征与级联分类器,通过积分图与Haar-like特征实现了当时意义上的实时检测,但其对姿态、遮挡与光照的敏感性使其在开放世界场景中难以维持稳定召回。2 (Springer) 随着卷积神经网络成为主流,检测方法逐渐从"特征设计"转向"端到端表征学习",并通过多任务学习将检测与关键点对齐耦合在同一框架内,使得对复杂姿态与模糊成像的适应性显著增强。3 (Zhanpeng Zhang) 与此同时,数据集规模与标注属性的扩展为"日常场景"问题提供了更可信的评测锚点,WIDER FACE以大量小尺度、遮挡与事件属性标注揭示了基准饱和与真实需求之间的差距。4 (CVF Open Access)
在深度人脸检测的代表性工作中,PyramidBox通过引入上下文与金字塔式语义增强来缓解小脸与遮挡场景的漏检问题,体现了"单纯更深的主干网络并不足以解决尺度崩塌"的经验事实。5 (ECVA) DSFD进一步以"双阶段(dual-shot)"与更细粒度的特征融合提升困难样本的可分性,但其结构复杂度与推理代价也为端侧与实时部署带来额外压力。6 (DBLP) RetinaFace将边框回归、关键点与三维形状的多任务监督统一到单阶段框架中,在WIDER FACE等基准上证明了"更强监督信号"对困难集召回的增益,同时也提示工程落地时需要在监督代价与部署收益之间做权衡。7 (CVF Open Access)
从更广的目标检测视角看,YOLO系列以单阶段回归范式重构了检测流水线,将"候选生成---分类回归"的多组件流程压缩为单网络推理,从而为实时应用提供了清晰的工程入口。8 (CV Foundation) YOLOv4在特征融合、训练技巧与结构设计上系统总结了可复用的经验做法,推动了在速度与精度之间更可控的折中,这也为后续在特定任务(如人脸)上进行迁移与轻量化改造奠定了基线认识。9 (arXiv) 进入Ultralytics主导的工程生态后,YOLOv5以高度工程化的训练、导出与部署路径成为大量工业原型的起点,使得"从数据集到可运行系统"的迭代成本显著降低。10 (Zenodo) 随着YOLOv8在Ultralytics框架中持续演进,围绕解耦头、训练/导出工具链与跨端部署的改进进一步强化了工程可复现性,使其成为日常场景快速验证的重要支撑。11 (Zenodo) 在此基础上,Ultralytics以YOLO11替换默认架构并强调更优的精度效率折中,显示出"同一工具链内持续替换骨干与头部设计"的迭代路线。12 (Zenodo) 与Ultralytics路线并行的学术分支中,YOLOv9提出可编程梯度信息与轻量结构设计以缓解信息瓶颈问题,为"训练稳定性与参数利用率"提供了新的解释框架。13 YOLOv10则以端到端、NMS-free训练与整体效率策略为核心,试图同时解决后处理带来的延迟与部署复杂性,从系统角度更贴近日常实时应用的约束。[14] 最新的YOLOv12进一步把注意力机制纳入实时检测主干设计,目标是在保持低延迟的前提下提升表征能力,这对"遮挡与小尺度并存"的日常人脸检测具有直接启发意义。[15] (arXiv)
为便于对研究脉络与工程可落地性进行对照,表1给出若干代表性方法在数据、优势与局限上的概览,尤其强调它们在"日常场景"下常见问题(小脸、遮挡、复杂光照、运动模糊)中的应对方式与工程代价。
| 研究路线 | 代表方法(示例) | 常用数据集/评测 | 主要优势 | 主要不足(面向日常场景落地) |
|---|---|---|---|---|
| 手工特征+级联 | Viola--Jones | MIT+CMU、FDDB等早期集合 | 速度快、实现简单 | 对姿态/遮挡/光照敏感,跨域泛化弱 |
| 深度级联与对齐联合 | MTCNN | FDDB、AFLW、WIDER FACE | 检测与关键点耦合,适配姿态变化 | 多阶段推理带来时延与工程复杂度 |
| 上下文与多尺度增强 | PyramidBox | WIDER FACE、FDDB | 小脸与困难样本召回提升 | 结构更重,端侧部署需权衡 |
| 双阶段强化困难集 | DSFD | WIDER FACE、FDDB | 困难集精度/召回较优 | 计算与显存开销上升,实时性受限 |
| 多任务强监督单阶段 | RetinaFace | WIDER/FDDB/AFLW | 单阶段高精度,关键点/形状联合 | 标注与训练成本更高,部署需裁剪分支 |
| 通用一阶段检测迁移 | YOLOv5--YOLOv8 | COCO + 自建人脸集 | 工具链成熟,易做实时系统 | 对小脸/遮挡需定制数据与结构细化 |
| 信息瓶颈与端到端趋势 | YOLOv9/YOLOv10/YOLOv12 | COCO(并可迁移) | 更关注训练信号与部署简化 | 迁移到人脸仍需数据域适配与阈值策略 |
面向上述研究现状,老思在本文的工作重点放在"把YOLOv5到YOLOv12的升级路径,转化为可复现的日常场景人脸检测工程方案":其一,在同一数据集划分与统一评测指标下对YOLOv5--YOLOv12进行系统对比,明确不同代际改动对小脸与遮挡场景的影响;其二,围绕日常采集数据构建并标注专用数据集,形成可直接复现的预处理、划分与训练脚本;其三,以PySide6实现可交互的桌面端检测系统界面,支持图片/视频/摄像头输入、结果可视化与模型切换,并整理完整代码、权重与数据集资源包以支撑读者复现实验与二次开发。
主要功能演示:
(1)启动与登录:启动进入登录页,支持注册/登录;成功后加载用户配置与历史,进入主界面。

(2)多源输入与实时检测:支持摄像头、视频、单图、图片文件夹;实时绘制检测框与置信度,阈值(Conf/IoU)可随时调节并即时生效。

(3)模型选择与对比演示:一键切换YOLOv5--YOLOv12权重;同一输入下对比不同模型的检测效果与推理耗时。

(4)主题修改功能:支持浅色/深色与配色切换,可替换背景/图标;主题按用户保存,重启登录后自动恢复。

2. 数据集介绍
本项目面向"日常场景人脸检测"的真实部署约束构建数据集,图像内容覆盖室内外、复杂背景、多人密集、侧脸与遮挡、弱光与强光反差等典型困难因素;从训练批次可视化样例可以看到,同一画面中往往同时存在大尺度近景人脸与极小尺度远处人脸,这类尺度混杂是日常场景中漏检的主要诱因之一。数据集采用单类目标设定,仅包含 face(人脸) ,类别映射为 Chinese_name = {'face': '人脸'},从而把建模重点集中在"召回率与定位质量"的提升上。标签统计图显示数据集中人脸实例规模达到十万量级(约 1.3 × 10 5 1.3\times 10^5 1.3×105),中心点热力分布在图像中部区域更为密集;宽高分布呈明显长尾,小目标占比较高且宽高相关性显著,这意味着训练时需要更依赖多尺度特征与更稳健的增强策略来缓解小脸与遮挡带来的监督稀疏问题。

python
Chinese_name = {'face': "人脸"}
数据标注采用矩形框标注并导出为 YOLO 规范的 TXT 文件,每行记录一个目标,格式为 class_id x_center y_center width height,其中坐标与尺寸均被归一化到 [ 0 , 1 ] [0,1] [0,1],便于与 YOLOv5--YOLOv12 的训练/导出流程无缝对接。预处理环节主要完成:剔除损坏或无法解码的图像、校验并裁剪越界标注框、去除空标签样本、统一图像编码与路径组织,并按训练/验证/测试划分构建可复现实验协议;训练阶段输入通常会统一缩放到固定分辨率(例如 640 × 640 640\times640 640×640)以匹配主流 YOLO 配置,从而保证不同版本模型的公平对比。

📊 数据集规格说明 (Dataset Specification)
| 维度 | 参数项 | 详细数据 |
|---|---|---|
| 基础信息 | 标注软件 | LabelImg |
| 标注格式 | YOLO TXT (Normalized) | |
| 数量统计 | 训练集 (Train) | 10,877 张 (67.5%) |
| 验证集 (Val) | 3,226 张 (20.0%) | |
| 测试集 (Test) | 2,000 张 (12.4%) | |
| 总计 (Total) | 16,103 张 | |
| 类别清单 | Class ID: 0 | face(人脸) |
| 图像规格 | 输入尺寸 | 640 * 640(训练时统一缩放) |
| 数据来源 | 公开数据集(如 WIDER FACE 子集)/ 实地采集混合数据(清洗与重标注后统一) |
3. 模型设计与实现
日常场景的人脸检测在成像条件上更接近开放世界:目标尺度跨度大、遮挡与侧脸频繁出现、光照与运动模糊带来边界不清晰等问题,使得模型既要具备足够的表征能力,又必须满足实时推理的时延约束。老思在算法选型上以 YOLO 系列作为统一主线,是因为其单阶段密集预测范式天然适配实时系统的工程形态;在 YOLOv5--YOLOv12 的对比框架下,本文默认以 YOLOv12n 作为主模型进行系统实现与界面集成,并保留 v5/v6/v7/v8/v9/v10/v11 的权重切换接口,用同一套数据协议与评测流程刻画"精度---速度---模型复杂度"的实际取舍。YOLOv12 的核心特征在于将注意力机制以更高效的形式嵌入实时检测骨干,通过 Area Attention、R-ELAN 等设计在保持实时性的同时增强对关键区域的建模能力,这对小脸与遮挡脸的召回往往更有利。(Ultralytics Docs)

从网络结构角度看,本文采用的检测器可以概括为"骨干网络---特征融合颈部---检测头"的三段式拓扑。骨干侧负责从输入图像提取分层语义特征;在 YOLOv12 中,注意力模块不再采用复杂窗口划分,而是以等分区域的方式在水平或垂直方向重排特征,从而在计算复杂度与有效感受野之间取得折中;同时以带缩放的残差聚合结构(R-ELAN)改善深层优化稳定性,并配合较大的可分离卷积作为位置感知器,弥补去除显式位置编码后的空间信息表达。(ar5iv) 颈部结构延续 YOLO 系列常用的多尺度特征融合思想,通过自顶向下与自底向上的路径把高层语义与低层细节对齐,使检测头在多分辨率特征图上同时预测,从而缓解小人脸在下采样过程中的信息损失。检测头在工程实现上以"分类---回归"解耦为主(不同版本细节略有差异),最终输出每个候选位置的人脸置信度与边界框回归量;对于本文的单类任务,类别空间退化为一维,有利于把模型容量更多用于定位质量与困难样本表征。
在任务建模上,输入图像经缩放与填充(letterbox)后形成固定尺寸张量,标签采用 YOLO 归一化格式 ( x , y , w , h ) ∈ [ 0 , 1 ] (x,y,w,h)\in[0,1] (x,y,w,h)∈[0,1],其中 ( x , y ) (x,y) (x,y) 为边界框中心点坐标, ( w , h ) (w,h) (w,h) 为宽高。训练目标通常由分类损失与回归损失共同组成,可写为
L = λ box L ∗ box + λ ∗ cls L ∗ cls + λ ∗ reg L ∗ reg . \mathcal{L}=\lambda_{\text{box}}\mathcal{L}*{\text{box}}+\lambda*{\text{cls}}\mathcal{L}*{\text{cls}}+\lambda*{\text{reg}}\mathcal{L}*{\text{reg}}. L=λboxL∗box+λ∗clsL∗cls+λ∗regL∗reg.
对单类人脸检测而言, L ∗ cls \mathcal{L}*{\text{cls}} L∗cls 常用二元交叉熵(BCE)刻画"人脸/非人脸"的判别:
L cls = − [ y log p + ( 1 − y ) log ( 1 − p ) ] , \mathcal{L}_{\text{cls}}=-\big[y\log p+(1-y)\log(1-p)\big], Lcls=−[ylogp+(1−y)log(1−p)],
其中 y ∈ 0 , 1 y\in{0,1} y∈0,1, p p p 为预测概率。边界框回归部分通常基于 IoU 家族损失以提升对尺度与长宽比的鲁棒性,例如
IoU = ∣ B ∩ B ^ ∣ ∣ B ∪ B ^ ∣ , \text{IoU}=\frac{|B\cap \hat{B}|}{|B\cup \hat{B}|}, IoU=∣B∪B^∣∣B∩B^∣,
并在此基础上引入更稳定的几何约束(如 CIoU 等)来加速收敛与改善定位;部分新版本还会使用分布式回归(例如 DFL 思路)把连续边界距离建模为离散分布,从而提升高 IoU 区间的回归精度。由于本文数据集中小脸占比高、宽高呈长尾分布,回归项的稳定性与正负样本分配策略往往比"单纯加大模型规模"更决定最终召回,这也是后续对不同 YOLO 版本进行统一对比的主要动机。(arXiv)
工程实现上,本文把"多版本 YOLO 推理"抽象为统一接口:前处理阶段完成 BGR/RGB 变换、归一化、letterbox 与批维组织;推理阶段支持 PyTorch 权重直接推理,并为部署预留 ONNX/TensorRT 导出路径;后处理阶段统一将预测框映射回原图坐标,并采用类无关 NMS 过滤冗余框(即使部分版本支持端到端输出,为了在 UI 与评测侧保持一致性,仍以同一后处理协议落地)。多源输入(摄像头/视频/图片/文件夹)在帧调度层被归一为"帧---推理---渲染"的流水线:推理线程只负责输出结构化结果(框坐标、置信度、数量统计),界面线程负责绘制与交互,从而避免 UI 阻塞并保证实时性。
4. 训练策略与模型优化
日常场景人脸检测的训练目标并不是追求某一基准数据集上的"单点最优",而是在遮挡、弱光、小尺度与背景干扰并存的条件下获得稳定的召回与可控的误检。老思在工程实现中将训练流程固化为"数据校验---增强与采样---迁移学习---统一评测---导出部署"的闭环,确保 YOLOv5 至 YOLOv12 在同一数据协议下可复现实验结论。训练环境建议采用 Python 3.12 与 PyTorch(CUDA 对应版本与驱动匹配即可),单卡 RTX 4090 即可覆盖本文 16k 级图像规模的数据集;对显存敏感的模型规模(如 s/m)可通过 batch 调整或梯度累计保持等效批大小,从而在不改变优化动态的前提下完成公平对比。
迁移学习方面,本文默认加载各版本在通用数据集上预训练的权重作为初始化,以加速收敛并提升小数据域的泛化稳定性。对人脸单类任务而言,更关键的是让模型尽早学到"边界与语义的一致性",因此训练初期可短暂冻结骨干的浅层(或采用较小学习率)以稳定低级纹理特征,待验证集损失进入平稳下降区间后再全量解冻进行端到端微调;对于小脸占比高的场景,微调阶段应优先保证输入分辨率与多尺度策略一致,避免因为尺度分布漂移导致定位质量下降。为抑制过拟合,训练中常配合指数滑动平均(EMA)对参数进行平滑更新,其形式为
θ t EMA = α θ t − 1 EMA + ( 1 − α ) θ t , \theta_t^{\text{EMA}}=\alpha\theta_{t-1}^{\text{EMA}}+(1-\alpha)\theta_t, θtEMA=αθt−1EMA+(1−α)θt,
其中 α ∈ ( 0 , 1 ) \alpha\in(0,1) α∈(0,1) 通常取接近 1 的值,用以减少梯度噪声对最终权重的扰动,这对遮挡与弱光样本占比较高的数据尤其有效。
数据增强策略需要紧贴人脸任务特性:Mosaic 能显著提高小目标出现概率并增强背景多样性,但过强的拼接会引入不自然的人脸几何,导致验证集出现"边界抖动"或误检上升,因此本文采用"前期启用、后期关闭"的策略,使模型先获得足够的尺度与背景鲁棒性,再在训练末期回到更接近真实分布的样本形态以提升定位精度。对于日常场景,随机水平翻转通常是安全的,而大角度旋转、强透视与过度模糊需要谨慎控制幅度;颜色抖动可提升对室内外光照变化的适应性,但应避免把肤色与局部纹理破坏到不可辨识的程度。若数据中存在大量密集人群或屏幕反射等"高相似背景",适当提高负样本多样性(如引入背景图像或降低正样本采样偏置)往往比单纯加大模型更能降低误检。
优化器与学习率策略上,本文以 YOLO 框架的默认"auto"选择为基线(通常在 SGD/AdamW 之间依据模型与 batch 自动配置),并采用 warmup 让训练从小学习率平稳爬升,避免初期梯度爆炸。学习率衰减使用余弦退火是较常见且稳定的选择,其一类形式可写为
η t = η min + 1 2 ( η max − η min ) ( 1 + cos π t T ) , \eta_t=\eta_{\min}+\tfrac{1}{2}(\eta_{\max}-\eta_{\min})\left(1+\cos\frac{\pi t}{T}\right), ηt=ηmin+21(ηmax−ηmin)(1+cosTπt),
其中 t t t 为当前迭代(或 epoch)位置, T T T 为总训练长度;该策略在训练后期能更细致地搜索局部最优,对单类检测的收敛与泛化通常更友好。针对验证集波动,本文引入早停耐心(patience)机制:当若干 epoch 内验证指标无提升则提前终止,以节省算力并降低过拟合风险。为提升吞吐,训练默认开启 AMP 混合精度,并在数据加载端使用合适的 workers 与缓存策略减少 IO 抖动;对 4090 这类显卡,AMP 往往能在不显著损伤精度的前提下获得可观的训练加速。
下表给出本文在未额外指定时的默认训练配置(可作为 YOLOv5--YOLOv12 对比实验的统一基线),其中 Mosaic 与 close_mosaic 的组合用于体现"先学鲁棒性、后磨定位"的策略取向。
| 名称 | 作用(简述) | 数值 |
|---|---|---|
| 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 |
在模型推理侧,本文把"可部署"作为优化的落脚点:训练完成后统一导出 ONNX,并按目标设备选择 FP16 或 INT8(量化需校准集)以降低时延;对于桌面端实时检测,FP16 通常能在保持精度的同时显著提升吞吐。后处理层面对密集场景的稳定性尤为关键,本文在 UI 中开放 Conf/IoU 阈值调节,使得同一权重在不同场景下可通过阈值快速适配;在对比评测时则固定阈值与 NMS 策略,避免"参数漂移"对版本结论造成干扰。最终,训练策略与推理优化共同服务于一个目标:让 YOLOv5--YOLOv12 的差异不仅体现在指标表格上,也能在日常场景的实时系统中被稳定、可重复地观察到。
5. 实验与结果分析
本节实验的目标是把 YOLOv5--YOLOv12 的"版本差异"落到可复现的检测效果与工程代价上:在同一数据划分与统一训练配置(输入尺寸 640 × 640 640\times640 640×640,训练 120 epochs 等)下,对轻量级 n/t 与 s 两个模型尺度分别进行对比评测。评测指标包含检测精度(Precision)、召回率(Recall)、 F 1 F1 F1、 m A P 50 mAP50 mAP50 与 m A P 50 mAP50 mAP50- 95 95 95,并统计单张图像的前处理、推理与后处理耗时(ms)。需要说明的是,本文推理耗时统计来自日志所示硬件环境(NVIDIA GeForce RTX 3070 Laptop GPU,8GB),因此其绝对数值更适合用于同机型内的相对比较。
度量指标方面,Precision 与 Recall 分别定义为 P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP、 R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTP,综合指标采用
F 1 = 2 P R P + R . F1=\frac{2PR}{P+R}. F1=P+R2PR.
A P AP AP 表示 PR 曲线下的面积,可写为 A P = ∫ 0 1 P ( R ) , d R AP=\int_0^1 P(R),dR AP=∫01P(R),dR; m A P 50 mAP50 mAP50 表示在 IoU=0.5 下的平均精度, m A P 50 mAP50 mAP50- 95 95 95 则对 IoU 从 0.5 到 0.95(步长 0.05)做均值,更能反映高质量定位能力。由于日常场景的小脸与遮挡样本占比较高, m A P 50 mAP50 mAP50 往往体现"能否检出",而 m A P 50 mAP50 mAP50- 95 95 95 更敏感于边界框是否贴合,这两者在结果解读上需要同时关注。
在 n/t 级轻量模型 对比中,图5-1给出了不同模型的 F 1 F1 F1 与 m A P 50 mAP50 mAP50 柱状对比,可以直观看到 YOLOv7-tiny 在该组中取得更高的综合检测性能,而 YOLOv9t/YOLOv10n/YOLOv11n 的 m A P 50 mAP50 mAP50 集中在 0.669--0.671 区间,差异较小但推理效率差异明显。

为便于复现实验结论,表5-1汇总了 n/t 级各模型的精度指标与耗时统计。从结果看,YOLOv7-tiny 以更高的 Recall(0.650)带动 F 1 F1 F1 达到 0.740,同时 m A P 50 = 0.713 mAP50=0.713 mAP50=0.713,说明它对困难样本(尤其是小脸/遮挡)的"检出"更激进;代价是后处理时间更高(NMS 与候选框数量相关),导致总时延与 FPS 明显落后于更现代的轻量模型。与之相对,YOLOv11n 在保持接近的 m A P 50 mAP50 mAP50(0.671)与 F 1 F1 F1(0.694)的同时,推理阶段仅 9.44ms、总时延 12.97ms,对 UI 实时预览更友好;YOLOv10n 则处于精度略低但速度同样突出的区间,适合算力更紧张或多路并发的部署场景。
表5-1 WiderFace-n_type 结果汇总(RTX 3070 Laptop GPU)
| Model | Params(M) | FLOPs(G) | Precision | Recall | F1 Score | mAP50 | mAP50-95 | InfTime(ms) | Total(ms) | FPS |
|---|---|---|---|---|---|---|---|---|---|---|
| YOLOv7-tiny | 6.2 | 13.8 | 0.859 | 0.650 | 0.740 | 0.713 | 0.371 | 14.74 | 21.08 | 47.44 |
| YOLOv9t | 2.0 | 7.7 | 0.845 | 0.588 | 0.694 | 0.669 | 0.366 | 16.51 | 19.67 | 50.84 |
| YOLOv10n | 2.3 | 6.7 | 0.839 | 0.583 | 0.688 | 0.670 | 0.368 | 11.24 | 13.95 | 71.68 |
| YOLOv11n | 2.6 | 6.5 | 0.849 | 0.587 | 0.694 | 0.671 | 0.368 | 9.44 | 12.97 | 77.10 |
进一步从训练过程观察,YOLOv9n/YOLOv10n/YOLOv11n 的 m A P 50 ( B ) mAP50(B) mAP50(B) 在前 20--30 个 epoch 内快速上升,随后进入缓慢爬升并在约 0.67 附近收敛,体现出优化过程稳定、增益主要来自后期对难例的渐进拟合。相对地,图中 YOLOv5n 与 YOLOv12n 的曲线末端明显低于 0.60(此处仅依据曲线读数作近似判断),并呈现阶梯式上升,通常意味着当前超参数配置对该版本并不匹配(例如学习率、正负样本分配或增强强度导致的收敛效率下降)。对工程实现而言,这一现象的直接含义是:在不做额外调参的前提下,YOLOv9--YOLOv11 的"开箱可用性"更强,而 YOLOv12n 若要发挥潜力,往往需要围绕注意力模块的训练稳定性重新校准学习率与增强策略。

从平均 PR 曲线看,YOLOv9t、YOLOv10n 与 YOLOv11n 的曲线几乎重合,且图例给出的 mAP 差距仅在千分级(0.668--0.671),说明它们在"整体排序质量"上非常接近;在 Recall 逼近 0.7 之后 Precision 开始快速下降,通常对应小脸密集与遮挡导致的误检增多,这也解释了为何在日常场景中需要在 UI 侧开放 Conf/IoU 的动态调节:当应用更关注"少误报"时可适当提高置信度阈值,当应用更关注"宁可多检"时则可降低阈值并允许更多候选进入后处理。

在 s 级模型 对比中,展示了 F 1 F1 F1 与 m A P 50 mAP50 mAP50 的柱状对比结果,YOLOv7 在该组取得显著更高的精度( F 1 ≈ 0.787 , , m A P 50 ≈ 0.773 F1\approx0.787,,mAP50\approx0.773 F1≈0.787,,mAP50≈0.773),表现出"更大容量模型"对困难样本的收益;但这类收益伴随更高的计算与时延成本,因此是否采用需要结合实时性约束综合判断。

表5-2进一步给出 s 级模型的参数量、FLOPs 与耗时统计。除 YOLOv7 外,YOLOv5su/YOLOv8s/YOLOv9s/YOLOv10s/YOLOv11s 的 m A P 50 mAP50 mAP50 集中在 0.707--0.714,差距很小,更多体现为速度与资源占用差异:YOLOv8s 在本组达到最高 FPS(约 87.8),同时 m A P 50 mAP50 mAP50 也处于第一梯队(0.714),因此在桌面端实时预览或多源输入并行时,它往往是更稳妥的默认选择;YOLOv11s 的精度略高于 v5su/v9s/v10s,且时延仍保持在可实时范围(Total 13.47ms),更适合作为"精度略优、速度仍可控"的折中方案。YOLOv9s 的推理时间显著偏高(18.66ms)但精度未形成优势,这类结果通常提示该实现版本在当前环境下尚未充分利用算子优化或导出后端,工程上可以通过 ONNX/TensorRT、算子融合与 batch 推理等手段进一步核查瓶颈。
表5-2 WiderFace-s_type 结果汇总(RTX 3070 Laptop GPU)
| Model | Params(M) | FLOPs(G) | Precision | Recall | F1 Score | mAP50 | mAP50-95 | InfTime(ms) | Total(ms) | FPS |
|---|---|---|---|---|---|---|---|---|---|---|
| YOLOv5su | 9.1 | 24.0 | 0.864 | 0.623 | 0.724 | 0.711 | 0.395 | 8.45 | 12.24 | 81.70 |
| YOLOv7 | 36.9 | 104.7 | 0.881 | 0.711 | 0.787 | 0.773 | 0.416 | 23.62 | 29.52 | 33.88 |
| YOLOv8s | 11.2 | 28.6 | 0.858 | 0.627 | 0.725 | 0.714 | 0.396 | 7.66 | 11.39 | 87.80 |
| YOLOv9s | 7.2 | 26.7 | 0.864 | 0.622 | 0.724 | 0.707 | 0.394 | 18.66 | 22.17 | 45.11 |
| YOLOv10s | 7.2 | 21.6 | 0.857 | 0.616 | 0.717 | 0.707 | 0.396 | 11.38 | 14.19 | 70.47 |
| YOLOv11s | 9.4 | 21.5 | 0.862 | 0.627 | 0.726 | 0.713 | 0.398 | 9.74 | 13.47 | 74.24 |
收敛曲线进一步解释了"精度差距不大但可用性不同"的现象:YOLOv8s/YOLOv9s/YOLOv10s/YOLOv11s 在 120 epoch 内都能稳定逼近 0.71 左右的 m A P 50 ( B ) mAP50(B) mAP50(B);而图中的 YOLOv12s 曲线长期落后且早期出现明显下探(同样基于曲线读数作近似判断),反映出其在当前训练配方下存在优化不稳定或拟合不足。若在后续工作中希望把 YOLOv12s 纳入公平比较,更合理的做法是针对其结构特点降低初始学习率、延长 warmup、适度减弱 Mosaic 并强化 EMA,以减少注意力模块引入的梯度振荡,从而把"版本优势"从结构层面转化为可观测的指标增益。

最后从平均 PR 曲线看,YOLOv5su、YOLOv8s、YOLOv9s、YOLOv10s、YOLOv11s 的曲线高度重合,图例给出的 mAP 也集中在 0.707--0.714,说明在该尺度下模型的"总体排序质量"相近,差异更多体现在中高 Recall 区间的 Precision 保持能力。对实际系统而言,这类差异通常可以通过阈值策略补偿:若业务更在意低误报,可上调 Conf 并配合更严格的 NMS IoU;若更在意漏检,则降低 Conf 并在后续识别或多帧跟踪阶段做二次过滤,从而把检测器定位在更合适的工作点。

6. 系统设计与实现
6.1 系统设计思路
本系统面向"日常场景人脸检测"的桌面端落地,采用 Python 3.12 与 PySide6 构建交互界面,以 SQLite 作为轻量级持久化后端。整体采用分层与组合式对象组织:Ui_MainWindow 负责控件布局与样式资源装配,MainWindow 作为控制中枢承载状态机、槽函数与业务调度,Detector 作为处理层封装模型加载、推理与后处理,同时配套 DBManager/ConfigManager 管理用户配置、检测历史与导出索引,保证界面、控制与算法逻辑之间的依赖方向清晰,便于在 YOLOv5--YOLOv12 多版本之间做可复现切换与对比。

跨层通信以 Qt 信号槽为主,推理任务以 QThread(或 QRunnable+QThreadPool)方式在后台执行,避免摄像头与视频帧循环造成 UI 主线程阻塞。输入源被统一抽象为"帧提供者"(摄像头采集、视频解码、图片/文件夹读取),进入同一条处理流水线:前处理完成 letterbox 与归一化后送入 YOLO 推理,后处理阶段进行阈值过滤、NMS 与坐标映射,并输出结构化结果(边界框、置信度、数量统计、耗时),由界面层在绘图与表格中完成可视化,从而实现实时预览与批处理在同一框架内共用代码路径。
为满足工程使用的闭环需求,系统提供结果保存与导出(图像叠框、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环境依赖配置教程
数据集标注教程(如需自行标注数据):数据标注合集
8. 参考文献(GB/T 7714)
1 YANG M H, KRIEGMAN D J, AHUJA N. Detecting faces in images: a survey[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence , 2002, 24(1): 34-58.
2 VIOLA P, JONES M J. Robust real-time face detection[J]. International Journal of Computer Vision , 2004, 57(2): 137-154.
3 ZHANG K, ZHANG Z, LI Z, QIAO Y. Joint face detection and alignment using multitask cascaded convolutional networks[J]. IEEE Signal Processing Letters , 2016, 23(10): 1499-1503.
4 YANG S, LUO P, LOY C C, TANG X. WIDER FACE: A face detection benchmark[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR) . 2016: 5525-5533.
5 TANG X, DU D K, HE Z, LIU J. PyramidBox: A context-assisted single shot face detector[C]//Proceedings of the European Conference on Computer Vision (ECCV) . 2018: 797-813.
6 LI J, WANG Y, WANG C, et al. DSFD: Dual shot face detector[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) . 2019: 5060-5069.
7 DENG J, GUO J, ZHOU Y, et al. RetinaFace: Single-shot multi-level face localisation in the wild[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) . 2020: 5203-5212.
8 REDMON J, DIVVALA S, GIRSHICK R, FARHADI A. 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.
9 BOCHKOVSKIY A, WANG C Y, LIAO H Y M. YOLOv4: Optimal speed and accuracy of object detection[EB/OL]. (2020-04-23) [2026-02-19]. arXiv:2004.10934.
10 JOCHER G, CHAURASIA A, STOKEN A, et al. ultralytics/yolov5: v7.0 - YOLOv5 SOTA Realtime Instance Segmentation[EB/OL]. Zenodo, 2022. DOI: 10.5281/zenodo.7347926.
11 JOCHER G, CHAURASIA A, QIU J. Ultralytics YOLO (v8.2.0)[EB/OL]. Zenodo, 2024. DOI: 10.5281/zenodo.10983461.
12 JOCHER G, QIU J, CHAURASIA A. Ultralytics YOLO (v8.3.0, YOLO11)[EB/OL]. Zenodo, 2024. DOI: 10.5281/zenodo.13858602.
13 WANG C Y, YEH I H, LIAO H Y M. YOLOv9: Learning what you want to learn using programmable gradient information[C]//Proceedings of the European Conference on Computer Vision (ECCV) . 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\[EB/OL\]. (2025-02-18) \[2026-02-19\]. arXiv:2502.12524.