RetinaFace 与 CurricularFace 推理脚本排错记录
你大概率也碰到过这种情况:镜像已经拉好,环境看着没问题,推理脚本一跑还是报错。不是模块找不到,就是 CUDA 版本不对;更烦的是,偶尔能跑通,但相似度结果忽高忽低,没法判断到底是模型问题还是输入有问题。这里不打算讲原理课,只记录一件事:在 Python 3.11.14 环境里,怎么把 RetinaFace + CurricularFace 这条人脸检测和识别链路跑稳。
这套镜像不是简单把两个模型拼在一起。RetinaFace 先做检测,找出图里的脸,通常会优先取最大、最完整的那张;CurricularFace 再接着做特征提取和比对。中间少了手工裁剪和格式转换,流程确实省事,但排错也更依赖环境本身。Python 3.11.14、PyTorch 2.5.0+cu121、CUDA 12.1 这些组合,任何一处不对都可能让脚本在最后一步倒下。
| 组件 | 版本 | 关键说明 |
|---|---|---|
| Python | 3.11.14 | 部分旧包兼容性一般,镜像里已经换成可用版本 |
| PyTorch | 2.5.0+cu121 | 需要配套 CUDA 12.1 驱动;nvidia-smi 显示过低就别硬跑 |
| CUDA / cuDNN | 12.1 / 8.9 | 镜像内已带好,但 nvcc --version 还是要确认 |
| ModelScope | 1.13.0 | 首次运行会下载权重,网络不通就会卡住 |
| 代码位置 | /root/Retinaface_CurricularFace | 脚本和示例图都在这里,目录别进错 |
镜像的思路很明确:能少装就少装,但日志和路径得给你留够线索。调试这种环境,靠猜没用,得先把最基础的入口跑通。
先把环境切对
cd /root/Retinaface_CurricularFace
conda activate torch25
激活成功后,提示符前面会出现 (torch25),which python 应该指向 /root/miniconda3/envs/torch25/bin/python。
常见的第一个坑是 conda: command not found。这不是环境没装,而是当前 shell 没加载初始化脚本。先执行 source /root/miniconda3/etc/profile.d/conda.sh,再激活。
如果报 CommandNotFoundError: 'torch25' is not a conda environment,多半是环境名记错了。这个镜像里就是 torch25,别拿别的项目里的名字来套。
还有一种情况更隐蔽:conda activate 看着成功了,但 python 还是系统自带的版本。这个时候直接跑脚本,torch 很可能找不到。先用 which python 看路径,不对就先清缓存:
hash -r
which python
先跑默认推理
python inference_face.py
正常情况下,日志会先加载 RetinaFace,再加载 CurricularFace,然后处理示例图片,最后给出相似度和判断结果。类似这样:

