TFRecord数据转换

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

说明

您可以使用SQL脚本组件进行PAI命令调用,也可以使用MaxCompute客户端或DataWorks的开发节点进行PAI命令调用,详情请参见使用本地客户端(odpscmd)连接开发ODPS SQL任务

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

使用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://{bucket_name}/test/convert/recipt_text_end2end/data'

命令参数说明

参数

是否必选

描述

参数值格式

默认值

buckets

可以输入多个Bucket,以半角逗号(,)分隔,每个Bucket必须以正斜线(/)结尾。

“oss://bucket_name/?role_arn=xxx&host=yyy” “oss://bucket_1/?role_arn=xxx&host=yyy,oss://bucket_2/”

cmd

必须配置为convert

STRING

convert

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%的数据作为验证集。

FLOAT

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

转换类名称,取值包括:

  • pai itag labeling format:PAI iTAG标注平台产生的标注文件格式。

  • pai labeling format(old version):PAI标注平台产生的标注文件格式(旧版)。

  • qince labeling format:亲测平台产生的标注文件格式。

  • ssl labeling format:平台定义的图片自监督训练所需格式。

STRING

pai labeling format(old version)

seperator

分隔符,用于标记内容的Split。

STRING

None,即不指定该参数

image_format

TFRecord中图片的编码方式。常用图像编码方式如下所示:

  • jpg

  • png

  • bmp

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代码路径,支持HTTPOSS路径。例如http://path/to/your/converter.py

STRING

user_defined_generator_path

自定义generator代码路径,支持HTTPOSS路径。例如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行的字符IDk-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

不同BatchOverlap的帧数量。

INT

0