通过端到端的文字识别训练算法组件获得的训练模型,能够检测识别任意角度、任意形状的文字。本文介绍端到端的文字识别训练算法组件的配置方法及使用示例。

前提条件

已开通OSS并完成授权,详情请参见开通OSS服务为PAI-Studio授予OSS访问权限

使用限制

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

算法简介

端到端文字识别算法是PAI团队自研的OCR算法,该算法能够检测识别任意角度、任意形状的文字,并且提供基于阿里巴巴的大数据进行训练的预训练模型,您只需要提供几百到1000张图片即可完成对应场景的文字检测识别。

端到端的文字识别训练组件位于组件库音视觉算法文件夹下的离线训练模型子文件夹。

可视化配置组件

  • 输入桩
    输入桩(从左到右) 限制数据类型 建议上游组件 是否必选
    训练数据 OSS 数据转tfrecord 否。

    如果没有通过输入桩配置该参数,也可以在字段设置页签的训练数据文件oss路径参数中配置。

    评估数据 OSS 数据转tfrecord 否。

    如果没有通过输入桩配置该参数,也可以在字段设置页签的评估数据oss路径参数中配置。

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

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

    评估数据oss路径

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

    如果同时通过输入桩和该参数配置了算法组件的评估数据,则优先使用输入桩配置的输入。
    是否使用预训练的模型 建议使用预训练模型,以提高训练模型的精度。
    预训练模型oss路径 如果有自己的预训练模型,则将该参数配置为自己预训练模型的OSS路径。如果没有配置该参数,则使用PAI提供的默认预训练模型。
    参数设置 检测模型使用的backbone 识别模型的网络名称,系统支持如下主流的识别模型:
    • resnet_v1_50
    • resnet_v1_101
    resnet_v1_50
    检测类别数目 分类类别的数量。 从数据集中分析得到
    anchor尺度 anchor框的大小,与Resize后的输入图片在一个尺度,因此设置大小时参考输入图片Resize后的大小。

    该参数目前只支持填写一个值,表示分辨率最高Layer的anchor大小,一共有5个Layer,后面每个Layer的anchor大小为前一Layer的2倍。例如32, 64, 128, 256, 512

    24
    anchor宽高比 anchor宽高比,多个值之间使用空格分隔。 0.2 0.5 1 2 5
    是否预测文字行朝向 选中是否预测文字行朝向复选框时,表示对文字行朝向进行预测,反之不进行预测。
    是否训练文字行朝向预测 选中是否训练文字行朝向预测复选框时,表示对文字行朝向进行训练,反之不进行训练。如果标注数据时您标注了文字方向,就可以选择对其进行训练。
    文字行朝向预测方式 系统支持以下预测方式:
    • normal:贪婪预测文字行方向。
    • unified:预测时将所有文字行朝向进行投票,得到统一的文字行方向。
    • smart_unified:预测时,去除高大于宽两倍的文字行朝向,将剩余文字行朝向进行投票,得到统一的文字行方向。
    normal
    文字行特征抽取器类型 系统支持以下类型:
    • fixed_height:表示固定高度特征提取。
    • fixed_size:表示固定宽高特征提取。
    • fixed_height_pyramid:表示固定高度金字塔。
    fixed_height
    文字行的宽高比 根据文字行特征抽取器类型的不同,文字行宽高比的含义如下:
    • 文字行特征抽取器类型fixed_size时,表示特征被Resize后的宽高比。
    • 文字行特征抽取器类型fixed_height时,表示特征Resize的最大宽高比约束。
    • 文字行特征抽取器类型fixed_height_pyramid时,表示固定高度缩放,但是特征使用多级金字塔特征。
    40.0
    识别分支的训练batch_size 文本行识别模型部分训练的批大小。 160
    识别分支中的norm类型 表示不同的归一化方式,支持以下取值:
    • batch_norm
    • group_norm
    group_norm
    编码器中的cnn类型 系统支持以下类型,您需要结合模型使用的backbone进行选择:
    • conv5_encoder:使用Resnet结构时选择该类型。
    • senet5_encoder:使用Se-Resnet结构时选择该类型。
    senet5_encoder
    编码器层数 通常指RNN或Attention层数,CNN不计算在内。 2
    编码器中RNN的类型 系统支持以下RNN类型:
    • bi:双向rnn encoder
    • uni:单向rnn encoder
    uni
    编码器中隐藏层神经元数目 编码器中隐藏层的神经元数量。 512
    编码器中rnn cell类型 编码器中RNN Cell类型,支持以下取值:
    • basic_lstm:lstm
    • layer_norm_basic_lstm:lstm加layernorm
    • gru
    • nas
    basic_lstm
    解码器类型 解码器类型,支持以下取值:
    • attention::attention decoder
    • ctc:ctc decoder
    attention
    解码器层数 解码器的层数。 2
    解码器中隐藏层神经元数目 解码器中隐藏层的神经元数目。 512
    解码器中的rnn cell类型 解码器中RNN Cell类型,支持以下取值:
    • basic_lstm:lstm
    • layer_norm_basic_lstm:lstm加layernorm
    • gru
    • nas
    basic_lstm
    字典的embedding大小 字典的Embedding大小。 64
    beam_width Beam Search中的Beam Width。 0
    length_penalty_weight Beam Search中的Length Penalty,用于避免短序列倾向。 0.0
    解码器中的attention类型 解码器中的Attention类型,支持以下取值:
    • luong
    • scaled_luong
    • bahdanau
    • normed_bahdanau
    normed_bahdanau
    图片缩放后的最短边大小 图片缩放后的最短边大小,单位为像素。 800
    图片缩放后的最长边大小 图片缩放后的最长边大小,单位为像素。 1200
    优化方法 模型训练的优化方法,支持以下取值:
    • momentum:指sgd
    • adam
    adam
    初始学习率 初始的学习率。 0.0001
    学习率调整策略
    系统支持以下调整策略:
    • exponential_decay:指数衰减,详细请参见exponential_decay
    • polynomial_decay:多项式衰减,详情请参见polynomial_decay。其中num_steps自动设置为总的训练迭代次数,end_learning_rateinitial_learning_rate的千分之一。
    • manual_step:人工指定各阶段的学习率,建议进阶用户使用。通过decay_epochs指定需要调整学习率的迭代轮数,通过learning_rates指定对应迭代轮数使用的学习率。
    exponential_decay
    decay_epoches

    学习率调整策略使用exponential_decaymanual_step时,需要配置该参数。

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

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

    40
    decay_factor exponential_decay时,需要配置该参数,表示学习率迭代过程的衰减比率。此时该参数同tf.train.exponential_decay 中的decay_factor,详情请参见exponential_decay 0.5
    staircase 学习率调整策略使用exponential_decay时,需要配置该参数。如果选中该复选框,则按照离散间隔进行学习率衰减,否则按照连续间隔进行学习率衰减。该参数同tf.train.exponential_decay 中的staircase,详情请参见exponential_decay
    训练batch_size 训练的批大小,即单次模型迭代或训练过程中使用的样本数量。 1
    评估batch_size 评估的批大小,即单次模型迭代或训练过程中使用的样本数量。 1
    总的训练迭代epoch轮数 总的训练迭代轮数。 20
    评估数据条目数 用于评估的数据条数,需要您根据评估集大小确定,故无默认值。
    评估过程可视化显示的样本数目 评估过程可视化显示的样本数量。 5
    保存checkpoint的频率 保存模型文件的频率。取值1表示对所有训练数据都进行一次迭代。 1
    执行调优 读取训练数据线程数 读取训练数据的线程数。 4
    单机或分布式 组件的运行模式,支持以下取值
    • 单机

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

    • 分布式
      表示运行引擎为分布式MaxCompute。此时您还需要配置以下参数:
      • worker个数:并发的worker数量。
      • CPU Core个数:每个Worker的CPU数目,取值100表示1核。
      • memory大小:每个Worker的内存大小,单位为MB。
    单机
  • 输出桩
    输出桩(从左到右) 数据类型 下游组件
    输出模型 OSS路径。该路径是您在字段设置页签的训练所用oss目录参数配置的OSS路径,训练生成的模型存储在该路径下。 通用图像预测

计算引擎

端到端的文字识别训练算法组件仅支持MaxCompute引擎。

示例

您可以使用端到端的文字识别训练算法组件构建如下工作流。端到端文字识别示例本示例中,您需要按照以下流程配置组件:
  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. 通过MaxCompute客户端的Tunnel命令将预测的输入数据集上传至MaxCompute,再将读数据表组件的表名参数配置为该MaxCompute表。关于MaxCompute客户端的安装及配置请参见MaxCompute客户端(odpscmd),关于Tunnel命令详情请参见Tunnel命令
  6. 通过通用图像预测组件进行离线推理,详情请参见通用图像预测
  7. 将预测的结果写入数据表中,详情请参见写数据表