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 | 是 | 转换数据用于何种模型训练,取值包括:
说明 model_type取值为TEXT_END2END或 TEXT_RECOGNITION时,char_replace_map_path和default_char_dict_path参数生效。model_type取值为VIDEO_CLASSIFICATION时,decode_type、sample_fps、reshape_size、decode_batch_size及decode_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 | 否 | 转换类名称,取值包括:
| STRING | pai labeling format(old version) |
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文件,包含如下两列:
| STRING | None,即不指定该参数。 |
default_char_dict_path | 否 | 字符到ID映射文件路径,每一行是一个字符, 第k行的字符ID为k-1 | STRING | None,即不指定该参数。 |
decode_type | 否 | 视频解码方式。取值范围为:
| INT | 4 |
sample_fps | 否 | 抽帧频率。 | FLOAT | 5 |
reshape_size | 否 | 输出帧的大小。 | INT | 224 |
decode_batch_size | 否 | 每次Decode步骤中的Batch大小。 | INT | 10 |
decode_keep_size | 否 | 不同Batch中Overlap的帧数量。 | INT | 0 |