From bc3a7ce8fe093482fc61f15acd616b4be2fa0b9d Mon Sep 17 00:00:00 2001 From: felixhjh <852142024@qq.com> Date: Wed, 8 Feb 2023 03:12:50 +0000 Subject: [PATCH] Update paddleseg doc --- .../segmentation/paddleseg/README_CN.md | 2 +- .../paddleseg/amlogic/a311d/README_CN.md | 4 +- .../paddleseg/android/README_CN.md | 4 +- .../paddleseg/ascend/README_CN.md | 48 +++++++ .../{quantize => ascend}/cpp/CMakeLists.txt | 2 +- .../paddleseg/ascend/cpp/README.md | 96 +++++++++++++ .../paddleseg/ascend/cpp/README_CN.md | 88 ++++++++++++ .../{quantize => ascend}/cpp/infer.cc | 52 +++---- .../paddleseg/ascend/python/README.md | 82 +++++++++++ .../paddleseg/ascend/python/README_CN.md | 79 ++++++++++ .../paddleseg/ascend/python/infer.py | 34 +++++ .../paddleseg/cpu-gpu/README_CN.md | 4 +- .../paddleseg/cpu-gpu/cpp/README_CN.md | 2 +- .../paddleseg/cpu-gpu/python/README.md | 2 +- .../paddleseg/cpu-gpu/python/README_CN.md | 2 +- .../paddleseg/kunlun/README_CN.md | 2 +- .../paddleseg/kunlun/cpp/README_CN.md | 57 +++----- .../paddleseg/kunlun/cpp/infer.cc | 136 +----------------- .../paddleseg/kunlun/python/README.md | 2 +- .../paddleseg/kunlun/python/README_CN.md | 39 +++-- .../paddleseg/kunlun/python/infer.py | 33 +---- .../paddleseg/kunlun/python/serving/README.md | 36 ----- .../kunlun/python/serving/README_CN.md | 36 ----- .../paddleseg/kunlun/python/serving/client.py | 23 --- .../paddleseg/kunlun/python/serving/server.py | 38 ----- .../paddleseg/quantize/cpp/README.md | 32 ----- .../paddleseg/quantize/cpp/README_CN.md | 32 ----- .../paddleseg/quantize/python/README.md | 29 ---- .../paddleseg/quantize/python/README_CN.md | 29 ---- .../paddleseg/quantize/python/infer.py | 76 ---------- .../paddleseg/rockchip/rknpu2/README_CN.md | 31 +++- .../rockchip/rknpu2/cpp/README_CN.md | 4 +- .../paddleseg/rockchip/rknpu2/pp_humanseg.md | 2 +- .../rockchip/rknpu2/python/README_CN.md | 8 +- .../paddleseg/rockchip/rv1126/README_CN.md | 16 ++- .../rockchip/rv1126/cpp/README_CN.md | 12 +- .../paddleseg/sophgo/README_CN.md | 13 +- .../paddleseg/sophgo/cpp/README_CN.md | 4 +- .../paddleseg/sophgo/python/README_CN.md | 2 +- .../segmentation/paddleseg/web/README_CN.md | 2 +- 40 files changed, 570 insertions(+), 625 deletions(-) create mode 100644 examples/vision/segmentation/paddleseg/ascend/README_CN.md rename examples/vision/segmentation/paddleseg/{quantize => ascend}/cpp/CMakeLists.txt (91%) create mode 100755 examples/vision/segmentation/paddleseg/ascend/cpp/README.md create mode 100644 examples/vision/segmentation/paddleseg/ascend/cpp/README_CN.md rename examples/vision/segmentation/paddleseg/{quantize => ascend}/cpp/infer.cc (55%) create mode 100755 examples/vision/segmentation/paddleseg/ascend/python/README.md create mode 100644 examples/vision/segmentation/paddleseg/ascend/python/README_CN.md create mode 100755 examples/vision/segmentation/paddleseg/ascend/python/infer.py delete mode 100644 examples/vision/segmentation/paddleseg/kunlun/python/serving/README.md delete mode 100644 examples/vision/segmentation/paddleseg/kunlun/python/serving/README_CN.md delete mode 100644 examples/vision/segmentation/paddleseg/kunlun/python/serving/client.py delete mode 100644 examples/vision/segmentation/paddleseg/kunlun/python/serving/server.py delete mode 100755 examples/vision/segmentation/paddleseg/quantize/cpp/README.md delete mode 100644 examples/vision/segmentation/paddleseg/quantize/cpp/README_CN.md delete mode 100755 examples/vision/segmentation/paddleseg/quantize/python/README.md delete mode 100644 examples/vision/segmentation/paddleseg/quantize/python/README_CN.md delete mode 100644 examples/vision/segmentation/paddleseg/quantize/python/infer.py diff --git a/examples/vision/segmentation/paddleseg/README_CN.md b/examples/vision/segmentation/paddleseg/README_CN.md index 28bdce086..865c6c4aa 100644 --- a/examples/vision/segmentation/paddleseg/README_CN.md +++ b/examples/vision/segmentation/paddleseg/README_CN.md @@ -6,7 +6,7 @@ FastDeploy是一款全场景、易用灵活、极致高效的AI推理部署工 ## 详细文档 -- [NVIDIA GPU、X86 CPU、飞腾CPU、ARM CPU](cpu-gpu) +- [NVIDIA GPU、X86 CPU、飞腾CPU、ARM CPU、Intel GPU(独立显卡/集成显卡)](cpu-gpu) - [昆仑](kunlun) - [升腾](ascend) - [瑞芯微](rockchip) diff --git a/examples/vision/segmentation/paddleseg/amlogic/a311d/README_CN.md b/examples/vision/segmentation/paddleseg/amlogic/a311d/README_CN.md index ccb999450..3537dfef1 100644 --- a/examples/vision/segmentation/paddleseg/amlogic/a311d/README_CN.md +++ b/examples/vision/segmentation/paddleseg/amlogic/a311d/README_CN.md @@ -6,7 +6,9 @@ 由于晶晨A311D的NPU仅支持INT8量化模型的部署,因此所支持的量化模型如下: - [PP-LiteSeg系列模型](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/configs/pp_liteseg/README.md) -为了方便开发者的测试,下面提供了PaddleSeg导出的部分模型,开发者可直接下载使用。 +为了方便开发者的测试,下面提供了PaddleSeg导出的部分推理模型,开发者可直接下载使用。 + +PaddleSeg模型导出,请参考其文档说明[模型导出](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/docs/model_export_cn.md) | 模型 | 参数文件大小 |输入Shape | mIoU | mIoU (flip) | mIoU (ms+flip) | |:---------------------------------------------------------------- |:----- |:----- | :----- | :----- | :----- | diff --git a/examples/vision/segmentation/paddleseg/android/README_CN.md b/examples/vision/segmentation/paddleseg/android/README_CN.md index eb683bdfa..442947009 100644 --- a/examples/vision/segmentation/paddleseg/android/README_CN.md +++ b/examples/vision/segmentation/paddleseg/android/README_CN.md @@ -173,5 +173,5 @@ model.init(modelFile, paramFile, configFile, option); ## 更多参考文档 如果您想知道更多的FastDeploy Java API文档以及如何通过JNI来接入FastDeploy C++ API感兴趣,可以参考以下内容: -- [在 Android 中使用 FastDeploy Java SDK](../../../../../java/android/) -- [在 Android 中使用 FastDeploy C++ SDK](../../../../../docs/cn/faq/use_cpp_sdk_on_android.md) +- [在 Android 中使用 FastDeploy Java SDK](https://github.com/PaddlePaddle/FastDeploy/tree/develop/java/android) +- [在 Android 中使用 FastDeploy C++ SDK](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/faq/use_cpp_sdk_on_android.md) diff --git a/examples/vision/segmentation/paddleseg/ascend/README_CN.md b/examples/vision/segmentation/paddleseg/ascend/README_CN.md new file mode 100644 index 000000000..fb29615fe --- /dev/null +++ b/examples/vision/segmentation/paddleseg/ascend/README_CN.md @@ -0,0 +1,48 @@ +# 使用FastDeploy部署PaddleSeg模型 + +FastDeploy支持在华为昇腾上部署PaddleSeg模型 + +## 模型版本说明 + +- [PaddleSeg develop](https://github.com/PaddlePaddle/PaddleSeg/tree/develop) + +目前FastDeploy支持如下模型的部署 + +- [PP-LiteSeg系列模型](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/configs/pp_liteseg/README.md) +- [PP-HumanSeg系列模型](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/contrib/PP-HumanSeg/README.md) +- [FCN系列模型](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/configs/fcn/README.md) +- [DeepLabV3系列模型](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/configs/deeplabv3/README.md) +- [SegFormer系列模型](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/configs/segformer/README.md) + +>>**注意** 若需要在华为昇腾上部署**PP-Matting**、**PP-HumanMatting**请从[Matting模型部署](../../matting/)下载对应模型,部署过程与此文档一致 + +## 准备PaddleSeg部署模型 +PaddleSeg模型导出,请参考其文档说明[模型导出](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/docs/model_export_cn.md) + +**注意** +- PaddleSeg导出的模型包含`model.pdmodel`、`model.pdiparams`和`deploy.yaml`三个文件,FastDeploy会从yaml文件中获取模型在推理时需要的预处理信息 + +## 下载预训练模型 + +为了方便开发者的测试,下面提供了PaddleSeg导出的部分推理模型模型 +- without-argmax导出方式为:**不指定**`--input_shape`,**指定**`--output_op none` +- with-argmax导出方式为:**不指定**`--input_shape`,**指定**`--output_op argmax` + +开发者可直接下载使用。 + +| 模型 | 参数文件大小 |输入Shape | mIoU | mIoU (flip) | mIoU (ms+flip) | +|:---------------------------------------------------------------- |:----- |:----- | :----- | :----- | :----- | +| [PP-LiteSeg-B(STDC2)-cityscapes-with-argmax](https://bj.bcebos.com/paddlehub/fastdeploy/PP_LiteSeg_B_STDC2_cityscapes_with_argmax_infer.tgz) \| [PP-LiteSeg-B(STDC2)-cityscapes-without-argmax](https://bj.bcebos.com/paddlehub/fastdeploy/PP_LiteSeg_B_STDC2_cityscapes_without_argmax_infer.tgz) | 31MB | 1024x512 | 79.04% | 79.52% | 79.85% | +|[PP-HumanSegV1-Lite-with-argmax(通用人像分割模型)](https://bj.bcebos.com/paddlehub/fastdeploy/Portrait_PP_HumanSegV1_Lite_with_argmax_infer.tgz) \| [PP-HumanSegV1-Lite-without-argmax(通用人像分割模型)](https://bj.bcebos.com/paddlehub/fastdeploy/PP_HumanSegV1_Lite_infer.tgz) | 543KB | 192x192 | 86.2% | - | - | +|[PP-HumanSegV2-Lite-with-argmax(通用人像分割模型)](https://bj.bcebos.com/paddlehub/fastdeploy/PP_HumanSegV2_Lite_192x192_with_argmax_infer.tgz) \| [PP-HumanSegV2-Lite-without-argmax(通用人像分割模型)](https://bj.bcebos.com/paddlehub/fastdeploy/PP_HumanSegV2_Lite_192x192_infer.tgz) | 12MB | 192x192 | 92.52% | - | - | +| [PP-HumanSegV2-Mobile-with-argmax(通用人像分割模型)](https://bj.bcebos.com/paddlehub/fastdeploy/PP_HumanSegV2_Mobile_192x192_with_argmax_infer.tgz) \| [PP-HumanSegV2-Mobile-without-argmax(通用人像分割模型)](https://bj.bcebos.com/paddlehub/fastdeploy/PP_HumanSegV2_Mobile_192x192_infer.tgz) | 29MB | 192x192 | 93.13% | - | - | +|[PP-HumanSegV1-Server-with-argmax(通用人像分割模型)](https://bj.bcebos.com/paddlehub/fastdeploy/PP_HumanSegV1_Server_with_argmax_infer.tgz) \| [PP-HumanSegV1-Server-without-argmax(通用人像分割模型)](https://bj.bcebos.com/paddlehub/fastdeploy/PP_HumanSegV1_Server_infer.tgz) | 103MB | 512x512 | 96.47% | - | - | +| [Portait-PP-HumanSegV2-Lite-with-argmax(肖像分割模型)](https://bj.bcebos.com/paddlehub/fastdeploy/Portrait_PP_HumanSegV2_Lite_256x144_with_argmax_infer.tgz) \| [Portait-PP-HumanSegV2-Lite-without-argmax(肖像分割模型)](https://bj.bcebos.com/paddlehub/fastdeploy/Portrait_PP_HumanSegV2_Lite_256x144_infer.tgz) | 3.6M | 256x144 | 96.63% | - | - | +| [FCN-HRNet-W18-cityscapes-with-argmax](https://bj.bcebos.com/paddlehub/fastdeploy/FCN_HRNet_W18_cityscapes_with_argmax_infer.tgz) \| [FCN-HRNet-W18-cityscapes-without-argmax](https://bj.bcebos.com/paddlehub/fastdeploy/FCN_HRNet_W18_cityscapes_without_argmax_infer.tgz)(暂时不支持ONNXRuntime的GPU推理) | 37MB | 1024x512 | 78.97% | 79.49% | 79.74% | +| [Deeplabv3-ResNet101-OS8-cityscapes-with-argmax](https://bj.bcebos.com/paddlehub/fastdeploy/Deeplabv3_ResNet101_OS8_cityscapes_with_argmax_infer.tgz) \| [Deeplabv3-ResNet101-OS8-cityscapes-without-argmax](https://bj.bcebos.com/paddlehub/fastdeploy/Deeplabv3_ResNet101_OS8_cityscapes_without_argmax_infer.tgz) | 150MB | 1024x512 | 79.90% | 80.22% | 80.47% | +| [SegFormer_B0-cityscapes-with-argmax](https://bj.bcebos.com/paddlehub/fastdeploy/SegFormer_B0-cityscapes-with-argmax.tgz) \| [SegFormer_B0-cityscapes-without-argmax](https://bj.bcebos.com/paddlehub/fastdeploy/SegFormer_B0-cityscapes-without-argmax.tgz) | 15MB | 1024x1024 | 76.73% | 77.16% | - | + +## 详细部署文档 + +- [Python部署](python) +- [C++部署](cpp) diff --git a/examples/vision/segmentation/paddleseg/quantize/cpp/CMakeLists.txt b/examples/vision/segmentation/paddleseg/ascend/cpp/CMakeLists.txt similarity index 91% rename from examples/vision/segmentation/paddleseg/quantize/cpp/CMakeLists.txt rename to examples/vision/segmentation/paddleseg/ascend/cpp/CMakeLists.txt index fea1a2888..93540a7e8 100644 --- a/examples/vision/segmentation/paddleseg/quantize/cpp/CMakeLists.txt +++ b/examples/vision/segmentation/paddleseg/ascend/cpp/CMakeLists.txt @@ -1,5 +1,5 @@ PROJECT(infer_demo C CXX) -CMAKE_MINIMUM_REQUIRED (VERSION 3.12) +CMAKE_MINIMUM_REQUIRED (VERSION 3.10) # 指定下载解压后的fastdeploy库路径 option(FASTDEPLOY_INSTALL_DIR "Path of downloaded fastdeploy sdk.") diff --git a/examples/vision/segmentation/paddleseg/ascend/cpp/README.md b/examples/vision/segmentation/paddleseg/ascend/cpp/README.md new file mode 100755 index 000000000..bcccdd1cb --- /dev/null +++ b/examples/vision/segmentation/paddleseg/ascend/cpp/README.md @@ -0,0 +1,96 @@ +English | [简体中文](README_CN.md) +# PaddleSeg C++ Deployment Example + +This directory provides examples that `infer.cc` fast finishes the deployment of Unet on CPU/GPU and GPU accelerated by TensorRT. + +Before deployment, two steps require confirmation + +- 1. Software and hardware should meet the requirements. Please refer to [FastDeploy Environment Requirements](../../../../../docs/cn/build_and_install/download_prebuilt_libraries.md) +- 2. Download the precompiled deployment library and samples code according to your development environment. Refer to [FastDeploy Precompiled Library](../../../../../docs/cn/build_and_install/download_prebuilt_libraries.md) + +【Attention】For the deployment of **PP-Matting**、**PP-HumanMatting** and **ModNet**, refer to [Matting Model Deployment](../../../matting) + +Taking the inference on Linux as an example, the compilation test can be completed by executing the following command in this directory. FastDeploy version 1.0.0 or above (x.x.x>=1.0.0) is required to support this model. + +```bash +mkdir build +cd build +# Download the FastDeploy precompiled library. Users can choose your appropriate version in the `FastDeploy Precompiled Library` mentioned above +wget https://bj.bcebos.com/fastdeploy/release/cpp/fastdeploy-linux-x64-x.x.x.tgz +tar xvf fastdeploy-linux-x64-x.x.x.tgz +cmake .. -DFASTDEPLOY_INSTALL_DIR=${PWD}/fastdeploy-linux-x64-x.x.x +make -j + +# Download Unet model files and test images +wget https://bj.bcebos.com/paddlehub/fastdeploy/Unet_cityscapes_without_argmax_infer.tgz +tar -xvf Unet_cityscapes_without_argmax_infer.tgz +wget https://paddleseg.bj.bcebos.com/dygraph/demo/cityscapes_demo.png + + +# CPU inference +./infer_demo Unet_cityscapes_without_argmax_infer cityscapes_demo.png 0 +# GPU inference +./infer_demo Unet_cityscapes_without_argmax_infer cityscapes_demo.png 1 +# TensorRT inference on GPU +./infer_demo Unet_cityscapes_without_argmax_infer cityscapes_demo.png 2 +# kunlunxin XPU inference +./infer_demo Unet_cityscapes_without_argmax_infer cityscapes_demo.png 3 +``` + +The visualized result after running is as follows +
+ +
+ +The above command works for Linux or MacOS. For SDK use-pattern in Windows, refer to: +- [How to use FastDeploy C++ SDK in Windows](../../../../../docs/cn/faq/use_sdk_on_windows.md) + +## PaddleSeg C++ Interface + +### PaddleSeg Class + +```c++ +fastdeploy::vision::segmentation::PaddleSegModel( + const string& model_file, + const string& params_file = "", + const string& config_file, + const RuntimeOption& runtime_option = RuntimeOption(), + const ModelFormat& model_format = ModelFormat::PADDLE) +``` + +PaddleSegModel model loading and initialization, among which model_file is the exported Paddle model format. + +**Parameter** + +> * **model_file**(str): Model file path +> * **params_file**(str): Parameter file path +> * **config_file**(str): Inference deployment configuration file +> * **runtime_option**(RuntimeOption): Backend inference configuration. None by default, which is the default configuration +> * **model_format**(ModelFormat): Model format. Paddle format by default + +#### Predict Function + +> ```c++ +> PaddleSegModel::Predict(cv::Mat* im, DetectionResult* result) +> ``` +> +> Model prediction interface. Input images and output detection results. +> +> **Parameter** +> +> > * **im**: Input images in HWC or BGR format +> > * **result**: The segmentation result, including the predicted label of the segmentation and the corresponding probability of the label. Refer to [Vision Model Prediction Results](../../../../../docs/api/vision_results/) for the description of SegmentationResult + +### Class Member Variable +#### Pre-processing Parameter +Users can modify the following pre-processing parameters to their needs, which affects the final inference and deployment results + +> > * **is_vertical_screen**(bool): For PP-HumanSeg models, the input image is portrait, height greater than a width, by setting this parameter to`true` + +#### Post-processing Parameter +> > * **apply_softmax**(bool): The `apply_softmax` parameter is not specified when the model is exported. Set this parameter to `true` to normalize the probability result (score_map) of the predicted output segmentation label (label_map) + +- [Model Description](../../) +- [Python Deployment](../python) +- [Vision Model Prediction Results](../../../../../docs/api/vision_results/) +- [How to switch the model inference backend engine](../../../../../docs/cn/faq/how_to_change_backend.md) diff --git a/examples/vision/segmentation/paddleseg/ascend/cpp/README_CN.md b/examples/vision/segmentation/paddleseg/ascend/cpp/README_CN.md new file mode 100644 index 000000000..38692dc26 --- /dev/null +++ b/examples/vision/segmentation/paddleseg/ascend/cpp/README_CN.md @@ -0,0 +1,88 @@ +[English](README.md) | 简体中文 +# PaddleSeg C++部署示例 + +本目录下提供`infer.cc`快速完成PP-LiteSeg在华为昇腾上部署的示例。 + +在部署前,需自行编译基于华为昇腾NPU的预测库,参考文档[华为昇腾NPU部署环境编译](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/build_and_install/huawei_ascend.md) + +>>**注意** **PP-Matting**、**PP-HumanMatting**的模型,请从[Matting模型部署](../../../matting)下载 + +```bash +#下载部署示例代码 +git clone https://github.com/PaddlePaddle/FastDeploy.git +cd FastDeploy/examples/vision/segmentation/paddleseg/ascend/cpp + +mkdir build +cd build +# 使用编译完成的FastDeploy库编译infer_demo +cmake .. -DFASTDEPLOY_INSTALL_DIR=${PWD}/fastdeploy-ascend +make -j + +# 下载PP-LiteSeg模型文件和测试图片 +wget https://bj.bcebos.com/paddlehub/fastdeploy/PP_LiteSeg_B_STDC2_cityscapes_without_argmax_infer.tgz +tar -xvf PP_LiteSeg_B_STDC2_cityscapes_without_argmax_infer.tgz +wget https://paddleseg.bj.bcebos.com/dygraph/demo/cityscapes_demo.png + +# 华为昇腾推理 +./infer_demo PP_LiteSeg_B_STDC2_cityscapes_without_argmax_infer cityscapes_demo.png +``` + +运行完成可视化结果如下图所示 +
+ +
+ +## PaddleSeg C++接口 + +### PaddleSeg类 + +```c++ +fastdeploy::vision::segmentation::PaddleSegModel( + const string& model_file, + const string& params_file = "", + const string& config_file, + const RuntimeOption& runtime_option = RuntimeOption(), + const ModelFormat& model_format = ModelFormat::PADDLE) +``` + +PaddleSegModel模型加载和初始化,其中model_file为导出的Paddle模型格式。 + +**参数** + +> * **model_file**(str): 模型文件路径 +> * **params_file**(str): 参数文件路径 +> * **config_file**(str): 推理部署配置文件 +> * **runtime_option**(RuntimeOption): 后端推理配置,默认为None,即采用默认配置 +> * **model_format**(ModelFormat): 模型格式,默认为Paddle格式 + +#### Predict函数 + +> ```c++ +> PaddleSegModel::Predict(cv::Mat* im, DetectionResult* result) +> ``` +> +> 模型预测接口,输入图像直接输出检测结果。 +> +> **参数** +> +> > * **im**: 输入图像,注意需为HWC,BGR格式 +> > * **result**: 分割结果,包括分割预测的标签以及标签对应的概率值, SegmentationResult结构体说明参考[SegmentationResult结构体介绍](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/api/vision_results/segmentation_result_CN.md) + +### 类成员属性 +#### 预处理参数 +用户可按照自己的实际需求,修改下列预处理参数,从而影响最终的推理和部署效果 + +> > * **is_vertical_screen**(bool): PP-HumanSeg系列模型通过设置此参数为`true`表明输入图片是竖屏,即height大于width的图片 + +#### 后处理参数 +> > * **apply_softmax**(bool): 当模型导出时,并未指定`apply_softmax`参数,可通过此设置此参数为`true`,将预测的输出分割标签(label_map)对应的概率结果(score_map)做softmax归一化处理 + +## 快速链接 +- [PaddleSeg模型介绍](../../) +- [Python部署](../python) + +## 常见问题 +- [如何将模型预测结果SegmentationResult转为numpy格式](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/api/vision_results/segmentation_result_CN.md) +- [如何切换模型推理后端引擎](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/faq/how_to_change_backend.md) +- [PaddleSeg C++ API文档](https://www.paddlepaddle.org.cn/fastdeploy-api-doc/cpp/html/namespacefastdeploy_1_1vision_1_1segmentation.html) +) diff --git a/examples/vision/segmentation/paddleseg/quantize/cpp/infer.cc b/examples/vision/segmentation/paddleseg/ascend/cpp/infer.cc similarity index 55% rename from examples/vision/segmentation/paddleseg/quantize/cpp/infer.cc rename to examples/vision/segmentation/paddleseg/ascend/cpp/infer.cc index 158a30263..cf98dae4e 100644 --- a/examples/vision/segmentation/paddleseg/quantize/cpp/infer.cc +++ b/examples/vision/segmentation/paddleseg/ascend/cpp/infer.cc @@ -13,25 +13,28 @@ // limitations under the License. #include "fastdeploy/vision.h" + #ifdef WIN32 const char sep = '\\'; #else const char sep = '/'; #endif -void InitAndInfer(const std::string& model_dir, const std::string& image_file, - const fastdeploy::RuntimeOption& option) { +void AscendInfer(const std::string& model_dir, const std::string& image_file) { auto model_file = model_dir + sep + "model.pdmodel"; auto params_file = model_dir + sep + "model.pdiparams"; auto config_file = model_dir + sep + "deploy.yaml"; - + auto option = fastdeploy::RuntimeOption(); + option.UseAscend(); auto model = fastdeploy::vision::segmentation::PaddleSegModel( - model_file, params_file, config_file,option); + model_file, params_file, config_file, option); - assert(model.Initialized()); + if (!model.Initialized()) { + std::cerr << "Failed to initialize." << std::endl; + return; + } auto im = cv::imread(image_file); - auto im_bak = im.clone(); fastdeploy::vision::SegmentationResult res; if (!model.Predict(im, &res)) { @@ -40,37 +43,20 @@ void InitAndInfer(const std::string& model_dir, const std::string& image_file, } std::cout << res.Str() << std::endl; - + auto vis_im = fastdeploy::vision::VisSegmentation(im, res, 0.5); + cv::imwrite("vis_result.jpg", vis_im); + std::cout << "Visualized result saved in ./vis_result.jpg" << std::endl; } - int main(int argc, char* argv[]) { - if (argc < 4) { - std::cout << "Usage: infer_demo path/to/quant_model " - "path/to/image " - "run_option, " - "e.g ./infer_demo ./ResNet50_vd_quant ./test.jpeg 0" - << std::endl; - std::cout << "The data type of run_option is int, 0: run on cpu with ORT " - "backend; 1: run " - "on gpu with TensorRT backend. " - << std::endl; + if (argc < 3) { + std::cout + << "Usage: infer_demo path/to/model_dir path/to/image run_option, " + "e.g ./infer_model ./ppseg_model_dir ./test.jpeg" + << std::endl; return -1; } - fastdeploy::RuntimeOption option; - int flag = std::atoi(argv[3]); - - if (flag == 0) { - option.UseCpu(); - option.UseOrtBackend(); - } else if (flag == 1) { - option.UseCpu(); - option.UsePaddleInferBackend(); - } - - std::string model_dir = argv[1]; - std::string test_image = argv[2]; - InitAndInfer(model_dir, test_image, option); + AscendInfer(argv[1], argv[2]); return 0; -} \ No newline at end of file +} diff --git a/examples/vision/segmentation/paddleseg/ascend/python/README.md b/examples/vision/segmentation/paddleseg/ascend/python/README.md new file mode 100755 index 000000000..d37d92c9e --- /dev/null +++ b/examples/vision/segmentation/paddleseg/ascend/python/README.md @@ -0,0 +1,82 @@ +English | [简体中文](README_CN.md) +# PaddleSeg Python Deployment Example + +Before deployment, two steps require confirmation + +- 1. Software and hardware should meet the requirements. Please refer to [FastDeploy Environment Requirements](../../../../../docs/cn/build_and_install/download_prebuilt_libraries.md) +- 2. Install FastDeploy Python whl package. Refer to [FastDeploy Python Installation](../../../../../docs/cn/build_and_install/download_prebuilt_libraries.md) + +【Attention】For the deployment of **PP-Matting**、**PP-HumanMatting** and **ModNet**, refer to [Matting Model Deployment](../../../matting) + +This directory provides examples that `infer.py` fast finishes the deployment of Unet on CPU/GPU and GPU accelerated by TensorRT. The script is as follows +```bash +# Download the deployment example code +git clone https://github.com/PaddlePaddle/FastDeploy.git +cd FastDeploy/examples/vision/segmentation/paddleseg/python + +# Download Unet model files and test images +wget https://bj.bcebos.com/paddlehub/fastdeploy/Unet_cityscapes_without_argmax_infer.tgz +tar -xvf Unet_cityscapes_without_argmax_infer.tgz +wget https://paddleseg.bj.bcebos.com/dygraph/demo/cityscapes_demo.png + +# CPU inference +python infer.py --model Unet_cityscapes_without_argmax_infer --image cityscapes_demo.png --device cpu +# GPU inference +python infer.py --model Unet_cityscapes_without_argmax_infer --image cityscapes_demo.png --device gpu +# TensorRT inference on GPU(Attention: It is somewhat time-consuming for the operation of model serialization when running TensorRT inference for the first time. Please be patient.) +python infer.py --model Unet_cityscapes_without_argmax_infer --image cityscapes_demo.png --device gpu --use_trt True +# kunlunxin XPU inference +python infer.py --model Unet_cityscapes_without_argmax_infer --image cityscapes_demo.png --device kunlunxin +``` + +The visualized result after running is as follows +
+ +
+ +## PaddleSegModel Python Interface + +```python +fd.vision.segmentation.PaddleSegModel(model_file, params_file, config_file, runtime_option=None, model_format=ModelFormat.PADDLE) +``` + +PaddleSeg model loading and initialization, among which model_file, params_file, and config_file are the Paddle inference files exported from the training model. Refer to [Model Export](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/docs/model_export_cn.md) for more information + +**Parameter** + +> * **model_file**(str): Model file path +> * **params_file**(str): Parameter file path +> * **config_file**(str): Inference deployment configuration file +> * **runtime_option**(RuntimeOption): Backend inference configuration. None by default, which is the default configuration +> * **model_format**(ModelFormat): Model format. Paddle format by default + +### predict function + +> ```python +> PaddleSegModel.predict(input_image) +> ``` +> +> Model prediction interface. Input images and output detection results. +> +> **Parameter** +> +> > * **input_image**(np.ndarray): Input data in HWC or BGR format + +> **Return** +> +> > Return `fastdeploy.vision.SegmentationResult` structure. Refer to [Vision Model Prediction Results](../../../../../docs/api/vision_results/) for the description of the structure. + +### Class Member Variable +#### Pre-processing Parameter +Users can modify the following pre-processing parameters to their needs, which affects the final inference and deployment results + +> > * **is_vertical_screen**(bool): For PP-HumanSeg models, the input image is portrait with height greater than width by setting this parameter to `true` +#### Post-processing Parameter +> > * **apply_softmax**(bool): The `apply_softmax` parameter is not specified when the model is exported. Set this parameter to `true` to normalize the probability result (score_map) of the predicted output segmentation label (label_map) in softmax + +## Other Documents + +- [PaddleSeg Model Description](..) +- [PaddleSeg C++ Deployment](../cpp) +- [Model Prediction Results](../../../../../docs/api/vision_results/) +- [How to switch the model inference backend engine](../../../../../docs/cn/faq/how_to_change_backend.md) diff --git a/examples/vision/segmentation/paddleseg/ascend/python/README_CN.md b/examples/vision/segmentation/paddleseg/ascend/python/README_CN.md new file mode 100644 index 000000000..909784fd3 --- /dev/null +++ b/examples/vision/segmentation/paddleseg/ascend/python/README_CN.md @@ -0,0 +1,79 @@ +[English](README.md) | 简体中文 +# PaddleSeg Python部署示例 + +本目录下提供`infer.py`快速完成PP-LiteSeg在华为昇腾上部署的示例。 + +在部署前,需自行编译基于华为昇腾NPU的FastDeploy python wheel包,参考文档[华为昇腾NPU部署环境编译](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/build_and_install/huawei_ascend.md),编译python wheel包并安装 + +>>**注意** **PP-Matting**、**PP-HumanMatting**的模型,请从[Matting模型部署](../../../matting)下载 + + +```bash +#下载部署示例代码 +git clone https://github.com/PaddlePaddle/FastDeploy.git +cd FastDeploy/examples/vision/segmentation/paddleseg/ascend/cpp + +# 下载PP-LiteSeg模型文件和测试图片 +wget https://bj.bcebos.com/paddlehub/fastdeploy/PP_LiteSeg_B_STDC2_cityscapes_without_argmax_infer.tgz +tar -xvf PP_LiteSeg_B_STDC2_cityscapes_without_argmax_infer.tgz +wget https://paddleseg.bj.bcebos.com/dygraph/demo/cityscapes_demo.png + +# 华为昇腾推理 +python infer.py --model PP_LiteSeg_B_STDC2_cityscapes_without_argmax_infer --image cityscapes_demo.png +``` + +运行完成可视化结果如下图所示 +
+ +
+ +## PaddleSegModel Python接口 + +```python +fd.vision.segmentation.PaddleSegModel(model_file, params_file, config_file, runtime_option=None, model_format=ModelFormat.PADDLE) +``` + +PaddleSeg模型加载和初始化,其中model_file, params_file以及config_file为训练模型导出的Paddle inference文件,具体请参考其文档说明[模型导出](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/docs/model_export_cn.md) + +**参数** + +> * **model_file**(str): 模型文件路径 +> * **params_file**(str): 参数文件路径 +> * **config_file**(str): 推理部署配置文件 +> * **runtime_option**(RuntimeOption): 后端推理配置,默认为None,即采用默认配置 +> * **model_format**(ModelFormat): 模型格式,默认为Paddle格式 + +### predict函数 + +> ```python +> PaddleSegModel.predict(input_image) +> ``` +> +> 模型预测结口,输入图像直接输出检测结果。 +> +> **参数** +> +> > * **input_image**(np.ndarray): 输入数据,注意需为HWC,BGR格式 + +> **返回** +> +> > 返回`fastdeploy.vision.SegmentationResult`结构体,SegmentationResult结构体说明参考[SegmentationResult结构体介绍](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/api/vision_results/segmentation_result_CN.md) + +### 类成员属性 +#### 预处理参数 +用户可按照自己的实际需求,修改下列预处理参数,从而影响最终的推理和部署效果 + +> > * **is_vertical_screen**(bool): PP-HumanSeg系列模型通过设置此参数为`true`表明输入图片是竖屏,即height大于width的图片 + +#### 后处理参数 +> > * **apply_softmax**(bool): 当模型导出时,并未指定`apply_softmax`参数,可通过此设置此参数为`true`,将预测的输出分割标签(label_map)对应的概率结果(score_map)做softmax归一化处理 + +## 快速链接 + +- [PaddleSeg 模型介绍](..) +- [PaddleSeg C++部署](../cpp) + +## 常见问题 +- [如何将模型预测结果SegmentationResult转为numpy格式](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/api/vision_results/segmentation_result_CN.md) +- [如何切换模型推理后端引擎](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/faq/how_to_change_backend.md) +- [PaddleSeg python API文档](https://www.paddlepaddle.org.cn/fastdeploy-api-doc/python/html/semantic_segmentation.html) diff --git a/examples/vision/segmentation/paddleseg/ascend/python/infer.py b/examples/vision/segmentation/paddleseg/ascend/python/infer.py new file mode 100755 index 000000000..180f30e80 --- /dev/null +++ b/examples/vision/segmentation/paddleseg/ascend/python/infer.py @@ -0,0 +1,34 @@ +import fastdeploy as fd +import cv2 +import os + + +def parse_arguments(): + import argparse + import ast + parser = argparse.ArgumentParser() + parser.add_argument( + "--model", required=True, help="Path of PaddleSeg model.") + parser.add_argument( + "--image", type=str, required=True, help="Path of test image file.") + return parser.parse_args() + + +runtime_option = fd.RuntimeOption() +runtime_option.use_ascend() + +# 配置runtime,加载模型 +model_file = os.path.join(args.model, "model.pdmodel") +params_file = os.path.join(args.model, "model.pdiparams") +config_file = os.path.join(args.model, "deploy.yaml") +model = fd.vision.segmentation.PaddleSegModel( + model_file, params_file, config_file, runtime_option=runtime_option) + +# 预测图片分割结果 +im = cv2.imread(args.image) +result = model.predict(im) +print(result) + +# 可视化结果 +vis_im = fd.vision.vis_segmentation(im, result, weight=0.5) +cv2.imwrite("vis_img.png", vis_im) diff --git a/examples/vision/segmentation/paddleseg/cpu-gpu/README_CN.md b/examples/vision/segmentation/paddleseg/cpu-gpu/README_CN.md index a4ff4af5e..0109ac01a 100644 --- a/examples/vision/segmentation/paddleseg/cpu-gpu/README_CN.md +++ b/examples/vision/segmentation/paddleseg/cpu-gpu/README_CN.md @@ -1,5 +1,7 @@ # 使用FastDeploy部署PaddleSeg模型 +FastDeploy支持在NVIDIA GPU、X86 CPU、飞腾CPU、ARM CPU、Intel GPU(独立显卡/集成显卡)硬件上部署PaddleSeg模型 + ## 模型版本说明 - [PaddleSeg develop](https://github.com/PaddlePaddle/PaddleSeg/tree/develop) @@ -13,7 +15,7 @@ - [DeepLabV3系列模型](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/configs/deeplabv3/README.md) - [SegFormer系列模型](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/configs/segformer/README.md) -【注意】如你部署的为**PP-Matting**、**PP-HumanMatting**以及**ModNet**请参考[Matting模型部署](../../matting/) +>>**注意**】如部署的为**PP-Matting**、**PP-HumanMatting**以及**ModNet**请参考[Matting模型部署](../../matting/) ## 准备PaddleSeg部署模型 PaddleSeg模型导出,请参考其文档说明[模型导出](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/docs/model_export_cn.md) diff --git a/examples/vision/segmentation/paddleseg/cpu-gpu/cpp/README_CN.md b/examples/vision/segmentation/paddleseg/cpu-gpu/cpp/README_CN.md index c5d39934b..7618e6f15 100644 --- a/examples/vision/segmentation/paddleseg/cpu-gpu/cpp/README_CN.md +++ b/examples/vision/segmentation/paddleseg/cpu-gpu/cpp/README_CN.md @@ -82,7 +82,7 @@ PaddleSegModel模型加载和初始化,其中model_file为导出的Paddle模 > **参数** > > > * **im**: 输入图像,注意需为HWC,BGR格式 -> > * **result**: 分割结果,包括分割预测的标签以及标签对应的概率值, SegmentationResult说明参考[SegmentationResult结构体介绍](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/api/vision_results/segmentation_result_CN.md) +> > * **result**: 分割结果,包括分割预测的标签以及标签对应的概率值, SegmentationResult结构体说明参考[SegmentationResult结构体介绍](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/api/vision_results/segmentation_result_CN.md) ### 类成员属性 #### 预处理参数 diff --git a/examples/vision/segmentation/paddleseg/cpu-gpu/python/README.md b/examples/vision/segmentation/paddleseg/cpu-gpu/python/README.md index add5b053d..d37d92c9e 100755 --- a/examples/vision/segmentation/paddleseg/cpu-gpu/python/README.md +++ b/examples/vision/segmentation/paddleseg/cpu-gpu/python/README.md @@ -40,7 +40,7 @@ The visualized result after running is as follows fd.vision.segmentation.PaddleSegModel(model_file, params_file, config_file, runtime_option=None, model_format=ModelFormat.PADDLE) ``` -PaddleSeg model loading and initialization, among which model_file, params_file, and config_file are the Paddle inference files exported from the training model. Refer to [Model Export](https://github.com/PaddlePaddle/PaddleSeg/blob/release/2.6/docs/model_export_cn.md) for more information +PaddleSeg model loading and initialization, among which model_file, params_file, and config_file are the Paddle inference files exported from the training model. Refer to [Model Export](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/docs/model_export_cn.md) for more information **Parameter** diff --git a/examples/vision/segmentation/paddleseg/cpu-gpu/python/README_CN.md b/examples/vision/segmentation/paddleseg/cpu-gpu/python/README_CN.md index 1e31bd014..da23623b2 100644 --- a/examples/vision/segmentation/paddleseg/cpu-gpu/python/README_CN.md +++ b/examples/vision/segmentation/paddleseg/cpu-gpu/python/README_CN.md @@ -39,7 +39,7 @@ python infer.py --model PP_LiteSeg_B_STDC2_cityscapes_without_argmax_infer --ima fd.vision.segmentation.PaddleSegModel(model_file, params_file, config_file, runtime_option=None, model_format=ModelFormat.PADDLE) ``` -PaddleSeg模型加载和初始化,其中model_file, params_file以及config_file为训练模型导出的Paddle inference文件,具体请参考其文档说明[模型导出](https://github.com/PaddlePaddle/PaddleSeg/blob/release/2.6/docs/model_export_cn.md) +PaddleSeg模型加载和初始化,其中model_file, params_file以及config_file为训练模型导出的Paddle inference文件,具体请参考其文档说明[模型导出](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/docs/model_export_cn.md) **参数** diff --git a/examples/vision/segmentation/paddleseg/kunlun/README_CN.md b/examples/vision/segmentation/paddleseg/kunlun/README_CN.md index a4ff4af5e..5fba79c12 100644 --- a/examples/vision/segmentation/paddleseg/kunlun/README_CN.md +++ b/examples/vision/segmentation/paddleseg/kunlun/README_CN.md @@ -13,7 +13,7 @@ - [DeepLabV3系列模型](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/configs/deeplabv3/README.md) - [SegFormer系列模型](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/configs/segformer/README.md) -【注意】如你部署的为**PP-Matting**、**PP-HumanMatting**以及**ModNet**请参考[Matting模型部署](../../matting/) +>>**注意** 若需要在华为昇腾上部署**PP-Matting**、**PP-HumanMatting**请从[Matting模型部署](../../matting/)下载对应模型,部署过程与此文档一致 ## 准备PaddleSeg部署模型 PaddleSeg模型导出,请参考其文档说明[模型导出](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/docs/model_export_cn.md) diff --git a/examples/vision/segmentation/paddleseg/kunlun/cpp/README_CN.md b/examples/vision/segmentation/paddleseg/kunlun/cpp/README_CN.md index df99e324e..55c6996fc 100644 --- a/examples/vision/segmentation/paddleseg/kunlun/cpp/README_CN.md +++ b/examples/vision/segmentation/paddleseg/kunlun/cpp/README_CN.md @@ -1,42 +1,30 @@ [English](README.md) | 简体中文 # PaddleSeg C++部署示例 -本目录下提供`infer.cc`快速完成Unet在CPU/GPU,以及GPU上通过TensorRT加速部署的示例。 +本目录下提供`infer.cc`快速完成PP-LiteSeg在华为昇腾上部署的示例。 -在部署前,需确认以下两个步骤 +在部署前,需自行编译基于昆仑芯XPU的预测库,参考文档[昆仑芯XPU部署环境编译安装](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/build_and_install/kunlunxin.md) -- 1. 软硬件环境满足要求,参考[FastDeploy环境要求](../../../../../docs/cn/build_and_install/download_prebuilt_libraries.md) -- 2. 根据开发环境,下载预编译部署库和samples代码,参考[FastDeploy预编译库](../../../../../docs/cn/build_and_install/download_prebuilt_libraries.md) - -【注意】如你部署的为**PP-Matting**、**PP-HumanMatting**以及**ModNet**请参考[Matting模型部署](../../../matting) - -以Linux上推理为例,在本目录执行如下命令即可完成编译测试,支持此模型需保证FastDeploy版本1.0.0以上(x.x.x>=1.0.0) +>>**注意** **PP-Matting**、**PP-HumanMatting**的模型,请从[Matting模型部署](../../../matting)下载 ```bash +#下载部署示例代码 +git clone https://github.com/PaddlePaddle/FastDeploy.git +cd FastDeploy/examples/vision/segmentation/paddleseg/ascend/cpp + mkdir build cd build -# 下载FastDeploy预编译库,用户可在上文提到的`FastDeploy预编译库`中自行选择合适的版本使用 -wget https://bj.bcebos.com/fastdeploy/release/cpp/fastdeploy-linux-x64-x.x.x.tgz -tar xvf fastdeploy-linux-x64-x.x.x.tgz -cmake .. -DFASTDEPLOY_INSTALL_DIR=${PWD}/fastdeploy-linux-x64-x.x.x +# 使用编译完成的FastDeploy库编译infer_demo +cmake .. -DFASTDEPLOY_INSTALL_DIR=${PWD}/fastdeploy-ascend make -j -# 下载Unet模型文件和测试图片 -wget https://bj.bcebos.com/paddlehub/fastdeploy/Unet_cityscapes_without_argmax_infer.tgz -tar -xvf Unet_cityscapes_without_argmax_infer.tgz +# 下载PP-LiteSeg模型文件和测试图片 +wget https://bj.bcebos.com/paddlehub/fastdeploy/PP_LiteSeg_B_STDC2_cityscapes_without_argmax_infer.tgz +tar -xvf PP_LiteSeg_B_STDC2_cityscapes_without_argmax_infer.tgz wget https://paddleseg.bj.bcebos.com/dygraph/demo/cityscapes_demo.png - -# CPU推理 -./infer_demo Unet_cityscapes_without_argmax_infer cityscapes_demo.png 0 -# GPU推理 -./infer_demo Unet_cityscapes_without_argmax_infer cityscapes_demo.png 1 -# GPU上TensorRT推理 -./infer_demo Unet_cityscapes_without_argmax_infer cityscapes_demo.png 2 -# 昆仑芯XPU推理 -./infer_demo Unet_cityscapes_without_argmax_infer cityscapes_demo.png 3 # 华为昇腾推理 -./infer_demo Unet_cityscapes_without_argmax_infer cityscapes_demo.png 4 +./infer_demo PP_LiteSeg_B_STDC2_cityscapes_without_argmax_infer cityscapes_demo.png ``` 运行完成可视化结果如下图所示 @@ -44,12 +32,6 @@ wget https://paddleseg.bj.bcebos.com/dygraph/demo/cityscapes_demo.png -以上命令只适用于Linux或MacOS, Windows下SDK的使用方式请参考: -- [如何在Windows中使用FastDeploy C++ SDK](../../../../../docs/cn/faq/use_sdk_on_windows.md) - -如果用户使用华为昇腾NPU部署, 请参考以下方式在部署前初始化部署环境: -- [如何使用华为昇腾NPU部署](../../../../../docs/cn/faq/use_sdk_on_ascend.md) - ## PaddleSeg C++接口 ### PaddleSeg类 @@ -84,7 +66,7 @@ PaddleSegModel模型加载和初始化,其中model_file为导出的Paddle模 > **参数** > > > * **im**: 输入图像,注意需为HWC,BGR格式 -> > * **result**: 分割结果,包括分割预测的标签以及标签对应的概率值, SegmentationResult说明参考[视觉模型预测结果](../../../../../docs/api/vision_results/) +> > * **result**: 分割结果,包括分割预测的标签以及标签对应的概率值, SegmentationResult结构体说明参考[SegmentationResult结构体介绍](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/api/vision_results/segmentation_result_CN.md) ### 类成员属性 #### 预处理参数 @@ -95,7 +77,12 @@ PaddleSegModel模型加载和初始化,其中model_file为导出的Paddle模 #### 后处理参数 > > * **apply_softmax**(bool): 当模型导出时,并未指定`apply_softmax`参数,可通过此设置此参数为`true`,将预测的输出分割标签(label_map)对应的概率结果(score_map)做softmax归一化处理 -- [模型介绍](../../) +## 快速链接 +- [PaddleSeg模型介绍](../../) - [Python部署](../python) -- [视觉模型预测结果](../../../../../docs/api/vision_results/) -- [如何切换模型推理后端引擎](../../../../../docs/cn/faq/how_to_change_backend.md) + +## 常见问题 +- [如何将模型预测结果SegmentationResult转为numpy格式](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/api/vision_results/segmentation_result_CN.md) +- [如何切换模型推理后端引擎](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/faq/how_to_change_backend.md) +- [PaddleSeg C++ API文档](https://www.paddlepaddle.org.cn/fastdeploy-api-doc/cpp/html/namespacefastdeploy_1_1vision_1_1segmentation.html) +) diff --git a/examples/vision/segmentation/paddleseg/kunlun/cpp/infer.cc b/examples/vision/segmentation/paddleseg/kunlun/cpp/infer.cc index e4d6e39d9..c695cd732 100644 --- a/examples/vision/segmentation/paddleseg/kunlun/cpp/infer.cc +++ b/examples/vision/segmentation/paddleseg/kunlun/cpp/infer.cc @@ -20,34 +20,6 @@ const char sep = '\\'; const char sep = '/'; #endif -void CpuInfer(const std::string& model_dir, const std::string& image_file) { - auto model_file = model_dir + sep + "model.pdmodel"; - auto params_file = model_dir + sep + "model.pdiparams"; - auto config_file = model_dir + sep + "deploy.yaml"; - auto option = fastdeploy::RuntimeOption(); - option.UseCpu(); - auto model = fastdeploy::vision::segmentation::PaddleSegModel( - model_file, params_file, config_file, option); - - if (!model.Initialized()) { - std::cerr << "Failed to initialize." << std::endl; - return; - } - - auto im = cv::imread(image_file); - - fastdeploy::vision::SegmentationResult res; - if (!model.Predict(im, &res)) { - std::cerr << "Failed to predict." << std::endl; - return; - } - - std::cout << res.Str() << std::endl; - auto vis_im = fastdeploy::vision::VisSegmentation(im, res, 0.5); - cv::imwrite("vis_result.jpg", vis_im); - std::cout << "Visualized result saved in ./vis_result.jpg" << std::endl; -} - void KunlunXinInfer(const std::string& model_dir, const std::string& image_file) { auto model_file = model_dir + sep + "model.pdmodel"; @@ -77,116 +49,14 @@ void KunlunXinInfer(const std::string& model_dir, std::cout << "Visualized result saved in ./vis_result.jpg" << std::endl; } -void GpuInfer(const std::string& model_dir, const std::string& image_file) { - auto model_file = model_dir + sep + "model.pdmodel"; - auto params_file = model_dir + sep + "model.pdiparams"; - auto config_file = model_dir + sep + "deploy.yaml"; - - auto option = fastdeploy::RuntimeOption(); - option.UseGpu(); - auto model = fastdeploy::vision::segmentation::PaddleSegModel( - model_file, params_file, config_file, option); - - if (!model.Initialized()) { - std::cerr << "Failed to initialize." << std::endl; - return; - } - - auto im = cv::imread(image_file); - - fastdeploy::vision::SegmentationResult res; - if (!model.Predict(im, &res)) { - std::cerr << "Failed to predict." << std::endl; - return; - } - - std::cout << res.Str() << std::endl; - auto vis_im = fastdeploy::vision::VisSegmentation(im, res, 0.5); - cv::imwrite("vis_result.jpg", vis_im); - std::cout << "Visualized result saved in ./vis_result.jpg" << std::endl; -} - -void TrtInfer(const std::string& model_dir, const std::string& image_file) { - auto model_file = model_dir + sep + "model.pdmodel"; - auto params_file = model_dir + sep + "model.pdiparams"; - auto config_file = model_dir + sep + "deploy.yaml"; - - auto option = fastdeploy::RuntimeOption(); - option.UseGpu(); - option.UseTrtBackend(); - auto model = fastdeploy::vision::segmentation::PaddleSegModel( - model_file, params_file, config_file, option); - - if (!model.Initialized()) { - std::cerr << "Failed to initialize." << std::endl; - return; - } - - auto im = cv::imread(image_file); - - fastdeploy::vision::SegmentationResult res; - if (!model.Predict(im, &res)) { - std::cerr << "Failed to predict." << std::endl; - return; - } - - std::cout << res.Str() << std::endl; - auto vis_im = fastdeploy::vision::VisSegmentation(im, res, 0.5); - cv::imwrite("vis_result.jpg", vis_im); - std::cout << "Visualized result saved in ./vis_result.jpg" << std::endl; -} - -void AscendInfer(const std::string& model_dir, const std::string& image_file) { - auto model_file = model_dir + sep + "model.pdmodel"; - auto params_file = model_dir + sep + "model.pdiparams"; - auto config_file = model_dir + sep + "deploy.yaml"; - auto option = fastdeploy::RuntimeOption(); - option.UseAscend(); - auto model = fastdeploy::vision::segmentation::PaddleSegModel( - model_file, params_file, config_file, option); - - if (!model.Initialized()) { - std::cerr << "Failed to initialize." << std::endl; - return; - } - - auto im = cv::imread(image_file); - - fastdeploy::vision::SegmentationResult res; - if (!model.Predict(im, &res)) { - std::cerr << "Failed to predict." << std::endl; - return; - } - - std::cout << res.Str() << std::endl; - auto vis_im = fastdeploy::vision::VisSegmentation(im, res, 0.5); - cv::imwrite("vis_result.jpg", vis_im); - std::cout << "Visualized result saved in ./vis_result.jpg" << std::endl; -} - int main(int argc, char* argv[]) { - if (argc < 4) { + if (argc < 3) { std::cout << "Usage: infer_demo path/to/model_dir path/to/image run_option, " - "e.g ./infer_model ./ppseg_model_dir ./test.jpeg 0" + "e.g ./infer_model ./ppseg_model_dir ./test.jpeg" << std::endl; - std::cout << "The data type of run_option is int, 0: run with cpu; 1: run " - "with gpu; 2: run with gpu and use tensorrt backend; 3: run " - "with kunlunxin." - << std::endl; return -1; } - - if (std::atoi(argv[3]) == 0) { - CpuInfer(argv[1], argv[2]); - } else if (std::atoi(argv[3]) == 1) { - GpuInfer(argv[1], argv[2]); - } else if (std::atoi(argv[3]) == 2) { - TrtInfer(argv[1], argv[2]); - } else if (std::atoi(argv[3]) == 3) { - KunlunXinInfer(argv[1], argv[2]); - } else if (std::atoi(argv[3]) == 4) { - AscendInfer(argv[1], argv[2]); - } + KunlunXinInfer(argv[1], argv[2]); return 0; } diff --git a/examples/vision/segmentation/paddleseg/kunlun/python/README.md b/examples/vision/segmentation/paddleseg/kunlun/python/README.md index add5b053d..d37d92c9e 100755 --- a/examples/vision/segmentation/paddleseg/kunlun/python/README.md +++ b/examples/vision/segmentation/paddleseg/kunlun/python/README.md @@ -40,7 +40,7 @@ The visualized result after running is as follows fd.vision.segmentation.PaddleSegModel(model_file, params_file, config_file, runtime_option=None, model_format=ModelFormat.PADDLE) ``` -PaddleSeg model loading and initialization, among which model_file, params_file, and config_file are the Paddle inference files exported from the training model. Refer to [Model Export](https://github.com/PaddlePaddle/PaddleSeg/blob/release/2.6/docs/model_export_cn.md) for more information +PaddleSeg model loading and initialization, among which model_file, params_file, and config_file are the Paddle inference files exported from the training model. Refer to [Model Export](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/docs/model_export_cn.md) for more information **Parameter** diff --git a/examples/vision/segmentation/paddleseg/kunlun/python/README_CN.md b/examples/vision/segmentation/paddleseg/kunlun/python/README_CN.md index 61edc5b2b..7ce98b44e 100644 --- a/examples/vision/segmentation/paddleseg/kunlun/python/README_CN.md +++ b/examples/vision/segmentation/paddleseg/kunlun/python/README_CN.md @@ -1,35 +1,25 @@ [English](README.md) | 简体中文 # PaddleSeg Python部署示例 -在部署前,需确认以下两个步骤 +本目录下提供`infer.py`快速完成PP-LiteSeg在华为昇腾上部署的示例。 -- 1. 软硬件环境满足要求,参考[FastDeploy环境要求](../../../../../docs/cn/build_and_install/download_prebuilt_libraries.md) -- 2. FastDeploy Python whl包安装,参考[FastDeploy Python安装](../../../../../docs/cn/build_and_install/download_prebuilt_libraries.md) +在部署前,需自行编译基于昆仑芯XPU的FastDeploy wheel 包,参考文档[昆仑芯XPU部署环境编译安装](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/build_and_install/kunlunxin.md),编译python wheel包并安装 -【注意】如你部署的为**PP-Matting**、**PP-HumanMatting**以及**ModNet**请参考[Matting模型部署](../../../matting) +>>**注意** **PP-Matting**、**PP-HumanMatting**的模型,请从[Matting模型部署](../../../matting)下载 -本目录下提供`infer.py`快速完成Unet在CPU/GPU,以及GPU上通过TensorRT加速部署的示例。执行如下脚本即可完成 ```bash #下载部署示例代码 git clone https://github.com/PaddlePaddle/FastDeploy.git -cd FastDeploy/examples/vision/segmentation/paddleseg/python +cd FastDeploy/examples/vision/segmentation/paddleseg/ascend/cpp -# 下载Unet模型文件和测试图片 -wget https://bj.bcebos.com/paddlehub/fastdeploy/Unet_cityscapes_without_argmax_infer.tgz -tar -xvf Unet_cityscapes_without_argmax_infer.tgz +# 下载PP-LiteSeg模型文件和测试图片 +wget https://bj.bcebos.com/paddlehub/fastdeploy/PP_LiteSeg_B_STDC2_cityscapes_without_argmax_infer.tgz +tar -xvf PP_LiteSeg_B_STDC2_cityscapes_without_argmax_infer.tgz wget https://paddleseg.bj.bcebos.com/dygraph/demo/cityscapes_demo.png -# CPU推理 -python infer.py --model Unet_cityscapes_without_argmax_infer --image cityscapes_demo.png --device cpu -# GPU推理 -python infer.py --model Unet_cityscapes_without_argmax_infer --image cityscapes_demo.png --device gpu -# GPU上使用TensorRT推理 (注意:TensorRT推理第一次运行,有序列化模型的操作,有一定耗时,需要耐心等待) -python infer.py --model Unet_cityscapes_without_argmax_infer --image cityscapes_demo.png --device gpu --use_trt True -# 昆仑芯XPU推理 -python infer.py --model Unet_cityscapes_without_argmax_infer --image cityscapes_demo.png --device kunlunxin # 华为昇腾推理 -python infer.py --model Unet_cityscapes_without_argmax_infer --image cityscapes_demo.png --device ascend +python infer.py --model PP_LiteSeg_B_STDC2_cityscapes_without_argmax_infer --image cityscapes_demo.png ``` 运行完成可视化结果如下图所示 @@ -43,7 +33,7 @@ python infer.py --model Unet_cityscapes_without_argmax_infer --image cityscapes_ fd.vision.segmentation.PaddleSegModel(model_file, params_file, config_file, runtime_option=None, model_format=ModelFormat.PADDLE) ``` -PaddleSeg模型加载和初始化,其中model_file, params_file以及config_file为训练模型导出的Paddle inference文件,具体请参考其文档说明[模型导出](https://github.com/PaddlePaddle/PaddleSeg/blob/release/2.6/docs/model_export_cn.md) +PaddleSeg模型加载和初始化,其中model_file, params_file以及config_file为训练模型导出的Paddle inference文件,具体请参考其文档说明[模型导出](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/docs/model_export_cn.md) **参数** @@ -67,7 +57,7 @@ PaddleSeg模型加载和初始化,其中model_file, params_file以及config_fi > **返回** > -> > 返回`fastdeploy.vision.SegmentationResult`结构体,结构体说明参考文档[视觉模型预测结果](../../../../../docs/api/vision_results/) +> > 返回`fastdeploy.vision.SegmentationResult`结构体,SegmentationResult结构体说明参考[SegmentationResult结构体介绍](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/api/vision_results/segmentation_result_CN.md) ### 类成员属性 #### 预处理参数 @@ -78,9 +68,12 @@ PaddleSeg模型加载和初始化,其中model_file, params_file以及config_fi #### 后处理参数 > > * **apply_softmax**(bool): 当模型导出时,并未指定`apply_softmax`参数,可通过此设置此参数为`true`,将预测的输出分割标签(label_map)对应的概率结果(score_map)做softmax归一化处理 -## 其它文档 +## 快速链接 - [PaddleSeg 模型介绍](..) - [PaddleSeg C++部署](../cpp) -- [模型预测结果说明](../../../../../docs/api/vision_results/) -- [如何切换模型推理后端引擎](../../../../../docs/cn/faq/how_to_change_backend.md) + +## 常见问题 +- [如何将模型预测结果SegmentationResult转为numpy格式](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/api/vision_results/segmentation_result_CN.md) +- [如何切换模型推理后端引擎](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/faq/how_to_change_backend.md) +- [PaddleSeg python API文档](https://www.paddlepaddle.org.cn/fastdeploy-api-doc/python/html/semantic_segmentation.html) diff --git a/examples/vision/segmentation/paddleseg/kunlun/python/infer.py b/examples/vision/segmentation/paddleseg/kunlun/python/infer.py index 6862330ed..bfbde415f 100755 --- a/examples/vision/segmentation/paddleseg/kunlun/python/infer.py +++ b/examples/vision/segmentation/paddleseg/kunlun/python/infer.py @@ -11,42 +11,13 @@ def parse_arguments(): "--model", required=True, help="Path of PaddleSeg model.") parser.add_argument( "--image", type=str, required=True, help="Path of test image file.") - parser.add_argument( - "--device", - type=str, - default='cpu', - help="Type of inference device, support 'kunlunxin', 'cpu' or 'gpu'.") - parser.add_argument( - "--use_trt", - type=ast.literal_eval, - default=False, - help="Wether to use tensorrt.") return parser.parse_args() -def build_option(args): - option = fd.RuntimeOption() - - if args.device.lower() == "gpu": - option.use_gpu() - - if args.device.lower() == "kunlunxin": - option.use_kunlunxin() - - if args.device.lower() == "ascend": - option.use_ascend() - - if args.use_trt: - option.use_trt_backend() - option.set_trt_input_shape("x", [1, 3, 256, 256], [1, 3, 1024, 1024], - [1, 3, 2048, 2048]) - return option - - -args = parse_arguments() +runtime_option = fd.RuntimeOption() +runtime_option.use_kunlunxin() # 配置runtime,加载模型 -runtime_option = build_option(args) model_file = os.path.join(args.model, "model.pdmodel") params_file = os.path.join(args.model, "model.pdiparams") config_file = os.path.join(args.model, "deploy.yaml") diff --git a/examples/vision/segmentation/paddleseg/kunlun/python/serving/README.md b/examples/vision/segmentation/paddleseg/kunlun/python/serving/README.md deleted file mode 100644 index da41a3a00..000000000 --- a/examples/vision/segmentation/paddleseg/kunlun/python/serving/README.md +++ /dev/null @@ -1,36 +0,0 @@ -English | [简体中文](README_CN.md) - -# PaddleSegmentation Python Simple Serving Demo - - -## Environment - -- 1. Prepare environment and install FastDeploy Python whl, refer to [download_prebuilt_libraries](../../../../../../docs/en/build_and_install/download_prebuilt_libraries.md) - -Server: -```bash -# Download demo code -git clone https://github.com/PaddlePaddle/FastDeploy.git -cd FastDeploy/examples/vision/segmentation/paddleseg/python/serving - -# Download PP_LiteSeg model -wget https://bj.bcebos.com/paddlehub/fastdeploy/PP_LiteSeg_B_STDC2_cityscapes_with_argmax_infer.tgz -tar -xvf PP_LiteSeg_B_STDC2_cityscapes_with_argmax_infer.tgz - -# Launch server, change the configurations in server.py to select hardware, backend, etc. -# and use --host, --port to specify IP and port -fastdeploy simple_serving --app server:app -``` - -Client: -```bash -# Download demo code -git clone https://github.com/PaddlePaddle/FastDeploy.git -cd FastDeploy/examples/vision/segmentation/paddleseg/python/serving - -# Download test image -wget https://paddleseg.bj.bcebos.com/dygraph/demo/cityscapes_demo.png - -# Send request and get inference result (Please adapt the IP and port if necessary) -python client.py -``` diff --git a/examples/vision/segmentation/paddleseg/kunlun/python/serving/README_CN.md b/examples/vision/segmentation/paddleseg/kunlun/python/serving/README_CN.md deleted file mode 100644 index 3f382c904..000000000 --- a/examples/vision/segmentation/paddleseg/kunlun/python/serving/README_CN.md +++ /dev/null @@ -1,36 +0,0 @@ -简体中文 | [English](README.md) - -# PaddleSegmentation Python轻量服务化部署示例 - -在部署前,需确认以下两个步骤 - -- 1. 软硬件环境满足要求,参考[FastDeploy环境要求](../../../../../../docs/cn/build_and_install/download_prebuilt_libraries.md) -- 2. FastDeploy Python whl包安装,参考[FastDeploy Python安装](../../../../../../docs/cn/build_and_install/download_prebuilt_libraries.md) - -服务端: -```bash -# 下载部署示例代码 -git clone https://github.com/PaddlePaddle/FastDeploy.git -cd FastDeploy/examples/vision/segmentation/paddleseg/python/serving - -# 下载PP_LiteSeg模型文件 -wget https://bj.bcebos.com/paddlehub/fastdeploy/PP_LiteSeg_B_STDC2_cityscapes_with_argmax_infer.tgz -tar -xvf PP_LiteSeg_B_STDC2_cityscapes_with_argmax_infer.tgz - -# 启动服务,可修改server.py中的配置项来指定硬件、后端等 -# 可通过--host、--port指定IP和端口号 -fastdeploy simple_serving --app server:app -``` - -客户端: -```bash -# 下载部署示例代码 -git clone https://github.com/PaddlePaddle/FastDeploy.git -cd FastDeploy/examples/vision/detection/paddledetection/python/serving - -# 下载测试图片 -wget https://gitee.com/paddlepaddle/PaddleDetection/raw/release/2.4/demo/000000014439.jpg - -# 请求服务,获取推理结果(如有必要,请修改脚本中的IP和端口号) -python client.py -``` diff --git a/examples/vision/segmentation/paddleseg/kunlun/python/serving/client.py b/examples/vision/segmentation/paddleseg/kunlun/python/serving/client.py deleted file mode 100644 index e652c4462..000000000 --- a/examples/vision/segmentation/paddleseg/kunlun/python/serving/client.py +++ /dev/null @@ -1,23 +0,0 @@ -import requests -import json -import cv2 -import fastdeploy as fd -from fastdeploy.serving.utils import cv2_to_base64 - -if __name__ == '__main__': - url = "http://127.0.0.1:8000/fd/ppliteseg" - headers = {"Content-Type": "application/json"} - - im = cv2.imread("cityscapes_demo.png") - data = {"data": {"image": cv2_to_base64(im)}, "parameters": {}} - - resp = requests.post(url=url, headers=headers, data=json.dumps(data)) - if resp.status_code == 200: - r_json = json.loads(resp.json()["result"]) - result = fd.vision.utils.json_to_segmentation(r_json) - vis_im = fd.vision.vis_segmentation(im, result, weight=0.5) - cv2.imwrite("visualized_result.jpg", vis_im) - print("Visualized result save in ./visualized_result.jpg") - else: - print("Error code:", resp.status_code) - print(resp.text) diff --git a/examples/vision/segmentation/paddleseg/kunlun/python/serving/server.py b/examples/vision/segmentation/paddleseg/kunlun/python/serving/server.py deleted file mode 100644 index 2ae2df09c..000000000 --- a/examples/vision/segmentation/paddleseg/kunlun/python/serving/server.py +++ /dev/null @@ -1,38 +0,0 @@ -import fastdeploy as fd -from fastdeploy.serving.server import SimpleServer -import os -import logging - -logging.getLogger().setLevel(logging.INFO) - -# Configurations -model_dir = 'PP_LiteSeg_B_STDC2_cityscapes_with_argmax_infer' -device = 'cpu' -use_trt = False - -# Prepare model -model_file = os.path.join(model_dir, "model.pdmodel") -params_file = os.path.join(model_dir, "model.pdiparams") -config_file = os.path.join(model_dir, "deploy.yaml") - -# Setup runtime option to select hardware, backend, etc. -option = fd.RuntimeOption() -if device.lower() == 'gpu': - option.use_gpu() -if use_trt: - option.use_trt_backend() - option.set_trt_cache_file('pp_lite_seg.trt') - -# Create model instance -model_instance = fd.vision.segmentation.PaddleSegModel( - model_file=model_file, - params_file=params_file, - config_file=config_file, - runtime_option=option) - -# Create server, setup REST API -app = SimpleServer() -app.register( - task_name="fd/ppliteseg", - model_handler=fd.serving.handler.VisionModelHandler, - predictor=model_instance) diff --git a/examples/vision/segmentation/paddleseg/quantize/cpp/README.md b/examples/vision/segmentation/paddleseg/quantize/cpp/README.md deleted file mode 100755 index 9eb7c9146..000000000 --- a/examples/vision/segmentation/paddleseg/quantize/cpp/README.md +++ /dev/null @@ -1,32 +0,0 @@ -English | [简体中文](README_CN.md) -# PaddleSeg Quantitative Model C++ Deployment Example - `infer.cc` in this directory can help you quickly complete the inference acceleration of PaddleSeg quantization model deployment on CPU. - -## Deployment Preparations -### FastDeploy Environment Preparations -- 1. For the software and hardware requirements, please refer to [FastDeploy Environment Requirements](../../../../../../docs/en/build_and_install/download_prebuilt_libraries.md). -- 2. For the installation of FastDeploy Python whl package, please refer to [FastDeploy Python Installation](../../../../../../docs/en/build_and_install/download_prebuilt_libraries.md). - -### Quantized Model Preparations -- 1. You can directly use the quantized model provided by FastDeploy for deployment. -- 2. You can use [one-click automatical compression tool](../../../../../../tools/common_tools/auto_compression/) provided by FastDeploy to quantize model by yourself, and use the generated quantized model for deployment.(Note: The quantized classification model still needs the deploy.yaml file in the FP32 model folder. Self-quantized model folder does not contain this yaml file, you can copy it from the FP32 model folder to the quantized model folder.) - -## Take the Quantized PP_LiteSeg_T_STDC1_cityscapes Model as an example for Deployment -Run the following commands in this directory to compile and deploy the quantized model. FastDeploy version 0.7.0 or higher is required (x.x.x>=0.7.0). -```bash -mkdir build -cd build -# Download pre-compiled FastDeploy libraries. You can choose the appropriate version from `pre-compiled FastDeploy libraries` mentioned above. -wget https://bj.bcebos.com/fastdeploy/release/cpp/fastdeploy-linux-x64-x.x.x.tgz -tar xvf fastdeploy-linux-x64-x.x.x.tgz -cmake .. -DFASTDEPLOY_INSTALL_DIR=${PWD}/fastdeploy-linux-x64-x.x.x -make -j - -# Download the PP_LiteSeg_T_STDC1_cityscapes quantized model and test images provided by FastDeloy. -wget https://bj.bcebos.com/paddlehub/fastdeploy/PP_LiteSeg_T_STDC1_cityscapes_without_argmax_infer_PTQ.tar -tar -xvf PP_LiteSeg_T_STDC1_cityscapes_without_argmax_infer_PTQ.tar -wget https://paddleseg.bj.bcebos.com/dygraph/demo/cityscapes_demo.png - -# Use Paddle-Inference inference quantization model on CPU. -./infer_demo PP_LiteSeg_T_STDC1_cityscapes_without_argmax_infer_PTQ cityscapes_demo.png 1 -``` diff --git a/examples/vision/segmentation/paddleseg/quantize/cpp/README_CN.md b/examples/vision/segmentation/paddleseg/quantize/cpp/README_CN.md deleted file mode 100644 index c4cde0b1f..000000000 --- a/examples/vision/segmentation/paddleseg/quantize/cpp/README_CN.md +++ /dev/null @@ -1,32 +0,0 @@ -[English](README.md) | 简体中文 -# PaddleSeg 量化模型 C++部署示例 -本目录下提供的`infer.cc`,可以帮助用户快速完成PaddleSeg量化模型在CPU上的部署推理加速. - -## 部署准备 -### FastDeploy环境准备 -- 1. 软硬件环境满足要求,参考[FastDeploy环境要求](../../../../../../docs/cn/build_and_install/download_prebuilt_libraries.md) -- 2. FastDeploy Python whl包安装,参考[FastDeploy Python安装](../../../../../../docs/cn/build_and_install/download_prebuilt_libraries.md) - -### 量化模型准备 -- 1. 用户可以直接使用由FastDeploy提供的量化模型进行部署. -- 2. 用户可以使用FastDeploy提供的[一键模型自动化压缩工具](../../../../../../tools/common_tools/auto_compression/),自行进行模型量化, 并使用产出的量化模型进行部署.(注意: 推理量化后的分类模型仍然需要FP32模型文件夹下的deploy.yaml文件, 自行量化的模型文件夹内不包含此yaml文件, 用户从FP32模型文件夹下复制此yaml文件到量化后的模型文件夹内即可.) - -## 以量化后的PP_LiteSeg_T_STDC1_cityscapes模型为例, 进行部署 -在本目录执行如下命令即可完成编译,以及量化模型部署.支持此模型需保证FastDeploy版本0.7.0以上(x.x.x>=0.7.0) -```bash -mkdir build -cd build -# 下载FastDeploy预编译库,用户可在上文提到的`FastDeploy预编译库`中自行选择合适的版本使用 -wget https://bj.bcebos.com/fastdeploy/release/cpp/fastdeploy-linux-x64-x.x.x.tgz -tar xvf fastdeploy-linux-x64-x.x.x.tgz -cmake .. -DFASTDEPLOY_INSTALL_DIR=${PWD}/fastdeploy-linux-x64-x.x.x -make -j - -# 下载FastDeloy提供的PP_LiteSeg_T_STDC1_cityscapes量化模型文件和测试图片 -wget https://bj.bcebos.com/paddlehub/fastdeploy/PP_LiteSeg_T_STDC1_cityscapes_without_argmax_infer_PTQ.tar -tar -xvf PP_LiteSeg_T_STDC1_cityscapes_without_argmax_infer_PTQ.tar -wget https://paddleseg.bj.bcebos.com/dygraph/demo/cityscapes_demo.png - -# 在CPU上使用Paddle-Inference推理量化模型 -./infer_demo PP_LiteSeg_T_STDC1_cityscapes_without_argmax_infer_PTQ cityscapes_demo.png 1 -``` diff --git a/examples/vision/segmentation/paddleseg/quantize/python/README.md b/examples/vision/segmentation/paddleseg/quantize/python/README.md deleted file mode 100755 index 5607e1a80..000000000 --- a/examples/vision/segmentation/paddleseg/quantize/python/README.md +++ /dev/null @@ -1,29 +0,0 @@ -English | [简体中文](README_CN.md) -# PaddleSeg Quantitative Model Python Deployment Example - `infer.py` in this directory can help you quickly complete the inference acceleration of PaddleSeg quantization model deployment on CPU/GPU. - -## Deployment Preparations -### FastDeploy Environment Preparations -- 1. For the software and hardware requirements, please refer to [FastDeploy Environment Requirements](../../../../../../docs/en/build_and_install/download_prebuilt_libraries.md) -- 2. For the installation of FastDeploy Python whl package, please refer to [FastDeploy Python Installation](../../../../../../docs/en/build_and_install/download_prebuilt_libraries.md) - -### Quantized Model Preparations -- 1. You can directly use the quantized model provided by FastDeploy for deployment. -- 2. You can use [one-click automatical compression tool](../../../../../../tools/common_tools/auto_compression/) provided by FastDeploy to quantize model by yourself, and use the generated quantized model for deployment.(Note: The quantized classification model still needs the deploy.yaml file in the FP32 model folder. Self-quantized model folder does not contain this yaml file, you can copy it from the FP32 model folder to the quantized model folder.) - - -## Take the Quantized PP_LiteSeg_T_STDC1_cityscapes Model as an example for Deployment -```bash -# Download sample deployment code. -git clone https://github.com/PaddlePaddle/FastDeploy.git -cd examples/vision/segmentation/paddleseg/quantize/python - -# Download the PP_LiteSeg_T_STDC1_cityscapes quantized model and test images provided by FastDeloy. -wget https://bj.bcebos.com/paddlehub/fastdeploy/PP_LiteSeg_T_STDC1_cityscapes_without_argmax_infer_PTQ.tar -tar -xvf PP_LiteSeg_T_STDC1_cityscapes_without_argmax_infer_PTQ.tar -wget https://paddleseg.bj.bcebos.com/dygraph/demo/cityscapes_demo.png - -# Use Paddle-Inference inference quantization model on CPU. -python infer.py --model PP_LiteSeg_T_STDC1_cityscapes_without_argmax_infer_QAT --image cityscapes_demo.png --device cpu --backend paddle - -``` diff --git a/examples/vision/segmentation/paddleseg/quantize/python/README_CN.md b/examples/vision/segmentation/paddleseg/quantize/python/README_CN.md deleted file mode 100644 index 1975a84fe..000000000 --- a/examples/vision/segmentation/paddleseg/quantize/python/README_CN.md +++ /dev/null @@ -1,29 +0,0 @@ -[English](README.md) | 简体中文 -# PaddleSeg 量化模型 Python部署示例 -本目录下提供的`infer.py`,可以帮助用户快速完成PaddleSeg量化模型在CPU/GPU上的部署推理加速. - -## 部署准备 -### FastDeploy环境准备 -- 1. 软硬件环境满足要求,参考[FastDeploy环境要求](../../../../../../docs/cn/build_and_install/download_prebuilt_libraries.md) -- 2. FastDeploy Python whl包安装,参考[FastDeploy Python安装](../../../../../../docs/cn/build_and_install/download_prebuilt_libraries.md) - -### 量化模型准备 -- 1. 用户可以直接使用由FastDeploy提供的量化模型进行部署. -- 2. 用户可以使用FastDeploy提供的[一键模型自动化压缩工具](../../../../../../tools/common_tools/auto_compression/),自行进行模型量化, 并使用产出的量化模型进行部署.(注意: 推理量化后的分类模型仍然需要FP32模型文件夹下的deploy.yaml文件, 自行量化的模型文件夹内不包含此yaml文件, 用户从FP32模型文件夹下复制此yaml文件到量化后的模型文件夹内即可.) - - -## 以量化后的PP_LiteSeg_T_STDC1_cityscapes模型为例, 进行部署 -```bash -# 下载部署示例代码 -git clone https://github.com/PaddlePaddle/FastDeploy.git -cd examples/vision/segmentation/paddleseg/quantize/python - -# 下载FastDeloy提供的PP_LiteSeg_T_STDC1_cityscapes量化模型文件和测试图片 -wget https://bj.bcebos.com/paddlehub/fastdeploy/PP_LiteSeg_T_STDC1_cityscapes_without_argmax_infer_PTQ.tar -tar -xvf PP_LiteSeg_T_STDC1_cityscapes_without_argmax_infer_PTQ.tar -wget https://paddleseg.bj.bcebos.com/dygraph/demo/cityscapes_demo.png - -# 在CPU上使用Paddle-Inference推理量化模型 -python infer.py --model PP_LiteSeg_T_STDC1_cityscapes_without_argmax_infer_QAT --image cityscapes_demo.png --device cpu --backend paddle - -``` diff --git a/examples/vision/segmentation/paddleseg/quantize/python/infer.py b/examples/vision/segmentation/paddleseg/quantize/python/infer.py deleted file mode 100644 index 85a875c1e..000000000 --- a/examples/vision/segmentation/paddleseg/quantize/python/infer.py +++ /dev/null @@ -1,76 +0,0 @@ -import fastdeploy as fd -import cv2 -import os - - -def parse_arguments(): - import argparse - import ast - parser = argparse.ArgumentParser() - parser.add_argument( - "--model", required=True, help="Path of PaddleSeg model.") - parser.add_argument( - "--image", required=True, help="Path of test image file.") - parser.add_argument( - "--device", - type=str, - default='cpu', - help="Type of inference device, support 'cpu' or 'gpu'.") - parser.add_argument( - "--backend", - type=str, - default="default", - help="Type of inference backend, support ort/trt/paddle/openvino, default 'openvino' for cpu, 'tensorrt' for gpu" - ) - parser.add_argument( - "--device_id", - type=int, - default=0, - help="Define which GPU card used to run model.") - parser.add_argument( - "--cpu_thread_num", - type=int, - default=9, - help="Number of threads while inference on CPU.") - return parser.parse_args() - - -def build_option(args): - option = fd.RuntimeOption() - if args.device.lower() == "gpu": - option.use_gpu(0) - - option.set_cpu_thread_num(args.cpu_thread_num) - - if args.backend.lower() == "trt": - assert args.device.lower( - ) == "gpu", "TensorRT backend require inferences on device GPU." - option.use_trt_backend() - option.set_trt_cache_file(os.path.join(args.model, "model.trt")) - option.set_trt_input_shape("x", [1, 3, 256, 256], [1, 3, 1024, 1024], - [1, 3, 2048, 2048]) - elif args.backend.lower() == "ort": - option.use_ort_backend() - elif args.backend.lower() == "paddle": - option.use_paddle_infer_backend() - elif args.backend.lower() == "openvino": - assert args.device.lower( - ) == "cpu", "OpenVINO backend require inference on device CPU." - option.use_openvino_backend() - return option - - -args = parse_arguments() - -# 配置runtime,加载模型 -runtime_option = build_option(args) -model_file = os.path.join(args.model, "model.pdmodel") -params_file = os.path.join(args.model, "model.pdiparams") -config_file = os.path.join(args.model, "deploy.yaml") -model = fd.vision.segmentation.PaddleSegModel( - model_file, params_file, config_file, runtime_option=runtime_option) - -# 预测图片检测结果 -im = cv2.imread(args.image) -result = model.predict(im) -print(result) diff --git a/examples/vision/segmentation/paddleseg/rockchip/rknpu2/README_CN.md b/examples/vision/segmentation/paddleseg/rockchip/rknpu2/README_CN.md index 7d10f82f2..b7a1be32a 100644 --- a/examples/vision/segmentation/paddleseg/rockchip/rknpu2/README_CN.md +++ b/examples/vision/segmentation/paddleseg/rockchip/rknpu2/README_CN.md @@ -6,9 +6,28 @@ - [PaddleSeg develop](https://github.com/PaddlePaddle/PaddleSeg/tree/develop) 目前FastDeploy使用RKNPU2推理PPSeg支持如下模型的部署: +- [U-Net系列模型](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/configs/unet/README.md) +- [PP-LiteSeg系列模型](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/configs/pp_liteseg/README.md) +- [PP-HumanSeg系列模型](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/contrib/PP-HumanSeg/README.md) +- [FCN系列模型](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/configs/fcn/README.md) +- [DeepLabV3系列模型](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/configs/deeplabv3/README.md) -| 模型 | 参数文件大小 | 输入Shape | mIoU | mIoU (flip) | mIoU (ms+flip) | -|:---------------------------------------------------------------------------------------------------------------------------------------------|:-------|:---------|:-------|:------------|:---------------| +## 准备PaddleSeg部署模型 +PaddleSeg模型导出,请参考其文档说明[模型导出](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/docs/model_export_cn.md) + +**注意** +- PaddleSeg导出的模型包含`model.pdmodel`、`model.pdiparams`和`deploy.yaml`三个文件,FastDeploy会从yaml文件中获取模型在推理时需要的预处理信息 + +## 下载预训练模型 + +为了方便开发者的测试,下面提供了PaddleSeg导出的部分模型 +- without-argmax导出方式为:**不指定**`--input_shape`,**指定**`--output_op none` +- with-argmax导出方式为:**不指定**`--input_shape`,**指定**`--output_op argmax` + +开发者可直接下载使用。 + +| 模型 | 参数文件大小 | 输入Shape | mIoU | mIoU (flip) | mIoU (ms+flip) | +|:----------------|:-------|:---------|:-------|:------------|:---------------| | [Unet-cityscapes](https://bj.bcebos.com/paddlehub/fastdeploy/Unet_cityscapes_without_argmax_infer.tgz) | 52MB | 1024x512 | 65.00% | 66.02% | 66.89% | | [PP-LiteSeg-T(STDC1)-cityscapes](https://bj.bcebos.com/paddlehub/fastdeploy/PP_LiteSeg_T_STDC1_cityscapes_without_argmax_infer.tgz) | 31MB | 1024x512 | 77.04% | 77.73% | 77.46% | | [PP-HumanSegV1-Lite(通用人像分割模型)](https://bj.bcebos.com/paddlehub/fastdeploy/PP_HumanSegV1_Lite_infer.tgz) | 543KB | 192x192 | 86.2% | - | - | @@ -21,14 +40,16 @@ ## 准备PaddleSeg部署模型以及转换模型 RKNPU部署模型前需要将Paddle模型转换成RKNN模型,具体步骤如下: -* Paddle动态图模型转换为ONNX模型,请参考[PaddleSeg模型导出说明](https://github.com/PaddlePaddle/PaddleSeg/tree/release/2.6/contrib/PP-HumanSeg) -* ONNX模型转换RKNN模型的过程,请参考[转换文档](../../../../../docs/cn/faq/rknpu2/export.md)进行转换。 +* PaddleSeg训练模型导出为推理模型,请参考[PaddleSeg模型导出说明](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/docs/model_export_cn.md),也可以使用上表中的FastDeploy的预导出模型 +* Paddle模型转换为ONNX模型,请参考[Paddle2ONNX](https://github.com/PaddlePaddle/Paddle2ONNX) +* ONNX模型转换RKNN模型的过程,请参考[转换文档](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/faq/rknpu2/export.md)进行转换。 +上述步骤可以可参考以下具体示例 ## 模型转换example * [PPHumanSeg](./pp_humanseg.md) ## 详细部署文档 -- [RKNN总体部署教程](../../../../../docs/cn/faq/rknpu2/rknpu2.md) +- [RKNN总体部署教程](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/faq/rknpu2/rknpu2.md) - [C++部署](cpp) - [Python部署](python) diff --git a/examples/vision/segmentation/paddleseg/rockchip/rknpu2/cpp/README_CN.md b/examples/vision/segmentation/paddleseg/rockchip/rknpu2/cpp/README_CN.md index 309d5f26c..45bb923a0 100644 --- a/examples/vision/segmentation/paddleseg/rockchip/rknpu2/cpp/README_CN.md +++ b/examples/vision/segmentation/paddleseg/rockchip/rknpu2/cpp/README_CN.md @@ -8,7 +8,7 @@ 1. 软硬件环境满足要求 2. 根据开发环境,下载预编译部署库或者从头编译FastDeploy仓库 -以上步骤请参考[RK2代NPU部署库编译](../../../../../../docs/cn/build_and_install/rknpu2.md)实现 +以上步骤请参考[RK2代NPU部署库编译](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/faq/rknpu2/rknpu2.md)实现 ## 生成基本目录文件 @@ -37,7 +37,7 @@ mkdir thirdpartys ### 编译并拷贝SDK到thirdpartys文件夹 -请参考[RK2代NPU部署库编译](../../../../../../docs/cn/build_and_install/rknpu2.md)仓库编译SDK,编译完成后,将在build目录下生成fastdeploy-0.0.3目录,请移动它至thirdpartys目录下. +请参考[RK2代NPU部署库编译](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/faq/rknpu2/rknpu2.md)仓库编译SDK,编译完成后,将在build目录下生成fastdeploy-x-x-x目录,请移动它至thirdpartys目录下. ### 拷贝模型文件,以及配置文件至model文件夹 在Paddle动态图模型 -> Paddle静态图模型 -> ONNX模型的过程中,将生成ONNX文件以及对应的yaml配置文件,请将配置文件存放到model文件夹内。 diff --git a/examples/vision/segmentation/paddleseg/rockchip/rknpu2/pp_humanseg.md b/examples/vision/segmentation/paddleseg/rockchip/rknpu2/pp_humanseg.md index e0f458eb0..e212d4e2d 100644 --- a/examples/vision/segmentation/paddleseg/rockchip/rknpu2/pp_humanseg.md +++ b/examples/vision/segmentation/paddleseg/rockchip/rknpu2/pp_humanseg.md @@ -2,7 +2,7 @@ # PPHumanSeg模型部署 ## 转换模型 -下面以Portait-PP-HumanSegV2_Lite(肖像分割模型)为例子,教大家如何转换PPSeg模型到RKNN模型。 +下面以Portait-PP-HumanSegV2_Lite(肖像分割模型)为例子,教大家如何转换PaddleSeg模型到RKNN模型。 ```bash # 下载Paddle2ONNX仓库 diff --git a/examples/vision/segmentation/paddleseg/rockchip/rknpu2/python/README_CN.md b/examples/vision/segmentation/paddleseg/rockchip/rknpu2/python/README_CN.md index b897dc369..0bf8b9396 100644 --- a/examples/vision/segmentation/paddleseg/rockchip/rknpu2/python/README_CN.md +++ b/examples/vision/segmentation/paddleseg/rockchip/rknpu2/python/README_CN.md @@ -3,9 +3,9 @@ 在部署前,需确认以下步骤 -- 1. 软硬件环境满足要求,参考[FastDeploy环境要求](../../../../../../docs/cn/build_and_install/rknpu2.md) +- 1. 软硬件环境满足要求,参考[FastDeploy环境要求](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/faq/rknpu2/rknpu2.md) -【注意】如你部署的为**PP-Matting**、**PP-HumanMatting**以及**ModNet**请参考[Matting模型部署](../../../../matting/) +【注意】如你部署的为**PP-Matting**、**PP-HumanMatting**以及**ModNet**请参考[Matting模型部署](../../../../../matting/) 本目录下提供`infer.py`快速完成PPHumanseg在RKNPU上部署的示例。执行如下脚本即可完成 @@ -32,5 +32,5 @@ RKNPU上对模型的输入要求是使用NHWC格式,且图片归一化操作 - [PaddleSeg 模型介绍](..) - [PaddleSeg C++部署](../cpp) -- [模型预测结果说明](../../../../../../docs/api/vision_results/) -- [转换PPSeg RKNN模型文档](../README.md) +- [模型预测结果说明](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/api/vision_results/segmentation_result_CN.md) +- [转换PaddleSeg模型至RKNN模型文档](../README.md) diff --git a/examples/vision/segmentation/paddleseg/rockchip/rv1126/README_CN.md b/examples/vision/segmentation/paddleseg/rockchip/rv1126/README_CN.md index ce4cbb816..2b51362b8 100644 --- a/examples/vision/segmentation/paddleseg/rockchip/rv1126/README_CN.md +++ b/examples/vision/segmentation/paddleseg/rockchip/rv1126/README_CN.md @@ -1,12 +1,20 @@ [English](README.md) | 简体中文 -# PP-LiteSeg 量化模型在 RV1126 上的部署 -目前 FastDeploy 已经支持基于 Paddle Lite 部署 PP-LiteSeg 量化模型到 RV1126 上。 +# 在瑞芯微 RV1126 上使用 FastDeploy 部署 PaddleSeg 模型 +瑞芯微 RV1126 是一款编解码芯片,专门面相人工智能的机器视觉领域。目前,FastDeploy 支持在 RV1126 上基于 Paddle-Lite 部署 PaddleSeg 相关模型 -模型的量化和量化模型的下载请参考:[模型量化](../quantize/README.md) +## 瑞芯微 RV1126 支持的PaddleSeg模型 +由于瑞芯微 RV1126 的 NPU 仅支持 INT8 量化模型的部署,因此所支持的量化模型如下: +- [PP-LiteSeg 系列模型](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/configs/pp_liteseg/README.md) +为了方便开发者的测试,下面提供了 PaddleSeg 导出的部分模型,开发者可直接下载使用。 + +| 模型 | 参数文件大小 |输入Shape | mIoU | mIoU (flip) | mIoU (ms+flip) | +|:---------------------------------------------------------------- |:----- |:----- | :----- | :----- | :----- | +| [PP-LiteSeg-T(STDC1)-cityscapes-without-argmax](https://bj.bcebos.com/fastdeploy/models/rk1/ppliteseg.tar.gz)| 31MB | 1024x512 | 77.04% | 77.73% | 77.46% | +>> **注意**: FastDeploy 模型量化的方法及一键自动化压缩工具可以参考[模型量化](../../../quantize/README.md) ## 详细部署文档 -在 RV1126 上只支持 C++ 的部署。 +目前,瑞芯微 RV1126 上只支持C++的部署。 - [C++部署](cpp) diff --git a/examples/vision/segmentation/paddleseg/rockchip/rv1126/cpp/README_CN.md b/examples/vision/segmentation/paddleseg/rockchip/rv1126/cpp/README_CN.md index 15c1f273e..afd185ca0 100644 --- a/examples/vision/segmentation/paddleseg/rockchip/rv1126/cpp/README_CN.md +++ b/examples/vision/segmentation/paddleseg/rockchip/rv1126/cpp/README_CN.md @@ -5,22 +5,22 @@ ## 部署准备 ### FastDeploy 交叉编译环境准备 -1. 软硬件环境满足要求,以及交叉编译环境的准备,请参考:[FastDeploy 交叉编译环境准备](../../../../../../docs/cn/build_and_install/rv1126.md#交叉编译环境搭建) +1. 软硬件环境满足要求,以及交叉编译环境的准备,请参考:[FastDeploy 交叉编译环境准备](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/build_and_install/rv1126.md#交叉编译环境搭建) ### 模型准备 1. 用户可以直接使用由 FastDeploy 提供的量化模型进行部署。 2. 用户可以使用 FastDeploy 提供的一键模型自动化压缩工具,自行进行模型量化, 并使用产出的量化模型进行部署.(注意: 推理量化后的分类模型仍然需要FP32模型文件夹下的 deploy.yaml 文件, 自行量化的模型文件夹内不包含此 yaml 文件, 用户从FP32模型文件夹下复制此yaml文件到量化后的模型文件夹内即可.) -3. 模型需要异构计算,异构计算文件可以参考:[异构计算](./../../../../../../docs/cn/faq/heterogeneous_computing_on_timvx_npu.md),由于 FastDeploy 已经提供了模型,可以先测试我们提供的异构文件,验证精度是否符合要求。 +3. 模型需要异构计算,异构计算文件可以参考:[异构计算](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/faq/heterogeneous_computing_on_timvx_npu.md),由于 FastDeploy 已经提供了模型,可以先测试我们提供的异构文件,验证精度是否符合要求。 更多量化相关相关信息可查阅[模型量化](../../quantize/README.md) ## 在 RV1126 上部署量化后的 PP-LiteSeg 分割模型 请按照以下步骤完成在 RV1126 上部署 PP-LiteSeg 量化模型: -1. 交叉编译编译 FastDeploy 库,具体请参考:[交叉编译 FastDeploy](../../../../../../docs/cn/build_and_install/rv1126.md#基于-paddlelite-的-fastdeploy-交叉编译库编译) +1. 交叉编译编译 FastDeploy 库,具体请参考:[交叉编译 FastDeploy](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/build_and_install/a311d.md#基于-paddle-lite-的-fastdeploy-交叉编译库编译) 2. 将编译后的库拷贝到当前目录,可使用如下命令: ```bash -cp -r FastDeploy/build/fastdeploy-timvx/ FastDeploy/examples/vision/segmentation/paddleseg/rv1126/cpp +cp -r FastDeploy/build/fastdeploy-timvx/ FastDeploy/examples/vision/segmentation/paddleseg/rockchip/rv1126/cpp ``` 3. 在当前路径下载部署所需的模型和示例图片: @@ -45,7 +45,7 @@ make install 5. 基于 adb 工具部署 PP-LiteSeg 分割模型到 Rockchip RV1126,可使用如下命令: ```bash # 进入 install 目录 -cd FastDeploy/examples/vision/segmentation/paddleseg/rv1126/cpp/build/install/ +cd FastDeploy/examples/vision/segmentation/paddleseg/rockchip/rv1126/cpp/build/install/ # 如下命令表示:bash run_with_adb.sh 需要运行的demo 模型路径 图片路径 设备的DEVICE_ID bash run_with_adb.sh infer_demo ppliteseg cityscapes_demo.png $DEVICE_ID ``` @@ -54,4 +54,4 @@ bash run_with_adb.sh infer_demo ppliteseg cityscapes_demo.png $DEVICE_ID -需要特别注意的是,在 RV1126 上部署的模型需要是量化后的模型,模型的量化请参考:[模型量化](../../../../../../docs/cn/quantize.md) +需要特别注意的是,在 RV1126 上部署的模型需要是量化后的模型,模型的量化请参考:[模型量化](../../../quantize/README.md) diff --git a/examples/vision/segmentation/paddleseg/sophgo/README_CN.md b/examples/vision/segmentation/paddleseg/sophgo/README_CN.md index 566691889..563507c25 100644 --- a/examples/vision/segmentation/paddleseg/sophgo/README_CN.md +++ b/examples/vision/segmentation/paddleseg/sophgo/README_CN.md @@ -3,7 +3,15 @@ ## 支持模型列表 -- PP-LiteSeg部署模型实现来自[PaddleSeg PP-LiteSeg系列模型](https://github.com/PaddlePaddle/PaddleSeg/blob/release/2.6/configs/pp_liteseg/README.md) +- [PP-LiteSeg系列模型](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/configs/pp_liteseg/README.md) + +为了方便开发者的测试,下面提供了PaddleSeg导出的部分推理模型,开发者可直接下载使用。 + +PaddleSeg模型导出,请参考其文档说明[模型导出](https://github.com/PaddlePaddle/PaddleSeg/blob/develop/docs/model_export_cn.md) + +| 模型 | 参数文件大小 |输入Shape | mIoU | mIoU (flip) | mIoU (ms+flip) | +|:---------------------------------------------------------------- |:----- |:----- | :----- | :----- | :----- | +| [PP-LiteSeg-T(STDC1)-cityscapes-without-argmax](https://bj.bcebos.com/fastdeploy/models/rk1/ppliteseg.tar.gz)| 31MB | 1024x512 | 77.04% | 77.73% | 77.46% | ## 准备PP-LiteSeg部署模型以及转换模型 @@ -93,5 +101,6 @@ model_deploy.py \ ``` 最终获得可以在BM1684x上能够运行的bmodel模型pp_liteseg_1684x_f32.bmodel。如果需要进一步对模型进行加速,可以将ONNX模型转换为INT8 bmodel,具体步骤参见[TPU-MLIR文档](https://github.com/sophgo/tpu-mlir/blob/master/README.md)。 -## 其他链接 +## 快速链接 - [Cpp部署](./cpp) +- [Python部署](./python) diff --git a/examples/vision/segmentation/paddleseg/sophgo/cpp/README_CN.md b/examples/vision/segmentation/paddleseg/sophgo/cpp/README_CN.md index 6360a2907..fbb274b15 100644 --- a/examples/vision/segmentation/paddleseg/sophgo/cpp/README_CN.md +++ b/examples/vision/segmentation/paddleseg/sophgo/cpp/README_CN.md @@ -8,7 +8,7 @@ 1. 软硬件环境满足要求 2. 根据开发环境,从头编译FastDeploy仓库 -以上步骤请参考[SOPHGO部署库编译](../../../../../../docs/cn/build_and_install/sophgo.md)实现 +以上步骤请参考[SOPHGO部署库编译](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/build_and_install/sophgo.md)实现 ## 生成基本目录文件 @@ -26,7 +26,7 @@ ### 编译并拷贝SDK到thirdpartys文件夹 -请参考[SOPHGO部署库编译](../../../../../../docs/cn/build_and_install/sophgo.md)仓库编译SDK,编译完成后,将在build目录下生成fastdeploy-0.0.3目录. +请参考[SOPHGO部署库编译](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/build_and_install/sophgo.md)仓库编译SDK,编译完成后,将在build目录下生成fastdeploy-0.0.3目录. ### 拷贝模型文件,以及配置文件至model文件夹 将Paddle模型转换为SOPHGO bmodel模型,转换步骤参考[文档](../README.md) diff --git a/examples/vision/segmentation/paddleseg/sophgo/python/README_CN.md b/examples/vision/segmentation/paddleseg/sophgo/python/README_CN.md index 9cafb1dc9..a6eb37f8f 100644 --- a/examples/vision/segmentation/paddleseg/sophgo/python/README_CN.md +++ b/examples/vision/segmentation/paddleseg/sophgo/python/README_CN.md @@ -3,7 +3,7 @@ 在部署前,需确认以下步骤 -- 1. 软硬件环境满足要求,参考[FastDeploy环境要求](../../../../../../docs/cn/build_and_install/sophgo.md) +- 1. 软硬件环境满足要求,参考[FastDeploy环境要求](https://github.com/PaddlePaddle/FastDeploy/blob/develop/docs/cn/build_and_install/sophgo.md) 本目录下提供`infer.py`快速完成 pp_liteseg 在SOPHGO TPU上部署的示例。执行如下脚本即可完成 diff --git a/examples/vision/segmentation/paddleseg/web/README_CN.md b/examples/vision/segmentation/paddleseg/web/README_CN.md index 81664eee3..2847da0be 100644 --- a/examples/vision/segmentation/paddleseg/web/README_CN.md +++ b/examples/vision/segmentation/paddleseg/web/README_CN.md @@ -8,7 +8,7 @@ ## 前端部署PP-Humanseg v1模型 -PP-Humanseg v1模型web demo部署及使用参考[文档](../../../../application/js/web_demo/README.md) +PP-Humanseg v1模型web demo部署及使用参考[文档](https://github.com/PaddlePaddle/FastDeploy/blob/develop/examples/application/js/README_CN.md) ## PP-Humanseg v1 js接口