オブジェクトの検出 - Amazon SageMaker

オブジェクトの検出

アマゾン SageMaker オブジェクト検出アルゴリズムは、1 つの深層ニューラルネットワークを使用して、イメージ内のオブジェクトを検出および分類します。このアルゴリズムは、入力としてイメージを取得し、イメージシーン内のオブジェクトのすべてのインスタンスを識別する、教師あり学習アルゴリズムです。オブジェクトは、指定されたコレクション内のいずれかのクラスに分類され、そのクラスに属しているという信頼性スコアが付けられます。イメージ内のその場所とスケールは、長方形の境界ボックスで示されます。それはを使用しますシングルショットマルチボックス検出器 (SSD)フレームワークであり、次の 2 つのベースネットワークをサポートします。VGGGGそしてResNet。ネットワークはゼロからトレーニングすることも、ネットワークで事前にトレーニングされたモデルを使用してトレーニングすることもできますImageNetデータセット。

オブジェクト検出アルゴリズムの入出力インターフェイス

- SageMaker オブジェクト検出アルゴリズムは両方の RecordIO (application/x-recordio) と画像 (image/png,image/jpeg、およびapplication/x-image)ファイルモードでのトレーニング用のコンテンツタイプで、RecordIO をサポート(application/x-recordio)パイプモードでのトレーニング用。ただし、RecordIO ファイルを作成せずに、拡張マニフェスト形式を使用して、イメージファイル (image/pngimage/jpegapplication/x-image) を使用してパイプモードでトレーニングすることもできます。Amazonの推奨入力フォーマット SageMaker オブジェクト検出アルゴリズムはApache MXNet。ただし、.jpg または .png の形式で RAW イメージを使用することもできます。このアルゴリズムでは、推論に application/x-image のみがサポートされます。

注記

既存のディープラーニングフレームワークとの相互運用性を維持するために、これは他のAmazonで一般的に使用されているprotobufデータ形式とは異なります SageMakerアルゴリズム。

データ形式の詳細については、オブジェクト検出サンプルノートブックを参照してください。

RecordIO 形式でトレーニングする

トレーニングに RecordIO 形式を使用する場合は、CreateTrainingJob リクエストの InputDataConfig パラメータの値としてトレーニングチャネルと検証チャネルの両方を指定します。1 つの RecordIO (.rec) ファイルを train チャネルで指定し、もう 1 つの RecordIO ファイルを validation チャネルで指定します。両方のチャネルのコンテンツタイプを application/x-recordio に設定します。RecordIO ファイルを生成する方法の例は、オブジェクト検出サンプルノートブックにあります。MXNet の GluonCV のツールを使用して、PASCAL ビジュアルオブジェクトクラスCommon Objects in Context (COCO) などの一般的なデータセット用の RecordIO ファイルを生成することもできます。

イメージ形式を使用してトレーニングする

トレーニングにイメージ形式を使用する場合は、trainvalidationtrain_annotationvalidation_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 and s3://your_bucket/train_annotation に保存されている場合、train チャネルと train_annotation チャネルのパスを、それぞれ s3://your_bucket/train and 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 マニフェストファイルを生成する必要があります。マニフェストファイル形式は、各行が 1 つのサンプルを表す JSON Lines 形式になっている必要があります。イメージは、その S3 の場所を指す '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" と指定します。モデルチャネルの ContentTypeapplication/x-sagemaker-model に設定します。モデルチャネルにアップロードする新しいモデルと事前トレーニング済みモデルの両方の入力ハイパーパラメータの設定は、base_network および num_classes 入力パラメータの設定と同じである必要があります。これらのパラメータはネットワークアーキテクチャーを定義します。事前トレーニング済みモデルファイルには、次の方法で出力された圧縮モデルアーティファクト (.tar.gz 形式) を使用します。 SageMaker。入力データには、RecordIO 形式またはイメージ形式を使用できます。

段階的トレーニングの詳細とその使用方法については、Amazon の段階的トレーニング SageMakerを参照してください。

オブジェクト検出アルゴリズムの EC2 インスタンスに関する推奨事項

オブジェクト検出アルゴリズムは、P2、P3、G4Dn、G5 GPU インスタンスファミリーをサポートします。大きなバッチサイズのトレーニングにはメモリが多い GPU インスタンスを使用することをお勧めします。オブジェクト検出アルゴリズムをマルチ GPU およびマルチマシン設定で実行して、分散型トレーニングを行うことができます。

推論には CPU (C5 や M5 など) と GPU (P3 や G4dN など) の両方のインスタンスを使用できます。

オブジェクト検出サンプルノートブック

の使い方を示すサンプルノートブックについては SageMaker Object Detection algorithm to train and host a model on the

カリフォルニア工科大学バーズ (CUB 200 2011)シングルショットマルチボックス検出アルゴリズムを使用するデータセット。アマゾン SageMaker 鳥類の物体検出。でサンプルを実行するために使用できる Jupyter ノートブックインスタンスを作成してアクセスする方法の詳細については SageMaker、「」を参照してくださいAmazon SageMaker ノートブックインスタンスを使用する。ノートブックインスタンスを作成して開いたら、SageMaker 例タブをクリックして、すべての SageMaker サンプル。オブジェクト検出アルゴリズムを使用したオブジェクト検出例のノートブックは、「Introduction to Amazon Algorithms」セクションにあります。ノートブックを開くには、その [Use (使用)] タブをクリックして [Create copy (コピーを作成)] を選択します。