

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# オブジェクト検出 - MXNet
<a name="object-detection"></a>

Amazon SageMaker AI オブジェクト検出 - MXNet アルゴリズムは、単一の深層ニューラルネットワークを使用して、イメージ内のオブジェクトを検出および分類します。このアルゴリズムは、入力としてイメージを取得し、イメージシーン内のオブジェクトのすべてのインスタンスを識別する、教師あり学習アルゴリズムです。オブジェクトは、指定されたコレクション内のいずれかのクラスに分類され、そのクラスに属しているという信頼性スコアが付けられます。イメージ内のその場所とスケールは、長方形の境界ボックスで示されます。[シングルショットマルチボックス検出器 (SSD)](https://arxiv.org/pdf/1512.02325.pdf) フレームワークが使用され、[VGG](https://arxiv.org/pdf/1409.1556.pdf) と [ResNet](https://arxiv.org/pdf/1603.05027.pdf) の 2 つの基本ネットワークがサポートされます。ネットワークはゼロからトレーニングすることも、[ImageNet](http://www.image-net.org/) データセットで事前トレーニングされたモデルでトレーニングすることもできます。

**Topics**
+ [オブジェクト検出アルゴリズムの入出力インターフェイス](#object-detection-inputoutput)
+ [オブジェクト検出アルゴリズムの EC2 インスタンスに関する推奨事項](#object-detection-instances)
+ [オブジェクト検出サンプルノートブック](#object-detection-sample-notebooks)
+ [オブジェクト検出の仕組み](algo-object-detection-tech-notes.md)
+ [オブジェクト検出ハイパーパラメータ](object-detection-api-config.md)
+ [オブジェクト検出モデルを調整する](object-detection-tuning.md)
+ [オブジェクト検出リクエストとレスポンスの形式](object-detection-in-formats.md)

## オブジェクト検出アルゴリズムの入出力インターフェイス
<a name="object-detection-inputoutput"></a>

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

**注記**  
既存の深層学習フレームワークとの高い相互運用性を維持するために、これは他の Amazon SageMaker AI アルゴリズムによって一般に使用される protobuf データ形式とは異なります。

データ形式の詳細については、[オブジェクト検出サンプルノートブック](#object-detection-sample-notebooks)を参照してください。

### RecordIO 形式でトレーニングする
<a name="object-detection-recordio-training"></a>

トレーニングに RecordIO 形式を使用する場合は、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html) リクエストの `InputDataConfig` パラメータの値としてトレーニングチャネルと検証チャネルの両方を指定します。1 つの RecordIO (.rec) ファイルを train チャネルで指定し、もう 1 つの RecordIO ファイルを validation チャネルで指定します。両方のチャネルのコンテンツタイプを `application/x-recordio` に設定します。RecordIO ファイルを生成する方法の例は、オブジェクト検出サンプルノートブックにあります。[MXNet の GluonCV](https://gluon-cv.mxnet.io/build/examples_datasets/recordio.html) のツールを使用して、[PASCAL ビジュアルオブジェクトクラス](http://host.robots.ox.ac.uk/pascal/VOC/)や [Common Objects in Context (COCO)](http://cocodataset.org/#home) などの一般的なデータセット用の RecordIO ファイルを生成することもできます。

### イメージ形式を使用してトレーニングする
<a name="object-detection-image-training"></a>

トレーニングにイメージ形式を使用する場合は、`train`、`validation`、`train_annotation`、`validation_annotation` チャネルを [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html) リクエストの `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\$1image1.json" になります。注釈 .json ファイルには 4 つのプロパティが含まれています。"file" プロパティはイメージファイルの相対パスを指定します。例えば、トレーニングイメージとそれに対応する .json ファイルが s3://*your\$1bucket*/train/sample\$1image and s3://*your\$1bucket*/train\$1annotation に保存されている場合、train チャネルと train\$1annotation チャネルのパスを、それぞれ s3://*your\$1bucket*/train and s3://*your\$1bucket*/train\$1annotation に指定します。

.json ファイルでは、sample\$1image1.jpg という名前のイメージの相対パスは sample\$1image/sample\$1image1.jpg になります。`"image_size"` プロパティはイメージ全体の寸法を指定します。SageMaker AI オブジェクト検出アルゴリズムは現在、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"` プロパティはオプションです。

### 拡張マニフェストイメージ形式でトレーニングする
<a name="object-detection-augmented-manifest-training"></a>

拡張マニフェスト形式を使用すると、RecordIO ファイルを作成しなくても、イメージファイルを使用してパイプモードでトレーニングを行うことができます。[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html) リクエストの `InputDataConfig` パラメータの値として、トレーニングチャネルと検証チャネルの両方を指定する必要があります。形式を使用している間、イメージとそれに対応する注釈のリストを含む S3 マニフェストファイルを生成する必要があります。マニフェストファイル形式は、各行が 1 つのサンプルを表す [JSON Lines](http://jsonlines.org/) 形式になっている必要があります。イメージは、その S3 の場所を指す `'source-ref'` タグを使用して指定します。注釈は、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html) リクエストで指定されている `"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"` として設定する必要があります。

拡張マニフェストファイルの詳細については、[トレーニングジョブの拡張マニフェストファイル](augmented-manifest.md)を参照してください。

### 段階的トレーニング
<a name="object-detection-incremental-training"></a>

SageMaker AI で以前にトレーニングしたモデルのアーティファクトを使用して、新しいモデルのトレーニングをシードすることもできます。段階的トレーニングでは、同じモデルまたは類似のデータを使用して新しいモデルをトレーニングする際のトレーニング時間が短縮されます。SageMaker AI オブジェクト検出モデルは、SageMaker AI でトレーニングされた別の組み込みオブジェクト検出モデルでのみシードできます。

事前トレーニング済みモデルを使用するには、[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html) リクエストで、`InputDataConfig` パラメータに `ChannelName` を "model" と指定します。モデルチャネルの `ContentType` を `application/x-sagemaker-model` に設定します。モデルチャネルにアップロードする新しいモデルと事前トレーニング済みモデルの両方の入力ハイパーパラメータの設定は、`base_network` および `num_classes` 入力パラメータの設定と同じである必要があります。これらのパラメータはネットワークアーキテクチャーを定義します。事前トレーニング済みモデルファイルには、SageMaker AI によって出力された圧縮モデルアーティファクト (.tar.gz 形式) を使用します。入力データには、RecordIO 形式またはイメージ形式を使用できます。

段階的トレーニングの詳細とその使用方法については、[Amazon SageMaker AI の段階的トレーニングを使用する](incremental-training.md)を参照してください。

## オブジェクト検出アルゴリズムの EC2 インスタンスに関する推奨事項
<a name="object-detection-instances"></a>

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

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

## オブジェクト検出サンプルノートブック
<a name="object-detection-sample-notebooks"></a>

SageMaker AI オブジェクト検出アルゴリズムを使用して、

シングルショットマルチボックス検出器を使った [Caltech Birds (CUB 200 2011)](http://www.vision.caltech.edu/datasets/cub_200_2011/) データセットでモデルをトレーニングおよびホストする方法を示すサンプルノートブックについては、「[Amazon SageMaker AI Object Detection for Bird Species](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/object_detection_birds/object_detection_birds.html)」を参照してください。SageMaker AI でサンプルを実行するために使用できる Jupyter ノートブックインスタンスを作成してアクセスする方法の詳細については、「[Amazon SageMaker ノートブックインスタンス](nbi.md)」を参照してください。ノートブックインスタンスを作成して開いたら、**[SageMaker AI サンプル]** タブを選択して、すべての SageMaker AI サンプルのリストを表示します。オブジェクト検出アルゴリズムを使用したオブジェクト検出例のノートブックは、「**Introduction to Amazon Algorithms**」セクションにあります。ノートブックを開くには、その [**Use (使用)**] タブをクリックして [**Create copy (コピーを作成)**] を選択します。

Amazon SageMaker AI オブジェクト検出アルゴリズムの詳細については、次のブログ記事を参照してください。
+ [Amazon SageMaker AI オブジェクト検出モデルのトレーニングと での実行 AWS IoT Greengrass – パート 1/3: トレーニングデータの準備](https://aws.amazon.com/blogs/iot/sagemaker-object-detection-greengrass-part-1-of-3/)
+ [Amazon SageMaker AI オブジェクト検出モデルのトレーニングと での実行 AWS IoT Greengrass – パート 2/3: カスタムオブジェクト検出モデルのトレーニング](https://aws.amazon.com/blogs/iot/sagemaker-object-detection-greengrass-part-2-of-3/)
+ [Amazon SageMaker AI オブジェクト検出モデルのトレーニングと での実行 AWS IoT Greengrass — パート 3/3: エッジへのデプロイ](https://aws.amazon.com/blogs/iot/sagemaker-object-detection-greengrass-part-3-of-3/)

# オブジェクト検出の仕組み
<a name="algo-object-detection-tech-notes"></a>

オブジェクト検出アルゴリズムは、既知のオブジェクトカテゴリの集合から、イメージ内のオブジェクトのすべてのインスタンスを識別し、特定します。アルゴリズムはイメージを入力として受け取り、オブジェクトが属するカテゴリと、そのカテゴリに属する信頼性スコアを出力します。アルゴリズムはさらに、長方形の境界ボックスを使用してオブジェクトの位置とスケールを予測します。Amazon SageMaker AI オブジェクト検出は、分類タスク用に事前にトレーニングされた畳み込みニューラルネットワーク (CNN) を基本ネットワークとして使用する[シングルショットマルチボックス検出器 (SSD)](https://arxiv.org/pdf/1512.02325.pdf) アルゴリズムを使用します。SSD は、中間レイヤーの出力を検出用の特徴として使用します。

[VGG](https://arxiv.org/pdf/1409.1556.pdf) や [ResNet](https://arxiv.org/pdf/1603.05027.pdf) などのさまざまな CNN が、イメージ分類タスクで優れたパフォーマンスを達成しています。Amazon SageMaker AI オブジェクト検出は、SSD の基本ネットワークとして VGG-16 と ResNet-50 の両方をサポートしています。アルゴリズムは完全トレーニングモードまたは転移学習モードでトレーニングできます。完全トレーニングモードでは、基本ネットワークはランダムな重みで初期化されてから、ユーザーデータでトレーニングされます。転移学習モードでは、基本ネットワークの重みは事前トレーニング済みモデルからロードされます。

オブジェクト検出アルゴリズムは、反転、再スケール、ジッターなどの標準データオーグメンテーションオペレーションをオンザフライで内部的に使用することにより、オーバーフィットの回避に役立ちます。

# オブジェクト検出ハイパーパラメータ
<a name="object-detection-api-config"></a>

[https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html) リクエストで、使用するトレーニングアルゴリズムを指定します。トレーニングデータセットからモデルのパラメータを推定するのに役立つ、アルゴリズム固有のハイパーパラメータを指定することもできます。次の表に、Amazon SageMaker AI によって提供されるオブジェクト検出アルゴリズムのトレーニング用のハイパーパラメータを示します。オブジェクトトレーニングの仕組みについては、[オブジェクト検出の仕組み](algo-object-detection-tech-notes.md)を参照してください。


| Parameter Name | 説明 | 
| --- | --- | 
| num\$1classes |  出力クラスの数。このパラメータは、ネットワーク出力のディメンションを定義し、通常はデータセット内のクラス数に設定されます。 **必須** 有効な値: 正の整数  | 
| num\$1training\$1samples |  入力データセット内のトレーニング例の数。  この値とトレーニングセット内のサンプル数が一致しない場合、`lr_scheduler_step` パラメータの動作は未定義になり、分散トレーニングの精度に影響することがあります。  **必須** 有効な値: 正の整数  | 
| base\$1network |  使用する基本ネットワークアーキテクチャー。 **オプション** 有効な値: 'vgg-16' または 'resnet-50' デフォルト値: 'vgg-16'  | 
| early\$1stopping |  トレーニング中に早期停止ロジックを使用する場合は `True`。使用しない場合は `False`。 **オプション** 有効な値: `True` または `False` デフォルト値: `False`  | 
| early\$1stopping\$1min\$1epochs |  早期停止ロジックを呼び出す前に実行する必要があるエポックの最小数。`early_stopping` = `True` の場合にのみ使用されます。 **オプション** 有効な値: 正の整数 デフォルト値: 10  | 
| early\$1stopping\$1patience |  `early_stopping_tolerance` ハイパーパラメータで定義されているように、関連するメトリクスが改善されない場合に、トレーニングを終了するまでに待機するエポックの数。`early_stopping` = `True` の場合にのみ使用されます。 **オプション** 有効な値: 正の整数 デフォルト値: 5  | 
| early\$1stopping\$1tolerance |  早期停止を回避するためには、`validation:mAP` の相対的な改善、平均精度の平均 (mAP) が超える必要がある許容値。mAP の変化を前回の mAP の最高値で除算した比率が、設定された `early_stopping_tolerance` 値より小さい場合、早期停止は改善がないと見なします。`early_stopping` = `True` の場合にのみ使用されます。 **オプション** 有効な値: 0 ≤ 浮動小数点数 ≤ 1 デフォルト値: 0.0  | 
| image\$1shape |  入力イメージのイメージサイズ。入力イメージをこのサイズの正方形のイメージに拡大縮小します。パフォーマンスを向上させるために 300 と 512 を使用することをお勧めします。 **オプション** 有効な値: 正の整数 ≥300 デフォルト: 300  | 
| epochs |  トレーニングエポックの数。 **オプション** 有効な値: 正の整数 デフォルト: 30  | 
| freeze\$1layer\$1pattern |  基本ネットワーク内のフリーズレイヤーの正規表現 (regex)。たとえば、`freeze_layer_pattern` = `"^(conv1_\|conv2_).*"` と設定した場合、名前に `"conv1_"` または `"conv2_"` が含まれているレイヤーはフリーズされます。つまり、これらのレイヤーの重みはトレーニング中に更新されません。レイヤー名は、ネットワークシンボルファイル [vgg16-symbol.json](http://data.mxnet.io/models/imagenet/vgg/vgg16-symbol.json ) および [resnet-50-symbol.json](http://data.mxnet.io/models/imagenet/resnet/50-layers/resnet-50-symbol.json) で確認できます。レイヤーを凍結すると、そのウェイトをさらに変更することはできなくなります。これにより、正確性が少し失われる代わりにトレーニング時間が大幅に減ります。この手法は、基本レイヤーの低いレイヤーを再トレーニングする必要がない転送学習で一般的に使用されます。 **オプション** 有効な値: 文字列 デフォルト: レイヤーのフリーズなし。  | 
| kv\$1store |  分散トレーニングに使用される重み更新同期モード。重みは、複数マシン間で同期的または非同期的に更新できます。同期更新は、一般には非同期更新よりも精度が高くなりますが、低速な可能性があります。詳細については、MXNet チュートリアルの「[Distributed Training (分散トレーニング)](https://mxnet.apache.org/api/faq/distributed_training)」を参照してください。  このパラメータは、単一のマシントレーニングには適用されません。  **オプション** 有効な値: `'dist_sync'` または `'dist_async'` [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/object-detection-api-config.html) デフォルト: -  | 
| label\$1width |  トレーニングデータと検証データを同期するために使用される強制パディングラベル幅。たとえば、データ内の 1 つのイメージに最大 10 個のオブジェクトが含まれ、各オブジェクトの注釈が 5 つの数字 [class\$1id, left, top, width, height] で指定されている場合、`label_width` は (10\$15 \$1 ヘッダー情報の長さ) 以上になります。ヘッダー情報の長さは通常 2 です。トレーニングには少し大きい `label_width` (この例では 60 など) を使用することをお勧めします。 **オプション** 有効な値: データ内の最大長の注釈情報に対応できる大きさの正の整数。 デフォルト: 350  | 
| learning\$1rate |  最初の学習レート。 **オプション** 有効な値: (0, 1] の浮動小数点数 デフォルト: 0.001  | 
| lr\$1scheduler\$1factor |  学習レートを下げる割合。`lr_new` = `lr_old` \$1 `lr_scheduler_factor` として定義されている `lr_scheduler_step` パラメータと一緒に使用します。 **オプション** 有効な値: (0, 1) の浮動小数点数 デフォルト: 0.1  | 
| lr\$1scheduler\$1step |  学習レートを下げるエポック。学習レートは、"epoch1、epoch2、..." のようにカンマ区切りの文字列でリストされたエポックごとに `lr_scheduler_factor` だけ下げられます。たとえば、値が "10, 20" に設定され、`lr_scheduler_factor` が 1/2 に設定されている場合、学習レートは 10 番目のエポックの後に半減し、20 番目のエポックの後に再び半減します。 **オプション** 有効な値: 文字列 デフォルト: 空の文字列  | 
| mini\$1batch\$1size |  トレーニングのバッチサイズ。単一マシンのマルチ GPU の設定では、各 GPU は `mini_batch_size`/`num_gpu` トレーニングサンプルを処理します。`dist_sync` モードの複数マシントレーニングでは、実際のバッチサイズは `mini_batch_size` \$1 マシン数です。`mini_batch_size` を大きくすると、通常、トレーニングは加速しますが、メモリ不足の問題が発生する可能性があります。メモリ使用量は、`mini_batch_size`、`image_shape`、および `base_network` アーキテクチャーに関連します。たとえば、単一の p3.2xlarge インスタンスでメモリ不足エラーの発生を回避する `mini_batch_size` の最大値は 32 であり、base\$1network は "resnet-50"、`image_shape` は 300 に設定します。同じインスタンスで、`mini_batch_size` を 64 に設定し、基本ネットワークとして `vgg-16`、`image_shape` を 300 に設定します。 **オプション** 有効な値: 正の整数 デフォルト: 32  | 
| momentum |  `sgd` のモーメンタム。他のオプティマイザでは無視されます。 **オプション** 有効な値: (0, 1] の浮動小数点数 デフォルト: 0.9  | 
| nms\$1threshold |  非最大抑制しきい値。 **オプション** 有効な値: (0, 1] の浮動小数点数 デフォルト: 0.45  | 
| optimizer |  オプティマイザのタイプ。オプティマイザ値の詳細については、「[MXNet's API (MXNet の API)](https://mxnet.apache.org/api/python/docs/api/)」を参照してください。 **オプション** 有効な値: ['sgd', 'adam', 'rmsprop', 'adadelta'] デフォルト: 'sgd'  | 
| overlap\$1threshold |  評価重複しきい値。 **オプション** 有効な値: (0, 1] の浮動小数点数 デフォルト: 0.5  | 
| use\$1pretrained\$1model |  トレーニングに事前トレーニング済みモデルを使用するかどうかを示します。1 に設定すると、対応するアーキテクチャーの事前トレーニングモデルがロードされ、トレーニングに使用されます。それ以外の場合、ネットワークはゼロからトレーニングされます。 **オプション** 有効な値: 0 または 1 デフォルト: 1  | 
| weight\$1decay |  `sgd` と `rmsprop` の重み減衰係数。他のオプティマイザでは無視されます。 **オプション** 有効な値: (0, 1) の浮動小数点数 デフォルト: 0.0005  | 

# オブジェクト検出モデルを調整する
<a name="object-detection-tuning"></a>

*自動モデル調整*は、ハイパーパラメータ調整とも呼ばれ、データセットのさまざまなハイパーパラメータをテストする多数のジョブを実行して、モデルの最適なバージョンを見つけます。調整可能なハイパーパラメータ、それぞれの値の範囲、および目標メトリクスを選択します。アルゴリズムが計算するメトリクスから目標メトリクスを選択します。自動モデル調整は、選択されたハイパーパラメータを検索して、目標メトリクスを最適化するモデルになる値の組み合わせを見つけます。

モデル調整の詳細については、「[SageMaker AI の自動モデルチューニング](automatic-model-tuning.md)」を参照してください。

## オブジェクト検出アルゴリズムで計算されるメトリクス
<a name="object-detection-metrics"></a>

オブジェクト検出アルゴリズムは、トレーニング中に単一のメトリクス `validation:mAP` についてレポートします。モデルを調整するときに、このメトリクスを目標メトリクスとして選択します。


| メトリクス名 | 説明 | 最適化の方向 | 
| --- | --- | --- | 
| validation:mAP |  検証セットで計算された平均精度の平均 (mAP)。  |  最大化  | 



## 調整可能なオブジェクト検出ハイパーパラメータ
<a name="object-detection-tunable-hyperparameters"></a>

以下のハイパーパラメータを使用して Amazon SageMaker AI オブジェクト検出モデルを調整します。オブジェクト検出の目標メトリクスに最も大きな影響を与えるハイパーパラメータは、`mini_batch_size`、`learning_rate`、および `optimizer` です。


| パラメータ名 | パラメータタイプ | 推奨範囲 | 
| --- | --- | --- | 
| learning\$1rate |  ContinuousParameterRange  |  MinValue: 1e-6、MaxValue: 0.5  | 
| mini\$1batch\$1size |  IntegerParameterRanges  |  MinValue: 8、MaxValue: 64  | 
| momentum |  ContinuousParameterRange  |  MinValue: 0.0、MaxValue: 0.999  | 
| optimizer |  CategoricalParameterRanges  |  ['sgd', 'adam', 'rmsprop', 'adadelta']  | 
| weight\$1decay |  ContinuousParameterRange  |  MinValue: 0.0、MaxValue: 0.999  | 

# オブジェクト検出リクエストとレスポンスの形式
<a name="object-detection-in-formats"></a>

このページでは、Amazon SageMaker AI オブジェクト検出 - MXNet モデルの推論リクエストとレスポンスの形式について説明します。

## リクエストの形式
<a name="object-detection-json"></a>

モデルのエンドポイントを使用して、トレーニング済みモデルのクエリを実行します。エンドポイントは、`image/jpeg` および `image/png` コンテンツタイプの .jpg および .png イメージ形式を使用します。

## レスポンスの形式
<a name="object-detection-recordio"></a>

レスポンスは、JSON 形式でエンコードされたイメージ内のすべてのオブジェクトの信頼スコアと境界ボックス座標を含むクラスインデックスです。以下は、レスポンス .json ファイルの例です。

```
{"prediction":[
  [4.0, 0.86419455409049988, 0.3088374733924866, 0.07030484080314636, 0.7110607028007507, 0.9345266819000244],
  [0.0, 0.73376623392105103, 0.5714187026023865, 0.40427327156066895, 0.827075183391571, 0.9712159633636475],
  [4.0, 0.32643985450267792, 0.3677481412887573, 0.034883320331573486, 0.6318609714508057, 0.5967587828636169],
  [8.0, 0.22552496790885925, 0.6152569651603699, 0.5722782611846924, 0.882301390171051, 0.8985623121261597],
  [3.0, 0.42260299175977707, 0.019305512309074402, 0.08386176824569702, 0.39093565940856934, 0.9574796557426453]
]}
```

この .json ファイルの各行には、検出されたオブジェクトを表す配列が含まれています。これらの各オブジェクト配列は、6 つの数字のリストで構成されています。最初の数字は予測されたクラスラベルです。2 番目の数字は、検出に関連付けられている信頼性スコアです。最後の 4 つの数字は、境界ボックスの座標 [xmin, ymin, xmax, ymax] を表します。これらの出力境界ボックスのコーナーのインデックスは、全体的なイメージサイズによって正規化されます。このエンコードは、入力 .json 形式で使用されているものとは異なることに注意してください。たとえば、検出結果の最初のエントリでは、0.3088374733924866 は境界ボックスの左座標 (左上隅の x 座標) をイメージ全体の幅に対する比率として表したもの、0.07030484080314636 は境界ボックスの上部座標 (左上隅の y 座標) をイメージ全体の高さに対する比率として表したもの、0.7110607028007507 は境界ボックスの右座標 (右下隅の x 座標) をイメージ全体の幅に対する比率として表したもの、0.9345266819000244 は境界ボックスの下部座標 (右下隅の y 座標) をイメージ全体の高さに対する比率として表したものです。

信頼性の低い検出結果を避けるために、信頼性スコアが低い検出結果を除外することをお勧めします。「[object detection sample notebook](https://github.com/aws/amazon-sagemaker-examples/blob/main/introduction_to_amazon_algorithms/object_detection_birds/object_detection_birds.ipynb)」では、しきい値を使用して信頼度の低い検出を削除し、元のイメージに境界ボックスをプロットするスクリプトの例を提供しています。

バッチ変換の場合、レスポンスは JSON 形式です。この形式は上記の JSON 形式と同じです。各イメージの検出結果は JSON ファイルで表されます。例:

```
{"prediction": [[label_id, confidence_score, xmin, ymin, xmax, ymax], [label_id, confidence_score, xmin, ymin, xmax, ymax]]}
```

トレーニングと推論の詳細については、[オブジェクト検出サンプルノートブック](object-detection.md#object-detection-sample-notebooks)を参照してください。

## 出力: JSON レスポンス形式
<a name="object-detection-output-json"></a>

accept: application/json;annotation=1

```
{
   "image_size": [
      {
         "width": 500,
         "height": 400,
         "depth": 3
      }
   ],
   "annotations": [
      {
         "class_id": 0,
         "score": 0.943,
         "left": 111,
         "top": 134,
         "width": 61,
         "height": 128
      },
      {
         "class_id": 0,
         "score": 0.0013,
         "left": 161,
         "top": 250,
         "width": 79,
         "height": 143
      },
      {
         "class_id": 1,
         "score": 0.0133,
         "left": 101,
         "top": 185,
         "width": 42,
         "height": 130
      }
   ]
}
```