未验证 提交 fc60a3f8 编写于 作者: S silingtong123 提交者: GitHub

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: Nhuzhiqiang <912790387@qq.com>
上级 6b8bf873
# 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
```
...@@ -18,10 +18,11 @@ git checkout release/v2.6.0 ...@@ -18,10 +18,11 @@ git checkout release/v2.6.0
```bash ```bash
cd Paddle-Lite cd Paddle-Lite
./lite/tools/build.sh x86 ./lite/tools/build.sh --build_python=ON x86
# 其他可选择编译选项 # 其他可选择编译选项
# --with_log=OFF 关闭LOG信息输出 # --with_log=OFF 关闭LOG信息输出
# --build_python=OFF 编译python预测库
``` ```
### 编译结果说明 ### 编译结果说明
...@@ -51,8 +52,17 @@ x86编译结果位于 `build.lite.x86/inference_lite_lib` ...@@ -51,8 +52,17 @@ x86编译结果位于 `build.lite.x86/inference_lite_lib`
- `mobilenetv1_full` :使用full_api 执行mobilenet_v1预测的C++ demo - `mobilenetv1_full` :使用full_api 执行mobilenet_v1预测的C++ demo
- `mobilenetv1_light` :使用light_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使用示例 ### x86预测API使用示例
......
...@@ -47,6 +47,7 @@ Welcome to Paddle-Lite's documentation! ...@@ -47,6 +47,7 @@ Welcome to Paddle-Lite's documentation!
demo_guides/cpp_demo demo_guides/cpp_demo
demo_guides/java_demo demo_guides/java_demo
demo_guides/python_demo
demo_guides/android_app_demo demo_guides/android_app_demo
demo_guides/ios_app_demo demo_guides/ios_app_demo
demo_guides/x86 demo_guides/x86
......
...@@ -10,11 +10,12 @@ PaddleLite 提供了移动端的一键源码编译脚本 `lite/tools/build.sh` ...@@ -10,11 +10,12 @@ PaddleLite 提供了移动端的一键源码编译脚本 `lite/tools/build.sh`
## 一、环境准备 ## 一、环境准备
目前支持种编译的环境: 目前支持种编译的环境:
1. Docker 容器环境, 1. Docker 容器环境,
2. Linux(推荐 Ubuntu 16.04)环境, 2. Linux(推荐 Ubuntu 16.04)环境,
3. Mac OS 环境。 3. Mac OS 环境,
4. [Windows 环境](../demo_guides/x86.html#windows)
### 1、 Docker开发环境 ### 1、 Docker开发环境
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册