このトピックでは、Platform for AI (PAI) のデータ変換機能を使用して画像をTFRecordファイルに変換する方法について説明します。 この方法では、TFRecordファイルを使用して、PAIが提供するトレーニングコンポーネントを使用してモデルをトレーニングできます。 PAIのiTAGを使用してデータにラベルを付けると、システムはラベル付きデータセットを生成します。 次に、データ変換コンポーネントを呼び出して、ラベル付きデータセットをTFRecordファイルに変換できます。 他のプラットフォームを使用してデータにラベルを付ける場合は、PAIコマンドを実行して、ラベル付きデータをPAIでサポートされているラベル付きデータセットに変換する必要があります。 次に、ラベル付きデータセットをTFRecordファイルに変換できます。
SQL Scriptコンポーネント、MaxComputeクライアント、またはDataWorksのODPS SQLノードを使用して、PAIコマンドを実行できます。 詳細については、「MaxComputeクライアント (odpscmd) 」または「MaxCompute 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'PAIコマンドパラメータ
パラメーター | 必須 | 説明 | Format | デフォルト値 |
バケット | 不可 | Object Storage Service (OSS) バケットの名前。 名前はスラッシュ (/) で終わる必要があります。 複数のバケットを指定する場合は、バケット名をコンマ (,) で区切ります。 | "oss:// bucket_name/?role_arn=xxx&host=yyy" "oss:// bucket_1/?role_arn=xxx&host=yyy、oss:// bucket_2/" | Empty |
cmd | 可 | 実行する操作です。 変換する値を設定します。 | STRING | 変換 |
label_file | 可 | ラベル付きデータセットのOSSパス。 詳細については、「ラベル付きデータセット形式の概要」をご参照ください。 | oss:// your_bucket/xxx.csv | N/A |
convert_param_config | 不可 | 変換タスクに関する情報。 詳細については、次の表を参照してください。 convert_param_configをconvert_configに置き換えることもできます。 | -- parama valuea -- paramb valueb | "" |
output_tfrecord | 不可 | TFRecordファイルのOSSパス。 | oss:// your_dir /プレフィックス | "" |
クラスター | 不可 | 分散方式で変換を実行するために使用されるワーカーノードに関する情報。 | JSON文字列 | "{\" worker\":{\" count\":3, \" cpu\": 800, \" gpu\":0, \" memory\": 20000}}" |
次の表に、convert_param_configフィールドのオプションを示します。
オプション | 必須 | 説明 | Format | デフォルト値 |
model_type | 可 | 変換されたデータが適用されるモデルのタイプ。 有効な値:
説明 model_typeパラメーターの値がTEXT_END2ENDまたはTEXT_RECOGNITIONに設定されている場合、char_replace_map_pathおよびdefault_char_dict_pathパラメーターが有効になります。 model_typeパラメーターの値がVIDEO_CLASSIFICATIONに設定されている場合、decod_type、sample_fps、reshape_size、decode_batch_size、およびdecode_keep_sizeパラメーターが有効になります。 | STRING | N/A |
class_list_file | 不可 | カテゴリファイルのOSSパス。 ファイルにはカテゴリ名のリストが含まれています。 カテゴリ名は、以下のフォーマットで提示することができる。 | oss:// path/to/your/classlit | " |
test_ratio | 不可 | テストデータのセットを異なるサブセットに分割するために使用される比率。 値が0に設定されている場合、テストデータのセット全体がトレーニングに使用されます。 値が0.1に設定されている場合、テストデータの10% が検証に使用されます。 | FLOAT | 0.1 |
max_image_size | 不可 | 画像の長辺の最大ピクセル値。 このパラメーターを設定し、イメージのサイズが上限を超えると、イメージのサイズが変更されてTFRecordファイルに保存され、ストレージスペースが削減され、データの読み取りが高速化されます。 | INT | N/A |
max_test_image_size | 不可 | テストに使用される画像の長辺の最大ピクセル値。 このパラメーターの値は、max_image_sizeパラメーターの値と同じです。 このパラメーターは、テストデータの設定に使用されます。 | INT | ${max_image_size} |
default_class | 不可 | デフォルトのカテゴリの名前。 名前がclass_listに含まれていないカテゴリは、デフォルトのカテゴリと見なされます。 | STRING | なし |
error_class | 不可 | 無効なカテゴリの名前。 このカテゴリに属するオブジェクトまたはバウンディングボックスは、トレーニングには使用されません。 | STRING | N/A |
ignore_class | 不可 | モデル検出にのみ使用されるカテゴリの名前。 このカテゴリに属する境界ボックスは、トレーニングには使用されません。 | STRING | N/A |
converter_class | 不可 | 変換クラスの名前。 有効な値:
| STRING | paiラベリング形式 (旧バージョン) |
separator | 不可 | ラベルファイルを部分文字列に分割するためにsplit() メソッドで使用されるセパレータ。 | STRING | N/A |
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 | 不可 | カスタムコンバーターコードのHTTPまたはOSSパス。 例: http:// path/to/your/converter.py | STRING | N/A |
user_defined_generator_path | 不可 | カスタムジェネレーターコードのHTTPまたはOSSパス。 例: http:// path/to/your/generator.py | STRING | N/A |
generator_class | 不可 | カスタムジェネレータークラスの名前。 | STRING | N/A |
char_replace_map_path | 不可 | 文字マップ置換用のCSVファイルのOSSパス。 ファイルには、originalとreplacedという2つの列があります。
| STRING | N/A |
default_char_dict_path | 不可 | 文字をIDにマッピングするために使用されるファイルのOSSパス。 ファイルでは、各文字が1行を占めます。 文字のIDは、行番号から1を引いたものに等しい。 | STRING | N/A |
decode_type | 不可 | ビデオのデコードに使用される形式。 有効な値:
| INT | 4 |
sample_fps | 不可 | 1秒あたりのサンプリングで抽出されるフレーム数。 | FLOAT | 5 |
reshape_size | 不可 | 出力フレームのサイズ。 単位: ピクセル。 | INT | 224 |
decode_batch_size | 不可 | 同时にデコードされるフレームの数。 | INT | 10 |
decode_keep_size | 不可 | 異なるバッチ内の重複フレームの数。 | INT | 0 |