diff --git a/deploy/EXPORT_ONNX_MODEL.md b/deploy/EXPORT_ONNX_MODEL.md index 59d79730a1f70587aab4219a28a8111243609854..e1f4027833973a9c37fb9f144e77beeead3acb41 100644 --- a/deploy/EXPORT_ONNX_MODEL.md +++ b/deploy/EXPORT_ONNX_MODEL.md @@ -88,3 +88,25 @@ paddle2onnx --model_dir inference_model/faster_rcnn_r50_fpn_1x_coco \ --save_file faster_rcnn.onnx ``` 转换后的模型即为在当前路径下的`yolov3.onnx`和`faster_rcnn.onnx` + +### 步骤三、使用onnxruntime进行推理 +安装onnxruntime +``` +pip install onnxruntime +``` +推理代码示例在[deploy/third_engine/onnx](./third_engine/onnx)下 + +使用如下命令进行推理: +``` +# YOLOv3 +python deploy/third_engine/onnx/infer.py + --infer_cfg inference_model/yolov3_darknet53_270e_coco/infer_cfg.yml \ + --onnx_file yolov3.onnx \ + --image_file demo/000000014439.jpg + +# Faster RCNN +python deploy/third_engine/onnx/infer.py + --infer_cfg inference_model/faster_rcnn_r50_fpn_1x_coco/infer_cfg.yml \ + --onnx_file faster_rcnn.onnx \ + --image_file demo/000000014439.jpg +``` diff --git a/deploy/EXPORT_ONNX_MODEL_en.md b/deploy/EXPORT_ONNX_MODEL_en.md index 1f32a6655137a218c330a78ea8190b046d15743b..750959062dc20cc68600bbd89e9264468c11e4d6 100644 --- a/deploy/EXPORT_ONNX_MODEL_en.md +++ b/deploy/EXPORT_ONNX_MODEL_en.md @@ -64,7 +64,6 @@ faster_rcnn_r50_fpn_1x_coco └── model.pdmodel # Static diagram model file ``` - ### Step 2. Convert the deployment model to ONNX format Install Paddle2ONNX (version 0.9.7 or higher) ``` @@ -87,3 +86,25 @@ paddle2onnx --model_dir inference_model/faster_rcnn_r50_fpn_1x_coco \ --save_file faster_rcnn.onnx ``` The transformed model is under the current path`yolov3.onnx` and `faster_rcnn.onnx` + +### Step 3. Inference with onnxruntime +Install onnxruntime +``` +pip install onnxruntime +``` +Inference code examples are in [deploy/third_engine/onnx](./third_engine/onnx) + +Use the following commands for inference: +``` +# YOLOv3 +python deploy/third_engine/onnx/infer.py + --infer_cfg inference_model/yolov3_darknet53_270e_coco/infer_cfg.yml \ + --onnx_file yolov3.onnx \ + --image_file demo/000000014439.jpg + +# Faster RCNN +python deploy/third_engine/onnx/infer.py + --infer_cfg inference_model/faster_rcnn_r50_fpn_1x_coco/infer_cfg.yml \ + --onnx_file faster_rcnn.onnx \ + --image_file demo/000000014439.jpg +``` diff --git a/deploy/serving/cpp/README.md b/deploy/serving/cpp/README.md new file mode 100644 index 0000000000000000000000000000000000000000..2e6d4af0c01c0c295bc384dca76de490cc222fba --- /dev/null +++ b/deploy/serving/cpp/README.md @@ -0,0 +1,74 @@ +# C++ Serving预测部署 + +## 1. 简介 +Paddle Serving是飞桨开源的服务化部署框架,提供了C++ Serving和Python Pipeline两套框架, +C++ Serving框架更倾向于追求极致性能,Python Pipeline框架倾向于二次开发的便捷性。 +旨在帮助深度学习开发者和企业提供高性能、灵活易用的工业级在线推理服务,助力人工智能落地应用。 + +更多关于Paddle Serving的介绍,可以参考[Paddle Serving官网repo](https://github.com/PaddlePaddle/Serving)。 + +本文档主要介绍利用C++ Serving框架实现模型(以yolov3_darknet53_270e_coco为例)的服务化部署。 + +## 2. C++ Serving预测部署 + +#### 2.1 C++ 服务化部署样例程序介绍 +服务化部署的样例程序的目录地址为:`deploy/serving/cpp` +```shell +deploy/ +├── serving/ +│ ├── python/ # Python 服务化部署样例程序目录 +│ │ ├──config.yml # 服务端模型预测相关配置文件 +│ │ ├──pipeline_http_client.py # 客户端代码 +│ │ ├──postprocess_ops.py # 用户自定义后处理代码 +│ │ ├──preprocess_ops.py # 用户自定义预处理代码 +│ │ ├──README.md # 说明文档 +│ │ ├──web_service.py # 服务端代码 +│ ├── cpp/ # C++ 服务化部署样例程序目录 +│ │ ├──preprocess/ # C++ 自定义OP +│ │ ├──build_server.sh # C++ Serving 编译脚本 +│ │ ├──serving_client.py # 客户端代码 +│ │ └── ... +│ └── ... +└── ... +``` + +### 2.2 环境准备 +安装Paddle Serving三个安装包的最新版本, +分别是:paddle-serving-client, paddle-serving-app和paddlepaddle(CPU/GPU版本二选一)。 +```commandline +pip install paddle-serving-client +# pip install paddle-serving-server # CPU +pip install paddle-serving-server-gpu # GPU 默认 CUDA10.2 + TensorRT6,其他环境需手动指定版本号 +pip install paddle-serving-app +# pip install paddlepaddle # CPU +pip install paddlepaddle-gpu +``` +您可能需要使用国内镜像源(例如百度源, 在pip命令中添加`-i https://mirror.baidu.com/pypi/simple`)来加速下载。 +Paddle Serving Server更多不同运行环境的whl包下载地址,请参考:[下载页面](https://github.com/PaddlePaddle/Serving/blob/v0.7.0/doc/Latest_Packages_CN.md) +PaddlePaddle更多版本请参考[官网](https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/install/pip/linux-pip.html) + +### 2.3 服务化部署模型导出 +导出步骤参考文档[PaddleDetection部署模型导出教程](../../EXPORT_MODEL.md), +导出服务化部署模型需要添加`--export_serving_model True`参数,导出示例如下: +```commandline +python tools/export_model.py -c configs/yolov3/yolov3_darknet53_270e_coco.yml \ + --export_serving_model True \ + -o weights=https://paddledet.bj.bcebos.com/models/yolov3_darknet53_270e_coco.pdparams +``` + +### 2.4 编译C++ Serving & 启动服务端模型预测服务 +可使用一键编译脚本`deploy/serving/cpp/build_server.sh`进行编译 +```commandline +bash deploy/serving/cpp/build_server.sh +``` +当完成以上编译安装和模型导出后,可以按如下命令启动模型预测服务: +```commandline +python -m paddle_serving_server.serve --model output_inference/yolov3_darknet53_270e_coco/serving_server --op yolov3_darknet53_270e_coco --port 9997 & +``` +如果需要自定义开发OP,请参考[文档](https://github.com/PaddlePaddle/Serving/blob/v0.8.3/doc/C%2B%2B_Serving/2%2B_model.md)进行开发 + +### 2.5 启动客户端访问 +当成功启动了模型预测服务,可以按如下命令启动客户端访问服务: +```commandline +python deploy/serving/python/serving_client.py --serving_client output_inference/yolov3_darknet53_270e_coco/serving_client --image_file demo/000000014439.jpg --http_port 9997 +``` diff --git a/deploy/serving/python/README.md b/deploy/serving/python/README.md new file mode 100644 index 0000000000000000000000000000000000000000..40130d043b0db0bc7e7077088d9eb4c1fc1e6cb6 --- /dev/null +++ b/deploy/serving/python/README.md @@ -0,0 +1,72 @@ +# Python Serving预测部署 + +## 1. 简介 +Paddle Serving是飞桨开源的服务化部署框架,提供了C++ Serving和Python Pipeline两套框架, +C++ Serving框架更倾向于追求极致性能,Python Pipeline框架倾向于二次开发的便捷性。 +旨在帮助深度学习开发者和企业提供高性能、灵活易用的工业级在线推理服务,助力人工智能落地应用。 + +更多关于Paddle Serving的介绍,可以参考[Paddle Serving官网repo](https://github.com/PaddlePaddle/Serving)。 + +本文档主要介绍利用Python Pipeline框架实现模型(以yolov3_darknet53_270e_coco为例)的服务化部署。 + +## 2. Python Serving预测部署 + +#### 2.1 Python 服务化部署样例程序介绍 +服务化部署的样例程序的目录地址为:`deploy/serving/python` +```shell +deploy/ +├── serving/ +│ ├── python/ # Python 服务化部署样例程序目录 +│ │ ├──config.yml # 服务端模型预测相关配置文件 +│ │ ├──pipeline_http_client.py # 客户端代码 +│ │ ├──postprocess_ops.py # 用户自定义后处理代码 +│ │ ├──preprocess_ops.py # 用户自定义预处理代码 +│ │ ├──README.md # 说明文档 +│ │ ├──web_service.py # 服务端代码 +│ ├── cpp/ # C++ 服务化部署样例程序目录 +│ │ ├──preprocess/ # C++ 自定义OP +│ │ ├──build_server.sh # C++ Serving 编译脚本 +│ │ ├──serving_client.py # 客户端代码 +│ │ └── ... +│ └── ... +└── ... +``` + +### 2.2 环境准备 +安装Paddle Serving四个安装包的最新版本, +分别是:paddle-serving-server(CPU/GPU版本二选一), +paddle-serving-client, paddle-serving-app和paddlepaddle(CPU/GPU版本二选一)。 +```commandline +pip install paddle-serving-client +# pip install paddle-serving-server # CPU +pip install paddle-serving-server-gpu # GPU 默认 CUDA10.2 + TensorRT6,其他环境需手动指定版本号 +pip install paddle-serving-app +# pip install paddlepaddle # CPU +pip install paddlepaddle-gpu +``` +您可能需要使用国内镜像源(例如百度源, 在pip命令中添加`-i https://mirror.baidu.com/pypi/simple`)来加速下载。 +Paddle Serving Server更多不同运行环境的whl包下载地址,请参考:[下载页面](https://github.com/PaddlePaddle/Serving/blob/v0.7.0/doc/Latest_Packages_CN.md) +PaddlePaddle更多版本请参考[官网](https://www.paddlepaddle.org.cn/install/quick?docurl=/documentation/docs/zh/install/pip/linux-pip.html) + +### 2.3 服务化部署模型导出 +导出步骤参考文档[PaddleDetection部署模型导出教程](../../EXPORT_MODEL.md), +导出服务化部署模型需要添加`--export_serving_model True`参数,导出示例如下: +```commandline +python tools/export_model.py -c configs/yolov3/yolov3_darknet53_270e_coco.yml \ + --export_serving_model True \ + -o weights=https://paddledet.bj.bcebos.com/models/yolov3_darknet53_270e_coco.pdparams +``` + +### 2.4 启动服务端模型预测服务 +当完成以上环境准备和模型导出后,可以按如下命令启动模型预测服务: +```commandline +python deploy/serving/python/web_service.py --model_dir output_inference/yolov3_darknet53_270e_coco & +``` +服务端模型预测相关配置可在[config.yml](./config.yml)中修改, +开发者只需要关注如下配置:http_port(服务的http端口),device_type(计算硬件类型),devices(计算硬件ID)。 + +### 2.5 启动客户端访问 +当成功启动了模型预测服务,可以按如下命令启动客户端访问服务: +```commandline +python deploy/serving/python/pipeline_http_client.py --image_file demo/000000014439.jpg +``` diff --git a/test_tipc/requirements.txt b/test_tipc/requirements.txt index 8dc76aceb101b6fcd5369c3cae1e3e3119cd054b..1a1aa828406da3c5e884799339564e5c1672edec 100644 --- a/test_tipc/requirements.txt +++ b/test_tipc/requirements.txt @@ -2,3 +2,6 @@ pynvml psutil GPUtil paddleslim +onnx +onnxruntime +paddle2onnx