针对tfrecord格式的数据,您可以使用图像分类训练算法组件对其进行模型训练,从而获得用于推理的图像分类模型。本文介绍图像分类训练算法组件的配置方法及使用示例。

前提条件

已开通OSS并完成授权,详情请参见开通OSS服务PAI访问云产品授权:OSS

使用限制

仅PAI-Designer提供该算法组件。

算法简介

图像分类模块提供各种主流的卷积神经网络用于图像分类任务的训练,目前支持以下模型:
  • Resnet系列: resnet-v1、resnet-v2。
  • Inception系列:inception_v1、inception_v2、inception_v3、inception_v4。
  • Vgg系列:vgg_16、vgg_19。
  • MobileNet系列:mobilenet-v1、mobilenet-v2、mobilenet-v3。
  • EfficientNet

图像分类训练算法组件位于组件库音视觉算法文件夹下的离线训练模型子文件夹,最大支持对上亿规模图片进行分类训练。

可视化配置组件

  • 输入桩
    输入桩(从左到右) 限制数据类型 建议上游组件 是否必选
    训练数据 OSS 数据转tfrecord
    测试数据 OSS 数据转tfrecord
  • 组件参数
    页签 参数 是否必选 描述 默认值
    字段设置 训练所用oss目录 存储训练模型的OSS目录,例如oss://pai-online-shanghai.oss-cn-shanghai-internal.aliyuncs.com/test/test_image_inspection
    训练数据文件oss路径 如果没有通过输入桩配置算法组件的训练数据,则需要配置该参数,表示tfrecord格式的训练数据文件所在的OSS路径,支持通配符,例如oss://a/train*.tfrecord

    如果同时通过输入桩和该参数配置了算法组件的训练数据,则优先使用输入桩配置的输入。

    评估数据oss路径

    如果没有通过输入桩配置算法组件的评估数据,则需要配置该参数,表示tfrecord格式的评估数据文件所在的OSS路径,支持通配符,例如oss://a/test*.tfrecord

    如果同时通过输入桩和该参数配置了算法组件的评估数据,则优先使用输入桩配置的输入。
    label_map_path文件oss路径 类别列表文件,默认系统自动生成,因此您无需自己配置。
    是否使用预训练的模型 建议使用预训练模型,以提高训练模型的精度。
    预训练模型oss路径 如果有自己的预训练模型,则将该参数配置为自己预训练模型的OSS路径。如果没有配置该参数,则使用PAI提供的默认预训练模型。
    参数设置 识别模型网络 识别模型的网络名称,系统支持如下主流的识别模型:
    • vgg_16
    • vgg_19
    • inception_v1
    • inception_v2
    • inception_v3
    • inception_v4
    • mobilenet_v1
    • mobilenet_v2
    • resnet_v1_50
    • resnet_v1_101
    • resnet_v1_152
    resnet_v1_50
    分类类别数目 类别标签的数量。
    图片resize大小 图片Resize后的大小,单位为像素。 224
    是否使用crop进行数据增强 是否对输入图片进行裁剪。通常建议进行裁剪,以提升模型的训练精度和效率。
    是否针对每个类别单独做评估 在日志中,是否对每个类别进行单独评估,不影响训练结果。
    学习率调整策略 系统支持以下调整策略:
    • exponential_decay:指数衰减。
    • polynomial_decay:多项式衰减。其中num_steps自动设置为总的训练迭代次数,end_learning_rate为初始学习率的千分之一。
    • manual_step:人工指定各阶段的学习率,建议进阶用户使用。通过decay_epoches指定需要调整学习率的迭代轮数,通过epoch学习率指定对应迭代轮数使用的学习率。
    exponential_decay
    初始学习率 初始学习率。 0.01
    decay_epoches 学习率调整策略使用exponential_decaymanual_step时,需要配置该参数。

    如果学习率调整策略使用exponential_decay,则该参数对应tf.train.exponential_decay 中的decay_steps。系统会自动根据训练数据总数把decay_epoches转换为decay_steps,通常配置为总Epoch数的1/2。例如配置为10。

    如果学习率调整策略使用manual_step,则该参数表示需要调整学习率的迭代轮数。例如16 18表示在16 Epoch和18 Epoch对学习率进行调整。通常这两个值取总Epoch的8/10和9/10。

    10
    power 学习率调整策略使用polynomial_decay时,需要配置该参数,表示tf.train.polynomial_decay 中的power。
    decay_factor 学习率调整策略使用exponential_decay时,需要配置该参数,表示学习率迭代过程的衰减比率。此时该参数同tf.train.exponential_decay 中的decay_factor。 0.95
    staircase 学习率调整策略使用exponential_decay时,需要配置该参数。如果选中该复选框,则按照离散间隔进行学习率衰减,否则按照连续间隔进行学习率衰减。该参数同tf.train.exponential_decay 中的staircase。
    epoch 学习率 学习率调整策略使用manual_step时,需要配置该参数,表示将指定Epoch 学习率调整为多少。如果您指定的调整Epoch有两个,则需要在此填写两个对应的学习率。例如decay_epoches取值为20 40,则此处应该填写0.001 0.0001两个学习率,表示将20 Epoch的学习率调整为0.001,将40 Epoch学习率调整为0.0001。通常建议这几次调整的学习率依次设置为初始学习率的1/10、1/100、1/1000……
    训练batch_size 训练的批大小,即单次模型迭代或训练过程中使用的样本数量。 32
    评估batch_size 评估的批大小,即评估时单次模型迭代或训练过程中使用的样本数量。 32
    训练迭代轮数 训练的迭代轮数(Epoch)。 20
    评估数据条目数 训练过程中评估数据条目数。
    评估过程可视化显示的样本数目 评估过程可视化显示的样本数量。 5
    保存checkpoint的频率 保存Checkpoint的频率,以Epoch为单位。取值为1表示每完成一次训练就保存一次Checkpoint。 1
    执行调优 优化方法 模型训练的优化方法,支持以下取值:
    • momentum:指sgd
    • adam
    momentum
    读取训练数据线程数 读取训练数据的线程数量。 4
    单机或分布式(MaxCompute/DLC)
    组件运行的引擎,您可以结合实际情况选择。系统支持以下计算引擎:
    结合对训练模型的单机或分布式要求,系统支持以下取值:
    • 单机MaxCompute

      当运行引擎为单机MaxCompute时,您还需要配置是否使用GPU,取值100表示1张GPU卡。如果不使用GPU,则需要将是否使用GPU配置为0。

    • 分布式MaxCompute
      当运行引擎为分布式MaxCompute时,您还需要配置以下参数:
      • worker个数:并发的worker数量。
      • CPU Core个数:每个Worker的CPU数目,取值100表示1核。
      • memory大小:每个Worker的内存大小,单位为MB。
    • 单机DLC

      当运行引擎为单机DLC时,您还需要配置gpu机型选择参数,表示运行的GPU规格。

    • 分布式DLC
      当运行引擎为分布式DLC时,您还需要配置以下参数:
      • worker个数:并发的worker数量。
      • CPU机型选择:选择运行的CPU规格。
      • gpu机型选择:选择运行的GPU规格。
    单机MaxCompute
  • 输出桩
    输出桩(从左到右) 数据类型 下游组件
    输出模型 OSS路径。该路径是您在字段设置页签的训练所用oss目录参数配置的OSS路径,训练生成SavedModel格式的模型存储在该路径下。 通用图像预测

