目录

算法部署百度paddle环境适配

【算法部署】百度paddle环境适配

下载 conda 环境并安装

首先需要获取 Anaconda 安装包并进行安装。推荐使用清华镜像源加速下载,命令如下:

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2023.03-Linux-x86_64.sh
bash Anaconda3-2023.03-Linux-x86_64.sh 

安装过程中会出现协议说明,按Enter继续,输入yes接受协议。随后会提示安装路径,建议使用默认路径或根据自身需求修改。最后会询问是否初始化 Anaconda,输入yes以便自动配置环境变量。
安装完成后,需要刷新环境变量才能立即使用 conda 命令:

source ~/.bashrc

创建 paddle 的 conda 环境

为了避免不同项目的依赖冲突,建议为 PaddlePaddle 创建独立的虚拟环境:
bash

conda create -n mypaddlecuda python=3.7
conda activate mypaddlecuda

创建成功后,终端提示符前会显示(mypaddlecuda),表示已进入该虚拟环境。如果需要退出环境,可使用conda deactivate命令。
安装 paddle 的环境
根据需求安装指定版本的 PaddlePaddle,这里以 2.4.2 版本为例,使用清华源加速安装:

pip3 install paddlepaddle==2.4.2 -i https://pypi.tuna.tsinghua.edu.cn/simple

如果你的设备支持 GPU,且已配置好 CUDA 环境,建议安装 GPU 版本以获得更好的性能:

pip3 install paddlepaddle-gpu==2.4.2.post112 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html

安装完成后,可以通过以下命令验证是否安装成功:

python3 -c "import paddle; paddle.utils.run_check()"

如果输出 “PaddlePaddle is installed successfully!”,则表示安装成功。

安装 X2Paddle 的环境

X2Paddle 是 PaddlePaddle 生态下的模型转换工具,支持将其他框架的模型转换为 PaddlePaddle 格式。
首先下载源码包:
bash
git clone
如果没有安装 git,也可以直接从 GitHub 下载压缩包:https://github.com/PaddlePaddle/X2Paddle
解压后进入项目目录:

cd X2Paddle

执行安装命令:

python3 setup.py install
pip3 install onnx==1.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install packaging -i https://pypi.tuna.tsinghua.edu.cn/simple

安装完成后,可以通过x2paddle –version命令检查是否安装成功。
模型导出:
X2Paddle 支持多种方式进行模型转换,以下是两种常用方法:
命令行转换
在命令行中使用以下语句,即可将 ONNX 模型转换为 PaddlePaddle 模型:

x2paddle --framework onnx --model arcface1.onnx --save_dir pd_model

参数说明:
–framework:指定源模型框架,这里使用 onnx
–model:源模型文件路径
–save_dir:转换后模型的保存目录

Python 代码转换

也可以在 Python 代码中进行转换,示例如下:
运行

import x2paddle.convert as convert
convert.onnx2paddle("/root/mywork/arcface1.onnx", './pdmodel2')

转换完成后,在指定的保存目录中会生成inference_model(推理模型)和model.pdparams、model.pdmodel等文件。
模型推理:
为了进行模型推理,还需要安装一些额外的依赖库:
bash
pip3 install opencv-python -i
pip3 install scikit-image -i
推理示例代码
以下是一个简单的 PaddlePaddle 模型推理示例:
python

import paddle
import cv2
import numpy as np

加载模型

model = paddle.jit.load("./pd_model/inference_model")
model.eval()

读取并预处理图像

def preprocess(image_path):
    img = cv2.imread(image_path)
    img = cv2.resize(img, (112, 112))  # 根据模型输入大小调整
    img = img.transpose((2, 0, 1)) / 255.0
    img = np.expand_dims(img, axis=0)
    return paddle.to_tensor(img, dtype='float32')

执行推理

img_tensor = preprocess("test.jpg")
with paddle.no_grad():
    result = model(img_tensor)