翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
セマンティックセグメンテーションアルゴリズム
SageMaker セマンティックセグメンテーションアルゴリズムは、コンピュータビジョンアプリケーションの開発にピクセルレベルのきめ細かなアプローチを提供します。イメージ内のすべてのピクセルに、事前定義された一連のクラスのクラスラベルを付けます。タグ付けはシーンを理解するための基本であり、自動運転車や医療用画像診断、ロボットセンシングなど、増加するコンピュータビジョンアプリケーションにとって不可欠です。
比較のために、 SageMaker 画像分類 - MXNet は画像全体のみを分析し、複数の出力カテゴリのいずれかに分類する教師あり学習アルゴリズムです。オブジェクト検出 - MXNetは、イメージ内のオブジェクトのすべてのインスタンスを検出および分類する教師あり学習アルゴリズムです。このアルゴリズムは、イメージ内の各オブジェクトの位置とスケールを長方形の境界ボックスで示します。
セマンティックセグメンテーションアルゴリズムは、イメージ内のすべてのピクセルを分類するため、イメージに含まれるオブジェクトの形状に関する情報も提供します。セグメンテーション出力は、グレースケールイメージ (セグメンテーションマスクと呼ばれる) として表されます。セグメンテーションマスクは、入力イメージと同じ形状のグレースケールイメージです。
SageMaker セマンティックセグメンテーションアルゴリズムは、MXNet Gluon フレームワークと Gluon CV ツールキットを使用して構築されています
これらの 3 つのアルゴリズムには、それぞれ 2 つの異なるコンポーネントがあります。
-
バックボーン (またはエンコーダー) - 信頼性の高い特徴アクティベーションマップを作成するネットワーク。
-
デコーダー - エンコードされたアクティベーションマップからセグメンテーションマスクを構築するネットワーク。
また、FCN、PSP、および DeepLabV3 アルゴリズムには、ResNet50 または ResNet101
推論用にトレーニング済みモデルをデプロイするには、 SageMaker ホスティングサービスを使用します。推論中に、PNG イメージとして、または各ピクセルのクラスごとに一連の確率として、セグメンテーションマスクをリクエストできます。これらのマスクは、追加のダウンストリームイメージ処理やその他のアプリケーションを含む、大規模なパイプラインの一部として使用できます。
トピック
セマンティックセグメンテーションサンプルノートブック
SageMaker セマンティックセグメンテーションアルゴリズムを使用してモデルをトレーニングし、推論を実行するようにデプロイするサンプル Jupyter Notebook については、セマンティックセグメンテーションの例
すべての SageMaker サンプルのリストを表示するには、ノートブックインスタンスを作成して開き、SageMaker 「例」タブを選択します。セマンティックセグメンテーションサンプルノートブックは、[Introduction to Amazon algorithm (Amazon アルゴリズムの概要)] にあります。ノートブックを開くには、その [Use (使用)] タブを選択し、[Create copy (コピーを作成)] を選択します。
セマンティックセグメンテーションアルゴリズムの入出力インターフェイス
SageMaker セマンティックセグメンテーションでは、お客様のトレーニングデータセットが Amazon Simple Storage Service (Amazon S3train
と validation
の 2 つのチャネルに提供されることが想定されており、4 つのディレクトリ (イメージ用 2 つと注釈用 2 つ) が使用されます。注釈は、圧縮されていない PNG イメージであることが想定されています。データセットには、注釈マッピングの確立方法を説明するラベルマップも含まれている可能性があります。そうでない場合、アルゴリズムはデフォルトを使用します。このアルゴリズムはさらに、Amazon S3 から直接パイプ入力モードでトレーニングするための拡張マニフェストイメージ形式 (application/x-image
) もサポートしています。推論の場合、エンドポイントは image/jpeg
コンテンツタイプのイメージを受け入れます。
トレーニングの仕組み
トレーニングデータは、train
、train_annotation
、validation
、および validation_annotation
の 4 つのディレクトリに分割されます。これらの各ディレクトリ用のチャネルが 1 つずつあります。データセットには、train_annotation
チャネルと validation_annotation
チャネル用に 1 つずつ label_map.json
ファイルが含まれていることも想定されています。これらの JSON ファイルを指定しない場合、 はデフォルトのセットラベルマップ SageMaker を提供します。
これらのファイルを指定するデータセットは、次の例のようになります。
s3://bucket_name | |- train | | - 0000.jpg | - coffee.jpg |- validation | | - 00a0.jpg | - bananna.jpg |- train_annotation | | - 0000.png | - coffee.png |- validation_annotation | | - 00a0.png | - bananna.png |- label_map | - train_label_map.json | - validation_label_map.json
train ディレクトリと validation ディレクトリ内のすべての JPG イメージには、train_annotation
ディレクトリと validation_annotation
ディレクトリ内に同じ名前の対応する PNG ラベルイメージがあります。この命名規則は、トレーニング中にアルゴリズムがラベルをそれに対応するイメージに関連付けるのに役立ちます。train
、train_annotation
、validation
、および validation_annotation
チャネルは必須です。注釈は単一チャネルの PNG イメージです。この形式は、アルゴリズムが注釈イメージを単一チャネルの 8 ビット符号なし整数として読み取る際に、イメージ内のメタデータ (モード) が役立つ場合に有効です。モードのサポートの詳細については、Python Image Library のドキュメントP
モードを使用することをお勧めします。
モードを使用する場合、エンコードされるイメージは単純な 8 ビット整数です。このマッピングからラベルのマップを取得するために、アルゴリズムはチャネルごとに 1 つのマッピングファイル (ラベルマップと呼ばれる) を使用します。ラベルマップは、イメージ内の値を実際のラベルインデックスにマッピングするために使用されます。デフォルトのラベルマップ (指定していない場合はデフォルトで提供されない) では、注釈マトリックス (イメージ) のピクセル値がラベルに直接インデックスを付けます。これらのイメージは、グレースケール PNG ファイルまたは 8 ビットインデックス付き PNG ファイルです。スケールされていないデフォルトのケースのラベルマップファイルは次のとおりです。
{ "scale": "1" }
表示用にコントラストを追加する目的で、一部の注釈ソフトウェアはラベルイメージを一定量だけスケールします。これをサポートするために、 SageMaker セマンティックセグメンテーションアルゴリズムは、値を実際のラベル値にスケールダウンする再スケーリングオプションを提供します。スケールダウンしても適切な整数値に変換されない場合、アルゴリズムはデフォルトでスケール値以下の最大の整数値を設定します。次のコードは、スケール値を設定してラベル値を再スケールする方法を示しています。
{ "scale": "3" }
次の例は、入力注釈イメージの encoded_label
値が、トレーニングで使用される mapped_label
値にマッピングされたときに、この "scale"
値を使用して再スケーリングされる方法を示しています。入力注釈イメージのラベル値は、スケールは 3 で 0、3、6 であるため、トレーニング用に 0、1、2 にマッピングされます。
encoded_label = [0, 3, 6] mapped_label = [0, 1, 2]
場合によっては、クラスごとに特定のカラーマッピングを指定する必要があります。次の label_map
ファイルの例に示すように、ラベルマッピングでマップオプションを使用します。
{ "map": { "0": 5, "1": 0, "2": 2 } }
この例のラベルマッピングは次のとおりです。
encoded_label = [0, 5, 2] mapped_label = [1, 0, 2]
ラベルマッピングにより、さまざまな注釈システムと注釈ソフトウェアを使用して、前処理をそれほど行わずにデータを取得できます。チャネルごとに 1 つのラベルマップを指定できます。label_map
チャネルのラベルマップのファイルは、4 つのディレクトリ構造の命名規則に従う必要があります。ラベルマップを指定しなかった場合、アルゴリズムはスケール 1 (デフォルト) を想定します。
拡張マニフェスト形式によるトレーニング
拡張マニフェスト形式を使用すると、RecordIO ファイルを作成しなくても、イメージファイルを使用してパイプモードでトレーニングを行うことができます。拡張マニフェストファイルにはデータオブジェクトが含まれているため、CreateTrainingJob
リクエストで説明するとおり、JSON Lines
マニフェストファイル内の各 JSON オブジェクトには source-ref
キーを含める必要があります。source-ref
キーには、イメージの Amazon S3 URI の値を含める必要があります。ラベルは、CreateTrainingJob
リクエストで指定されている AttributeNames
パラメータ値に基づいて提供されます。metadata タグの下に追加のメタデータを含めることもできますが、これらはアルゴリズムによって無視されます。次の例では、AttributeNames
は画像および注釈参照 ["source-ref", "city-streets-ref"]
のリストに含まれます。これらの名前は -ref
で追加する必要があります。拡張マニフェストでセマンティックセグメンテーションアルゴリズムを使用するときは、RecordWrapperType
パラメータの値は "RecordIO"
、ContentType
パラメータの値は application/x-recordio
である必要があります。
{"source-ref": "S3 bucket location", "city-streets-ref": "S3 bucket location", "city-streets-metadata": {"job-name": "label-city-streets", }}
拡張マニフェストファイルの詳細については、トレーニングジョブの拡張マニフェストファイルを参照してください。
段階的トレーニング
SageMaker では、以前にトレーニングしたモデルを使用して、新しいモデルのトレーニングをシードすることもできます。この段階的トレーニングでは、同じモデルまたは類似のデータを使用して新しいモデルをトレーニングする際のトレーニング時間が短縮されます。現在、段階的トレーニングは、組み込みの SageMaker セマンティックセグメンテーションでトレーニングされたモデルでのみサポートされています。
独自のトレーニング済みモデルを使用するには、CreateTrainingJob
リクエストの InputDataConfig
で ChannelName
を「モデル」として指定します。モデルチャネルの ContentType
を application/x-sagemaker-model
に設定します。ネットワークアーキテクチャーを定義する backbone
、algorithm
、crop_size
、および num_classes
入力パラメータは、新しいモデルとモデルチャネルにアップロードする事前トレーニング済みモデルの入力ハイパーパラメータで一貫して指定する必要があります。事前トレーニング済みモデルファイルでは、 SageMaker 出力の圧縮 (.tar.gz) アーティファクトを使用できます。入力データには、イメージ形式のみ使用できます。段階的トレーニングの詳細とその使用方法については、Amazon で増分トレーニングを使用する SageMakerを参照してください。
推論を生成する
エンドポイントにデプロイされているトレーニング済みモデルに対してクエリを実行するには、イメージと、必要な出力のタイプを示す AcceptType
を指定する必要があります。エンドポイントは、image/jpeg
コンテンツタイプの JPEG イメージを使用します。AcceptType
として image/png
をリクエストした場合、アルゴリズムはラベルそのものと同じ形式のセグメンテーションマスクを持つ PNG ファイルを出力します。accept タイプとして application/x-recordio-protobuf
をリクエストした場合、アルゴリズムは recordio-protobuf 形式でエンコードされたクラスの確率を返します。後者の形式は、3 次元がクラスの数と同じサイズである 3D テンソルを出力します。このコンポーネントは、各ピクセルの各クラスラベルの確率を表します。
セマンティックセグメンテーションアルゴリズムの EC2 インスタンスに関する推奨事項
SageMaker セマンティックセグメンテーションアルゴリズムは、トレーニング用の GPU インスタンスのみをサポートしており、バッチサイズが大きいトレーニングには、より多くのメモリを備えた GPU インスタンスを使用することをお勧めします。このアルゴリズムは、単一マシン構成の P2、P3、G4dn、または G5 インスタンスを使用してトレーニングできます。
推論には、CPU インスタンス (C5、M5 など) と GPU インスタンス (P3、G4dn など) のいずれか、またはその両方を使用できます。推論のために CPU、GPU、メモリ、ネットワーク容量のさまざまな組み合わせを提供するインスタンスタイプについては、「Amazon SageMaker ML インスタンスタイプ