Amazon Web Services ブログ

Amazon SageMaker で、物体検出アルゴリズムが利用可能に

Amazon SageMaker は、完全マネージド型で、拡張性が高い機械学習 (ML) プラットフォームであり、機械学習モデルの構築、トレーニング、デプロイを容易にします。これは、誰もが使える ML に向けた偉大な一歩であり、開発者が ML の領域へ入る際のバーを下げることができます。コンピュータビジョンは、画像を扱う機械学習の一つの分野です。Amazon SageMaker の画像分類アルゴリズムは、SageMaker が提供するより一般的なアルゴリズムの 1 つであり、画像をあらかじめ定義されたカテゴリのセットに分類することを学習します。

本日、Amazon SageMaker の物体検出 (OD) アルゴリズムを開始し、コンピュータビジョンの提供を強化します。物体検出は、画像内の物体を特定およびローカライズするプロセスです。このアルゴリズムは、物体が存在する画像上の境界ボックスを明らかにし、ボックスがどんな物体をカプセル化するかを識別することによって、さらに画像の分類を進めます。  カスタムクラスを含む独自のデータセットを使用してトレーニングする必要がない場合は、物体検出に Amazon Rekognition サービスを使用することもできることに注意してください。Amazon Rekognition は、あらかじめ定義されたクラスのセットから物体を識別できる API を提供します。Amazon SageMaker の物体検出アルゴリズムを使用すると、独自のデータセット/クラスを使用して学習するだけでなく、画像内の物体をローカライズすることもできます。

Amazon SageMaker の物体検出アルゴリズムの動作例写真提供 MansoorPEXELS

Single-Shot Multi-Box Detector (SSD) は、このタスクを達成するためのより高速で正確なアルゴリズムの 1 つです。推論の間に 1 回のパスだけで、画像内の複数の物体を検出します。SageMaker が利用可能なすべてのリージョンで、Amazon SageMaker のお客様は SSD を組み込みアルゴリズムとして使用できるようになったことをお知らせします。このアルゴリズムは、以下の構成で P2/P3 インスタンスを使用してトレーニングすることができます。

  • シングルマシン、シングル GPU
  • シングルマシン、マルチ GPU
  • マルチマシン、マルチ GPU

このアルゴリズムは、Amazon SageMaker によってサポートされているすべての CPU および GPU インスタンスでホストすることができます。トレーニングを行い、適切にホストすると、アルゴリズムは、このブログ記事の冒頭の画像に示されているように、各物体カテゴリのスコアとともに対象となる画像内の物体インスタンスの境界ボックスを生成します。このアルゴリズムは、様々なサイズや様々なスケールの物体をネイティブに扱うことができます。

SSD アルゴリズムは、畳み込み特徴マップを使用します。異なるスケールで特徴マップを使用することで、SSD は潜在的な物体候補の複数のボックスを生成します。最大でない値は (すべて) 値を抑えることで、重複するボックスを除去します。スコアが最も高いものが、物体の予測として宣言されます。このアルゴリズムは様々な畳み込みニューラルネットワークと互換性があるので、多くの一般的なネットワークアーキテクチャを使用することができます。このアルゴリズムの提供では、VGG16ResNet50 という 2 つの基本ネットワークを選択できます。顧客の物体検出データセットに転送することができる、ImageNet 分類タスクで事前にトレーニングされたモデルがそれぞれにあります。

開始方法

Amazon SageMaker の物体検出は、顧客のトレーニングデータセットが Amazon Simple Storage Service (Amazon S3) に存在することを予想しています。トレーニングが終わると、結果として Amazon S3 にモデルの成果物が生成されます。Amazon SageMaker は、トレーニング中、顧客の Amazon Elastic Compute Cloud (Amazon EC2) インスタンスの開始および停止を管理します。 モデルのトレーニングが終わると、エンドポイントにデプロイすることができます。Amazon SageMaker ワークフローの一般的な高レベルの概要については、Amazon SageMaker のドキュメントを参照してください。

