Skip to content

Commit 7a0a4e2

Browse files
authored
Merge pull request #1770 from cuicheng01/develop
polish docs
2 parents 3fd6830 + 94a1ee8 commit 7a0a4e2

20 files changed

+379
-159
lines changed

README.md

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,9 @@ PaddleX 3.0 集成飞桨生态优势能力,覆盖7大场景任务,构建 16
6161
- [数据标注](./docs/tutorials/data/annotation/README.md)
6262
- [数据校验](./docs/tutorials/data/dataset_check.md)
6363

64-
#### 3. 模型训练
65-
- [模型训练/评估](./docs/tutorials/base/README.md)
66-
- [模型优化](./docs/tutorials/base/model_optimize.md)
64+
#### 3. 模型训练/评估/推理
65+
- [模型训练/评估/推理](./docs/tutorials/base/README.md)
6766

68-
#### 4. 模型推理
69-
- [模型推理](./docs/tutorials/base/README.md)
7067

7168
### 二、模型产线开发工具 🔥
7269
本节将介绍 PaddleX3.0 模型产线的全流程开发流程,包括数据准备、模型训练/评估、模型推理的使用方法。PaddleX3.0 支持的模型产线可以参考 [PaddleX 模型产线列表](./docs/tutorials/pipelines/support_pipeline_list.md)

docs/tutorials/INSTALL.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ git clone https://gitee.com/paddlepaddle/PaddleX.git
8585

8686
参考下述命令,按提示操作,完成 PaddleX 依赖的安装。
8787

88-
<!-- 这里需要指明安装成功的状态, 廷权 -->
8988
```bash
9089
cd PaddleX
9190

@@ -95,6 +94,9 @@ pip install -e .
9594

9695
# 安装 PaddleX 相关依赖
9796
paddlex --install
97+
98+
# 完成安装后会有如下提示:
99+
# All packages are installed.
98100
```
99101

100102
**注 :** 在安装过程中,需要克隆 Paddle 官方模型套件,`--platform` 可以指定克隆源,可选 `github.com``gitee.com`,分别代表这些套件从 github 上和 gitee 上克隆,默认为 `github.com`

