From fc60a3f813e5625e5272ac04f848b55e72966d39 Mon Sep 17 00:00:00 2001 From: silingtong123 <35439432+silingtong123@users.noreply.github.com> Date: Tue, 19 May 2020 16:49:05 +0800 Subject: [PATCH] test=develop, test=document_fix, add the document of python demo (#3659) * test=develop, test=document_fix, the document of python demo * test=develop, test=document_fix, the document of python compiled Co-authored-by: huzhiqiang <912790387@qq.com> --- docs/demo_guides/python_demo.md | 99 ++++++++++++++++++++++++++++++ docs/demo_guides/x86.md | 12 +++- docs/index.rst | 1 + docs/user_guides/source_compile.md | 5 +- 4 files changed, 114 insertions(+), 3 deletions(-) create mode 100644 docs/demo_guides/python_demo.md diff --git a/docs/demo_guides/python_demo.md b/docs/demo_guides/python_demo.md new file mode 100644 index 0000000000..36ff11751d --- /dev/null +++ b/docs/demo_guides/python_demo.md @@ -0,0 +1,99 @@ +# Python Demo + +## 1. 下载最新版本python预测库 + +```shell +python -m pip install paddlelite +``` + +## 2. 转化模型 + +PaddlePaddle的原生模型需要经过[opt]()工具转化为Paddle-Lite可以支持的naive_buffer格式。 + +以`mobilenet_v1`模型为例: + +(1)下载[mobilenet_v1模型](http://paddle-inference-dist.bj.bcebos.com/mobilenet_v1.tar.gz)后解压: + +```shell +wget http://paddle-inference-dist.bj.bcebos.com/mobilenet_v1.tar.gz +tar zxf mobilenet_v1.tar.gz +``` + +(2)使用opt工具: + + 从磁盘加载模型时,根据模型和参数文件存储方式不同,加载模型和参数的路径有两种形式。 + +- Linux环境 + - 非combined形式:模型文件夹model_dir下存在一个模型文件和多个参数文件时,传入模型文件夹路径,模型文件名默认为__model__。 + + ```shell + paddle_lite_opt --model_dir=./mobilenet_v1 --valid_targets=mobilenet_v1_opt --valid_targets=x86 + ``` + - combined形式:模型文件夹model_dir下只有一个模型文件__model__和一个参数文件__params__时,传入模型文件和参数文件路径 + + ```shell + paddle_lite_opt --model_file=./mobilenet_v1/__model__ --param_file=./mobilenet_v1/__params__ --valid_targets=mobilenet_v1_opt --valid_targets=x86 + ``` + +- windows环境 + +windows 暂不支持命令行方式直接运行模型转换器,需要编写python脚本 + +```python +import paddlelite.lite as lite + +a=lite.Opt() +# 非combined形式 +a.set_model_dir("D:\\YOU_MODEL_PATH\\mobilenet_v1") + +# conmbined形式 +# a.set_model_file("D:\\YOU_MODEL_PATH\\mobilenet_v1\\__model__") +# a.set_param_file("D:\\YOU_MODEL_PATH\\mobilenet_v1\\__params__") + +a.set_optimize_out("mobilenet_v1_opt") +a.set_valid_places("x86") + +a.run() +``` +## 3. 编写预测程序 + +准备好预测库和模型,我们便可以编写程序来执行预测。我们提供涵盖图像分类、目标检测等多种应用场景的C++示例demo可供参考,创建文件mobilenetV1_light_api.py, +python demo 完整代码位于 [demo/python](https://github.com/PaddlePaddle/Paddle-Lite/blob/develop/lite/demo/python/mobilenetv1_light_api.py) 。 + +(1) 设置config信息 +```python +from paddlelite.lite import * + +config = MobileConfig() +config.set_model_dir(/YOU_MODEL_PATH/mobilenet_v1_opt.nb) +``` + +(2) 创建predictor + +```python +predictor = create_paddle_predictor(config) +``` + +(3) 设置输入数据 +```python +input_tensor = predictor.get_input(0) +input_tensor.resize([1, 3, 224, 224]) +input_tensor.set_float_data([1.] * 3 * 224 * 224) +``` + +(4) 执行预测 +```python +predictor.run() +``` + +(5) 得到输出数据 +```python +output_tensor = predictor.get_output(0) +print(output_tensor.shape()) +print(output_tensor.float_data()[:10]) +``` + +## 4. 运行文件 +```shell +python mobilenetV1_light_api.py +``` diff --git a/docs/demo_guides/x86.md b/docs/demo_guides/x86.md index d8b63fbf3e..414aaeebe5 100644 --- a/docs/demo_guides/x86.md +++ b/docs/demo_guides/x86.md @@ -18,10 +18,11 @@ git checkout release/v2.6.0 ```bash cd Paddle-Lite -./lite/tools/build.sh x86 +./lite/tools/build.sh --build_python=ON x86 # 其他可选择编译选项 # --with_log=OFF 关闭LOG信息输出 +# --build_python=OFF 编译python预测库 ``` ### 编译结果说明 @@ -51,8 +52,17 @@ x86编译结果位于 `build.lite.x86/inference_lite_lib` - `mobilenetv1_full` :使用full_api 执行mobilenet_v1预测的C++ demo - `mobilenetv1_light` :使用light_api 执行mobilenet_v1预测的C++ demo +5、 `demo/python`文件夹:x86预测库的Python 示例demo +- `mobilenetv1_full_api.py` :使用full_api 执行mobilenet_v1预测的Python demo +- `mobilenetv1_light_api.py` :使用light_api 执行mobilenet_v1预测的Python demo + +6、 `python`文件夹:包含python的库文件和对应的.whl包 + +- `install`文件夹:编译成功的.whl包位于`install/dist/*.whl` +- `lib`文件夹:.whl包依赖的库文件 +**(若不需要编译python预测库,则将编译命令替换为`./lite/tools/build.sh x86`)** ### x86预测API使用示例 diff --git a/docs/index.rst b/docs/index.rst index 120af007df..37a5b7e265 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -47,6 +47,7 @@ Welcome to Paddle-Lite's documentation! demo_guides/cpp_demo demo_guides/java_demo + demo_guides/python_demo demo_guides/android_app_demo demo_guides/ios_app_demo demo_guides/x86 diff --git a/docs/user_guides/source_compile.md b/docs/user_guides/source_compile.md index 00c7329d84..87639a99a8 100644 --- a/docs/user_guides/source_compile.md +++ b/docs/user_guides/source_compile.md @@ -10,11 +10,12 @@ PaddleLite 提供了移动端的一键源码编译脚本 `lite/tools/build.sh` ## 一、环境准备 -目前支持三种编译的环境: +目前支持四种编译的环境: 1. Docker 容器环境, 2. Linux(推荐 Ubuntu 16.04)环境, -3. Mac OS 环境。 +3. Mac OS 环境, +4. [Windows 环境](../demo_guides/x86.html#windows) ### 1、 Docker开发环境 -- GitLab