始めるには、トレーニング構成を設定できるように、アルゴリズムの入力は MXNet RecordIO 形式か JSON アノテーションを備えた未処理の画像のいずれかにする必要があります。特に画像が多い場合は、RecordIO 形式をお勧めします。この推奨には、2 つの理由があります。通常は、1 つの大きなファイルをダウンロードするより、Amazon S3 から多数の小さなファイルをダウンロードする方が遅くなります。また、このアルゴリズムはネイティブで RecordIO 形式を使用するため、アルゴリズムの複数の繰り返しを実行すると、データを RecordIO 形式にすることで貴重な変換時間が節約されます。物体検出アルゴリズムはトレーニング用の GPU インスタンスだけをサポートしているため、大きなバッチサイズのトレーニングではメモリを増やした GPU インスタンスを使用することをお勧めします。  アルゴリズムのトレーニング中は、SageMaker ノートブックまたは Amazon CloudWatch のいずれかを使用して進行状況を監視することができます。トレーニングが完了すると、トレーニング設定で指定した Amazon S3 の出力場所にトレーニングされたモデル成果物がアップロードされます。モデルをエンドポイントとしてデプロイするには、CPU インスタンスまたは GPU インスタンスのいずれかを選択します。

パフォーマンスの数値

次の表は、Amazon SageMaker 物体検出アルゴリズムのパフォーマンスの数値を示しています。PASCAL VOC07 および VOC12 のデータセットでトレーニングを行い、VOC07 のデータセットで画像サイズが 512 X 512 (image_shape = 512) の場合の平均適合率の平均を示しています。次の表の実験では、デフォルトのパラメータ (momentum = 0.9、 weight_decay = 0.0005) でオプティマイザとして sgd を使用しました。4 つの設定のすべてについて、ここでは 240 のエポックをトレーニングし、エポック 80 およびエポック 160 でファクタ 0.1 だけ学習レートを下げました。この学習戦略は、以下のハイパーパラメータを使って実装することができます。 epochs =240、 lr_scheduler_step = “80, 160”、および lr_scheduler_factor = 0.1。限られたパラメータの調整でわかるように、ここで報告されている最先端のパフォーマンスの数値と一致します。

ネットワーク インスタンス 事前にトレーニングしたモデルの使用 バッチサイズ 学習レート 平均適合率の平均
VGG-16 ml.p3.8xlarge あり 64 0.004 0.780
VGG-16 ml.p3.2xlarge あり 16 0.0005 0.780
ResNet-50 ml.p3.8xlarge あり 64 0.002 0.791
ResNet-50 ml.p3.2xlarge あり 16 0.0005 0.796

ここで、 base_network =“resnet-50” とすることで、P2 インスタンスでは単一の GPU から 16 GPU に、P3 インスタンスでは 8 GPU に近づくにつれて、ほぼ直線的なスピードアップが観察されます。これは下のプロットで、はっきり確認できます。同様に、単一 GPU インスタンスで P2 から P3 に移行すると、6 倍以上の速度増加を観察しました。

また、複数のマシンにまたがってスケーリングを行う際にもスピードアップが観察されます。たとえば、ml.p2.8xlarge インスタンスを使用する場合、1 マシンから 2 マシンおよび 4 マシンに移行すると、それぞれ 1.8 倍と 3.6 倍のスピードアップになります。

ノートブック

物体検出の例は、ノートブック形式で利用できます。完全なチュートリアルと、データの準備やハイパーパラメータに関する推奨事項については、こちらを参照してください。

まとめ

このブログ記事では、新しい Amazon SageMaker の物体検出アルゴリズムを使用する方法を紹介しました。また、いくつかのパフォーマンスの数値の例も紹介しました。独自の物体検出実装の設定について、皆様のご意見をお待ちしております。


ブログ投稿者について

Xiong Zhou は、AWS ディープラーニングの応用科学者です。彼は、ヒューストン大学で電気電子工学の博士号を受けています。現在の研究テーマは、領域適応とアクティブラーニングのアルゴリズムの開発です。また、Amazon SageMaker のコンピュータビジョンアルゴリズムの構築にも取り組んでいます。

Ragav Venkatesan は、AWS ディープラーニングの研究科学者です。彼は、アリゾナ州立大学で電気工学の修士号とコンピュータサイエンスの博士号を取得しています。現在の研究領域には、ニューラルネットワーク圧縮とコンピュータビジョンアルゴリズムが含まれます。

Vineet Khare は AWS ディープラーニングのサイエンスマネージャーです。Vineet は、研究最先端の手法を使用して AWS のカスタマーのために人工知能および機械学習アプリケーションを構築することに焦点を当てています。そのかたわらで、読書、ハイキング、家族との時間を楽しんでいます。

Saksham Saini は Amazon Sagemaker のソフトウェア開発者です。イリノイ大学アーバナ・シャンペーン校で、コンピュータエンジニアリングの学士号を取得しています。現在、Amazon Sagemaker 向けに高度に最適化したスケーラブルなアルゴリズムの構築に取り組んでいます。仕事以外では、読書、ミーム、音楽、旅行が趣味です。