PAI提供多种数据转换功能,可以将图片文件快速转换为TFRecord文件,从而使用训练组件进行模型训练。如果通过PAI智能标注平台进行数据标注,则系统会自动生成标记结果文件,您可以直接调用数据转换组件生成TFRecord文件。 如果通过其他平台进行数据标注,则需要使用PAI命令将标记文件转换为PAI标注文件。

图片分类或图片多标签分类

使用PAI命令将图片分类或图片多标签分类的标记文件转换为TFRecord的示例如下。
pai -name easy_vision_ext
      -Dbuckets='oss://{bucket_name}.{oss_host}/{path}/'
      -Darn='acs:ram::*******:role/aliyunodpspaidefaultrole'
      -DossHost='{oss_host}'
      -Dcmd  convert
      -Dlabel_file 'oss://{bucket_name}/path/to/your/{label_file}'
      -Dconvert_param_config '
        --class_list_file oss://{bucket_name}/path/to/your/{class_list_file}
        --max_image_size 600
        --write_parallel_num 8
        --num_samples_per_tfrecord 128
        --test_ratio 0.1
        --model_type CLASSIFICATION
      '
      -Doutput_tfrecord 'oss://{bucket_name}/path/to/output/data_prefix'
      -Dcluster='{
              \"worker\" : {
                \"count\" : 1,
                \"cpu\" : 800
              }
            }'

文字检测识别

使用PAI命令将文字检测识别的标记文件转换为TFRecord的示例如下。
pai -name easy_vision_ext
      -Dbuckets='oss://{bucket_name}.{oss_host}/{path}/'
      -Darn='acs:ram::*******:role/aliyunodpspaidefaultrole'
      -DossHost='{oss_host}'
      -Dcmd  convert
      -Dlabel_file 'oss://{bucket_name}/path/to/your/{label_file}'
      -Dconvert_param_config '
        --model_type TEXT_END2END
        --default_class text
        --max_image_size 2000
        --char_replace_map_path oss://{bucket_name}/path/to/your_char_replace_map
        --default_char_dict_path oss://{bucket_name}/path/to/your_char_dict
        --test_ratio 0.1
        --write_parallel_num 8
        --num_samples_per_tfrecord 64
      '
      -Doutput_tfrecord 'oss://pai-vision-data-hz/test/convert/recipt_text_end2end/data'

命令参数说明

参数 是否必选 描述 参数值格式 默认值
cmd 必须配置为convert STRING convert
buckets 可以输入多个Bucket,以英文逗号(,)分隔,每个Bucket必须须以正斜线(/)结尾。 “oss://bucket_name/?role_arn=xxx&host=yyy” “oss://bucket_1/?role_arn=xxx&host=yyy,oss://bucket_2/”
label_file PAI标注文件的OSS路径,具体格式说明请参见标注文件格式说明 oss://your_bucket/xxx.csv
convert_param_config 转换配置参数,详情请参见下方表格。该参数与convert_config参数选择其一即可。 —parama valuea —paramb valueb ””
output_tfrecord 输出TFRecord前缀。 oss://your_dir/prefix ””
cluster 分布式转换参数配置。 JSON格式字符串 “{\”worker\”:{\”count\”:3, \”cpu\”: 800, \”gpu\”:0, \”memory\”: 20000}}”
convert_param_config参数说明如下。
参数 是否必选 描述 参数值格式 默认值
model_type 转换数据用于何种模型训练,取值包括:
  • CLASSIFICATION :图像分类或多标签
  • DETECTION:物体检测
  • SEGMENTATION:语义分割
  • INSTANCE_SEGMENTATION:Instance分割
  • TEXT_END2END:端到端OCR
  • TEXT_RECOGNITION:单行文字识别
  • TEXT_DETECTION :文字检测
  • VIDEO_CLASSIFICATION :视频分类
  • SELF_DEFINED:自定义转换
说明 model_type取值为TEXT_END2ENDTEXT_RECOGNITION时,char_replace_map_pathdefault_char_dict_path参数生效。model_type取值为VIDEO_CLASSIFICATION时,decode_type sample_fpsreshape_sizedecode_batch_sizedecode_keep_size参数生效。
STRING
class_list_file 类别列表文件路径,文件内容每行格式为类别名 或类别名:映射类别名 oss://path/to/your/classlit ’’
test_ratio 测试数据分割比例。如果取值为0,则所有数据转换为训练数据。如果取值为0.1,则表示10%的数据作为验证集。 0.1 0.1
max_image_size 图片最大边限制。如果配置了该参数,则大图片会被Resize后存入TFRecord,从而节省存储、提高数据读取速度。 INT None,即不指定该参数
max_test_image_size max_image_size,用于配置测试数据。 INT ${max_image_size}
default_class 默认类别名称,在class_list中未找到的类别均会映射到该名称。 STRING None
error_class 错误类别名称,含有该类别的物体和Box会被过滤,不参与训练。 STRING None,即不指定该参数
ignore_class 忽略类别名称,只用于检测模型,含有该类别的Box在训练中会被忽略。 STRING None,即不指定该参数
converter_class 转换类名称。 STRING QinceConverter
seperator 分隔符,用于标记内容的Split。 STRING None,即不指定该参数
image_format TFRecord中图片的编码方式。 STRING jpg
read_parallel_num 读取并发数。 INT 10
write_parallel_num 写TFRecord并发数。 INT 1
num_samples_per_tfrecord 每个TFRecord保存图片数。 INT 256
user_defined_converter_path 自定义converter代码路径,支持HTTP或OSS路径。例如http://path/to/your/converter.py STRING
user_defined_generator_path 自定义generator代码路径,支持HTTP或OSS路径。例如http://path/to/your/generator.py STRING
generator_class 自定义generator类名 STRING
char_replace_map_path 字符映射替换文件。格式为CSV文件,包含如下两列:
  • original:原字符串。
  • replaced:替换字符串,即使用replaced替换original
STRING None,即不指定该参数。
default_char_dict_path 字符到id映射文件路径,每一行是一个字符, 第k行的字符id为k-1 STRING None,即不指定该参数。
decode_type 视频解码方式。取值范围为:
  • 1:Intra only
  • 2:Keyframe only
  • 3:Without bidir
  • 4:Decode all
INT 4
sample_fps 抽帧频率。 FLOAT 5
reshape_size 输出帧的大小。 INT 224
decode_batch_size 每次Decode步骤中的Batch大小。 INT 10
decode_keep_size 不同Batch中Overlap的帧数量。 INT 0