Computer Vision · Deep Learning

面向课堂场景的
遮挡人脸检测与识别

针对智慧课堂中非配合式遮挡难题,从检测与识别双维度协同优化,构建端到端级联系统,在真实课堂场景下实现 83.1% 综合识别准确率。

YOLO11n SPD-Conv SCSA ArcFace IR-50 PyTorch Python
82.34%
WIDERFACE Hard AP
97.23%
Occ-LFW 准确率
83.1%
真实课堂综合识别率
课堂人脸识别的四大挑战
课堂属于典型的非配合式环境,学生在听课过程中面部常受书本、手部、口罩等遮挡,给人脸检测与识别带来严峻考验。

遮挡导致特征缺失

书本、手部、口罩等遮挡物覆盖面部关键区域,导致有效像素减少、关键特征点缺失,传统模型极易漏检或误检。

密集人脸小尺度

教室后排学生人脸尺度极小,密集分布下特征信息有限,多次下采样后微弱特征面临被彻底滤除的风险。

遮挡噪声干扰

遮挡区域引入大量冗余干扰信息与背景噪声,严重干扰有效身份特征提取,导致类内距离增大引发误判。

数据增强质量低

传统随机遮挡生成方法位置不符合物理逻辑,遮挡物与面部光影色彩不协调,导致增强样本质量低下。

基于改进 YOLO11n 的遮挡人脸检测
从特征保留、多尺度融合与注意力增强三个维度对 YOLO11n 进行改进,在 WIDERFACE 子集上性能优异。
Architecture 改进网络整体架构

三大改进策略

在 YOLO11n 基础上集成以下核心改进:

  • SPD-Conv:实现无损下采样,保留空间细粒度特征
  • CCFM:增强跨尺度特征交互,深度融合语义与细节
  • SEAM:嵌入分离增强注意力,自适应强化关键区域响应
改进YOLO11网络结构图
1
Backbone

SPD-Conv 空间到深度卷积

实现无损下采样,重组空间信息至通道维度,避免传统跨步卷积导致的特征丢失。

SPD-Conv结构图
SPD-Conv:实现无损下采样,保留细粒度特征
2
Neck

CCFM 跨尺度特征融合

构建高效跨层交互机制,实现深层语义与浅层细节的深度融合与优势互补。

CCFM结构图
CCFM:跨尺度特征融合,深层语义与细节融合
3
Head

SEAM 分离增强注意力

利用未遮挡区域动态补偿遮挡部分的响应值,自适应放大关键区域特征权重。

SEAM结构图
SEAM:分离增强注意力,补齐遮挡特征
融合先验增强与注意力的抗遮挡识别
从数据增强与特征优化两个维度协同改进,在 Occ-LFW 遮挡测试集上准确率达 97.23%,较基准模型大幅提升。
Method 改进方法整体结构

数据 + 特征双维度优化

  • 数据层面:基于课堂先验知识的在线语义遮挡数据增强策略
  • 特征层面:将 SCSA 空间-通道协同注意力嵌入 IR-50 残差单元
  • 训练约束:ArcFace 加性角度间隔损失,实现更清晰的类别边界
改进人脸识别方法结构示意图

🎯 课堂先验在线语义遮挡增强

构建包含 8 类课堂常见遮挡物的素材库,结合 HSV 色彩匹配与 Alpha 羽化,保证合成样本逼真且符合物理逻辑。

自适应视觉协调机制流程图
自适应视觉协调机制流程(滑动浏览)

🧠 SCSA 空间-通道协同注意力

SMSA 提取多尺度空间特征抑制噪声,PCSA 计算跨通道语义依赖补偿身份信息。嵌入 IR-50 保持原始拓扑。

SCSA注意力机制结构示意图
SCSA 结构:SMSA 提取空间特征,PCSA 跨通道依赖
真实课堂级联系统验证
将改进检测模型与抗遮挡识别模型级联集成,构建完整的人脸识别处理流程,在真实课堂场景下综合识别准确率达 83.1%。
01

课堂图像输入

海康威视摄像机采集 1920×1080 课堂图像,30 秒间隔帧采样

02

改进 YOLO11n 人脸检测

全局扫描定位所有人脸边界框,增强遮挡感知

03

图像预处理与归一化

分辨率过滤(≥40px)→ 边界扩展(1.3×)→ 双线性插值至 112×112

04

特征提取与身份比对

SCSA 注意力增强特征提取 → 余弦相似度比对 → 身份判定

实验结果
在公开数据集和真实课堂场景下验证了方法的有效性。

人脸检测 · WIDERFACE

82.34%
AP-Hard +3.35%

改进 YOLO11n 在 Hard 子集上显著提升。

人脸识别 · Occ-LFW

97.23%
Accuracy +10.25%

在遮挡测试集上较基准模型大幅提升。

级联系统 · 真实课堂

83.1%
综合识别率 +6.9%

真实课堂图像帧识别率提升 6.9 个百分点。

技术栈
本项目涉及的核心技术与工具。
PyTorch
YOLO11n
IR-50 / ResNet
ArcFace Loss
CUDA
Python