本文档在一个小数据集上展示了如何通过PaddleX进行训练,您可以阅读PaddleX的使用教程来了解更多模型任务的训练使用方式。本示例同步在AIStudio上,可直接在线体验模型训练
PaddleX的模型训练都分为以下几个步骤
1.定义训练/验证图像处理流程transforms
2.定义dataset加载数据集
3.定义模型开始训练
4.加载训练保存的模型进行预测
1. 安装PaddleX
安装相关过程和问题可以参考PaddleX的安装文档。
pip install paddlex -i https://mirror.baidu.com/pypi/simple
2. 准备蔬菜分类数据集
wget https://bj.bcebos.com/paddlex/datasets/vegetables_cls.tar.gz
tar xzvf vegetables_cls.tar.gz
3. 定义训练/验证图像处理流程transforms
使用PaddleX内置的分类模型训练图像处理流程ComposedClsTransforms,点击查看API文档说明。ComposedClsTransforms内置RandomHorizontalFlip图像增强,用户也可通过add_augmenters函数,为训练过程添加更多数据增强操作,目前分类过程支持多程数据增强操作,详情查阅数据增强文档
from paddlex.cls import transforms
train_transforms = transforms.ComposedClsTransforms(
mode='train',
crop_size=[224, 224])
eval_transforms = transforms.ComposedClsTransforms(
mode='eval',
crop_size=[224, 224])
通过add_augmenters添加更多训练过程中的数据增强操作,例如
train_transforms.add_augmenters([transforms.RandomDistort()])
4. 定义dataset加载图像分类数据集
定义数据集,pdx.datasets.ImageNet表示读取ImageNet格式的分类数据集
train_dataset = pdx.datasets.ImageNet(
data_dir='vegetables_cls',
file_list='vegetables_cls/train_list.txt',
label_list='vegetables_cls/labels.txt',
transforms=train_transforms,
shuffle=True)
eval_dataset = pdx.datasets.ImageNet(
data_dir='vegetables_cls',
file_list='vegetables_cls/val_list.txt',
label_list='vegetables_cls/labels.txt',
transforms=eval_transforms)
5. 使用MobileNetV3_small_ssld模型开始训练
本文档中使用百度基于蒸馏方法得到的MobileNetV3预训练模型,模型结构与MobileNetV3一致,但精度更高。PaddleX内置了20多种分类模型,查阅PaddleX模型库了解更多分类模型。
num_classes = len(train_dataset.labels)
model = pdx.cls.MobileNetV3_small_ssld(num_classes=num_classes)
model.train(num_epochs=20,
train_dataset=train_dataset,
train_batch_size=32,
eval_dataset=eval_dataset,
lr_decay_epochs=[4, 6, 8],
save_dir='output/mobilenetv3_small_ssld',
use_vdl=True)
6. 训练过程使用VisualDL查看训练指标变化
模型在训练过程中,训练指标和在验证集上的指标,均会以标准输出流形式,输出到命令终端。在用户设定use_vdl=True的前提下,也会使用VisualDL格式打点到save_dir目录下的vdl_log文件夹,用户可都终端通过如下命令启动visualdl,查看可视化的指标变化趋势。
visualdl --logdir output/mobilenetv3_small_ssld --port 8001
服务启动后,通过浏览器打开https://0.0.0.0:8001或https://localhost:8001即可。
如果您使用的是AIStudio平台进行训练,不能通过此方式启动visualdl,请参考AIStudio VisualDL启动教程使用
7. 加载训练保存的模型预测
模型在训练过程中,会每间隔一定轮数保存一次模型,在验证集上评估效果最好的一轮会保存在save_dir目录下的best_model文件夹。通过如下方式可加载模型,进行预测。
import paddlex as pdx
model = pdx.load_model('output/mobilenetv3_small_ssld/best_model')
result = model.predict('vegetables_cls/bocai/100.jpg')
print("Predict Result: ", result)
预测结果输出如下,
Predict Result: Predict Result: [{'score': 0.9999393, 'category': 'bocai', 'category_id': 0}]
更多使用教程