docs/tutorials/INSTALL_OTHER_DEVICES.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ docker run -it --name paddle-npu-dev -v $(pwd):/work \
2020
-e ASCEND_RT_VISIBLE_DEVICES="0,1,2,3,4,5,6,7" \
2121
registry.baidubce.com/device/paddle-npu:cann80RC1-ubuntu20-x86_64-gcc84-py39 /bin/bash
2222
```
23-
### 1.2 安装paddle包
23+
### 1.2 安装 paddle 包
2424
当前提供 Python3.9 的 wheel 安装包。如有其他 Python 版本需求,可以参考[飞桨官方文档](https://www.paddlepaddle.org.cn/install/quick)自行编译安装。
2525

2626
- 1.下载安装 Python3.9 的 wheel 安装包
@@ -59,7 +59,7 @@ docker run -it --name paddle-mlu-dev -v $(pwd):/work \
5959
-v /usr/bin/cnmon:/usr/bin/cnmon \
6060
registry.baidubce.com/device/paddle-mlu:ctr2.15.0-ubuntu20-gcc84-py310 /bin/bash
6161
```
62-
### 2.2 安装paddle包
62+
### 2.2 安装 paddle 包
6363
当前提供 Python3.10 的 wheel 安装包。有其他 Python 版本需求,可以参考[飞桨官方文档](https://www.paddlepaddle.org.cn/install/quick)自行编译安装。
6464

6565
- 1.下载安装 Python3.10 的wheel 安装包。
@@ -97,7 +97,7 @@ docker run -it --name=xxx -m 81920M --memory-swap=81920M \
9797
registry.baidubce.com/device/paddle-xpu:kylinv10-aarch64-gcc82 bash
9898
```
9999

100-
## 3.2 安装paddle包
100+
## 3.2 安装 paddle 包
101101
当前提供 Python3.10 的 wheel 安装包。有其他 Python 版本需求,可以参考[飞桨官方文档](https://www.paddlepaddle.org.cn/install/quick)自行编译安装。
102102

103103
- 1.安装 Python3.10 的 wheel 安装包

docs/tutorials/base/README.md

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ PaddleX 中每个模型都提供了模型开发的配置文件,用于设置相
2525

2626
更多超参数介绍,请参考 [PaddleX 超参数介绍](./hyperparameters_introduction.md)
2727

28-
**注:**
28+
**注:**
2929
- 以上参数可以通过追加令行参数的形式进行设置,如指定模式为模型训练:`-o Global.mode=train`;指定前 2 卡 GPU 训练:`-o Global.device=gpu:0,1`;设置训练轮次数为 10:`-o Train.epochs_iters=10`
3030
- 模型训练过程中,PaddleX 会自动保存模型权重文件,默认为`output`,如需指定保存路径,可通过配置文件中 `-o Global.output` 字段进行设置。
3131
- 在 OCR 和语义分割任务模块中,参数 `epochs_iters` 对应训练 Step 数,在其他任务模块中,参数 `epochs_iters` 对应训练 Epoch 数。
@@ -55,12 +55,20 @@ python main.py -c paddlex/configs/image_classification/PP-LCNet_x1_0.yaml \
5555
-o Predict.input_path="https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_image_classification_001.jpg"
5656
```
5757

58-
**注:** PaddleX 允许使用 wheel 包进行推理,在此处,当您验证好自己的模型之后,即使用 PaddleX 的 wheel 包进行推理,方便地将模型集成到您自己的项目中。模型推理方法请参考 [PaddleX 单模型开发工具](../tools/model_tools.md)
58+
**注:** PaddleX 允许使用 wheel 包进行推理,在此处,当您验证好自己的模型之后,即使用 PaddleX 的 wheel 包进行推理,方便地将模型集成到您自己的项目中。模型推理方法请参考 [PaddleX 单模型开发工具推理预测](../models/model_inference_tools.md)
5959

6060
## 4. 须知事项
61+
6162
### 4.1 训练须知事项
63+
6264
- 训练其他模型时,需要的指定相应的配置文件,模型和配置的文件的对应关系,可以详情[模型库](../models/support_model_list.md)
6365
- PaddleX 对您屏蔽了动态图权重和静态图权重的概念,在模型训练的过程中,会同时产出动态图和静态图的权重,在模型推理时,默认选择静态图权重推理。
64-
<!-- 这里需要补充说明,廷权 -->
66+
6567
### 4.2 训练产出解释
66-
<!-- 这里需要补充说明,廷权 -->
68+
69+
在完成模型训练后,所有产出保存在指定的输出目录(默认为`./output/`)下,通常有以下产出:
70+
71+
* train_result.json:训练结果记录文件,记录了训练任务是否正常完成,以及产出的权重指标、相关文件路径等;
72+
* train.log:训练日志文件,记录了训练过程中的模型指标变化、loss 变化等;
73+
* config.yaml:训练配置文件,记录了本次训练的超参数的配置;
74+
* .pdparams\.pdema\.pdopt\.pdstate\.pdiparams\.pdmodel:模型权重相关文件,包括网络参数、优化器、EMA、静态图网络参数、静态图网络结构等;

docs/tutorials/base/hyperparameters_introduction.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
# PaddleX 超参数介绍
2+
23
PaddleX 暴露了模型迭代中最常修改的参数,方便您在配置文件中或者命令行中进行修改。训练模型的基础配置和高级配置参数如下:
34

45
## 1. 基础参数
6+
57
对于非时序任务模块,基础参数包括`epochs_iters``batch_size``class_num``learning_rate`,相关的参数解释如下:
68
- `epochs_iters`:Epochs 或者 Steps,模型对训练数据的重复学习次数,一般来说,轮次越大,模型训练时间越长,模型精度越高,但是如果设置特别大,可能会导致模型过拟合。如果对轮次没有特别的要求,可以使用默认值进行训练。
79
- `batch_size`:批大小,由于训练数据量一般较大,模型每轮次的训练是分批读取数据的,批大小是每一批数据的数据量,和显存直接相关,批大小越大模型训练的速度越快,显存占用越高。
@@ -17,6 +19,7 @@ PaddleX 暴露了模型迭代中最常修改的参数,方便您在配置文件
1719
- `seq_len`:群组编号,须结合自己的数据设置指定群组编号的列名称, 如:group_id, 群组编号表示的是每个时序样本。
1820

1921
## 2. 进阶参数
22+
2023
- `resune_path`:断点训练权重:在模型训练过程中发生人为或意外终止的情况时,加载训练中断之前保存的断点权重路径,完成继续训练,避免算力资源浪费。
2124
- `pretrain_weight_path`:预训练权重:基于已经在大数据集上训练好的模型权重进行微调训练,可提高模型训练开始前的初始经验,提高训练效率。
2225
- `warmup_steps`:热启动步数(WarmUp Steps):在训练初始阶段以较小学习率缓慢增加到设置学习率的批次数量,该值的设置可以避免模型在初始阶段以较大学习率迭代模型最终破坏预训练权重,一定程度上提升模型的精度。
@@ -27,6 +30,13 @@ PaddleX 暴露了模型迭代中最常修改的参数,方便您在配置文件
2730
**注:****目标检测****实例分割**任务模块中,评估、保存间隔为统一参数 `eval_interval`
2831

2932
## 3. 更多参数
33+
3034
在 PaddleX 中,除了常见的参数修改之外,也支持您修改更多的参数。
31-
<!-- 这里简单解释不同config的逻辑,以及参数覆盖逻辑,廷权 -->
3235

36+
PaddleX 中的参数设置有三种方式,其优先级为:
37+
38+
1. 命令行追加 `-o` 参数,如:`-o Global.mode=train`
39+
2. 编辑 `paddlex/configs/` 目录下对应的 yaml 配置文件,如 `paddlex/configs/image_classification/ResNet50.yaml`
40+
3. 编辑 `paddlex/repo_apis/xxx_api/configs/` 目录下的 yaml 配置文件,如 `paddlex/repo_apis/PaddleClas_api/configs/ResNet50.yaml`
41+
42+
**基础参数****进阶参数**均可通过【1.】和【2.】方式修改,**更多参数**可以通过【3.】的方式修改,比如视觉类任务中需要修改训练图像尺寸等。

docs/tutorials/base/model_optimize.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/tutorials/data/README.md

Lines changed: 42 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,43 @@ python main.py -c paddlex/configs/image_classification/PP-LCNet_x1_0.yaml \
2222
-o Global.dataset_dir=./dataset/cls_flowers_examples
2323
```
2424

25-
执行上述命令后,PaddleX 会对数据集进行校验,并统计数据集的基本信息。相关信息会保存在当前目录的 `./output/check_dataset` 目录下。
25+
执行上述命令后,PaddleX 会对数据集进行校验,并统计数据集的基本信息。命令运行成功后会在log中打印出 `Check dataset passed !` 信息,同时相关产出会保存在当前目录的 `./output/check_dataset` 目录下,产出目录中包括可视化的示例样本图片和样本分布直方图。校验结果文件保存在 `./output/check_dataset_result.json`,校验结果文件具体内容为
26+
```
27+
{
28+
"done_flag": true,
29+
"check_pass": true,
30+
"attributes": {
31+
"label_file": "dataset/label.txt",
32+
"num_classes": 102,
33+
"train_samples": 1020,
34+
"train_sample_paths": [
35+
"check_dataset/demo_img/image_01904.jpg",
36+
"check_dataset/demo_img/image_06940.jpg"
37+
],
38+
"val_samples": 1020,
39+
"val_sample_paths": [
40+
"check_dataset/demo_img/image_01937.jpg",
41+
"check_dataset/demo_img/image_06958.jpg"
42+
]
43+
},
44+
"analysis": {
45+
"histogram": "check_dataset/histogram.png"
46+
},
47+
"dataset_path": "./dataset/cls_flowers_examples",
48+
"show_type": "image",
49+
"dataset_type": "ClsDataset"
50+
}
51+
```
52+
上述校验结果中,check_pass 为 True 表示数据集格式符合要求,其他部分指标的说明如下:
2653

27-
<!-- 这里需要增加输出的说明,以及产出的说明,畅达 -->
54+
- attributes.num_classes:该数据集类别数为 102;
55+
- attributes.train_samples:该数据集训练集样本数量为 1020;
56+
- attributes.val_samples:该数据集验证集样本数量为 1020;
57+
- attributes.train_sample_paths:该数据集训练集样本可视化图片相对路径列表;
58+
- attributes.val_sample_paths:该数据集验证集样本可视化图片相对路径列表;
59+
60+
另外,数据集校验还对数据集中所有类别的样本数量分布情况进行了分析,并绘制了分布直方图(histogram.png):
61+
![样本分布直方图](https://github.com/PaddlePaddle/PaddleX/assets/142379845/e2cada1f-337f-4062-8504-077c90a3b8da)
2862

2963
****:只有通过数据校验的数据才可以训练和评估。
3064

@@ -36,15 +70,12 @@ python main.py -c paddlex/configs/image_classification/PP-LCNet_x1_0.yaml \
3670
数据集校验相关的参数可以通过修改配置文件中 `CheckDataset` 下的字段进行设置,配置文件中部分参数的示例说明如下:
3771

3872
* `CheckDataset`:
39-
<!-- 这里需要增加详细的说明,比如图像分类这里不支持转换,也需要说明,畅达 -->
40-
* `dst_dataset_name`: 生成的数据集目录名,PaddleX 在数据校验时,会产生一个新的数据集;
41-
4273
* `convert`:
43-
* `enable`: 是否进行数据集格式转换
44-
* `src_dataset_type`: 如果进行数据集格式转换,则需设置源数据集格式;
74+
* `enable`: 是否进行数据集格式转换,图像分类不支持格式转换,默认为 `False`;
75+
* `src_dataset_type`: 如果进行数据集格式转换,则需设置源数据集格式,图像分类不支持数据转换,默认为 `null`
4576
* `split`:
46-
* `enable`: 是否进行重新划分数据集;
47-
* `train_percent`: 如果重新划分数据集,则需要设置训练集的百分比;
48-
* `val_percent`: 如果重新划分数据集,则需要设置验证集的百分比;
77+
* `enable`: 是否进行重新划分数据集,为 `True` 时进行数据集格式转换,默认为 `False`
78+
* `train_percent`: 如果重新划分数据集,则需要设置训练集的百分比,类型为0-100之间的任意整数,需要保证和 `val_percent` 值加和为100
79+
* `val_percent`: 如果重新划分数据集,则需要设置验证集的百分比,类型为0-100之间的任意整数,需要保证和 `train_percent` 值加和为100
4980

50-
以上参数同样支持通过追加命令行参数的方式进行设置,如重新划分数据集并设置训练集与验证集比例`-o CheckDataset.split=True -o CheckDataset.train_percent=0.8 -o CheckDataset.val_percent=0.2`
81+
数据转换和数据划分支持同时开启,对于数据划分原有标注文件会被在原路径下重命名为 `xxx.bak`以上参数同样支持通过追加命令行参数的方式进行设置,例如如重新划分数据集并设置训练集与验证集比例`-o CheckDataset.split.enable=True -o CheckDataset.split.train_percent=80 -o CheckDataset.split.val_percent=20`

docs/tutorials/data/annotation/README.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,5 @@
77
| 图像分类 | [文档链接](ClsAnnoTools.md) |
88
| 目标检测 | [文档链接](DetAnnoTools.md) |
99
| 语义分割 | [文档链接](SegAnnoTools.md) |
10-
| 实例分割 | [文档链接](InsSegAnnoTools.md) |
10+
| 实例分割 | [文档链接](InstSegAnnoTools.md) |
1111
| OCR/表格识别 | [文档链接](OCRAnnoTools.md) |
12-
13-
Lines changed: 103 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,103 @@
1-
# 单模型 Python API 推理文档
1+
# PaddleX 单模型推理 Python API 文档
2+
3+
PaddleX 预置了丰富的模型,并提供了 Python API 调用接口,可以方便的集成到其他项目中,或是实现多模型串联,自定义产线。
4+
5+
## 1. 安装 PaddleX
6+
7+
首先需要安装 PaddleX 的 wheel 包,安装方式请参考 [PaddleX 安装文档](../INSTALL.md)
8+
9+
## 2. Python API 介绍
10+
11+
使用 Python API 调用模型进行预测,仅需几行代码,如下示例:
12+
13+
```python
14+
from paddlex import PaddleInferenceOption, create_model
15+
16+
model_name = "PP-LCNet_x1_0"
17+
18+
# 实例化 PaddleInferenceOption 设置推理配置
19+
kernel_option = PaddleInferenceOption()
20+
kernel_option.set_device("gpu")
21+
22+
# 调用 create_model 函数实例化预测模型
23+
model = create_model(model_name=model_name, kernel_option=kernel_option)
24+
25+
# 调用预测模型 model 的 predict 方法进行预测
26+
result = model.predict({'input_path': "https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_image_classification_001.jpg"})
27+
```
28+
29+
具体来说,需要简单几步:1. 实例化 PaddleInferenceOption 进行推理相关设置;2. 调用 create_model 实例化预测模型对象;3. 调用预测模型对象的 predict 方法进行推理预测。
30+
31+
#### 1. 实例化 PaddleInferenceOption 进行推理相关设置
32+
33+
* set_deivce:设置推理设备;
34+
* 参数:
35+
* device_setting:str 类型,推理设备类型及卡号,设备类型支持可选 'gpu', 'cpu', 'npu', 'xpu', 'mlu',当使用加速卡时,支持指定卡号,如使用 0 号 gpu 卡:'gpu:0',默认为 'gpu:0';
36+
* 返回值:None
37+
38+
* set_run_mode:设置推理后端;
39+
* 参数:
40+
* run_mode:str 类型,推理后端,支持可选 'paddle','trt_fp32','trt_fp16','trt_int8','mkldnn','mkldnn_bf16',其中 'mkldnn' 仅当推理设备使用 CPU 时可选,默认为 'paddle';
41+
* 返回值:None
42+
43+
* set_cpu_threads:设置 CPU 加速库计算线程数,仅当推理设备使用 CPU 时候有效;
44+
* 参数:
45+
* cpu_threads:int 类型,CPU 推理时加速库计算线程数;
46+
* 返回值:None
47+
48+
* get_support_run_mode:获取支持的推理后端设置;
49+
* 参数:无;
50+
* 返回值:list 类型,可选的推理后端设置;
51+
52+
* get_support_device:获取支持的运行设备类型
53+
* 参数:无;
54+
* 返回值:list 类型,可选的设备类型;
55+
56+
* get_device:获取当前设置的设备;
57+
* 参数:无;
58+
* 返回值:str 类型
59+
60+
<!--
61+
* set_batch_size:设置推理批大小;
62+
* 参数:
63+
* batch_size:int 类型,推理的批大小;
64+
* 返回值:None
65+
66+
* set_min_subgraph_size:设置 TensorRT 后端的最小子图大小;
67+
* 参数:
68+
* min_subgraph_size:TensorRT 后端的最小子图大小,仅当使用 trt_fp32、trt_fp16、trt_int8 后端时有效;
69+
* 返回值:None
70+
71+
* set_shape_info_filename:
72+
* 参数:
73+
* shape_info_filename:
74+
* 返回值:None
75+
76+
* set_trt_calib_mode:
77+
* 参数:
78+
* trt_calib_mode
79+
* 返回值:None
80+
81+
* set_trt_use_static:
82+
* 参数:
83+
* trt_use_static
84+
* 返回值:None -->
85+
86+
#### 2. 调用 create_model 实例化预测模型对象
87+
88+
* create_model:实例化预测模型对象(BasePredictor)
89+
* 参数:
90+
* model_name:str 类型,模型名
91+
* kernel_option:PaddleInferenceOption 类型,表示模型预测相关设置
92+
* 返回值:BasePredictor 类型
93+
94+
#### 3. 调用预测模型对象的 predict 方法进行推理预测
95+
96+
* predict:使用定义的预测模型,对输入数据进行预测;
97+
* 参数:
98+
* input:dict 类型,传入待预测数据,字典的 key 可通过 get_input_keys 方法获得;
99+
* 返回值:dict 类型,包括待预测结果和预测数据等在内的数据,如 `{'input_path': 'a/b/c.jpg', 'image': ndarray(), 'cls_pred': [0.026 0.974], 'cls_result': [{'class_ids': [2, 1]}]}`,具体内容与模型及任务相关;
100+
101+
* get_input_keys:
102+
* 参数:无
103+
* 返回值:list 类型,表示 predict 方法的字典参数 input 所需指定的 key,如 `['path', 'size']` 表示字典参数 input 必须包含 `'path'``'size'` 两个 key,如 `[['input_path', 'size'], ['input_data']]` 表示字典参数 input 必须包含 `'input_path'``'size'` 两个 key,**或是**包含 `'input_data'`

docs/tutorials/models/model_inference_tools.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@
33
PaddleX 提供了丰富的单模型,其是完成某一类任务的子模块的最小单元,模型开发完后,可以方便地集成到各类系统中。PaddleX 中的每个模型提供了官方权重,支持通过命令行方式直接推理预测和调用 Python API 预测。命令行方式直接推理预测可以快速体验模型推理效果,而 Python API 预测可以方便地集成到自己的项目中进行预测。
44

55
## 1.安装 PaddleX
6-
在使用单模型开发工具之前,首先需要安装 PaddleX 的 wheel 包,安装方式请参考 [PaddleX 安装文档](./INSTALL.md)
6+
7+
在使用单模型开发工具之前,首先需要安装 PaddleX 的 wheel 包,安装方式请参考 [PaddleX 安装文档](../INSTALL.md)
78

89
## 2.PaddleX 单模型开发工具使用方式
910

@@ -20,10 +21,11 @@ model_name = "PP-LCNet_x1_0"
2021
kernel_option = PaddleInferenceOption()
2122
kernel_option.set_device("gpu")
2223

24+
# 调用 create_model 函数实例化预测模型
2325
model = create_model(model_name=model_name, kernel_option=kernel_option)
2426

25-
# 预测
27+
# 调用预测模型 model 的 predict 方法进行预测
2628
result = model.predict({'input_path': "https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_image_classification_001.jpg"})
2729
```
2830

29-
PaddleX 提供的所有模型均支持以上 Python API 的调用,关于模型列表,您可以参考 [PaddleX 模型列表](../models/support_model_list.md),关于 Python API 的更多介绍,您可以参考 [PaddleX 模型推理 API](../API.md)
31+
PaddleX 提供的所有模型均支持以上 Python API 的调用,关于模型列表,您可以参考 [PaddleX 模型列表](../models/support_model_list.md),关于 Python API 的更多介绍,您可以参考 [PaddleX 模型推理 API](model_inference_api.md)

0 commit comments

Comments
 (0)