|
@@ -1,9 +1,11 @@
|
|
|
-# PaddleX 模型训练、评估和推理
|
|
|
|
|
|
|
+# PaddleX 单模型开发工具
|
|
|
|
|
|
|
|
-在训练之前,请确保您的数据集已经经过了[数据校验](../data/README.md)。经过数据校验的数据集才可以进行训练。PaddleX 提供了很多不同的任务模块,不同的模块下又内置了很多被广泛验证的高精度、高效率、精度效率均衡的模型。训练模型时,您只需要一行命令,即可发起相应任务的训练。本文档提供了图像分类任务模块的 `PP-LCNet_x1_0` 模型的训练和评估示例,其他任务模块的训练与图像分类类似。当您按照[PaddleX 数据集标注](../data/annotation/README.md)和 [PaddleX 数据集校验](../data/dataset_check.md)准备好训练数据后,即可参考本文档完成所有 PaddleX 支持的模型训练。
|
|
|
|
|
|
|
+PaddleX 提供了丰富的单模型,其是完成某一类任务的子模块的最小单元,模型开发完后,可以方便地集成到各类系统中。PaddleX 中的每个模型提供了官方权重,支持通过命令行方式直接推理预测和调用 Python API 预测。命令行方式直接推理预测可以快速体验模型推理效果,而 Python API 预测可以方便地集成到自己的项目中进行预测。在使用单模型开发工具之前,首先需要安装 PaddleX 的 wheel 包,安装方式请参考 [PaddleX 安装文档](../INSTALL.md)。
|
|
|
|
|
|
|
|
## 1. 模型训练
|
|
## 1. 模型训练
|
|
|
|
|
|
|
|
|
|
+在训练之前,请确保您的数据集已经经过了[数据校验](../data/README.md)。经过数据校验的数据集才可以进行训练。PaddleX 提供了很多不同的任务模块,不同的模块下又内置了很多被广泛验证的高精度、高效率、精度效率均衡的模型。训练模型时,您只需要一行命令,即可发起相应任务的训练。本文档提供了图像分类任务模块的 `PP-LCNet_x1_0` 模型的训练和评估示例,其他任务模块的训练与图像分类类似。当您按照 [PaddleX 数据集标注](../data/annotation/README.md)和 [PaddleX 数据集校验](../data/dataset_check.md)准备好训练数据后,即可参考本文档完成所有 PaddleX 支持的模型训练。
|
|
|
|
|
+
|
|
|
完成 PaddleX 模型的训练,只需如下一条命令:
|
|
完成 PaddleX 模型的训练,只需如下一条命令:
|
|
|
|
|
|
|
|
```bash
|
|
```bash
|
|
@@ -23,7 +25,7 @@ PaddleX 中每个模型都提供了模型开发的配置文件,用于设置相
|
|
|
* `epochs_iters`:训练轮次数设置;
|
|
* `epochs_iters`:训练轮次数设置;
|
|
|
* `learning_rate`:训练学习率设置;
|
|
* `learning_rate`:训练学习率设置;
|
|
|
|
|
|
|
|
-更多超参数介绍,请参考 [PaddleX 超参数介绍](./hyperparameters_introduction.md)。
|
|
|
|
|
|
|
+更多超参数介绍,请参考 [PaddleX 超参数介绍](../base/hyperparameters_introduction.md)。
|
|
|
|
|
|
|
|
**注:**
|
|
**注:**
|
|
|
- 以上参数可以通过追加令行参数的形式进行设置,如指定模式为模型训练:`-o Global.mode=train`;指定前 2 卡 gpu 训练:`-o Global.device=gpu:0,1`;设置训练轮次数为 10:`-o Train.epochs_iters=10`。
|
|
- 以上参数可以通过追加令行参数的形式进行设置,如指定模式为模型训练:`-o Global.mode=train`;指定前 2 卡 gpu 训练:`-o Global.device=gpu:0,1`;设置训练轮次数为 10:`-o Train.epochs_iters=10`。
|
|
@@ -44,7 +46,7 @@ python main.py -c paddlex/configs/image_classification/PP-LCNet_x1_0.yaml \
|
|
|
|
|
|
|
|
**注:** 在模型评估时,需要指定模型权重文件路径,每个配置文件中都内置了默认的权重保存路径,如需要改变,只需要通过追加命令行参数的形式进行设置即可,如`-o Evaluate.weight_path=./output/best_model.pdparams`。
|
|
**注:** 在模型评估时,需要指定模型权重文件路径,每个配置文件中都内置了默认的权重保存路径,如需要改变,只需要通过追加命令行参数的形式进行设置即可,如`-o Evaluate.weight_path=./output/best_model.pdparams`。
|
|
|
|
|
|
|
|
-# 3. 模型推理
|
|
|
|
|
|
|
+## 3. 模型推理
|
|
|
|
|
|
|
|
在完成后,即可使用训练好的模型权重进行推理预测。使用 PaddleX 模型,通过命令行的方式进行推理预测,只需如下一条命令:
|
|
在完成后,即可使用训练好的模型权重进行推理预测。使用 PaddleX 模型,通过命令行的方式进行推理预测,只需如下一条命令:
|
|
|
|
|
|
|
@@ -55,7 +57,24 @@ python main.py -c paddlex/configs/image_classification/PP-LCNet_x1_0.yaml \
|
|
|
-o Predict.input_path="https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_image_classification_001.jpg"
|
|
-o Predict.input_path="https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_image_classification_001.jpg"
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
-**注:** PaddleX 允许使用 wheel 包进行推理,在此处,当您验证好自己的模型之后,即使用 PaddleX 的 wheel 包进行推理,方便地将模型集成到您自己的项目中。模型推理方法请参考 [PaddleX 单模型开发工具推理预测](../models/model_inference_tools.md)。
|
|
|
|
|
|
|
+**注:** PaddleX 允许使用 wheel 包进行模型集成,在此处,当您验证好自己的模型之后,即可使用 PaddleX 的 wheel 包进行推理,方便地将模型集成到您自己的项目中。集成方式如下:
|
|
|
|
|
+
|
|
|
|
|
+```python
|
|
|
|
|
+from paddlex import PaddleInferenceOption, create_model
|
|
|
|
|
+
|
|
|
|
|
+model_name = "PP-LCNet_x1_0"
|
|
|
|
|
+
|
|
|
|
|
+# 实例化 PaddleInferenceOption 设置推理配置
|
|
|
|
|
+kernel_option = PaddleInferenceOption()
|
|
|
|
|
+kernel_option.set_device("gpu:0")
|
|
|
|
|
+
|
|
|
|
|
+# 调用 create_model 函数实例化预测模型
|
|
|
|
|
+model = create_model(model_name=model_name, model_dir="/output/best_model", kernel_option=kernel_option)
|
|
|
|
|
+
|
|
|
|
|
+# 调用预测模型 model 的 predict 方法进行预测
|
|
|
|
|
+result = model.predict({'input_path': "https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/general_image_classification_001.jpg"})
|
|
|
|
|
+```
|
|
|
|
|
+关于 Python API 的更多介绍,您可以参考 [PaddleX 模型推理 API](model_inference_api.md)。
|
|
|
|
|
|
|
|
## 4. 须知事项
|
|
## 4. 须知事项
|
|
|
|
|
|
|
@@ -68,7 +87,10 @@ python main.py -c paddlex/configs/image_classification/PP-LCNet_x1_0.yaml \
|
|
|
|
|
|
|
|
在完成模型训练后,所有产出保存在指定的输出目录(默认为`./output/`)下,通常有以下产出:
|
|
在完成模型训练后,所有产出保存在指定的输出目录(默认为`./output/`)下,通常有以下产出:
|
|
|
|
|
|
|
|
-* train_result.json:训练结果记录文件,记录了训练任务是否正常完成,以及产出的权重指标、相关文件路径等;
|
|
|
|
|
-* train.log:训练日志文件,记录了训练过程中的模型指标变化、loss 变化等;
|
|
|
|
|
-* config.yaml:训练配置文件,记录了本次训练的超参数的配置;
|
|
|
|
|
-* .pdparams、.pdema、.pdopt.pdstate、.pdiparams、.pdmodel:模型权重相关文件,包括网络参数、优化器、EMA、静态图网络参数、静态图网络结构等;
|
|
|
|
|
|
|
+- `train_result.json`:训练结果记录文件,记录了训练任务是否正常完成,以及产出的权重指标、相关文件路径等;
|
|
|
|
|
+- `train.log`:训练日志文件,记录了训练过程中的模型指标变化、loss 变化等;
|
|
|
|
|
+- `config.yaml`:训练配置文件,记录了本次训练的超参数的配置;
|
|
|
|
|
+- `.pdparams`、`.pdema`、`.pdopt.pdstate`、`.pdiparams`、`.pdmodel`:模型权重相关文件,包括网络参数、优化器、EMA、静态图网络参数、静态图网络结构等;
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|