mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-10-05 16:48:03 +08:00

* Add Sophgo Device add sophgo backend in fastdeploy add resnet50, yolov5s, liteseg examples. * replace sophgo lib with download links; fix model.cc bug * modify CodeStyle * remove unuseful files;change the names of sophgo device and sophgo backend * sophgo support python and add python examples * remove unuseful rows in cmake according pr Co-authored-by: Zilong Xing <zilong.xing@sophgo.com>
YOLOv5 SOPHGO部署示例
支持模型列表
YOLOv5 v6.0部署模型实现来自YOLOv5,和基于COCO的预训练模型
准备YOLOv5部署模型以及转换模型
SOPHGO-TPU部署模型前需要将Paddle模型转换成bmodel模型,具体步骤如下:
- 下载预训练ONNX模型,请参考YOLOv5准备部署模型
- ONNX模型转换bmodel模型的过程,请参考TPU-MLIR
模型转换example
下面以YOLOv5s为例子,教大家如何转换ONNX模型到SOPHGO-TPU模型
下载YOLOv5s模型
下载ONNX YOLOv5s静态图模型
wget https://bj.bcebos.com/paddlehub/fastdeploy/yolov5s.onnx
导出bmodel模型
以转化BM1684x的bmodel模型为例子,我们需要下载TPU-MLIR工程,安装过程具体参见TPU-MLIR文档。
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
2. ONNX模型转换为bmodel模型
mkdir YOLOv5s && cd YOLOv5s
# 在该文件中放入测试图片,同时将上一步下载的yolov5s.onnx放入该文件夹中
cp -rf ${REGRESSION_PATH}/dataset/COCO2017 .
cp -rf ${REGRESSION_PATH}/image .
# 放入onnx模型文件yolov5s.onnx
mkdir workspace && cd workspace
# 将ONNX模型转换为mlir模型,其中参数--output_names可以通过NETRON查看
model_transform.py \
--model_name yolov5s \
--model_def ../yolov5s.onnx \
--input_shapes [[1,3,640,640]] \
--mean 0.0,0.0,0.0 \
--scale 0.0039216,0.0039216,0.0039216 \
--keep_aspect_ratio \
--pixel_format rgb \
--output_names output,350,498,646 \
--test_input ../image/dog.jpg \
--test_result yolov5s_top_outputs.npz \
--mlir yolov5s.mlir
# 将mlir模型转换为BM1684x的F32 bmodel模型
model_deploy.py \
--mlir yolov5s.mlir \
--quantize F32 \
--chip bm1684x \
--test_input yolov5s_in_f32.npz \
--test_reference yolov5s_top_outputs.npz \
--model yolov5s_1684x_f32.bmodel
最终获得可以在BM1684x上能够运行的bmodel模型yolov5s_1684x_f32.bmodel。如果需要进一步对模型进行加速,可以将ONNX模型转换为INT8 bmodel,具体步骤参见TPU-MLIR文档。