3535| humanseg_mobile_quant | 1.6M | 24.93ms |
3636
3737执行以下脚本下载全部的预训练模型:
38+
39+ * 下载PaddleX源码:
40+
41+ ``` bash
42+ git clone https://github.com/PaddlePaddle/PaddleX
43+ ```
44+
45+ * 下载预训练模型的代码位于` PaddleX/examples/human_segmentation ` ,进入该目录:
46+
47+ ``` bash
48+ cd PaddleX/examples/human_segmentation
49+ ```
50+
51+ * 执行下载
52+
3853``` bash
3954python pretrain_weights/download_pretrain_weights.py
4055```
@@ -43,6 +58,8 @@ python pretrain_weights/download_pretrain_weights.py
4358
4459[ supervise.ly] ( https://supervise.ly/ ) 发布了人像分割数据集** Supervisely Persons** , 本案例从中随机抽取一小部分数据并转化成PaddleX可直接加载的数据格式,运行以下代码可下载该数据、以及手机前置摄像头拍摄的人像测试视频` video_test.mp4 ` .
4560
61+ * 下载测试数据的代码位于` PaddleX/xamples/human_segmentation ` ,进入该目录并执行下载:
62+
4663``` bash
4764python data/download_data.py
4865```
@@ -57,9 +74,21 @@ python data/download_data.py
5774
5875安装的相关问题参考[ PaddleX安装] ( ../../docs/install.md )
5976
77+ * 下载PaddleX源码:
78+
79+ ``` bash
80+ git clone https://github.com/PaddlePaddle/PaddleX
81+ ```
82+
83+ * 视频流人像分割和背景替换的执行文件均位于` PaddleX/examples/human_segmentation ` ,进入该目录:
84+
85+ ``` bash
86+ cd PaddleX/examples/human_segmentation
87+ ```
88+
6089### 光流跟踪辅助的视频流人像分割
6190
62- 本案例将DIS(Dense Inverse Search-basedmethod)光流跟踪算法的预测结果与PaddleX的分割结果进行融合,以此改善视频流人像分割的效果。运行以下代码进行体验:
91+ 本案例将DIS(Dense Inverse Search-basedmethod)光流跟踪算法的预测结果与PaddleX的分割结果进行融合,以此改善视频流人像分割的效果。运行以下代码进行体验,以下代码位于 ` PaddleX/xamples/human_segmentation ` :
6392
6493* 通过电脑摄像头进行实时分割处理
6594
@@ -78,7 +107,7 @@ python video_infer.py --model_dir pretrain_weights/humanseg_mobile_inference --v
78107
79108### 人像背景替换
80109
81- 本案例还实现了人像背景替换功能,根据所选背景对人像的背景画面进行替换,背景可以是一张图片,也可以是一段视频。
110+ 本案例还实现了人像背景替换功能,根据所选背景对人像的背景画面进行替换,背景可以是一张图片,也可以是一段视频。人像背景替换的代码位于 ` PaddleX/xamples/human_segmentation ` ,进入该目录并执行:
82111
83112* 通过电脑摄像头进行实时背景替换处理, 通过'--background_video_path'传入背景视频
84113``` bash
@@ -115,6 +144,18 @@ python bg_replace.py --model_dir pretrain_weights/humanseg_mobile_inference --im
115144
116145安装的相关问题参考[ PaddleX安装] ( ../../docs/install.md )
117146
147+ * 下载PaddleX源码:
148+
149+ ``` bash
150+ git clone https://github.com/PaddlePaddle/PaddleX
151+ ```
152+
153+ * 人像分割训练、评估、预测、模型导出、离线量化的执行文件均位于` PaddleX/examples/human_segmentation ` ,进入该目录:
154+
155+ ``` bash
156+ cd PaddleX/examples/human_segmentation
157+ ```
158+
118159### 模型训练
119160
120161使用下述命令进行基于预训练模型的模型训练,请确保选用的模型结构` model_type ` 与模型参数` pretrain_weights ` 匹配。如果不需要本案例提供的测试数据,可更换数据、选择合适的模型并调整训练参数。
@@ -213,3 +254,62 @@ python quant_offline.py --model_dir output/best_model \
213254* ` --image_shape ` : 网络输入图像大小(w, h)
214255
215256## <h2 id =" 4 " >Paddle-Lite移动端部署</h2 >
257+
258+ 本案例将人像分割模型在移动端进行部署,部署流程展示如下,通用的移动端部署流程参见[ PaddleLite移动端部署] ( ../../docs/deploy/paddlelite/android.md ) 。
259+
260+ ### 1. 将PaddleX模型导出为inference模型
261+
262+ 本案例使用humanseg_mobile_quant预训练模型,该模型已经是inference模型,不需要再执行模型导出步骤。如果不使用预训练模型,则执行上一章节` 模型训练 ` 中的` 模型导出 ` 将自己训练的模型导出为inference格式。
263+
264+ ### 2. 将inference模型优化为PaddleLite模型
265+
266+ 下载并解压 [ 模型优化工具opt] ( https://bj.bcebos.com/paddlex/deploy/lite/model_optimize_tool_11cbd50e.tar.gz ) ,进入模型优化工具opt所在路径后,执行以下命令:
267+
268+ ``` bash
269+ ./opt --model_file=< model_path> \
270+ --param_file=< param_path> \
271+ --valid_targets=arm \
272+ --optimize_out_type=naive_buffer \
273+ --optimize_out=model_output_name
274+ ```
275+
276+ | 参数 | 说明 |
277+ | ---- | ---- |
278+ | --model_file | 导出inference模型中包含的网络结构文件:` __model__ ` 所在的路径|
279+ | --param_file | 导出inference模型中包含的参数文件:` __params__ ` 所在的路径|
280+ | --valid_targets | 指定模型可执行的backend,这里请指定为` arm ` |
281+ | --optimize_out_type | 输出模型类型,目前支持两种类型:protobuf和naive_buffer,其中naive_buffer是一种更轻量级的序列化/反序列化,这里请指定为` naive_buffer ` |
282+ | --optimize_out | 输出模型的名称 |
283+
284+ 更详细的使用方法和参数含义请参考: [ 使用opt转化模型] ( https://paddle-lite.readthedocs.io/zh/latest/user_guides/opt/opt_bin.html )
285+
286+ ### 3. 移动端预测
287+
288+ PaddleX提供了基于PaddleX Android SDK的安卓demo,可供用户体验图像分类、目标检测、实例分割和语义分割,该demo位于` PaddleX/deploy/lite/android/demo ` ,用户将模型、配置文件和测试图片拷贝至该demo下进行预测。
289+
290+ #### 3.1 前置依赖
291+
292+ * Android Studio 3.4
293+ * Android手机或开发板
294+
295+ #### 3.2 拷贝模型、配置文件和测试图片
296+
297+ * 将Lite模型(.nb文件)拷贝到` PaddleX/deploy/lite/android/demo/app/src/main/assets/model/ ` 目录下, 根据.nb文件的名字,修改文件` PaddleX/deploy/lite/android/demo/app/src/main/res/values/strings.xml ` 中的` MODEL_PATH_DEFAULT ` ;
298+
299+ * 将配置文件(.yml文件)拷贝到` PaddleX/deploy/lite/android/demo/app/src/main/assets/config/ ` 目录下,根据.yml文件的名字,修改文件` PaddleX/deploy/lite/android/demo/app/src/main/res/values/strings.xml ` 中的` YAML_PATH_DEFAULT ` ;
300+
301+ * 将测试图片拷贝到` PaddleX/deploy/lite/android/demo/app/src/main/assets/images/ ` 目录下,根据图片文件的名字,修改文件` PaddleX/deploy/lite/android/demo/app/src/main/res/values/strings.xml ` 中的` IMAGE_PATH_DEFAULT ` 。
302+
303+ #### 3.3 导入工程并运行
304+
305+ * 打开Android Studio,在"Welcome to Android Studio"窗口点击"Open an existing Android Studio project",在弹出的路径选择窗口中进入` PaddleX/deploy/lite/android/demo ` 目录,然后点击右下角的"Open"按钮,导入工程;
306+
307+ * 通过USB连接Android手机或开发板;
308+
309+ * 工程编译完成后,点击菜单栏的Run->Run 'App'按钮,在弹出的"Select Deployment Target"窗口选择已经连接的Android设备,然后点击"OK"按钮;
310+
311+ * 运行成功后,Android设备将加载一个名为PaddleX Demo的App,默认会加载一个测试图片,同时还支持拍照和从图库选择照片进行预测。
312+
313+ 测试图片及其分割结果如下所示:
314+
315+ ![ ] ( ./data/beauty.png )
0 commit comments