【算法部署】百度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 https://github.com/PaddlePaddle/X2Paddle.git
如果没有安装 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 https://mirrors.aliyun.com/pypi/simple/
pip3 install scikit-image -i https://pypi.tuna.tsinghua.edu.cn/simple
推理示例代码
以下是一个简单的 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.0img = 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)