RetinaFace+CurricularFace 人脸识别实战指南
本文介绍如何使用预置环境快速部署 RetinaFace 和 CurricularFace 进行人脸检测与识别。跳过底层依赖冲突,直奔核心能力:检测人脸、提取特征、比对身份。整个过程不需要安装额外软件,只要运行环境就绪,即可完成首次人脸比对。
1. 先搞懂这两个名字:RetinaFace 负责'找',CurricularFace 负责'认'
1.1 RetinaFace:不挑图的'人脸定位专家'
RetinaFace 是一个专门用于人脸定位的模型。它能精准定位一张图里所有人脸的位置,并标出五个关键点:左眼中心、右眼中心、鼻尖、左嘴角、右嘴角。这些点就像人脸的'坐标锚点',为后续对齐和识别打下基础。
它的强项在于鲁棒性,不怕复杂场景。比如光线很暗、逆光导致脸部发黑、人脸侧着甚至只露出半张脸、戴着口罩墨镜或有头发遮挡,RetinaFace 依然能稳定输出可用的检测框和关键点。
注意:RetinaFace 只输出'这张图里有几张脸,每张脸在哪',它完全不知道这些人是谁。
1.2 CurricularFace:会'记脸'的识别模型
找到脸之后,下一步才是真正的'识别':这是谁?
CurricularFace 把每张检测出来的人脸,转换成一串 512 维的数字向量(你可以把它想象成这张脸的'数字指纹')。然后通过计算两串数字之间的余弦相似度,来判断它们是否属于同一个人。
为什么叫 CurricularFace?因为它的训练方式借鉴了'课程学习'理念:先让模型学会区分差异大的人脸,再逐步挑战更难的样本。这种由易到难的训练方式,让它在真实场景中表现更稳、泛化能力更强。
国际权威评测 LFW 上,CurricularFace 的准确率超过 99.8%,属于当前开源模型中的第一梯队。
1.3 它们合在一起,才是一套完整方案
单独用 RetinaFace,你只能看到'框';单独用 CurricularFace,它根本不知道该处理哪块区域。只有把它们串起来,才能形成闭环:
- 输入一张原始图片
- RetinaFace 自动检测 → 找出最大人脸区域 + 五个关键点
- 系统根据关键点进行仿射变换 → 对齐成标准正脸姿态
- 将对齐后的人脸送入 CurricularFace → 提取 512 维特征向量
- 计算两张图对应向量的余弦相似度 → 输出 0~1 之间的分数
这个流程全自动,无需人工裁剪、无需手动对齐、无需调整姿态。
2. 启动镜像:三步进入可运行环境
2.1 镜像已就绪,你只需启动
镜像预装了所有必要组件,目录结构清晰,脚本封装完整。你不需要从 GitHub clone 仓库、不需要 pip install 一堆包、不需要手动下载模型权重。
镜像启动后,所有内容都已就位:
- Python 3.11.14(稳定、兼容性强)
- PyTorch 2.5.0 + CUDA 12.1 + cuDNN 8.9(最新稳定版组合)
- ModelScope 1.13.0(支持魔搭模型一键加载)
- 核心代码位于
/root/Retinaface_CurricularFace
2.2 进入工作目录并激活环境
镜像启动成功后,首先进入预设的工作目录,并激活专用 Conda 环境:
cd /root/Retinaface_CurricularFace conda activate torch25
这条命令的作用是切换到代码所在路径,避免路径错误,并激活名为 torch25 的 Conda 环境,确保使用的是镜像预装的 PyTorch 2.5 版本。
2.3 运行默认测试:验证一切正常
镜像内置了一个开箱即用的推理脚本 inference_face.py,它会自动加载两张示例图片,完成端到端的人脸检测 + 特征提取 + 相似度计算。
直接运行:
python inference_face.py
你会看到类似这样的输出:

