Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleX
提交
93e43080
P
PaddleX
项目概览
PaddlePaddle
/
PaddleX
通知
138
Star
4
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
43
列表
看板
标记
里程碑
合并请求
5
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleX
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
43
Issue
43
列表
看板
标记
里程碑
合并请求
5
合并请求
5
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
93e43080
编写于
7月 13, 2020
作者:
C
Channingss
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
optimize lite android docs
上级
6d6a0df1
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
35 addition
and
20 deletion
+35
-20
docs/deploy/paddlelite/android.md
docs/deploy/paddlelite/android.md
+35
-20
未找到文件。
docs/deploy/paddlelite/android.md
浏览文件 @
93e43080
...
...
@@ -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里面添加依赖:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录