소스 검색

optimize lite android docs

Channingss 5 년 전
부모
커밋
93e43080cf
1개의 변경된 파일35개의 추가작업 그리고 20개의 파일을 삭제
  1. 35 20
      docs/deploy/paddlelite/android.md

+ 35 - 20
docs/deploy/paddlelite/android.md

@@ -5,21 +5,22 @@ PaddleX的安卓端部署由PaddleLite实现,部署的流程如下,首先将
 > PaddleX --> Inference Model --> PaddleLite Opt --> PaddleLite Inference
 
 文章简介:
-- step1: 介绍如何将PaddleX导出为inference model
-- step2: 使用PaddleLite的OPT模块对模型进行优化
-- step3: 介绍了基于MobileNetv2的安卓demo,以及PaddleX Android SDK
+- 1.介绍如何将PaddleX导出为inference model
+- 2.使用PaddleLite的OPT模块对模型进行优化
+- 3.介绍基于PaddleX Android SDK的安卓demo,以及如何快速部署训练好的模型
+- 4.介绍PaddleX Android SDK和二次开发
 
-## step 1. 将PaddleX模型导出为inference模型
+## 1. 将PaddleX模型导出为inference模型
 
 参考[导出inference模型](../export_model.html)将模型导出为inference格式模型。
 **注意:由于PaddleX代码的持续更新,版本低于1.0.0的模型暂时无法直接用于预测部署,参考[模型版本升级](../upgrade_version.md)对模型版本进行升级。**
 
-## step 2. 将inference模型优化为PaddleLite模型
+## 2. 将inference模型优化为PaddleLite模型
 
 目前提供了两种方法将Paddle模型优化为PaddleLite模型:
 
 - 1.python脚本优化模型,简单上手,目前支持最新的PaddleLite 2.6.1版本
-- 2.bin文件优化模型(linux),支持develop版本(Commit Id:11cbd50e),适用于部署`DeepLab模型`的用户。
+- 2.bin文件优化模型(linux),支持develop版本(Commit Id:11cbd50e),适用于部署`DeepLab模型`和`Unet模型`的用户。
 
 ### 2.1 使用python脚本优化模型
 
