[Amazon SageMaker] オブジェクト検出で利用可能な3種類のデータ形式のそれぞれの指定方法
1 はじめに
CX事業本部の平内(SIN)です。
Amazon SageMaker(以下、SageMaker)の組み込みアルゴリズムである「オブジェクト検出」では、トレーニングの入力として以下の3種類のデータ形式が利用可能です。
形式 | 入力モード |
---|---|
RecordIO形式 | PIPE,FILE |
イメージ形式 | FILE |
拡張マニフェストイメージ形式 | PIPE |
今回は、コンソールからトレーニングジョブを作成する際のそれぞれの指定方法について整理してみました。
確認のために使用したデータは、以下のようなものです。
- 画像数 50
- ラベル (AHIRU×50、DOG×10)
2 RecordIO形式
(1) データセットの準備
RecordIO形式のデータは、以下の手順で作成しました。
[Amazon SageMaker] Amazon SageMaker Ground Truth で作成したデータをオブジェクト検出で利用可能なRecordIO形式に変換してみました
全データ: 50件 [0]DOG: 10件 [1]AHIRU: 50件 DOG => 8:2 残り:40件 AHIRU => 30:10 残り:0件 Train: 38件
「学習用38件」「検証用12件」のRecordIO形式のデータをS3に配置します。
- s3://sagemaker-working-bucket-001/DataSetSample/train.rec
- s3://sagemaker-working-bucket-001/DataSetSample/validation.rec
(2) データセットの指定
データセットの指定は、以下のとおりです。(その他はデフォルト値)
- Channel name
train及び、validation
- Content type
application/x-recordio
- S3 location
S3のURL
3 イメージ形式
(1) データセットの準備
イメージ形式のデータは、以下の手順で作成しました。
[Amazon SageMaker] Amazon SageMaker Ground Truth で作成したデータをオブジェクト検出で利用可能なイメージ形式に変換してみました
全データ: 50件 [0]DOG: 10件 [1]AHIRU: 50件 DOG => 8:2 残り:40件 AHIRU => 30:10 残り:0件
「学習用38件」「検証用12件」のイメージ形式のデータをS3に配置します。
- s3://sagemaker-working-bucket-001/DataSetSample/train (学習用画像)
- s3://sagemaker-working-bucket-001/DataSetSample/train_annotation(学習用アノテーション)
- s3://sagemaker-working-bucket-001/DataSetSample/validation(検証用画像)
- s3://sagemaker-working-bucket-001/DataSetSample/validation_annotation(検証用アノテーション)
(2) データセットの指定
データセットの指定は、以下のとおりです。(その他はデフォルト値)
- Channel name
train、train_annotation、validation及び、validation_annotation
- Content type
application/x-image
- S3 location
S3のURL
4 拡張マニフェストイメージ形式
(1) データセットの準備
データは、以下の手順で作成しました。
[Amazon SageMaker] Amazon SageMaker Ground Truth で作成したデータを使用してオブジェクト検出でモデルを作成してみました
全データ: 50件 [0]DOG: 10件 [1]AHIRU: 50件 DOG => train :8 validation :2 残り:40件 AHIRU => train :30 validation :10 残り:0件
「学習用38件」「検証用12件」のデータをS3に配置します。
- s3://sagemaker-working-bucket-001/DataSetSample/train
- s3://sagemaker-working-bucket-001/DataSetSample/validation
- s3://sagemaker-working-bucket-001/DataSetSample/images (画像ファイル)
※ 画像ファイルのURLは、train及び、validationのJSONの中で指定されるので、上記の関係位置である必要はありません。
(2) データセットの指定
データセットの指定は、以下のとおりです。(その他はデフォルト値)
- Channel name
train及び、validation
- input mode
Pipe
- Record wrapper
RecordIO
- S3 data type
AugmentedManifestFile
- AugumentedManifestFile attribute names
source-ref/AHIRU-Project
- S3 location
S3のURL
AugumentedManifestFile attribute namesに指定しているのは、JSONを読み込むための各属性です(最後の-metadataは必要ない)。今回のデータは、下記のようになっているので、「source-ref」と「AHIRU-Project」を指定しています。
{ "source-ref":"s3://xxxxxxx/xxxx.jpg", "AHIRU-Project":{ "annotations":[ (略) ], "image_size":[ (略) ] } "AHIRU-Project-metadata":{ "job-name":"xxxxx" (略) } }
S3 data typeの設定では、ManifestFileと間違わないように注意が必要です。 また、Record wrapperでRecordIOが無いと、うまく動作しませんでした。
5 最後に
今回は、オブジェクト検出のトレーニングをコンソール上から行う場合の、データの指定方法について整理してみました。
ちょっと、ハマったのは、「拡張マニフェストイメージ形式」の場合に、Record wrapperでRecordIOを指定しないとうまく動作しなかったところです。改めてドキュメントを読み直すと、ちゃんと書いてありました・・・
6 参考にさせて頂いたリンク
Amazon SageMaker Ground Truth でラベル付けしたデータセットを使用して、モデルを簡単にトレーニングする