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 |