本报告系统地介绍人脸识别的通用流程,并对各环节主流算法/模型进行优缺点对比,以便更深入地了解和选型。
一、通用流程
人脸识别一般分为以下四个主要环节:
- 人脸检测(Face Detection):在输入图像中定位人脸区域,并(可选)检测关键点。
- 人脸对齐(Face Alignment):根据关键点对人脸进行仿射或三维变换,统一姿态、大小。
- 特征提取(Face Embedding):利用深度神经网络将对齐后人脸映射到低维向量空间。
- 人脸比对/识别(Comparison/Recognition):计算特征距离或使用分类器判断同人或识别身份。
二、人脸检测(Face Detection)
算法/模型 | 简介 | 优点 | 缺点 |
---|
Haar Cascade | OpenCV 经典级联分类器 | 速度快,易实现 | 准确率低,对角度和光照敏感 |
HOG + SVM | Dlib 基于梯度方向直方图特征和线性分类器 | 轻量,对标准正脸效果好 | 对姿态、遮挡鲁棒性差 |
MTCNN | 多任务级联 CNN 同时输出 bbox 和五官关键点 | 准确高,支持对齐关键点 | 推理相对较慢 |
RetinaFace | 单阶段 Anchor-based 检测器,包含姿态估计关键点 | 检测精度高,支持大范围姿态 | 模型大,对算力要求高 |
YuNet | OpenCV DNN 支持的轻量人脸检测器 | 推理快,边缘设备可用 | 侧脸、遮挡场景下鲁棒性一般 |
SCRFD | 轻量化 RetinaFace 替代方案 | 性能接近,速度更快 | 尚在发展,边缘案例效果待提升 |
三、人脸对齐(Face Alignment)
方法 | 简介 | 优点 | 缺点 |
---|
仿射变换 | 基于五官关键点拟合仿射矩阵 | 简单稳健,效率高 | 强依赖关键点检测准确度 |
3D 对齐(PRNet) | 构建稠密 3D 模型进行姿态标准化 | 精度高,适应多姿态 | 计算开销大,推理慢 |
Dlib 68 点对齐 | Dlib 内置 68 点模型检测并对齐 | 可视化良好,易用 | 模型较大,部分脸型失败率高 |
四、特征提取(Face Embedding)
模型 | 框架 | 特点 | 优点 | 缺点 |
---|
FaceNet | TensorFlow | Triplet Loss,128D 输出 | 精度高,泛化性好 | 三元组采样策略复杂 |
ArcFace | MXNet/PyTorch (InsightFace) | ArcMargin Loss,提高判别性 | 精度领先,类别间距大 | 训练复杂,需大规模数据 |
SphereFace | | | | |
- | 角度损失变种 | 强判别能力 | 训练不稳定,难以收敛 | |
CosFace | - | 余弦间距损失 | 平衡性能与稳定性 | 对超参数敏感 |
Dlib ResNet | Dlib | 预训练 ResNet,128D | 部署便捷,接口友好 | 与最新模型相比精度稍弱 |
VGGFace2 | Keras/PyTorch | 大规模人脸训练集,上百层网络 | 可迁移学习,Fine-tune 灵活 | 计算量大,模型尺寸大 |
MobileFaceNet | PyTorch | 轻量化网络,适配移动端 | 推理快,资源占用低 | 特征维度和准确率稍逊 |
五、人脸比对与识别(Comparison/Recognition)
方法 | 描述 | 优点 | 缺点 |
---|
Cosine 相似度 | 计算向量间夹角,衡量相似度 | 易计算,常用 | 对向量归一化要求严格 |
欧氏距离 (L2) | 计算特征向量 L2 距离 | 简单直观 | 离群样本敏感 |
Siamese Network | 双输入端网络,训练时输出相似度 | 支持端到端学习 | 需要样本对,训练复杂 |
KNN/SVM 分类器 | 将特征向量当作输入进行分类识别 | 通用性强,可少样本学习 | 对特征分布假设依赖高 |
六、不同应用场景推荐
场景 | 检测模型 | 对齐方法 | 特征提取 | 比对/识别 |
---|
移动端部署 | YuNet / SCRFD | 仿射对齐 | MobileFaceNet | Cosine |
高精度识别 | RetinaFace | PRNet 或 仿射 | ArcFace | Cosine / Siamese |
快速原型 | MTCNN | 仿射对齐 | FaceNet | Cosine |
多人场景 | RetinaFace | 自动关键点对齐 | ArcFace | Siamese / Cosine |
七、实验建议与扩展