RetinaFace 与 CurricularFace 人脸识别技术实战指南
人脸识别方案常面临环境配置难题,如 CUDA 版本不匹配、PyTorch 与 cuDNN 兼容性问题等。本文提供一套完整的实战指南,跳过底层依赖冲突,聚焦核心能力:检测人脸、提取特征、比对身份。
1. 核心技术解析
1.1 RetinaFace:人脸定位专家
RetinaFace 专注于精准定位图像中所有人脸的位置,并标出五个关键点(左眼中心、右眼中心、鼻尖、左嘴角、右嘴角)。这些点为后续对齐和识别打下基础。
其优势在于鲁棒性,适应复杂场景:
- 光线昏暗或逆光
- 侧脸或半张脸
- 佩戴口罩、墨镜或有遮挡
RetinaFace 输出人脸位置和关键点,但不识别人物身份。
1.2 CurricularFace:身份识别模型
CurricularFace 将检测出的人脸转换为 512 维数字向量(数字指纹),通过计算余弦相似度判断是否属于同一人。
采用课程学习(Curriculum Learning)理念,由易到难训练,泛化能力强。在 LFW 基准测试中准确率超过 99.8%。
1.3 完整流程
- 输入原始图片
- RetinaFace 检测 → 找出最大人脸区域 + 关键点
- 仿射变换 → 对齐标准正脸姿态
- CurricularFace → 提取 512 维特征向量
- 计算余弦相似度 → 输出 0~1 分数
2. 环境准备与启动
确保预装必要组件:
- Python 3.11+
- PyTorch + CUDA + cuDNN
- ModelScope
进入工作目录并激活环境:
cd /root/Retinaface_CurricularFace
conda activate torch25
成功激活后,终端提示符前会出现 (torch25) 字样。
3. 实战操作
3.1 本地图片比对
使用推理脚本 inference_face.py:
python inference_face.py --input1 /home/user/photo1.jpg --input2 /home/user/photo2.jpg
注意路径需为绝对路径,支持 .jpg, .jpeg, .png, .bmp。
3.2 网络图片比对
直接拉取公开 URL:
python inference_face.py -i1 https://example.com/face_a.jpg -i2 https://example.com/face_b.jpg
3.3 阈值调节
默认阈值为 0.4。可根据业务调整:
- 考勤打卡:0.6~0.7
- 社交推荐:0.3~0.5
命令示例:
python inference_face.py -i1 a.jpg -i2 b.jpg --threshold 0.65
4. 参数详解与避坑
| 参数 | 缩写 | 说明 |
|---|

