人脸检测的演进:从 Handcrafted Features 到 Deep Learning Frameworks
引言
人脸检测是计算机视觉中的基础任务,其目标是在数字图像中发现并定位人脸。几乎所有后续的人脸分析应用——包括识别、验证、属性估计和 face swapping——都依赖这一环节。它要回答的问题很直接:图像中的人脸在哪里?
Viola-Jones 时代(2001–2012)
里程碑式突破
2001 年提出的 Viola-Jones detector 在十多年里一直是人脸检测的代表性方法。其关键创新包括:
- Haar-like Features:以矩形特征高效描述眼周与面颊等基础结构
- Integral Images:通过预计算实现跨尺度快速特征求值
- AdaBoost:将多个弱分类器迭代组合为强分类器
- Cascade Architecture:通过多级筛选快速排除非人脸区域,实现实时处理能力
局限性
尽管影响深远,Viola-Jones detector 对非正脸、极端光照和局部遮挡的适应性较弱。它主要针对 frontal face detection 设计,在非受控环境中的泛化能力有限。
过渡阶段:DPM 与混合方法(2010–2015)
Deformable Part Models
随着需求变复杂,研究者开始使用 Deformable Part Models,将人脸表示为眼睛、鼻子、嘴巴等部件及其空间关系的组合。DPM 在姿态变化上的表现更好,但计算成本也明显提高。
Deep Learning 革命(2014–至今)
CNN 改变格局
Convolutional Neural Networks 彻底改变了人脸检测。深度模型可以直接从数据中学习层次化特征,而不必依赖人工设计。推动这场变革的关键因素包括:
- 大规模训练数据集(WIDER FACE)
- 更强的 GPU 硬件
- 网络结构设计的持续进步
关键 Framework
MTCNN (2016)
Multi-task Cascaded Convolutional Networks 采用 Proposal Network (P-Net)、Refine Network (R-Net) 和 Output Network (O-Net) 的三级结构,实现了人脸检测与对齐的联合建模。
RetinaFace (CVPR 2020)
InsightFace 推出的 RetinaFace 在复杂环境下实现了高密度人脸定位。其主要贡献包括:
- single-stage、anchor-based 检测框架
- 联合学习人脸检测与 5 点 landmark 定位
- 带有 self-supervised mesh decoder 的 multi-task learning
- 在 WIDER FACE benchmark 上达到 state-of-the-art 表现
SCRFD (ICLR 2022)
Sample and Computation Redistribution for Efficient Face Detection 将效率推进到了新的水平:
- 基于 NAS 的 architecture search,用于优化计算分配
- 使用 sample redistribution 提升训练效率
- 在精度与速度之间实现更优平衡
- 模型规模覆盖 500M FLOPs 到 34G FLOPs
性能对比
现代 Deep Learning detector 相比传统方法有明显优势:
| Method | WIDER FACE Easy | WIDER FACE Medium | WIDER FACE Hard |
|---|---|---|---|
| Viola-Jones | ~50% | ~40% | ~20% |
| MTCNN | 85.1% | 82.0% | 60.7% |
| RetinaFace | 96.9% | 96.1% | 91.4% |
| SCRFD-34GF | 97.2% | 96.5% | 93.7% |
实际集成
借助 InsightFace,部署 state-of-the-art 人脸检测能力会更直接。
from insightface.app import FaceAnalysis
app = FaceAnalysis(providers=['CUDAExecutionProvider'])
app.prepare(ctx_id=0, det_size=(640, 640))
faces = app.get(img)
for face in faces:
print(f"Bounding box: {face.bbox}")
print(f"Detection score: {face.det_score:.4f}")
print(f"Landmarks: {face.kps}")
结论
从 Handcrafted Features 走向 Deep Learning Frameworks,是计算机视觉发展中最显著的跃迁之一。InsightFace 的 RetinaFace 与 SCRFD 正处于这一演进的前沿,在准确率与实际部署能力之间取得了优秀平衡。