翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
オブジェクト検出 - MXNet
Amazon SageMaker Object Detection - MXNetアルゴリズムは、単一のディープニューラルネットワークを使用して、イメージ内のオブジェクトを検出して分類します。このアルゴリズムは、入力としてイメージを取得し、イメージシーン内のオブジェクトのすべてのインスタンスを識別する、教師あり学習アルゴリズムです。オブジェクトは、指定されたコレクション内のいずれかのクラスに分類され、そのクラスに属しているという信頼性スコアが付けられます。イメージ内のその場所とスケールは、長方形の境界ボックスで示されます。シングルショットマルチボックスディテクター (SSD)
トピック
オブジェクト検出アルゴリズムの入出力インターフェイス
SageMaker オブジェクト検出アルゴリズムは、ファイルモードでのトレーニング用に RecordIO (application/x-recordio
) と画像 (image/png
、、) の両方のapplication/x-image
コンテンツタイプをサポートしimage/jpeg
、パイプモードでのトレーニング用に RecordIO (application/x-recordio
) をサポートします。ただし、RecordIO ファイルを作成せずに、拡張マニフェスト形式を使用して、イメージファイル (image/png
、image/jpeg
、application/x-image
) を使用してパイプモードでトレーニングすることもできます。Amazon SageMaker オブジェクト検出アルゴリズムの推奨入力形式は Apache MXNet RecordIO application/x-image
のみがサポートされます。
注記
既存の深層学習フレームワークとの相互運用性を維持するために、これは他の Amazon SageMaker アルゴリズムで一般的に使用されている protobuf データ形式とは異なります。
データ形式の詳細については、オブジェクト検出サンプルノートブックを参照してください。
RecordIO 形式でトレーニングする
トレーニングに RecordIO 形式を使用する場合は、CreateTrainingJob
リクエストの InputDataConfig
パラメータの値としてトレーニングチャネルと検証チャネルの両方を指定します。1 つの RecordIO (.rec) ファイルを train チャネルで指定し、もう 1 つの RecordIO ファイルを validation チャネルで指定します。両方のチャネルのコンテンツタイプを application/x-recordio
に設定します。RecordIO ファイルを生成する方法の例は、オブジェクト検出サンプルノートブックにあります。MXNetの GluonCV
イメージ形式を使用してトレーニングする
トレーニングにイメージ形式を使用する場合は、train
、validation
、train_annotation
、validation_annotation
チャネルを CreateTrainingJob
リクエストの InputDataConfig
パラメータの値として指定します。トレーニングチャネルおよび検証チャネルの個々のイメージデータ (.jpg または .png ファイル) を指定します。注釈データには、 JSON形式を使用できます。train_annotation
チャネルと validation_annotation
チャネルで対応する .json ファイルを指定します。イメージタイプに基づいて、4 つすべてのチャネルのコンテンツタイプを image/png
または image/jpeg
に設定します。データセットに .jpg と .png の両方のイメージが含まれている場合は、コンテンツタイプ application/x-image
を使用することもできます。次は、.json ファイルの例です。
{ "file": "your_image_directory/sample_image1.jpg", "image_size": [ { "width": 500, "height": 400, "depth": 3 } ], "annotations": [ { "class_id": 0, "left": 111, "top": 134, "width": 61, "height": 128 }, { "class_id": 0, "left": 161, "top": 250, "width": 79, "height": 143 }, { "class_id": 1, "left": 101, "top": 185, "width": 42, "height": 130 } ], "categories": [ { "class_id": 0, "name": "dog" }, { "class_id": 1, "name": "cat" } ] }
各イメージは注釈用に .json ファイルを必要とし、.json ファイルは対応するイメージと同じ名前である必要があります。上記の .json ファイルの名前は "sample_image1.json" になります。注釈 .json ファイルには 4 つのプロパティが含まれています。"file" プロパティはイメージファイルの相対パスを指定します。例えば、トレーニングイメージと対応する .json ファイルが s3://your_bucket
/train/sample_image と s3://your_bucket
/train_annotation で、train チャネルと train_annotation チャネルのパスを s3:// として指定します。your_bucket
/train と s3://your_bucket
/train_annotation です。
.json ファイルでは、sample_image1.jpg という名前のイメージの相対パスは sample_image/sample_image1.jpg になります。"image_size"
プロパティはイメージ全体の寸法を指定します。 SageMaker オブジェクト検出アルゴリズムは現在、3 チャネルイメージのみをサポートしています。"annotations"
プロパティは、イメージ内のオブジェクトのカテゴリと境界ボックスを指定します。各オブジェクトには、"class_id"
インデックスと 4 つの境界ボックス座標 ("left"
、"top"
、"width"
、"height"
) によって注釈が付けられています。"left"
(x 座標) と "top"
(y 座標) の値は、境界ボックスの左上隅を表します。"width"
(x 座標) と "height"
(y 座標) の値は、境界ボックスの大きさを表します。原点 (0, 0) は、イメージ全体の左上隅です。1 つのイメージ内に複数のオブジェクトがある場合は、すべての注釈を単一の .json ファイルに含める必要があります。"categories"
プロパティには、クラスインデックスとクラス名の間のマッピングが保存されます。クラスインデックスは連続して番号付けされ、番号付けは 0 から始まります。注釈 .json ファイルの場合、"categories"
プロパティはオプションです。
拡張マニフェストイメージ形式でトレーニングする
拡張マニフェスト形式を使用すると、RecordIO ファイルを作成しなくても、イメージファイルを使用してパイプモードでトレーニングを行うことができます。CreateTrainingJob
リクエストの InputDataConfig
パラメータの値として、トレーニングチャネルと検証チャネルの両方を指定する必要があります。形式を使用している間、イメージとそれに対応する注釈のリストを含む S3 マニフェストファイルを生成する必要があります。マニフェストファイル形式は、各JSON行'source-ref'
タグを使用して指定します。注釈は、CreateTrainingJob
リクエストで指定されている "AttributeNames"
パラメータ値の下に入力します。metadata
タグの下に追加のメタデータを含めることもできますが、これらはアルゴリズムによって無視されます。次の例では、"AttributeNames
が ["source-ref", "bounding-box"]
リストに含まれています。
{"source-ref": "s3://your_bucket/image1.jpg", "bounding-box":{"image_size":[{ "width": 500, "height": 400, "depth":3}], "annotations":[{"class_id": 0, "left": 111, "top": 134, "width": 61, "height": 128}, {"class_id": 5, "left": 161, "top": 250, "width": 80, "height": 50}]}, "bounding-box-metadata":{"class-map":{"0": "dog", "5": "horse"}, "type": "groundtruth/object-detection"}} {"source-ref": "s3://your_bucket/image2.jpg", "bounding-box":{"image_size":[{ "width": 400, "height": 300, "depth":3}], "annotations":[{"class_id": 1, "left": 100, "top": 120, "width": 43, "height": 78}]}, "bounding-box-metadata":{"class-map":{"1": "cat"}, "type": "groundtruth/object-detection"}}
オブジェクト検出アルゴリズムをトレーニングする場合、入力ファイルの "AttributeNames"
の順番が重要になります。パイプ指定されたデータは特定の順で受け入れられます。image
が最初になり、その後に annotations
が続きます。したがって、この例のAttributeNames「」には、"source-ref"
最初に が提供され、次に が続きます"bounding-box"
。拡張マニフェストでオブジェクト検出を使用する場合は、RecordWrapperType
パラメータの値を "RecordIO"
として設定する必要があります。
拡張マニフェストファイルの詳細については、トレーニングジョブの拡張マニフェストファイルを参照してください。
段階的トレーニング
また、新しいモデルのトレーニングに、以前に でトレーニングしたモデルのアーティファクトをシードすることもできます SageMaker。インクリメンタルトレーニングでは、同じまたは類似のデータを使用して新しいモデルをトレーニングする場合のトレーニング時間を短縮できます。 SageMaker オブジェクト検出モデルは、 でトレーニングされた別の組み込みオブジェクト検出モデルでのみシードできます SageMaker。
事前トレーニング済みモデルを使用するには、CreateTrainingJob
リクエストで、InputDataConfig
パラメータに ChannelName
を "model" と指定します。モデルチャネルの ContentType
を application/x-sagemaker-model
に設定します。モデルチャネルにアップロードする新しいモデルと事前トレーニング済みモデルの両方の入力ハイパーパラメータの設定は、base_network
および num_classes
入力パラメータの設定と同じである必要があります。これらのパラメータはネットワークアーキテクチャーを定義します。事前トレーニング済みモデルファイルには、 による圧縮モデルアーティファクト (.tar.gz 形式) 出力を使用します SageMaker。入力データには、RecordIO 形式またはイメージ形式を使用できます。
段階的トレーニングの詳細とその使用方法については、Amazon で増分トレーニングを使用する SageMakerを参照してください。
EC2 オブジェクト検出アルゴリズムのインスタンスレコメンデーション
オブジェクト検出アルゴリズムはP2, P3, G4dnGPUインスタンスファミリーをサポートします。 G5 バッチサイズが大きいトレーニングには、メモリの大きいGPUインスタンスを使用することをお勧めします。オブジェクト検出アルゴリズムは、分散トレーニングのマルチGPUマシン設定とマルチマシン設定で実行できます。
推論には、 CPU (C5 や M5 など) インスタンスと GPU (P3 や G4dn など) インスタンスの両方を使用できます。
オブジェクト検出サンプルノートブック
SageMaker オブジェクト検出アルゴリズムを使用して でモデルをトレーニングおよびホストする方法を示すサンプルノートブックの場合
シングルショットマルチボックスディテクターアルゴリズムを使用した Caltech Birds (CUB 200 2011)
Amazon SageMaker Object Detection アルゴリズムの詳細については、次のブログ記事を参照してください。