mirror of
https://github.com/PaddlePaddle/FastDeploy.git
synced 2025-10-07 17:41:52 +08:00

* 第一次提交 * 补充一处漏翻译 * deleted: docs/en/quantize.md * Update one translation * Update en version * Update one translation in code * Standardize one writing * Standardize one writing * Update some en version * Fix a grammer problem * Update en version for api/vision result * Merge branch 'develop' of https://github.com/charl-u/FastDeploy into develop * Checkout the link in README in vision_results/ to the en documents * Modify a title * Add link to serving/docs/ * Finish translation of demo.md * Update english version of serving/docs/ * Update title of readme * Update some links * Modify a title * Update some links * Update en version of java android README * Modify some titles * Modify some titles * Modify some titles * modify article to document * update some english version of documents in examples * Add english version of documents in examples/visions * Sync to current branch * Add english version of documents in examples
77 lines
2.7 KiB
Markdown
77 lines
2.7 KiB
Markdown
[English](README.md) | 简体中文
|
||
# YOLOv5 SOPHGO部署示例
|
||
|
||
## 支持模型列表
|
||
|
||
YOLOv5 v6.0部署模型实现来自[YOLOv5](https://github.com/ultralytics/yolov5/tree/v6.0),和[基于COCO的预训练模型](https://github.com/ultralytics/yolov5/releases/tag/v6.0)
|
||
|
||
## 准备YOLOv5部署模型以及转换模型
|
||
|
||
SOPHGO-TPU部署模型前需要将Paddle模型转换成bmodel模型,具体步骤如下:
|
||
- 下载预训练ONNX模型,请参考[YOLOv5准备部署模型](https://github.com/PaddlePaddle/FastDeploy/tree/develop/examples/vision/detection/yolov5)
|
||
- ONNX模型转换bmodel模型的过程,请参考[TPU-MLIR](https://github.com/sophgo/tpu-mlir)
|
||
|
||
## 模型转换example
|
||
|
||
下面以YOLOv5s为例子,教大家如何转换ONNX模型到SOPHGO-TPU模型
|
||
|
||
## 下载YOLOv5s模型
|
||
|
||
### 下载ONNX YOLOv5s静态图模型
|
||
```shell
|
||
wget https://bj.bcebos.com/paddlehub/fastdeploy/yolov5s.onnx
|
||
|
||
```
|
||
### 导出bmodel模型
|
||
|
||
以转化BM1684x的bmodel模型为例子,我们需要下载[TPU-MLIR](https://github.com/sophgo/tpu-mlir)工程,安装过程具体参见[TPU-MLIR文档](https://github.com/sophgo/tpu-mlir/blob/master/README.md)。
|
||
### 1. 安装
|
||
``` shell
|
||
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模型
|
||
``` shell
|
||
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文档](https://github.com/sophgo/tpu-mlir/blob/master/README.md)。
|
||
|
||
## 其他链接
|
||
- [Cpp部署](./cpp)
|