ArcFace-paddle 环境搭建完全指南PaddlePaddle 安装、识别与检测模块依赖配置【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface本文是 ArcFace-paddleInsightFace 仓库中基于 PaddlePaddle 的深度人脸检测与识别实现的官方安装教程导读与深度实践扩展。教程将带你从零完成 PaddlePaddle 2.2.0rc0 的 Docker / pip / 源码编译三种安装方式依次打通人脸识别模块与 PaddleDetection 检测模块的运行依赖并通过源码级证据解释每个安装步骤背后的实际用途。读完本文你可以独立复现 ArcFace-paddle 的训练、评估、导出与推理全流程环境并理解requirement.txt中每个依赖、--shm-size、WITH_DISTRIBUTE等关键配置的来龙去脉。一、安装之前ArcFace-paddle 的模块组成与环境全景Arcface-Paddle是 InsightFace 仓库中基于 PaddlePaddle 实现的开源深度人脸检测、识别工具目前提供三个预训练模型用于人脸检测的BlazeFace、用于人脸识别的ArcFace和MobileFace见 recognition/arcface_paddle/README_cn.md。在动手安装前先理解整个工具链的架构有助于你判断哪些依赖必须装、哪些可以跳过识别模块本文安装教程第 2 部分基于 PaddlePaddle 的人脸识别主干网络依赖recognition/arcface_paddle/requirement.txt中的 Python 包检测模块本文安装教程第 3 部分人脸检测能力复用了 PaddleDetection 框架相关训练代码位于 detection/blazeface_paddle/需要额外克隆 PaddleDetection 仓库并安装其依赖部署模块基于 PaddleInference 的 Whl 包预测部署与 Paddle Serving 预测部署相关内容位于 recognition/arcface_paddle/deploy/pdserving/。官方安装教程 install_cn.md 明确给出了一条按需裁剪的原则如果只使用识别模块可以跳过第 3 部分如果只使用检测模块可以跳过第 2 部分。这与上述模块划分一一对应是安装阶段做减法的重要依据。二、环境要求版本矩阵与硬件约束运行 ArcFace-paddle 需要PaddlePaddle 2.2.0rc0或更高版本官方安装教程给出了如下环境要求install_cn.md软件最低版本要求适用场景python3.x所有场景cuda 10.1使用 paddlepaddle-gpu 时cudnn 7.6.4使用 paddlepaddle-gpu 时nccl 2.1.2使用分布式训练/评估时gcc 8.2源码编译或部分本地算子构建时同时官方教程对显卡驱动版本给出了建议使用 cuda10.1 时显卡驱动版本建议大于等于 418.39使用 cuda10.2 时建议大于等于 440.33。更多 cuda 版本与驱动版本的对应关系可参考 NVIDIA 官方兼容性文档此处不再赘述安装前建议先核对驱动与 CUDA 的匹配情况。需要特别注意的是nccl这一项ArcFace-paddle 的训练依赖 PaddlePaddle 高性能分布式能力官方在后续源码编译部分也强调必须打开WITH_DISTRIBUTEON编译选项详见下文源码编译小节。从仓库中的训练脚本可以看到scripts/train_static.sh 与 scripts/train_dynamic.sh 均通过python -m paddle.distributed.launch --gpus0,1,2,3,4,5,6,7启动 8 卡分布式训练这正是 nccl 与分布式编译选项被列为硬性要求的直接原因。三、安装 PaddlePaddle三种方式任选其一官方教程推荐优先使用 Docker 方式其次为 pip 安装最后是源码编译。三种方式安装的是同一套运行时选择哪种取决于你的硬件环境与是否已有现成的 Python 环境。3.1 推荐Docker 方式一条命令获得完整环境官方教程建议使用 Docker 运行 ArcFace-paddle首次运行会自动拉取镜像请耐心等待。切换到工作目录后创建名为face_paddle的容器并将当前目录映射到容器内/paddle目录# 切换到工作目录下 cd /home/Projects # CPU 环境使用 docker 而非 nvidia-docker # --shm-size8G 用于保证容器有足够共享内存支撑 Paddle 的数据读取加速建议 8G 以上 sudo docker run --name face_paddle -v $PWD:/paddle --shm-size8G --networkhost -it paddlepaddle/paddle:2.2.0rc0 /bin/bash # GPU 环境使用 nvidia-docker sudo nvidia-docker run --name face_paddle -v $PWD:/paddle --shm-size8G --networkhost -it paddlepaddle/paddle:2.2.0rc0-gpu-cuda11.2-cudnn8 /bin/bash几个参数值得展开说明--name face_paddle为容器命名便于后续docker exec重新进入-v $PWD:/paddle将当前目录挂载到容器内/paddle训练数据、代码、输出都放在宿主机容器销毁不丢数据--shm-size8G官方教程特别强调创建容器时必须设置此参数以保证共享内存充足否则 Paddle 的 DataLoader 数据读取加速可能因共享内存不足而报错或性能下降条件允许时建议设置更大值--networkhost容器与宿主机共享网络命名空间便于分布式训练时的多机通信。容器创建后使用ctrlPQ可以退出容器保持容器后台运行之后重新进入容器使用sudo docker exec -it face_paddle /bin/bash官方教程还提示如果你不使用 Docker可以直接跳过本节从下一节 pip 安装开始执行。关于镜像 tag 的完整列表可前往 DockerHub 上paddlepaddle/paddle仓库的 tags 页面挑选与本地驱动匹配的版本官方教程原文提供了该入口安装时可自行查阅。3.2 pip 方式GPU 与 CPU 版本二选一在不使用 Docker 的场景下通过 pip 安装最新 GPU 版本 PaddlePaddlepip3 install paddlepaddle-gpu2.2.0rc0 --upgrade -i https://mirror.baidu.com/pypi/simple如果希望在 CPU 环境中使用pip3 install paddlepaddle2.2.0rc0 --upgrade -i https://mirror.baidu.com/pypi/simple两个细节务必注意官方教程原文强调如果先安装了 CPU 版本的 paddlepaddle之后想切换到 GPU 版本需要先卸载 CPU 版本再安装 GPU 版本否则容易导致使用的 paddle 版本混乱安装命令使用了百度的 PyPI 镜像-i https://mirror.baidu.com/pypi/simple可显著加速国内网络环境下的下载。3.3 源码编译方式必须打开 WITH_DISTRIBUTEON官方教程允许从源码编译安装 PaddlePaddle但给出了两条硬性约束install_cn.md从源码编译的 PaddlePaddle 版本号显示为 0.0.0请确保使用的是 PaddlePaddle 2.2.0rc0 及之后的源码ArcFace-paddle 基于 PaddlePaddle 高性能分布式训练能力源码编译时必须打开编译选项WITH_DISTRIBUTEON否则分布式训练功能不可用。这也与前面环境要求中 nccl 2.1.2 的条件呼应分布式训练链路paddle.distributed.launch→ nccl 通信从编译期到运行期都需要正确配置。3.4 验证安装三步确认环境就绪安装完成后用以下 Python 代码验证 PaddlePaddle 是否安装成功import paddle paddle.utils.run_check()查看 PaddlePaddle 版本python3 -c import paddle; print(paddle.__version__)run_check()会执行一次完整的自检输出包括基本功能、计算图构建与执行等在内的检查结果是判断安装是否可用的最直接手段。四、识别模块环境requirement.txt 逐个拆解PaddlePaddle 安装完成后接下来安装识别模块依赖。进入recognition/arcface_paddle目录执行pip3 install -r requirement.txtrequirement.txt见 recognition/arcface_paddle/requirement.txt的内容值得逐个拆解因为它直接决定了后续训练、可视化、模型导出各环节能否跑通依赖包作用对应功能环节visualdlPaddle 生态的可视化工具训练过程中实时查看 loss 变化官方 README 推荐用 VisualDL 可视化opencv-python4.4.0.46图像读取与预处理数据集加载、人脸图像处理pillow/Pillow图像处理库图像 IO 与变换numpy数值计算特征向量、张量操作easydict以属性方式访问字典配置文件解析见下文源码证据scipy科学计算验证集协议如 cfp_fp 的协议计算sklearn/scikit-learn0.23.2机器学习工具验证集评估、特征相似度计算requestsHTTP 请求模型/数据下载prettytable终端表格打印验证结果、性能结果表格化输出tqdm进度条训练/数据加载进度显示onnxruntimeONNX 推理引擎ONNX 格式模型推理onnxONNX 模型格式工具模型导出为 ONNXpaddle2onnxPaddle 模型转 ONNX模型导出转换从源码角度看easydict是这套配置体系的基石仓库中的配置文件如 configs/ms1mv2_mobileface.py 以from easydict import EasyDict as edict开头将所有训练超参组织为config edict()对象而 configs/argparser.py 中的get_config()会先加载configs/config.py的默认配置再用具体任务配置如ms1mv2_mobileface.py通过cfg.update(job_cfg)覆盖最终合并出完整配置。这也是为什么训练脚本只需传--config_file configs/ms1mv2_mobileface.py一个路径就能自动获得 backbone、loss、batch_size 等全部默认值。至于onnx、onnxruntime、paddle2onnx三件套对应的是模型导出环节的能力官方教程第 7 部分说明模型推理支持 paddle 格式的save inference model和 onnx 两种格式scripts/inference.sh 中分别用--export_type paddle与--export_type onnx执行两次推理正需要这三者的支撑。五、检测模块环境PaddleDetection 依赖人脸检测模块BlazeFace复用了 PaddleDetection 框架因此需要额外克隆 PaddleDetection 仓库并安装其依赖# 克隆 PaddleDetection 仓库 cd path/to/clone/PaddleDetection git clone https://github.com/PaddlePaddle/PaddleDetection.git cd PaddleDetection # 安装其他依赖 pip3 install -r requirements.txt检测相关的完整说明可参考 detection/blazeface_paddle/README_cn.md。官方教程同样提醒如果只使用识别模块可以跳过本部分只使用检测模块则可跳过上一部分的识别依赖安装。六、安装完成后的环境自检清单结合仓库源码安装完成后建议按以下清单逐项自检确认环境可以支撑完整的训练 → 评估 → 导出 → 推理流水线PaddlePaddle 自检通过paddle.utils.run_check()无报错paddle.__version__输出符合预期源码编译版为 0.0.0属正常现象识别依赖可导入python3 -c import easydict, cv2, sklearn, onnx, paddle2onnx等核心依赖导入无异常分布式可用如需要多卡训练能正常执行python -m paddle.distributed.launch --gpus0,1,2,3,4,5,6,7 tools/train.py ...形式的命令——这正是 scripts/train_static.sh 与 scripts/train_dynamic.sh 的启动方式检测模块可用如需要检测识别全流程tools/test_recognition.py能够加载检测与识别模型完成串联推理对应官方教程第 9 部分的全流程推理。值得一提的是从 configs/ms1mv2_mobileface.py 可以看到训练配置中还涉及config.is_bin False数据是否为 bin 格式、config.num_classes 85742MS1M_v2 类别数MS1M_v3 为 93431、config.sample_ratioPartial FC 采样率小于 1.0 时启用 partial fc 采样见 configs/argparser.py 中的参数注释等关键超参。这些参数在安装阶段虽不直接涉及但它们决定了你对数据目录、label 文件、显存容量的规划建议在准备环境时一并考虑。七、安装之后快速进入 ArcFace-paddle 全流程环境就绪后官方 README_cn.md 给出了完整的后续路线可以作为安装完成的验收路径数据准备从 insightface 数据集页面下载 MS1M_v2MS1M-ArcFace或 MS1M_v3MS1M-RetinaFace并通过 tools/mx_recordio_2_images.py 将 MXNet 格式转换为图像目录 label.txt的格式训练单机单卡直接运行python tools/train.py --config_file configs/ms1mv2_mobileface.py ...单机 8 卡执行sh scripts/train_static.sh静态图或sh scripts/train_dynamic.sh动态图多机训练可参考paddle.distributed.launchAPI与单机的区别在于需要设置--ips参数评估sh scripts/validation_static.sh或sh scripts/validation_dynamic.sh在 lfw、cfp_fp、agedb_30 等验证集上计算准确率导出sh scripts/export_static.sh或sh scripts/export_dynamic.sh导出 PaddleInference 可用的推理模型推理sh scripts/inference.sh支持 paddle 格式与 onnx 格式两种推理路径全流程推理通过tools/test_recognition.py --det --rec串联检测识别完成从图像到人脸识别结果的可视化输出。整个流程的每一步都建立在本教程安装的环境之上——PaddlePaddle 运行时、识别依赖、PaddleDetection 检测依赖三者缺一不可。安装阶段多花十分钟核对版本与参数就能为后续训练和部署省去大量排障时间。【免费下载链接】insightfaceState-of-the-art 2D and 3D Face Analysis Project项目地址: https://gitcode.com/GitHub_Trending/in/insightface创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考