Skip to content

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. 其他链接