@@ -45,9 +46,19 @@ python /PaddleX/deploy/lite/export_lite.py --model_dir /path/to/inference_model
       --optimize_out_type=naive_buffer \
       --optimize_out=model_output_name
 ```
+
+|  参数   | 说明  |
+|  ----  | ----  |
+| --model_file  | 导出inference模型中包含的网络结构文件:`__model__`所在的路径|
+| --param_file  | 导出inference模型中包含的参数文件:`__params__`所在的路径|
+| --valid_targets  |指定模型可执行的backend,这里请指定为`arm`|
+| --optimize_out_type | 输出模型类型,目前支持两种类型:protobuf和naive_buffer,其中naive_buffer是一种更轻量级的序列化/反序列化,这里请指定为`naive_buffer`|
+
 详细的使用方法和参数含义请参考: [使用opt转化模型](https://paddle-lite.readthedocs.io/zh/latest/user_guides/opt/opt_bin.html)
 
-## step 3. 移动端(Android)预测
+## 3. 移动端(Android)Demo
+
+PaddleX提供了一个基于Mobilenetv2模型和PaddleX Android SDK的安卓demo,可供用户体验,该demo位于`/PaddleX/deploy/lite/android/demo`,可直接导入Android Studio后运行,并支持用户替换其他PaddleX导出的检测或分割模型进行预测。
 
 ### 3.1 要求
 
@@ -56,21 +67,25 @@ python /PaddleX/deploy/lite/export_lite.py --model_dir /path/to/inference_model
 
 ### 3.2 分类Demo
 
-#### 3.2.1 导入工程
+#### 3.2.1 导入工程并运行
 
 - 打开Android Studio,在"Welcome to Android Studio"窗口点击"Open an existing Android Studio project",在弹出的路径选择窗口中进入`/PaddleX/deploy/lite/android/demo`目录,然后点击右下角的"Open"按钮,导入工程;
 - 通过USB连接Android手机或开发板;
 - 载入工程后,点击菜单栏的Run->Run 'App'按钮,在弹出的"Select Deployment Target"窗口选择已经连接的Android设备,然后点击"OK"按钮;
+- 运行成功后,Android设备将加载一个名为PaddleX Demo的App,默认会加载一个测试图片,同时还支持拍照和从图库选择照片进行预测;
+
+**注意**:在工程构建的过程中会远程下载Mobilenetv2模型、yml配置文件、测试的图片,以及PaddleX Android SDK。
 
-#### 3.2.2 自定义模型
+### 3.3 部署自定义模型
 
-首先根据step1~step2描述,准备好Lite模型(.nb文件)和yml配置文件(注意:导出Lite模型时需指定--place=arm),然后在Android Studio的project视图中:
+该demo还支持用户自定义模型来进行预测,可帮助用户快速验证自己训练好的模型,首先我们已经根据step1~step2描述,准备好Lite模型(.nb文件)和yml配置文件(注意:导出Lite模型时需指定--place=arm),然后在Android Studio的project视图中:
 
-- 将paddlex.nb文件拷贝到`/src/main/assets/model/`目录下。
-- 将model.yml文件拷贝到`/src/main/assets/config/`目录下。
-- 根据需要,修改文件`/src/main/res/values/strings.xml`中的`MODEL_PATH_DEFAULT`和`YAML_PATH_DEFAULT`指定的路径。
+- 将.nb文件拷贝到`/src/main/assets/model/`目录下, 根据.nb文件的名字,修改文件`/src/main/res/values/strings.xml`中的`MODEL_PATH_DEFAULT`;
+- 将.yml文件拷贝到`/src/main/assets/config/`目录下,根据.yml文件的名字,修改文件`/src/main/res/values/strings.xml`中的`YAML_PATH_DEFAULT`;
+- 可根据需要替换测试图片,将图片拷贝到`/src/main/assets/images/`目录下,根据图片文件的名字,修改文件`/src/main/res/values/strings.xml`中的`IMAGE_PATH_DEFAULT`;
+- 点击菜单栏的Run->Run 'App'按钮,在弹出的"Select Deployment Target"窗口选择已经连接的Android设备,然后点击"OK"按钮;
 
-### 3.3 PaddleX Android SDK介绍
+## 4. PaddleX Android SDK和二次开发
 
 PaddleX Android SDK是PaddleX基于Paddle-Lite开发的安卓端AI推理工具,以PaddleX导出的Yaml配置文件为接口,针对不同的模型实现图片的预处理,后处理,并进行可视化,开发者可集成到业务中。
 该SDK自底向上主要包括:Paddle-Lite推理引擎层,Paddle-Lite接口层以及PaddleX业务层。
@@ -81,7 +96,7 @@ PaddleX Android SDK是PaddleX基于Paddle-Lite开发的安卓端AI推理工具
 
 ![架构](../images/paddlex_android_sdk_framework.jpg)
 
-#### 3.3.1 SDK安装
+### 4.1 SDK安装
 
 首先下载并解压[PaddleX Android SDK](https://bj.bcebos.com/paddlex/deploy/lite/paddlex_lite_11cbd50e.tar.gz),得到paddlex.aar文件,将拷贝到android工程目录app/libs/下面,然后为app的build.gradle添加依赖:
 
@@ -92,7 +107,7 @@ dependencies {
 
 ```
 
-#### 3.3.2 SDK使用用例
+### 4.2 SDK使用用例
 ```
 import com.baidu.paddlex.Predictor;
 import com.baidu.paddlex.config.ConfigParser;
@@ -132,7 +147,7 @@ if (configParser.getModelType().equalsIgnoreCase("segmenter")) {
     ClsResult clsResult = predictor.getClsResult();
 }
 ```
-#### 3.3.3 Result成员变量
+### 4.3 Result成员变量
 
 **注意**:Result所有的成员变量以java bean的方式获取。
 
@@ -179,12 +194,12 @@ com.baidu.paddlex.postprocess.SegResult
 com.baidu.paddlex.postprocess.SegResult.Mask
 ```
 ##### Fields
-> * **scoreData** (float[]): 模型预测在各个类别的置信度,长度为numClass$\times\$H$\times\$W
+> * **scoreData** (float[]): 模型预测在各个类别的置信度,长度为: 1 * numClass *  H * W
 > * **scoreShape** (long[4]): scoreData的shape信息,[1,numClass,H,W]
-> * **labelData** (long[]): 模型预测置信度最高的label,长度为`H$\times\$W$\times\$1
+> * **labelData** (long[]): 模型预测置信度最高的label,长度为: 1 * H * W * 1
 > * **labelShape** (long[4]): labelData的shape信息,[1,H,W,1]
 
-#### 3.3.4 SDK二次开发
+### 4.4 SDK二次开发
 
 - 打开Android Studio新建项目(或加载已有项目)。点击菜单File->New->Import Module,导入工程`/PaddleX/deploy/lite/android/sdk`, Project视图会新增名为sdk的module
 - 在app的build.grade里面添加依赖: