CPU 也能跑的人脸识别部署实录
要做一个能用的人脸识别系统,不一定非得先把 GPU、CUDA 和一堆版本依赖理顺。这个场景里,RetinaFace 负责检测人脸,CurricularFace 负责提特征,配上预置好的镜像,CPU 环境就能直接跑起来。省掉的不是'几条命令',而是最容易把人磨没耐心的那段环境排障。
这套方案的思路很简单:先找到脸,再判断是不是同一个人。RetinaFace 会在图片里定位人脸和五个关键点,CurricularFace 把对齐后的人脸编码成 512 维特征向量,最后用余弦相似度做比对。流程不复杂,重点是链路已经封好了,inference_face.py 把检测、对齐、特征提取和相似度计算都串了起来。
快速启动
先进入工作目录并激活预置环境:
cd /root/Retinaface_CurricularFace
conda activate torch25
环境里常用依赖已经装好,模型权重也在镜像里,不需要再额外下载。确认没问题后,直接运行示例脚本:
python inference_face.py
脚本默认会拿内置的两张图片做比对,终端里会输出检测到的人脸数量、相似度分数和最终判定结果。一般还能看到生成的结果图,检测框和关键点会一并画出来。
如果要换成自己的图片,把文件传到当前目录后,再指定输入路径即可:
python inference_face.py --input1 ./my_face1.jpg --input2 ./my_face2.jpg
也可以用简写:
python inference_face.py -i1 ./my_face1.jpg -i2 ./my_face2.jpg
参数怎么用
inference_face.py 主要就三个参数,够用了:
| 参数 | 简写 | 作用 | 默认值 |
|---|---|---|---|
--input1 | -i1 | 第一张图片路径,也支持 URL | 内置示例图 1 |
--input2 | -i2 | 第二张图片路径,也支持 URL | 内置示例图 2 |
--threshold | -t | 判定阈值,相似度高于它就认为是同一人 | 0.4 |
阈值没有统一答案,得看你要干什么。做门禁、支付这类场景,阈值一般要抬高一点,宁可保守;做相册整理、同人聚类,阈值可以松一些,目标是尽量把同一个人找全。0.4 不是标准答案,只是一个能跑起来的起点。
几个常见用法:
python inference_face.py -i1 ./employee_morning.jpg -i2 ./employee_afternoon.jpg --threshold 0.65
这个更适合严格比对,阈值提高后,误判为同一个人的概率会低一些,但漏掉也会更多。
python inference_face.py -i1 https://example.com/photo_a.jpg -i2 https://example.com/photo_b.jpg
直接喂网络图片也行,脚本会自己拉取并处理,做验证时挺省事。
如果要批量测,脚本本身没有把整个文件夹一次性扫完的接口,但可以自己包一层循环,思路大概这样:
import os
subprocess
folder1 =
folder2 =
img1 os.listdir(folder1)[:]:
img2 os.listdir(folder2)[:]:
path1 = os.path.join(folder1, img1)
path2 = os.path.join(folder2, img2)
cmd =
()
subprocess.run(cmd, shell=)

