1 Star 0 Fork 0

依然__依旧 / PaddleX

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
quick_start_API.md 8.87 KB
一键复制 编辑 原始数据 按行查看 历史
FlyingQianMM 提交于 2021-12-10 13:11 . add release note for 2.1.0

PaddleX API开发模式快速上手

通过简洁易懂的Python API,在兼顾功能全面性、开发灵活性、集成方便性的基础上,给开发者最流畅的深度学习开发体验。

目录

快速安装

以下安装过程默认用户已安装好paddlepaddle-gpu或paddlepaddle(版本大于或等于2.2.0),paddlepaddle安装方式参照飞桨官网

PaddleX 2.1.0安装

我们推荐大家先安装Anacaonda,而后在新建的conoda环境中使用上述pip安装方式。Anaconda是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项。使用Anaconda可以通过创建多个独立的Python环境,避免用户的Python环境安装太多不同版本依赖导致冲突。参考Anaconda安装PaddleX文档

  • Linux / macOS 操作系统

使用pip安装方式安装2.1.0版本:

pip install paddlex==2.1.0 -i https://mirror.baidu.com/pypi/simple

paddlepaddle已集成pycocotools包,但也有pycocotools无法随paddlepaddle成功安装的情况。因PaddleX依赖pycocotools包,如遇到pycocotools安装失败,可参照如下方式安装pycocotools:

pip install cython  
pip install pycocotools
  • Windows 操作系统 使用pip安装方式安装2.1.0版本:
pip install paddlex==2.1.0 -i https://mirror.baidu.com/pypi/simple

因PaddleX依赖pycocotools包,Windows安装时可能会提示Microsoft Visual C++ 14.0 is required,从而导致安装出错,点击下载VC build tools安装再执行如下pip命令

注意:安装完后,需要重新打开新的终端命令窗口

pip install cython
pip install git+https://gitee.com/jiangjiajun/philferriere-cocoapi.git#subdirectory=PythonAPI

PaddleX develop安装

github代码会跟随开发进度不断更新,可以安装develop分支的代码使用最新的功能,安装方式如下:

git clone https://github.com/PaddlePaddle/PaddleX.git
cd PaddleX
git checkout develop
pip install -r requirements.txt
python setup.py install

如遇到pycocotools安装失败,参考PaddleX 2.1.0安装中介绍的解决方法。

使用前置说明

PaddleX的模型训练

跟随以下3个步骤,即可快速完成训练代码开发:

步骤 说明
第1步 准备数据集 用于训练网络
第2步 定义transforms 用于定义模型训练、验证、预测过程中,
输入图像的预处理和数据增强操作
第3步 定义datasets 用于定义模型要加载的训练、验证数据集
第4步 定义模型开始训练 选择需要的模型,进行训练

注意:不同模型的transforms、datasets和训练参数都有较大差异。可直接根据模型训练教程获取更多模型的训练代码。

PaddleX的其它用法

使用示例

接下来展示如何通过PaddleX在一个小数据集上进行训练。示例代码源于Github tutorials/train/image_classification/mobilenetv3_small.py,用户可自行下载至本地运行。用户也可前往AIStudio在线项目示例学习体验。

1. 安装PaddleX

PaddleX的安装以及安装问题的解决可以参考PaddleX的安装文档

2. 准备蔬菜分类数据集

wget https://bj.bcebos.com/paddlex/datasets/vegetables_cls.tar.gz
tar xzvf vegetables_cls.tar.gz

3. 定义训练/验证图像处理流程transforms

因为训练时加入了数据增强操作,因此在训练和验证过程中,模型的数据处理流程需要分别进行定义。如下所示,代码在train_transforms中加入了RandomCropRandomHorizontalFlip两种数据增强方式, 更多方法可以参考数据增强文档

from paddlex import transforms as T
train_transforms = T.Compose([
    T.RandomCrop(crop_size=224),
    T.RandomHorizontalFlip(),
    T.Normalize()])

eval_transforms = T.Compose([
    T.ResizeByShort(short_size=256),
    T.CenterCrop(crop_size=224),
    T.Normalize()
])

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模型开始训练

本文档中使用百度基于蒸馏方法得到的MobileNetV3预训练模型,模型结构与MobileNetV3一致,但精度更高。PaddleX内置了20多种分类模型,查阅PaddleX 图像分类模型API了解更多分类模型。

num_classes = len(train_dataset.labels)
model = pdx.cls.MobileNetV3_small(num_classes=num_classes)

model.train(num_epochs=10,
            train_dataset=train_dataset,
            train_batch_size=32,
            eval_dataset=eval_dataset,
            lr_decay_epochs=[4, 6, 8],
            save_dir='output/mobilenetv3_small',
            use_vdl=True)

6. 训练过程使用VisualDL查看训练指标变化

训练过程中,模型在训练集和验证集上的指标均会以标准输出流形式输出到命令终端。当用户设定use_vdl=True时,也会使用VisualDL格式将指标打点到save_dir目录下的vdl_log文件夹,在终端运行如下命令启动visualdl并查看可视化的指标变化情况。

visualdl --logdir output/mobilenetv3_small --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/best_model')
result = model.predict('vegetables_cls/bocai/100.jpg')
print("Predict Result: ", result)

预测结果输出如下,

Predict Result:  [{'category_id': 0, 'category': 'bocai', 'score': 0.99960476}]

1
https://gitee.com/quanguanzhou/PaddleX.git
git@gitee.com:quanguanzhou/PaddleX.git
quanguanzhou
PaddleX
PaddleX
develop

搜索帮助