Retinaface+CurricularFace模型部署:Ubuntu20.04环境配置详解
本文介绍了如何在星图GPU平台上一键自动化部署Retinaface+CurricularFace人脸识别模型镜像,实现高效的人脸检测与特征提取。该方案可广泛应用于智能安防、身份验证、照片管理等场景,通过集成的人脸识别技术快速处理图像和视频中的人脸信息。
Retinaface+CurricularFace模型部署:Ubuntu20.04环境配置详解
1. 环境准备与驱动安装
在开始部署之前,我们需要确保Ubuntu20.04系统已经安装了合适的GPU驱动和基础依赖。这是整个部署过程的基础,也是很多新手容易遇到问题的地方。
首先检查你的GPU型号和当前的驱动状态:
lspci | grep -i nvidia
nvidia-smi
如果你看到"No devices were found"或者驱动未安装的提示,就需要先安装NVIDIA驱动。对于Ubuntu20.04,推荐使用以下命令:
sudo apt update
sudo ubuntu-drivers autoinstall
sudo reboot
重启后再次运行nvidia-smi,你应该能看到GPU信息和驱动版本。建议使用470或更高版本的驱动,以确保对最新CUDA版本的良好支持。
接下来安装一些基础的系统依赖:
sudo apt install -y build-essential cmake git wget unzip \
libopenblas-dev liblapack-dev libjpeg-dev libpng-dev \
python3-dev python3-pip python3-venv
这些依赖包包含了编译工具、数学库、图像处理库和Python开发环境,是后续安装深度学习框架的基础。
2. Conda环境配置
为了避免与系统自带的Python环境冲突,我们使用Conda创建一个独立的虚拟环境。这样既能保持系统环境的干净,也方便后续的管理和迁移。
首先下载并安装Miniconda:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
安装完成后,创建一个新的Python环境:
conda create -n retinaface python=3.8 -y
conda activate retinaface
选择Python 3.8是因为它在稳定性和兼容性方面都有很好的表现,大多数深度学习框架都对3.8版本有很好的支持。
3. CUDA和cuDNN安装
CUDA和cuDNN是GPU加速计算的核心,正确的安装配置对模型性能至关重要。根据你的GPU架构和驱动版本,选择合适的CUDA版本。
对于大多数现代GPU,建议安装CUDA 11.3:
wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_465.19.01_linux.run
sudo sh cuda_11.3.0_465.19.01_linux.run
安装过程中,记得勾选CUDA Toolkit,但可以不选Driver(如果已经安装了更新的驱动)。
安装完成后,需要配置环境变量。将以下内容添加到你的~/.bashrc文件中:
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
然后使配置生效:
source ~/.bashrc
验证CUDA安装是否成功:
nvcc --version
接下来安装cuDNN,这是NVIDIA提供的深度神经网络加速库。你需要从NVIDIA官网下载对应版本的cuDNN,然后执行:
tar -xzvf cudnn-11.3-linux-x64-v8.2.1.32.tgz
sudo cp cuda/include/cudnn*.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
4. PyTorch框架安装
现在开始安装PyTorch框架,这是运行Retinaface和CurricularFace模型的基础。根据之前安装的CUDA版本,选择对应的PyTorch版本。
对于CUDA 11.3,使用以下命令安装:
pip install torch==1.10.0+cu113 torchvision==0.11.1+cu113 torchaudio==0.10.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
安装完成后,验证PyTorch是否能正确识别GPU:
import torch
print(torch.__version__)
print(torch.cuda.is_available())
print(torch.cuda.get_device_name(0))
如果输出显示GPU可用,并且能正确显示你的GPU型号,说明PyTorch安装成功。
5. 项目依赖安装
接下来安装项目所需的其他Python依赖包。创建一个requirements.txt文件,包含以下内容:
opencv-python==4.5.3.56
numpy==1.21.2
scipy==1.7.1
pillow==8.3.2
tqdm==4.62.2
scikit-learn==0.24.2
matplotlib==3.4.3
使用pip安装这些依赖:
pip install -r requirements.txt
这些包分别提供了图像处理、数值计算、进度显示、机器学习算法和可视化功能,是项目运行的基础。
6. Retinaface模型部署
现在开始部署Retinaface人脸检测模型。首先克隆官方代码库:
git clone https://github.com/deepinsight/insightface.git
cd insightface/detection/retinaface
编译CUDA扩展(如果需要):
cd ./models/retinaface/rcnn/
python setup.py build_ext --inplace
下载预训练模型权重:
mkdir -p weights
wget https://github.com/deepinsight/insightface/files/3835529/retinaface-R50.zip -O weights/retinaface-R50.zip
unzip weights/retinaface-R50.zip -d weights/
测试模型是否正常工作:
import cv2
from retinaface import RetinaFace
# 初始化检测器
detector = RetinaFace(model_path="./weights/retinaface-R50", network="net3")
# 加载测试图像
img = cv2.imread("test.jpg")
# 进行人脸检测
faces = detector.detect(img)
print(f"检测到 {len(faces)} 张人脸")
7. CurricularFace模型部署
CurricularFace是人脸识别中使用的损失函数和模型架构,需要单独安装和配置。
首先安装相关的依赖包:
pip install mxnet-cu113==1.9.0
下载CurricularFace预训练模型:
wget https://github.com/deepinsight/insightface/files/5534597/curricularface.zip -O curricularface.zip
unzip curricularface.zip
创建一个简单的测试脚本来验证模型:
import mxnet as mx
from insightface.model_zoo import model_zoo
# 加载CurricularFace模型
model = model_zoo.get_model('curricularface')
# 准备测试图像
img = mx.image.imread('test_face.jpg')
# 提取人脸特征
feature = model.get_feature(img)
print(f"特征向量维度: {feature.shape}")
8. 常见问题解决
在部署过程中,你可能会遇到一些常见问题。这里列出几个典型问题及其解决方法。
问题1:CUDA out of memory
这是因为GPU内存不足导致的。可以尝试减小批处理大小:
# 在检测代码中添加
detector = RetinaFace(model_path="./weights", batch_size=2)
问题2:libcudart.so找不到
这是因为CUDA库路径没有正确配置。检查环境变量设置:
echo $LD_LIBRARY_PATH
确保包含了CUDA的lib64目录。
问题3:MXNet和PyTorch版本冲突
如果同时使用MXNet和PyTorch,可能会出现版本冲突。建议使用虚拟环境隔离,或者确保使用兼容的版本。
问题4:模型加载失败
检查模型文件路径是否正确,以及文件是否完整下载。可以重新下载模型文件:
md5sum weights/retinaface-R50
# 对比官方提供的MD5值
9. 完整测试示例
最后,我们创建一个完整的测试脚本来验证整个流程是否正常工作:
import cv2
import numpy as np
from retinaface import RetinaFace
from insightface.model_zoo import model_zoo
# 初始化检测器和识别器
detector = RetinaFace(model_path="./weights", network="net3")
recognizer = model_zoo.get_model('curricularface')
# 加载测试图像
img = cv2.imread("group_photo.jpg")
# 人脸检测
faces = detector.detect(img)
print(f"检测到 {len(faces)} 张人脸")
# 对每张人脸进行识别
for i, face in enumerate(faces):
# 提取人脸区域
x1, y1, x2, y2 = face['bbox'].astype(int)
face_img = img[y1:y2, x1:x2]
# 提取特征
feature = recognizer.get_feature(face_img)
print(f"人脸 {i+1} 特征提取完成,维度: {feature.shape}")
运行这个脚本,如果能够正常检测人脸并提取特征,说明整个系统已经成功部署。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
更多推荐
所有评论(0)