Retinaface+CurricularFace 在 Jetson Orin 上的部署与优化实践
1. 引言:边缘计算与人脸识别
边缘计算设备如 NVIDIA Jetson 系列体积小、功耗低,适合本地 AI 推理。然而,将标准服务器模型迁移至边缘设备常遇内存限制、算力差异及软件生态兼容性问题。本文将分享 Retinaface+CurricularFace 模型在 Jetson Orin NX 上的完整适配经验。
2. 项目背景与核心挑战
2.1 为什么选择 Retinaface+CurricularFace?
这是一个'二合一'的解决方案:
- RetinaFace:负责'找脸'。精准框出人脸位置,对侧脸、遮挡或复杂背景表现稳健。
- CurricularFace:负责'认脸'。提取高维特征向量(数字指纹),通过比对相似度判断身份。
该组合优势明显:检测准、识别快、部署相对简单。官方镜像基于 PyTorch 2.5.0 和 CUDA 12.1,在 x86 架构服务器上开箱即用。
2.2 边缘部署的三大核心挑战
从 x86 服务器迁移到 ARM 架构边缘设备,主要面临三个挑战:
- 算力与内存瓶颈:Jetson Orin NX 的 GPU 算力和内存与服务器级显卡不可同日而语,模型需足够轻量。
- 软件生态兼容性:边缘设备特定的操作系统(如 JetPack SDK)其 CUDA、cuDNN、Python 乃至 PyTorch 版本可能与开发环境存在差异。
- 推理速度与功耗:边缘场景对实时性要求高,同时兼顾功耗,需在秒级甚至毫秒级完成推理。
3. Jetson Orin 环境准备与基础适配
3.1 设备环境确认
登录 Jetson Orin 设备,检查基础环境。
# 查看 JetPack 版本(包含了 OS,CUDA,cuDNN 等)
cat /etc/nv_tegra_release
# 查看 CUDA 版本
nvcc --version
# 查看 Python 版本
python3 --version
以 JetPack 5.1.2 为例,它自带的是CUDA 11.4和Python 3.8。这与镜像要求的 CUDA 12.1 和 Python 3.11 直接产生冲突。不能强行升级系统 CUDA,那会破坏系统稳定性。
3.2 创建独立的 Python 环境
策略是在系统 Python 之外,为项目创建完全独立的高版本 Python 环境。这里使用 Conda。
# 安装 Miniconda(ARM64 版本)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh
bash Miniconda3-latest-Linux-aarch64.sh
# 按照提示安装,安装完成后重启终端或执行 source ~/.bashrc
# 创建新的 conda 环境,指定 Python 3.11
conda create -n retinaface_env python=3.11 -y
conda activate retinaface_env
现在有了一个干净的 Python 3.11 沙箱,可自由安装依赖而不影响系统。
3.3 安装 PyTorch for Jetson
这是最关键也最容易出错的一步。官方 PyTorch pip 包通常只针对 x86_64 架构。对于 Jetson 的 ARM 架构,需要安装 NVIDIA 专门预编译的版本。
参考 NVIDIA 官方论坛获取与 JetPack 版本对应的 PyTorch 安装命令。

