Skip to content

Files

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

PaddleClas SOPHGO部署示例

1. 说明

PaddleClas支持通过FastDeploy在SOPHGO上部署相关模型.

2. 支持模型列表

目前FastDeploy支持的如下模型的部署ResNet系列模型

3.准备ResNet部署模型以及转换模型

SOPHGO-TPU部署模型前需要将Paddle模型转换成bmodel模型,具体步骤如下:

下面以ResNet50_vd为例子,教大家如何转换Paddle模型到SOPHGO-TPU模型。

3.1 导出ONNX模型

3.1.1 下载Paddle ResNet50_vd静态图模型并解压

wget https://bj.bcebos.com/paddlehub/fastdeploy/ResNet50_vd_infer.tgz
tar xvf ResNet50_vd_infer.tgz

3.1.2 静态图转ONNX模型,注意,这里的save_file请和压缩包名对齐

paddle2onnx --model_dir ResNet50_vd_infer \
            --model_filename inference.pdmodel \
            --params_filename inference.pdiparams \
            --save_file ResNet50_vd_infer.onnx \
            --enable_dev_version True

3.2 导出bmodel模型

以转化BM1684x的bmodel模型为例子,我们需要下载TPU-MLIR工程,安装过程具体参见TPU-MLIR文档

3.2.1 安装

docker pull sophgo/tpuc_dev:latest

# myname1234是一个示例,也可以设置其他名字
docker run --privileged --name myname1234 -v $PWD:/workspace -it sophgo/tpuc_dev:latest

source ./envsetup.sh
./build.sh

3.2.2 ONNX模型转换为bmodel模型

mkdir ResNet50_vd_infer && cd ResNet50_vd_infer

# 在该文件中放入测试图片,同时将上一步转换好的ResNet50_vd_infer.onnx放入该文件夹中
cp -rf ${REGRESSION_PATH}/dataset/COCO2017 .
cp -rf ${REGRESSION_PATH}/image .
# 放入onnx模型文件ResNet50_vd_infer.onnx

mkdir workspace && cd workspace

# 将ONNX模型转换为mlir模型,其中参数--output_names可以通过NETRON查看
model_transform.py \
    --model_name ResNet50_vd_infer \
    --model_def ../ResNet50_vd_infer.onnx \
    --input_shapes [[1,3,224,224]] \
    --mean 0.0,0.0,0.0 \
    --scale 0.0039216,0.0039216,0.0039216 \
    --keep_aspect_ratio \
    --pixel_format rgb \
    --output_names save_infer_model/scale_0.tmp_1 \
    --test_input ../image/dog.jpg \
    --test_result ResNet50_vd_infer_top_outputs.npz \
    --mlir ResNet50_vd_infer.mlir

# 将mlir模型转换为BM1684x的F32 bmodel模型
model_deploy.py \
  --mlir ResNet50_vd_infer.mlir \
  --quantize F32 \
  --chip bm1684x \
  --test_input ResNet50_vd_infer_in_f32.npz \
  --test_reference ResNet50_vd_infer_top_outputs.npz \
  --model ResNet50_vd_infer_1684x_f32.bmodel

最终获得可以在BM1684x上能够运行的bmodel模型ResNet50_vd_infer_1684x_f32.bmodel。如果需要进一步对模型进行加速,可以将ONNX模型转换为INT8 bmodel,具体步骤参见TPU-MLIR文档

4. 其他链接