计算引擎

图像分类训练算法组件支持MaxCompute和PAI-DLC引擎。您可以在执行调优页签的单机或分布式(maxCompute/DLC)参数配置运行引擎。

评估指标

ClassificationEval代表所有类别一起统计的评价指标,ClassificationEval_ByCategory代表每个类别单独统计的评价指标

  • Accuracy: 准确率
  • Top5Accuracy: top5准确率
  • MacroPrecision: 宏平均精确率
  • MacroRecall: 宏平均召回率
  • MacroF1: 宏平均F1值
  • MicroPrecision:微平均精确率
  • MicroRecall: 微平均召回率
  • MicroF1: 微平均F1值
  • Precision: 精确率
  • Recall: 召回率
  • F1: F1值
关于宏平均和微平均指标介绍可以参考:宏平均与微平均指标介绍

示例

您可以使用图像分类训练算法组件构建如下工作流。图像分类训练示例本示例中,您需要按照以下流程配置组件:
  1. 通过PAI提供的智能标注模块进行图片标注,详情请参见处理标注任务
  2. 使用读OSS数据组件读取标注结果文件xxx.manifest,即配置读OSS数据组件的OSS数据路径参数为标注结果数据集的OSS路径。例如oss://pai-online-shanghai.oss-cn-shanghai.aliyuncs.com/ev_demo/xxx.manifest
  3. 通过数据转tfrecord组件将数据集拆分为tfrecord格式的训练数据和评估数据,详情请参见数据转tfrecord
  4. 将训练数据和评估数据接入图像分类训练算法组件,并配置具体参数,详情请参见上文的可视化配置组件
  5. 通过通用图像预测组件进行离线推理,详情请参见通用图像预测