提交 5f475d06 编写于 作者: F FlyingQianMM

modify docs

上级 855b1547
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
|[MaskRCNN-ResNet18-FPN](https://bj.bcebos.com/paddlex/pretrained_weights/mask_rcnn_r18_fpn_1x.tar) | 189.1MB | - | 33.6 | 30.5 | |[MaskRCNN-ResNet18-FPN](https://bj.bcebos.com/paddlex/pretrained_weights/mask_rcnn_r18_fpn_1x.tar) | 189.1MB | - | 33.6 | 30.5 |
|[MaskRCNN-ResNet50](https://paddlemodels.bj.bcebos.com/object_detection/mask_rcnn_r50_2x.tar) | 143.9MB | 87 | 38.2 | 33.4 | |[MaskRCNN-ResNet50](https://paddlemodels.bj.bcebos.com/object_detection/mask_rcnn_r50_2x.tar) | 143.9MB | 87 | 38.2 | 33.4 |
|[MaskRCNN-ResNet50-FPN](https://paddlemodels.bj.bcebos.com/object_detection/mask_rcnn_r50_fpn_2x.tar)| 177.7MB | 63.9 | 38.7 | 34.7 | |[MaskRCNN-ResNet50-FPN](https://paddlemodels.bj.bcebos.com/object_detection/mask_rcnn_r50_fpn_2x.tar)| 177.7MB | 63.9 | 38.7 | 34.7 |
|[MaskRCNN-ResNet50_vd-FPN](https://paddlemodels.bj.bcebos.com/object_detection/mask_rcnn_r50_vd_fpn_2x.tar) | 177.7MB | 63.1 | 39.8 || 35.4 | |[MaskRCNN-ResNet50_vd-FPN](https://paddlemodels.bj.bcebos.com/object_detection/mask_rcnn_r50_vd_fpn_2x.tar) | 177.7MB | 63.1 | 39.8 | 35.4 |
|[MaskRCNN-ResNet101-FPN](https://paddlemodels.bj.bcebos.com/object_detection/mask_rcnn_r101_fpn_1x.tar) | 253.6MB | 77 | 39.5 | 35.2 | |[MaskRCNN-ResNet101-FPN](https://paddlemodels.bj.bcebos.com/object_detection/mask_rcnn_r101_fpn_1x.tar) | 253.6MB | 77 | 39.5 | 35.2 |
|[MaskRCNN-ResNet101_vd-FPN](https://paddlemodels.bj.bcebos.com/object_detection/mask_rcnn_r101_vd_fpn_1x.tar) | 253.7MB | 76.4 | 41.4 | 36.8 | |[MaskRCNN-ResNet101_vd-FPN](https://paddlemodels.bj.bcebos.com/object_detection/mask_rcnn_r101_vd_fpn_1x.tar) | 253.7MB | 76.4 | 41.4 | 36.8 |
|[MaskRCNN-HRNet_W18-FPN](https://bj.bcebos.com/paddlex/pretrained_weights/mask_rcnn_hrnetv2p_w18_2x.tar) | 120.7MB | - | 38.7 | 34.7 | |[MaskRCNN-HRNet_W18-FPN](https://bj.bcebos.com/paddlex/pretrained_weights/mask_rcnn_hrnetv2p_w18_2x.tar) | 120.7MB | - | 38.7 | 34.7 |
......
...@@ -40,14 +40,14 @@ ...@@ -40,14 +40,14 @@
### 剪裁 ### 剪裁
PaddleLite推理耗时说明: Paddle Lite推理耗时说明:
环境:Qualcomm SnapDragon 845 + armv8 环境:Qualcomm SnapDragon 845 + armv8
速度指标:Thread1/Thread2/Thread4耗时 速度指标:Thread1/Thread2/Thread4耗时
| 模型 | 压缩策略 | Top-1 | 存储体积 |PaddleLite推理耗时|TensorRT推理速度(FPS)| | 模型 | 压缩策略 | Top-1 | 存储体积 |Paddle Lite推理耗时|TensorRT推理速度(FPS)|
|:--:|:---:|:--:|:--:|:--:|:--:| |:--:|:---:|:--:|:--:|:--:|:--:|
| MobileNetV1 | 无 | 70.99% | 17MB | 66.052\35.8014\19.5762|-| | MobileNetV1 | 无 | 70.99% | 17MB | 66.052\35.8014\19.5762|-|
| MobileNetV1 | 剪裁 -30% | 70.4% (-0.59%) | 12MB | 46.5958\25.3098\13.6982|-| | MobileNetV1 | 剪裁 -30% | 70.4% (-0.59%) | 12MB | 46.5958\25.3098\13.6982|-|
...@@ -70,13 +70,13 @@ PaddleLite推理耗时说明: ...@@ -70,13 +70,13 @@ PaddleLite推理耗时说明:
数据集:Pasacl VOC & COCO2017 数据集:Pasacl VOC & COCO2017
PaddleLite推理耗时说明: Paddle Lite推理耗时说明:
环境:Qualcomm SnapDragon 845 + armv8 环境:Qualcomm SnapDragon 845 + armv8
速度指标:Thread1/Thread2/Thread4耗时 速度指标:Thread1/Thread2/Thread4耗时
| 模型 | 压缩策略 | 数据集 | Image/GPU | 输入608 Box mmAP | 存储体积 | PaddleLite推理耗时(ms)(608*608) | TensorRT推理速度(FPS)(608*608) | | 模型 | 压缩策略 | 数据集 | Image/GPU | 输入608 Box mmAP | 存储体积 | Paddle Lite推理耗时(ms)(608*608) | TensorRT推理速度(FPS)(608*608) |
| :----------------------------: | :---------------: | :--------: | :-------: | :------------: | :----------: | :--------------: | :--------------: | | :----------------------------: | :---------------: | :--------: | :-------: | :------------: | :----------: | :--------------: | :--------------: |
| MobileNet-V1-YOLOv3 | 无 | Pascal VOC | 8 | 76.2 | 94MB | 1238\796.943\520.101|60.04| | MobileNet-V1-YOLOv3 | 无 | Pascal VOC | 8 | 76.2 | 94MB | 1238\796.943\520.101|60.04|
| MobileNet-V1-YOLOv3 | 剪裁 -52.88% | Pascal VOC | 8 | 77.6 (+1.4) | 31MB | 602.497\353.759\222.427 |99.36| | MobileNet-V1-YOLOv3 | 剪裁 -52.88% | Pascal VOC | 8 | 77.6 (+1.4) | 31MB | 602.497\353.759\222.427 |99.36|
...@@ -108,14 +108,14 @@ PaddleLite推理耗时说明: ...@@ -108,14 +108,14 @@ PaddleLite推理耗时说明:
### 剪裁 ### 剪裁
PaddleLite推理耗时说明: Paddle Lite推理耗时说明:
环境:Qualcomm SnapDragon 845 + armv8 环境:Qualcomm SnapDragon 845 + armv8
速度指标:Thread1/Thread2/Thread4耗时 速度指标:Thread1/Thread2/Thread4耗时
| 模型 | 压缩方法 | mIoU | 存储体积 | PaddleLite推理耗时 | TensorRT推理速度(FPS) | | 模型 | 压缩方法 | mIoU | 存储体积 | Paddle Lite推理耗时 | TensorRT推理速度(FPS) |
| :-------: | :---------------: | :-----------: | :------: | :------------: | :----: | | :-------: | :---------------: | :-----------: | :------: | :------------: | :----: |
| FastSCNN | 无 | 69.64 | 11MB | 1226.36\682.96\415.664 |39.53| | FastSCNN | 无 | 69.64 | 11MB | 1226.36\682.96\415.664 |39.53|
| FastSCNN | 剪裁 -47.60% | 66.68 (-2.96) | 5.7MB | 866.693\494.467\291.748 |51.48| | FastSCNN | 剪裁 -47.60% | 66.68 (-2.96) | 5.7MB | 866.693\494.467\291.748 |51.48|
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
> - 集成X2Paddle,PaddleX所有分类模型和语义分割模型支持导出为ONNX协议 > - 集成X2Paddle,PaddleX所有分类模型和语义分割模型支持导出为ONNX协议
- 模型部署更新 - 模型部署更新
> - 模型加密增加支持Windows平台 > - 模型加密增加支持Windows平台
> - 新增Jetson、PaddleLite模型部署预测方案 > - 新增Jetson、Paddle Lite模型部署预测方案
> - C++部署代码新增batch批预测,并采用OpenMP对预处理进行并行加速 > - C++部署代码新增batch批预测,并采用OpenMP对预处理进行并行加速
- 新增2个PaddleX产业案例 - 新增2个PaddleX产业案例
> - [人像分割案例]() > - [人像分割案例]()
......
...@@ -4,8 +4,7 @@ PaddleX支持图像分类、目标检测、实例分割和语义分割四大视 ...@@ -4,8 +4,7 @@ PaddleX支持图像分类、目标检测、实例分割和语义分割四大视
## 常见标注工具 ## 常见标注工具
> 图像分类无需标注工具,用户只需以txt文件记录每张图片的类别标签即可。 图像分类无需标注工具,用户只需以txt文件记录每张图片的类别标签即可。对于目标检测、实例分割和语义分割,PaddleX已经与主流的标注工具进行了适配,用户可根据自己的需求,选择以下标注工具进行数据标注。
> 对于目标检测、实例分割和语义分割,PaddleX已经与主流的标注工具进行了适配,用户可根据自己的需求,选择以下标注工具进行数据标注。
| 标注工具 | 图像分类 | 目标检测 | 实例分割 | 语义分割 | 安装 | | 标注工具 | 图像分类 | 目标检测 | 实例分割 | 语义分割 | 安装 |
| :--------- | :------- | :------ | :------ | :------- | :----------------------------------------------- | | :--------- | :------- | :------ | :------ | :------- | :----------------------------------------------- |
...@@ -15,22 +14,26 @@ PaddleX支持图像分类、目标检测、实例分割和语义分割四大视 ...@@ -15,22 +14,26 @@ PaddleX支持图像分类、目标检测、实例分割和语义分割四大视
数据标注完成后,参照如下流程,将标注数据转为可用PaddleX模型训练的数据组织格式。 数据标注完成后,参照如下流程,将标注数据转为可用PaddleX模型训练的数据组织格式。
> *注*:精灵标注的目标检测数据可以在工具内部导出为PascalVOC格式,因此paddlex未提供精灵标注数据到PascalVOC格式的转换 ***注意**:精灵标注的目标检测数据可以在工具内部导出为PascalVOC格式,因此paddlex未提供精灵标注数据到PascalVOC格式的转换
## 标注数据格式转换 ## 标注数据格式转换
目前所有标注工具,生成的标注文件,均为与原图同名的json格式文件,如`1.jpg`在标注完成后,则会在标注文件保存的目录生成`1.json`文件。转换时参照以下步骤 目前所有标注工具生成的标注文件,均为与原图同名的json格式文件,如`1.jpg`在标注完成后,则会在标注文件保存的目录中生成`1.json`文件。转换时参照以下步骤:
> 1. 将所有的原图文件放在同一个目录下,如`pics`目录
> 2. 将所有的标注json文件放在同一个目录下,如`annotations`目录
> 3. 使用如下命令进行转换
> *注*:精灵标注的目标检测数据可以在工具内部导出为PascalVOC格式,因此paddlex未提供精灵标注数据到PascalVOC格式的转换 1. 将所有的原图文件放在同一个目录下,如`pics`目录
2. 将所有的标注json文件放在同一个目录下,如`annotations`目录
3. 使用如下命令进行转换:
``` ```
paddlex --data_conversion --source labelme --to PascalVOC --pics ./pics --annotations ./annotations --save_dir ./converted_dataset_dir paddlex --data_conversion --source labelme --to PascalVOC --pics ./pics --annotations ./annotations --save_dir ./converted_dataset_dir
``` ```
> `--source`表示数据标注来源,支持`labelme`、`jingling`和`easydata`(分别表示数据来源于LabelMe,精灵标注助手和EasyData)
> `--to`表示数据需要转换成为的格式,支持`ImageNet`(图像分类)、`PascalVOC`(目标检测),`MSCOCO`(实例分割,也可用于目标检测)和`SEG`(语义分割) | 参数 | 说明 |
> `--pics`指定原图所在的目录路径 | ---- | ---- |
> `--annotations`指定标注文件所在的目录路径 | --source | 表示数据标注来源,支持`labelme``jingling``easydata`(分别表示数据来源于LabelMe,精灵标注助手和EasyData)|
| --to | 表示数据需要转换成为的格式,支持`ImageNet`(图像分类)、`PascalVOC`(目标检测),`MSCOCO`(实例分割,也可用于目标检测)和`SEG`(语义分割) |
| --pics | 指定原图所在的目录路径 |
| --annotations | 指定标注文件所在的目录路径 |
**注意**:精灵标注的目标检测数据可以在工具内部导出为PascalVOC格式,因此paddlex未提供精灵标注数据到PascalVOC格式的转换
# Android平台 # Android平台
PaddleX的安卓端部署由PaddleLite实现,部署的流程如下,首先将训练好的模型导出为inference model,然后对模型进行优化,最后使用PaddleLite的预测库进行部署,PaddleLite的详细介绍和使用可参考:[PaddleLite文档](https://paddle-lite.readthedocs.io/zh/latest/) PaddleX的安卓端部署由Paddle Lite实现,部署的流程如下,首先将训练好的模型导出为inference model,然后对模型进行优化,最后使用Paddle Lite的预测库进行部署,Paddle Lite的详细介绍和使用可参考:[Paddle Lite文档](https://paddle-lite.readthedocs.io/zh/latest/)
> PaddleX --> Inference Model --> PaddleLite Opt --> PaddleLite Inference > PaddleX --> Inference Model --> Paddle Lite Opt --> Paddle Lite Inference
文章简介: 文章简介:
- 1.介绍如何将PaddleX导出为inference model - 1.介绍如何将PaddleX导出为inference model
- 2.使用PaddleLite的OPT模块对模型进行优化 - 2.使用Paddle Lite的OPT模块对模型进行优化
- 3.介绍基于PaddleX Android SDK的安卓demo,以及如何快速部署训练好的模型 - 3.介绍基于PaddleX Android SDK的安卓demo,以及如何快速部署训练好的模型
- 4.介绍PaddleX Android SDK和二次开发 - 4.介绍PaddleX Android SDK和二次开发
...@@ -14,11 +14,11 @@ PaddleX的安卓端部署由PaddleLite实现,部署的流程如下,首先将 ...@@ -14,11 +14,11 @@ PaddleX的安卓端部署由PaddleLite实现,部署的流程如下,首先将
参考[导出inference模型](../export_model.md)将模型导出为inference格式模型。 参考[导出inference模型](../export_model.md)将模型导出为inference格式模型。
## 2. 将inference模型优化为PaddleLite模型 ## 2. 将inference模型优化为Paddle Lite模型
目前提供了两种方法将Paddle模型优化为PaddleLite模型: 目前提供了两种方法将Paddle模型优化为Paddle Lite模型:
- 1.python脚本优化模型,简单上手,目前支持最新的PaddleLite 2.6.1版本 - 1.python脚本优化模型,简单上手,目前支持最新的Paddle Lite 2.6.1版本
- 2.bin文件优化模型(linux),支持develop版本(Commit Id:11cbd50e),适用于部署`DeepLab模型``Unet模型`的用户。 - 2.bin文件优化模型(linux),支持develop版本(Commit Id:11cbd50e),适用于部署`DeepLab模型``Unet模型`的用户。
### 2.1 使用python脚本优化模型 ### 2.1 使用python脚本优化模型
...@@ -87,11 +87,11 @@ PaddleX提供了一个基于Mobilenetv2模型和PaddleX Android SDK的安卓demo ...@@ -87,11 +87,11 @@ PaddleX提供了一个基于Mobilenetv2模型和PaddleX Android SDK的安卓demo
## 4. PaddleX Android SDK和二次开发 ## 4. PaddleX Android SDK和二次开发
PaddleX Android SDK是PaddleX基于Paddle-Lite开发的安卓端AI推理工具,以PaddleX导出的Yaml配置文件为接口,针对不同的模型实现图片的预处理,后处理,并进行可视化,开发者可集成到业务中。 PaddleX Android SDK是PaddleX基于Paddle Lite开发的安卓端AI推理工具,以PaddleX导出的Yaml配置文件为接口,针对不同的模型实现图片的预处理,后处理,并进行可视化,开发者可集成到业务中。
该SDK自底向上主要包括:Paddle-Lite推理引擎层,Paddle-Lite接口层以及PaddleX业务层。 该SDK自底向上主要包括:Paddle Lite推理引擎层,Paddle Lite接口层以及PaddleX业务层。
- Paddle-Lite推理引擎层,是在Android上编译好的二进制包,只涉及到Kernel 的执行,且可以单独部署,以支持极致的轻量级部署。 - Paddle Lite推理引擎层,是在Android上编译好的二进制包,只涉及到Kernel 的执行,且可以单独部署,以支持极致的轻量级部署。
- Paddle-Lite接口层,以Java接口封装了底层c++推理库。 - Paddle Lite接口层,以Java接口封装了底层c++推理库。
- PaddleX业务层,封装了PaddleX导出模型的预处理,推理和后处理,以及可视化,支持PaddleX导出的检测、分割、分类模型。 - PaddleX业务层,封装了PaddleX导出模型的预处理,推理和后处理,以及可视化,支持PaddleX导出的检测、分割、分类模型。
![架构](../images/paddlex_android_sdk_framework.jpg) ![架构](../images/paddlex_android_sdk_framework.jpg)
......
PaddleLite移动端部署 Paddle Lite移动端部署
======================================= =======================================
......
# 模型裁剪 # 模型裁剪
为了更好地满足端侧部署场景下,低内存带宽、低功耗、低计算资源占用以及低模型存储等需求,PaddleX通过集成PaddleSlim实现`模型裁剪`,可提升PaddleLite端侧部署性能。 为了更好地满足端侧部署场景下,低内存带宽、低功耗、低计算资源占用以及低模型存储等需求,PaddleX通过集成PaddleSlim实现`模型裁剪`,可提升Paddle Lite端侧部署性能。
## 原理介绍 ## 原理介绍
......
# 模型量化 # 模型量化
为了更好地满足端侧部署场景下,低内存带宽、低功耗、低计算资源占用以及低模型存储等需求,PaddleX通过集成PaddleSlim实现`模型量化`,可提升PaddleLite端侧部署性能。 为了更好地满足端侧部署场景下,低内存带宽、低功耗、低计算资源占用以及低模型存储等需求,PaddleX通过集成PaddleSlim实现`模型量化`,可提升Paddle Lite端侧部署性能。
## 原理介绍 ## 原理介绍
定点量化使用更少的比特数(如8-bit、3-bit、2-bit等)表示神经网络的权重和激活值,从而加速模型推理速度。PaddleX提供了训练后量化技术,其原理可参见[训练后量化原理](https://paddlepaddle.github.io/PaddleSlim/algo/algo.html#id14),该量化使用KL散度确定量化比例因子,将FP32模型转成INT8模型,且不需要重新训练,可以快速得到量化模型。 定点量化使用更少的比特数(如8-bit、3-bit、2-bit等)表示神经网络的权重和激活值,从而加速模型推理速度。PaddleX提供了训练后量化技术,其原理可参见[训练后量化原理](https://paddlepaddle.github.io/PaddleSlim/algo/algo.html#id14),该量化使用KL散度确定量化比例因子,将FP32模型转成INT8模型,且不需要重新训练,可以快速得到量化模型。
......
# 人像分割模型 # 人像分割模型
本教程基于PaddleX核心分割模型实现人像分割,开放预训练模型和测试数据、支持视频流人像分割、提供模型Fine-tune到Paddle-Lite移动端部署的全流程应用指南。 本教程基于PaddleX核心分割模型实现人像分割,开放预训练模型和测试数据、支持视频流人像分割、提供模型Fine-tune到Paddle Lite移动端部署的全流程应用指南。
## 预训练模型和测试数据 ## 预训练模型和测试数据
...@@ -243,15 +243,15 @@ python quant_offline.py --model_dir output/best_model \ ...@@ -243,15 +243,15 @@ python quant_offline.py --model_dir output/best_model \
* `--save_dir`: 量化模型保存路径 * `--save_dir`: 量化模型保存路径
* `--image_shape`: 网络输入图像大小(w, h) * `--image_shape`: 网络输入图像大小(w, h)
## Paddle-Lite移动端部署 ## Paddle Lite移动端部署
本案例将人像分割模型在移动端进行部署,部署流程展示如下,通用的移动端部署流程参见[PaddleLite移动端部署](../../docs/deploy/paddlelite/android.md) 本案例将人像分割模型在移动端进行部署,部署流程展示如下,通用的移动端部署流程参见[Paddle Lite移动端部署](../../docs/deploy/paddlelite/android.md)
### 1. 将PaddleX模型导出为inference模型 ### 1. 将PaddleX模型导出为inference模型
本案例使用humanseg_mobile_quant预训练模型,该模型已经是inference模型,不需要再执行模型导出步骤。如果不使用预训练模型,则执行上一章节`模型训练`中的`模型导出`将自己训练的模型导出为inference格式。 本案例使用humanseg_mobile_quant预训练模型,该模型已经是inference模型,不需要再执行模型导出步骤。如果不使用预训练模型,则执行上一章节`模型训练`中的`模型导出`将自己训练的模型导出为inference格式。
### 2. 将inference模型优化为PaddleLite模型 ### 2. 将inference模型优化为Paddle Lite模型
下载并解压 [模型优化工具opt](https://bj.bcebos.com/paddlex/deploy/lite/model_optimize_tool_11cbd50e.tar.gz),进入模型优化工具opt所在路径后,执行以下命令: 下载并解压 [模型优化工具opt](https://bj.bcebos.com/paddlex/deploy/lite/model_optimize_tool_11cbd50e.tar.gz),进入模型优化工具opt所在路径后,执行以下命令:
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
## pip安装 ## pip安装
> 注意其中pycocotools在Windows安装较为特殊,可参考下面的Windows安装命令 注意其中pycocotools在Windows安装较为特殊,可参考下面的Windows安装命令
``` ```
pip install paddlex -i https://mirror.baidu.com/pypi/simple pip install paddlex -i https://mirror.baidu.com/pypi/simple
...@@ -28,15 +28,17 @@ python setup.py install ...@@ -28,15 +28,17 @@ python setup.py install
## pycocotools安装问题 ## pycocotools安装问题
> PaddleX依赖pycocotools包,如安装pycocotools失败,可参照如下方式安装pycocotools PaddleX依赖pycocotools包,如安装pycocotools失败,可参照如下方式安装pycocotools
* Windows安装时可能会提示缺少`Microsoft Visual C++ 2015 build tools`[点击下载VC build tools](https://go.microsoft.com/fwlink/?LinkId=691126)安装再执行如下pip命令
> Windows安装时可能会提示缺少`Microsoft Visual C++ 2015 build tools`,[点击下载VC build tools](https://go.microsoft.com/fwlink/?LinkId=691126)安装再执行如下pip命令
``` ```
pip install cython pip install cython
pip install git+https://gitee.com/jiangjiajun/philferriere-cocoapi.git#subdirectory=PythonAPI pip install git+https://gitee.com/jiangjiajun/philferriere-cocoapi.git#subdirectory=PythonAPI
``` ```
> Linux/Mac系统下,直接使用pip安装如下两个依赖即可 * Linux/Mac系统下,直接使用pip安装如下两个依赖即可
``` ```
pip install cython pip install cython
pip install pycocotools pip install pycocotools
......
...@@ -37,7 +37,7 @@ tar xzvf vegetables_cls.tar.gz ...@@ -37,7 +37,7 @@ tar xzvf vegetables_cls.tar.gz
<a name="定义训练验证图像处理流程transforms"></a> <a name="定义训练验证图像处理流程transforms"></a>
**3. 定义训练/验证图像处理流程transforms** **3. 定义训练/验证图像处理流程transforms**
由于训练时数据增强操作的加入,因此模型在训练和验证过程中,数据处理流程需要分别进行定义。如下所示,代码在`train_transforms`中加入了[RandomCrop](apis/transforms/cls_transforms.html#randomcrop)[RandomHorizontalFlip](apis/transforms/cls_transforms.html#randomhorizontalflip)两种数据增强方式, 更多方法可以参考[数据增强文档](apis/transforms/augment.md) 因为训练时加入了数据增强操作,因此在训练和验证过程中,模型的数据处理流程需要分别进行定义。如下所示,代码在`train_transforms`中加入了[RandomCrop](apis/transforms/cls_transforms.html#randomcrop)[RandomHorizontalFlip](apis/transforms/cls_transforms.html#randomhorizontalflip)两种数据增强方式, 更多方法可以参考[数据增强文档](apis/transforms/augment.md)
``` ```
from paddlex.cls import transforms from paddlex.cls import transforms
train_transforms = transforms.Compose([ train_transforms = transforms.Compose([
...@@ -93,13 +93,13 @@ model.train(num_epochs=20, ...@@ -93,13 +93,13 @@ model.train(num_epochs=20,
<a name="训练过程使用VisualDL查看训练指标变化"></a> <a name="训练过程使用VisualDL查看训练指标变化"></a>
**6. 训练过程使用VisualDL查看训练指标变化** **6. 训练过程使用VisualDL查看训练指标变化**
模型在训练过程中,训练指标和在验证集上的指标,均会以标准输出流形式,输出到命令终端。在用户设定`use_vdl=True`的前提下,也会使用VisualDL格式打点到`save_dir`目录下的`vdl_log`文件夹,用户可都终端通过如下命令启动visualdl,查看可视化的指标变化趋势 训练过程中,模型在训练集和验证集上的指标均会以标准输出流形式输出到命令终端。当用户设定`use_vdl=True`时,也会使用VisualDL格式将指标打点到`save_dir`目录下的`vdl_log`文件夹,在终端运行如下命令启动visualdl并查看可视化的指标变化情况
``` ```
visualdl --logdir output/mobilenetv3_small_ssld --port 8001 visualdl --logdir output/mobilenetv3_small_ssld --port 8001
``` ```
服务启动后,通过浏览器打开https://0.0.0.0:8001或https://localhost:8001即可。 服务启动后,通过浏览器打开https://0.0.0.0:8001或https://localhost:8001即可。
> 如果您使用的是AIStudio平台进行训练,不能通过此方式启动visualdl,请参考AIStudio VisualDL启动教程使用 如果您使用的是AIStudio平台进行训练,不能通过此方式启动visualdl,请参考AIStudio VisualDL启动教程使用
<a name="加载训练保存的模型预测"></a> <a name="加载训练保存的模型预测"></a>
**7. 加载训练保存的模型预测** **7. 加载训练保存的模型预测**
......
...@@ -8,7 +8,7 @@ PaddleX共提供了20+的图像分类模型,可满足开发者不同场景的 ...@@ -8,7 +8,7 @@ PaddleX共提供了20+的图像分类模型,可满足开发者不同场景的
- **预测速度**:单张图片的预测用时(不包括预处理和后处理) - **预测速度**:单张图片的预测用时(不包括预处理和后处理)
- "-"表示指标暂未更新 - "-"表示指标暂未更新
| 模型(点击获取代码) | Top1精度 | 模型大小 | GPU预测速度 | Arm预测速度 | 备注 | | 模型(点击获取代码) | Top1精度 | 模型大小 | GPU预测速度 | Arm预测速度 | 备注 |
| :---------------- | :------- | :------- | :--------- | :--------- | :----- | | :---------------- | :------- | :------- | :--------- | :--------- | :----- |
| [MobileNetV3_small_ssld](https://github.com/PaddlePaddle/PaddleX/blob/develop/tutorials/train/image_classification/mobilenetv3_small_ssld.py) | 71.3% | 21.0MB | 6.809ms | - | 模型小,预测速度快,适用于低性能或移动端设备 | | [MobileNetV3_small_ssld](https://github.com/PaddlePaddle/PaddleX/blob/develop/tutorials/train/image_classification/mobilenetv3_small_ssld.py) | 71.3% | 21.0MB | 6.809ms | - | 模型小,预测速度快,适用于低性能或移动端设备 |
| [MobileNetV2](https://github.com/PaddlePaddle/PaddleX/blob/develop/tutorials/train/image_classification/mobilenetv2.py) | 72.2% | 14.0MB | 4.546ms | - | 模型小,预测速度快,适用于低性能或移动端设备 | | [MobileNetV2](https://github.com/PaddlePaddle/PaddleX/blob/develop/tutorials/train/image_classification/mobilenetv2.py) | 72.2% | 14.0MB | 4.546ms | - | 模型小,预测速度快,适用于低性能或移动端设备 |
...@@ -18,11 +18,11 @@ PaddleX共提供了20+的图像分类模型,可满足开发者不同场景的 ...@@ -18,11 +18,11 @@ PaddleX共提供了20+的图像分类模型,可满足开发者不同场景的
## 开始训练 ## 开始训练
> 代码保存到本地后,即可直接训练,**训练代码会自动下载训练数据开始训练** 将代码保存到本地后运行(代码下载链接位于上面的表格),**代码会自动下载训练数据并开始训练**。如保存为`mobilenetv3_small_ssld.py`,执行如下命令即可开始训练:
> > 如保存为`mobilenetv3_small_ssld.py`,如下命令即可开始训练
> > ``` ```
> > python mobilenetv3_small_ssld.py python mobilenetv3_small_ssld.py
> > ``` ```
## 相关文档 ## 相关文档
......
模型训练 模型训练
======================================= =======================================
PaddleX集成了PaddleClas、PaddleDetection和PaddleSeg三大CV工具套件中,在工业领域应用成熟的模型,并提供了统一,易用的API使用接口,帮助用户快速完成视觉领域的图像分类、目标检测、实例分割和语义分割模型的训练。 PaddleX集成了PaddleClas、PaddleDetection和PaddleSeg三大CV工具套件中在工业领域应用成熟的模型,并提供了统一易用的API使用接口,帮助用户快速完成视觉领域的图像分类、目标检测、实例分割和语义分割模型的训练。
.. toctree:: .. toctree::
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
## 介绍 ## 介绍
PaddleX目前提供了MaskRCNN实例分割模型结构,多种backbone模型,可满足开发者不同场景和性能的需求。 PaddleX目前提供了MaskRCNN实例分割模型结构多种backbone模型,可满足开发者不同场景和性能的需求。
- **Box MMAP/Seg MMAP**: 模型在COCO数据集上的测试精度 - **Box MMAP/Seg MMAP**: 模型在COCO数据集上的测试精度
- **预测速度**:单张图片的预测用时(不包括预处理和后处理) - **预测速度**:单张图片的预测用时(不包括预处理和后处理)
...@@ -17,11 +17,11 @@ PaddleX目前提供了MaskRCNN实例分割模型结构,多种backbone模型, ...@@ -17,11 +17,11 @@ PaddleX目前提供了MaskRCNN实例分割模型结构,多种backbone模型,
## 开始训练 ## 开始训练
> 代码保存到本地后,即可直接训练,**训练代码会自动下载训练数据开始训练** 将代码保存到本地后运行(代码下载链接位于上面表格中),**代码会自动下载训练数据并开始训练**。如保存为`mask_rcnn_r50_fpn.py`,执行如下命令即可开始训练:
> > 如保存为`mask_r50_fpn.py`,如下命令即可开始训练
> > ``` ```
> > python mask_r50_fpn.py python mask_rcnn_r50_fpn.py
> > ``` ```
## 相关文档 ## 相关文档
......
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
## 介绍 ## 介绍
PaddleX目前提供了FasterRCNN和YOLOv3两种检测结构,多种backbone模型,可满足开发者不同场景和性能的需求。 PaddleX目前提供了FasterRCNN和YOLOv3两种检测结构多种backbone模型,可满足开发者不同场景和性能的需求。
- **Box MMAP**: 模型在COCO数据集上的测试精度 - **Box MMAP**: 模型在COCO数据集上的测试精度
- **预测速度**:单张图片的预测用时(不包括预处理和后处理) - **预测速度**:单张图片的预测用时(不包括预处理和后处理)
- "-"表示指标暂未更新 - "-"表示指标暂未更新
| 模型(点击获取代码) | Box MMAP | 模型大小 | GPU预测速度 | Arm预测速度 | 备注 | | 模型(点击获取代码) | Box MMAP | 模型大小 | GPU预测速度 | Arm预测速度 | 备注 |
| :---------------- | :------- | :------- | :--------- | :--------- | :----- | | :---------------- | :------- | :------- | :--------- | :--------- | :----- |
| [YOLOv3-MobileNetV1](https://github.com/PaddlePaddle/PaddleX/blob/develop/tutorials/train/object_detection/yolov3_mobilenetv1.py) | 29.3% | 99.2MB | 15.442ms | - | 模型小,预测速度快,适用于低性能或移动端设备 | | [YOLOv3-MobileNetV1](https://github.com/PaddlePaddle/PaddleX/blob/develop/tutorials/train/object_detection/yolov3_mobilenetv1.py) | 29.3% | 99.2MB | 15.442ms | - | 模型小,预测速度快,适用于低性能或移动端设备 |
| [YOLOv3-MobileNetV3](https://github.com/PaddlePaddle/PaddleX/blob/develop/tutorials/train/object_detection/yolov3_mobilenetv3.py) | 31.6% | 100.7MB | 143.322ms | - | 模型小,移动端上预测速度有优势 | | [YOLOv3-MobileNetV3](https://github.com/PaddlePaddle/PaddleX/blob/develop/tutorials/train/object_detection/yolov3_mobilenetv3.py) | 31.6% | 100.7MB | 143.322ms | - | 模型小,移动端上预测速度有优势 |
...@@ -20,11 +20,11 @@ PaddleX目前提供了FasterRCNN和YOLOv3两种检测结构,多种backbone模型 ...@@ -20,11 +20,11 @@ PaddleX目前提供了FasterRCNN和YOLOv3两种检测结构,多种backbone模型
## 开始训练 ## 开始训练
> 代码保存到本地后,即可直接训练,**训练代码会自动下载训练数据开始训练** 将代码保存到本地后运行(代码下载链接位于上面的表格),**代码会自动下载训练数据并开始训练**。如保存为`yolov3_mobilenetv1.py`,执行如下命令即可开始训练:
> > 如保存为`yolov3_mobilenetv1.py`,如下命令即可开始训练
> > ``` ```
> > python yolov3_mobilenetv1.py python yolov3_mobilenetv1.py
> > ``` ```
## 相关文档 ## 相关文档
......
...@@ -2,11 +2,12 @@ ...@@ -2,11 +2,12 @@
PaddleX可以使用`paddlex.load_model`接口加载模型(包括训练过程中保存的模型,导出的部署模型,量化模型以及裁剪的模型)进行预测,同时PaddleX中也内置了一系列的可视化工具函数,帮助用户方便地检查模型的效果。 PaddleX可以使用`paddlex.load_model`接口加载模型(包括训练过程中保存的模型,导出的部署模型,量化模型以及裁剪的模型)进行预测,同时PaddleX中也内置了一系列的可视化工具函数,帮助用户方便地检查模型的效果。
> 注意:使用`paddlex.load_model`接口加载仅用于模型预测,如需要在此模型基础上继续训练,可以将该模型作为预训练模型进行训练,具体做法是在训练代码中,将train函数中的`pretrain_weights`参数指定为预训练模型路径。 **注意**:使用`paddlex.load_model`接口加载仅用于模型预测,如需要在此模型基础上继续训练,可以将该模型作为预训练模型进行训练,具体做法是在训练代码中,将train函数中的`pretrain_weights`参数指定为预训练模型路径。
## 图像分类 ## 图像分类
> [点击下载](https://bj.bcebos.com/paddlex/models/mobilenetv3_small_ssld_imagenet.tar.gz)如下示例代码中模型 [点击下载](https://bj.bcebos.com/paddlex/models/mobilenetv3_small_ssld_imagenet.tar.gz)如下示例代码中的模型
``` ```
import paddlex as pdx import paddlex as pdx
test_jpg = 'mobilenetv3_small_ssld_imagenet/test.jpg' test_jpg = 'mobilenetv3_small_ssld_imagenet/test.jpg'
...@@ -14,19 +15,22 @@ model = pdx.load_model('mobilenetv3_small_ssld_imagenet') ...@@ -14,19 +15,22 @@ model = pdx.load_model('mobilenetv3_small_ssld_imagenet')
result = model.predict(test_jpg) result = model.predict(test_jpg)
print("Predict Result: ", result) print("Predict Result: ", result)
``` ```
结果输入如下 结果输出如下:
``` ```
Predict Result: [{'category_id': 21, 'category': 'killer_whale', 'score': 0.8262267}] Predict Result: [{'category_id': 549, 'category': 'envelope', 'score': 0.29062933}]
``` ```
测试图片如下
测试图片如下:
![](images/test.jpg)
- 分类模型predict接口[说明文档](../apis/models/classification.html#predict) - 分类模型predict接口[说明文档](../apis/models/classification.html#predict)
## 目标检测 ## 目标检测
> [点击下载](https://bj.bcebos.com/paddlex/models/yolov3_mobilenetv1_coco.tar.gz)如下示例代码中模型 [点击下载](https://bj.bcebos.com/paddlex/models/yolov3_mobilenetv1_coco.tar.gz)如下示例代码中模型
``` ```
import paddlex as pdx import paddlex as pdx
test_jpg = 'yolov3_mobilenetv1_coco/test.jpg' test_jpg = 'yolov3_mobilenetv1_coco/test.jpg'
...@@ -45,7 +49,8 @@ pdx.det.visualize(test_jpg, result, threshold=0.3, save_dir='./') ...@@ -45,7 +49,8 @@ pdx.det.visualize(test_jpg, result, threshold=0.3, save_dir='./')
## 实例分割 ## 实例分割
> [点击下载](https://bj.bcebos.com/paddlex/models/mask_r50_fpn_coco.tar.gz)如下示例代码中模型 [点击下载](https://bj.bcebos.com/paddlex/models/mask_r50_fpn_coco.tar.gz)如下示例代码中模型
``` ```
import paddlex as pdx import paddlex as pdx
test_jpg = 'mask_r50_fpn_coco/test.jpg' test_jpg = 'mask_r50_fpn_coco/test.jpg'
...@@ -60,20 +65,24 @@ pdx.det.visualize(test_jpg, result, threshold=0.5, save_dir='./') ...@@ -60,20 +65,24 @@ pdx.det.visualize(test_jpg, result, threshold=0.5, save_dir='./')
- MaskRCNN模型predict接口[说明文档](../apis/models/instance_segmentation.html#predict) - MaskRCNN模型predict接口[说明文档](../apis/models/instance_segmentation.html#predict)
- 可视化pdx.det.visualize接口[说明文档](../apis/visualize.html#paddlex-det-visualize) - 可视化pdx.det.visualize接口[说明文档](../apis/visualize.html#paddlex-det-visualize)
> 注意:目标检测和实例分割模型在调用`predict`接口得到的结果需用户自行过滤低置信度结果,在`paddlex.det.visualize`接口中,我们提供了`threshold`用于过滤,置信度低于此值的结果将被过滤,不会可视化。 **注意**:目标检测和实例分割模型在调用`predict`接口得到的结果需用户自行过滤低置信度结果,在`paddlex.det.visualize`接口中,我们提供了`threshold`用于过滤,置信度低于此值的结果将被过滤,不会可视化。
![](./images/mask_predict.jpg) ![](./images/mask_predict.jpg)
## 语义分割 ## 语义分割
[点击下载](https://bj.bcebos.com/paddlex/models/deeplabv3p_mobilenetv2_voc.tar.gz)如下示例代码中模型
``` ```
import paddlex as pdx import paddlex as pdx
test_jpg = './deeplabv3p_mobilenetv2_coco/test.jpg' test_jpg = './deeplabv3p_mobilenetv2_voc/test.jpg'
model = pdx.load_model('./deeplabv3p_mobilenetv2_coco') model = pdx.load_model('./deeplabv3p_mobilenetv2_voc')
result = model.predict(test_jpg) result = model.predict(test_jpg)
pdx.seg.visualize(test_jpg, result, weight=0.0, save_dir='./') pdx.seg.visualize(test_jpg, result, weight=0.6, save_dir='./')
``` ```
在上述示例代码中,通过调用`paddlex.seg.visualize`可以对语义分割的预测结果进行可视化,可视化的结果保存在`save_dir`下。其中`weight`参数用于调整预测结果和原图结果融合展现时的权重,0.0时只展示预测结果mask的可视化,1.0时只展示原图可视化。 在上述示例代码中,通过调用`paddlex.seg.visualize`可以对语义分割的预测结果进行可视化,可视化的结果保存在`save_dir`,见下图。其中`weight`参数用于调整预测结果和原图结果融合展现时的权重,0.0时只展示预测结果mask的可视化,1.0时只展示原图可视化。
![](images/deeplab_predict.jpg)
## 公开数据集训练模型下载 ## 公开数据集训练模型下载
...@@ -88,10 +97,10 @@ PaddleX提供了部分公开数据集上训练好的模型,用户可以直接 ...@@ -88,10 +97,10 @@ PaddleX提供了部分公开数据集上训练好的模型,用户可以直接
| 目标检测 | [YOLOv3-DarkNet53](https://bj.bcebos.com/paddlex/models/yolov3_darknet53_coco.tar.gz) | MSCOCO | 266MMB | Box MAP | 34.8% | | 目标检测 | [YOLOv3-DarkNet53](https://bj.bcebos.com/paddlex/models/yolov3_darknet53_coco.tar.gz) | MSCOCO | 266MMB | Box MAP | 34.8% |
| 目标检测 | [YOLOv3-MobileNetV3](https://bj.bcebos.com/paddlex/models/yolov3_mobilenetv3_coco.tar.gz) | MSCOCO | 101MB | Box MAP | 31.6% | | 目标检测 | [YOLOv3-MobileNetV3](https://bj.bcebos.com/paddlex/models/yolov3_mobilenetv3_coco.tar.gz) | MSCOCO | 101MB | Box MAP | 31.6% |
| 实例分割 | [MaskRCNN-ResNet50-FPN](https://bj.bcebos.com/paddlex/models/mask_r50_fpn_coco.tar.gz) | MSCOCO | 193MB | Box MAP/Seg MAP | 38.7% / 34.7% | | 实例分割 | [MaskRCNN-ResNet50-FPN](https://bj.bcebos.com/paddlex/models/mask_r50_fpn_coco.tar.gz) | MSCOCO | 193MB | Box MAP/Seg MAP | 38.7% / 34.7% |
| 语义分割 | DeepLabv3p-Xception65 | 人像分割 | - | mIoU | - | | 语义分割 | [DeepLabv3p-Xception65](https://bj.bcebos.com/paddlex/examples/human_seg/models/humanseg_server_params.tar) | 人像分割 | - | mIoU | - |
| 语义分割 | HRNet_w18_small | 人像分割 | - | mIou | - | | 语义分割 | [HRNet_w18_small](https://bj.bcebos.com/paddlex/examples/human_seg/models/humanseg_mobile_params.tar) | 人像分割 | - | mIou | - |
PaddleX的`load_model`接口可以满足用户一般的模型调研需求,如若为更高性能的预测部署,可以参考如下文档 PaddleX的`load_model`接口可以满足用户一般的模型调研需求,如果是追求更高性能的预测部署,可以参考如下文档
- [服务端Python部署](../deploy/server/python.md) - [服务端Python部署](../deploy/server/python.md)
- [服务端C++部署](../deploy/server/cpp/index.html) - [服务端C++部署](../deploy/server/cpp/index.html)
...@@ -20,11 +20,10 @@ PaddleX目前提供了DeepLabv3p、UNet、HRNet和FastSCNN四种语义分割结 ...@@ -20,11 +20,10 @@ PaddleX目前提供了DeepLabv3p、UNet、HRNet和FastSCNN四种语义分割结
## 开始训练 ## 开始训练
> 代码保存到本地后,即可直接训练,**训练代码会自动下载训练数据开始训练** 将代码保存到本地后运行(代码下载链接位于上面的表格中),**代码会自动下载训练数据并开始训练**。如保存为`deeplabv3p_mobilenetv2_x0.25.py`,执行如下命令即可开始训练:
> > 如保存为`deeplabv3p_mobilenetv2_x0.25.py`,如下命令即可开始训练 ```
> > ``` python deeplabv3p_mobilenetv2_x0.25.py
> > python deeplabv3p_mobilenetv2_x0.25.py ```
> > ```
## 相关文档 ## 相关文档
......
# HumanSeg人像分割模型 # HumanSeg人像分割模型
本教程基于PaddleX核心分割模型实现人像分割,开放预训练模型和测试数据、支持视频流人像分割、提供模型Fine-tune到Paddle-Lite移动端部署的全流程应用指南。 本教程基于PaddleX核心分割模型实现人像分割,开放预训练模型和测试数据、支持视频流人像分割、提供模型Fine-tune到Paddle Lite移动端部署的全流程应用指南。
## 目录 ## 目录
* [预训练模型和测试数据](#1) * [预训练模型和测试数据](#1)
* [快速体验视频流人像分割](#2) * [快速体验视频流人像分割](#2)
* [模型Fine-tune](#3) * [模型Fine-tune](#3)
* [Paddle-Lite移动端部署](#4) * [Paddle Lite移动端部署](#4)
## <h2 id="1">预训练模型和测试数据</h2> ## <h2 id="1">预训练模型和测试数据</h2>
...@@ -253,15 +253,15 @@ python quant_offline.py --model_dir output/best_model \ ...@@ -253,15 +253,15 @@ python quant_offline.py --model_dir output/best_model \
* `--save_dir`: 量化模型保存路径 * `--save_dir`: 量化模型保存路径
* `--image_shape`: 网络输入图像大小(w, h) * `--image_shape`: 网络输入图像大小(w, h)
## <h2 id="4">Paddle-Lite移动端部署</h2> ## <h2 id="4">Paddle Lite移动端部署</h2>
本案例将人像分割模型在移动端进行部署,部署流程展示如下,通用的移动端部署流程参见[PaddleLite移动端部署](../../docs/deploy/paddlelite/android.md) 本案例将人像分割模型在移动端进行部署,部署流程展示如下,通用的移动端部署流程参见[Paddle Lite移动端部署](../../docs/deploy/paddlelite/android.md)
### 1. 将PaddleX模型导出为inference模型 ### 1. 将PaddleX模型导出为inference模型
本案例使用humanseg_mobile_quant预训练模型,该模型已经是inference模型,不需要再执行模型导出步骤。如果不使用预训练模型,则执行上一章节`模型训练`中的`模型导出`将自己训练的模型导出为inference格式。 本案例使用humanseg_mobile_quant预训练模型,该模型已经是inference模型,不需要再执行模型导出步骤。如果不使用预训练模型,则执行上一章节`模型训练`中的`模型导出`将自己训练的模型导出为inference格式。
### 2. 将inference模型优化为PaddleLite模型 ### 2. 将inference模型优化为Paddle Lite模型
下载并解压 [模型优化工具opt](https://bj.bcebos.com/paddlex/deploy/lite/model_optimize_tool_11cbd50e.tar.gz),进入模型优化工具opt所在路径后,执行以下命令: 下载并解压 [模型优化工具opt](https://bj.bcebos.com/paddlex/deploy/lite/model_optimize_tool_11cbd50e.tar.gz),进入模型优化工具opt所在路径后,执行以下命令:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册