ピクセルの分類

Image Analyst ライセンスで利用できます。

[ディープ ラーニングを使用したピクセルの分類 (Classify Pixels Using Deep Learning)] ツールを使用して、画像ピクセルを分類します。 このルールは、入力ラスターに対しトレーニング済みディープ ラーニング モデルを実行して、各ピクセルにクラス ラベルを割り当てた分類済みラスターを作成します。 土地被覆分類でピクセル分類がよく使用されます。 下の画像は、土地被覆分類の例です。

ピクセル分類の例

ディープ ラーニングを使用した通常のピクセル分類ワークフローは、主に以下の 3 つのステップで構成されます。

  1. トレーニング サンプルを作成し、エクスポートします。 ディープ ラーニングのオブジェクトのラベル付けウィンドウを使用してトレーニング サンプルを作成し、[ディープ ラーニング用のトレーニング データをエクスポート (Export Training Data For Deep Learning)] ツールを使用して、サンプルをディープ ラーニング トレーニング データに変換します。
  2. ディープ ラーニング モデルをトレーニングします。 [ディープ ラーニング モデルのトレーニング (Train Deep Learning Model)] ツールで、前のステップで作成したトレーニング サンプルを使用してモデルをトレーニングします。
  3. 推論を実行します。 [ディープ ラーニングを使用したピクセルの分類 (Classify Pixels Using Deep Learning)] ツールを使用します。 ステップ 2 で作成したモデルを使用します。

その他の例、サポート対象のメタデータ形式、モデル タイプ アーキテクチャについては、「ディープ ラーニング モデルのアーキテクチャ」をご参照ください。

トレーニング サンプルを作成し、エクスポートする

トレーニング スキーマとトレーニング サンプルを作成し、トレーニング データをエクスポートします。

ラスター データセットまたはフィーチャクラスに既存のトレーニング サンプルがある場合は、[ディープ ラーニング用のトレーニング データをエクスポート (Export Training Data For Deep Learning)] ツールを使用して、以下のディープ ラーニング モデルのトレーニング セクションに進むことができます。

  1. トレーニング スキーマを作成します。
    1. トレーニング サンプルの生成に使用する画像をマップに追加します。
    2. [コンテンツ] ウィンドウで、追加した画像を選択します。
    3. [衛星画像] タブをクリックします。
    4. [ディープ ラーニング ツール] をクリックし、[ディープ ラーニングに使用するラベル オブジェクト] をクリックします。

      [画像分類] ウィンドウに、空白のスキーマが表示されます。

    5. [画像分類] ウィンドウで、[新しいスキーマ] を右クリックし、[プロパティの編集] をクリックします。

      新しいスキーマの編集

    6. スキーマに名前を付けます。

      スキーマ名を編集する

    7. [保存] をクリックします。
  2. スキーマに新しいクラスを追加します。
    1. 作成したスキーマを右クリックして、[新しいクラスの追加] を選択します。
    2. クラスに名前を付けます。

      新しいクラスの追加ウィンドウ

    3. クラスの値を指定します。

      値を 0 にすることはできません。

    4. 必要に応じて、クラスの色を選択します。
    5. [OK] をクリックします。

      [画像分類] ウィンドウで、クラスがスキーマに追加されます。

    6. 必要に応じて、ステップ 2a 〜 2e を繰り返し、クラスをさらに追加します。
  3. トレーニング サンプルを作成します。
    1. [画像分類] ウィンドウで、トレーニング サンプルを作成したいクラスを選択します。
    2. [ポリゴン] などの描画ツールを選択します。

      ポリゴン ツール

    3. 作成したクラスを表現したいピクセルの周辺にポリゴンを描画します。

      ポリゴンの例

      新しいレコードが [画像分類] ウィンドウの [ラベル付きオブジェクト] グループに追加されます。

    4. ステップ 3a から 3c を繰り返して、スキーマのすべてのクラス用のトレーニング サンプルを作成します。

      トレーニング サンプル

  4. サンプルを作成したら、[画像分類] ウィンドウの [保存] をクリックします。

    保存ボタン

    1. [現在のトレーニング サンプルの保存] ウィンドウで、ジオデータベースを参照します。
    2. フィーチャクラスの名前を指定し、[保存] をクリックします。

    モデルをトレーニングする前に、トレーニング サンプルを画像チップとしてエクスポートする必要があります。 画像チップは、検出可能なオブジェクトを 1 つ以上含む小さな画像です。 画像チップは、スキーマのクラスの各トレーニング サンプルに対し作成され、ラベルが付けられます。

  5. [画像の分類] ウィンドウで、[トレーニング データのエクスポート] タブをクリックします。
    1. [出力フォルダー] の値を指定します。

      これが、出力画像チップとメタデータを格納するフォルダーのパスと名前になります。

    2. 必要に応じて、[メタデータ形式] の値を選択します。

      マルチバンド ラスター入力には、[分類済みタイル] オプションが最適な形式です。 入力が多次元ラスターで、PSETAE モデル アーキテクチャを使用したい場合は、[RCNN マスク] オプションを指定します。

    3. [実行] をクリックして、トレーニング データをエクスポートします。

トレーニング データのエクスポート タブ

ディープ ラーニング モデルのトレーニング

[ディープ ラーニング モデルのトレーニング (Train Deep Learning Model)] ツールは、ラベル付けされた画像チップを使用して、オブジェクトを表す各画像内のピクセルの組み合わせを判別します。 これらのトレーニング サンプルを使用して、ディープ ラーニング モデルをトレーニングします。 このツールでは、[入力トレーニング データ] パラメーターと [出力モデル] パラメーターのみが必須です。

トレーニング データを入力したら、[メタデータ形式] の値に基づき適切な [モデル タイプ] の値が決定されます。 たとえば、[分類済みタイル] メタデータ形式が指定された場合、[モデル タイプ] パラメーターには [U-Net] オプションが指定されます。 [モデル タイプ] ドロップダウン リストも、[分類済みタイル] メタデータ形式をサポートするモデル タイプを反映した形で更新されます。

モデル タイプ ドロップダウン リスト

ディープ ラーニング モデルをトレーニングするには、以下の手順を行います。

  1. [ディープ ラーニング モデルのトレーニング (Train Deep Learning Model)] ツールを開きます。
  2. [入力トレーニング データ] パラメーターで、画像チップが格納されているトレーニング データ フォルダーを参照して選択します。
  3. [出力モデル] パラメーターに、トレーニング後の出力モデルを保存するフォルダーのファイル パスと名前を指定します。
  4. 必要に応じて、[最大エポック] パラメーターに値を指定します。

    エポックとは、トレーニング データセットを処理する完全な 1 サイクルをいいます。 エポックごとに、画像チップ フォルダーに保存したトレーニング データセットがニューラル ネットワークを通って前方/後方に 1 回渡されます。 一般的に、初期レビューには 20 ~ 50 エポックが使用されます。 デフォルト値は 20 です。 モデルをさらに改善できる場合は、同じツールを使用して再トレーニングできます。

  5. 必要に応じて、ドロップダウン リストで [モデル タイプ] パラメーターの値を変更します。

    モデル タイプによって、[U-Net] モデル アーキテクチャなど、モデルのトレーニングに使用されるディープ ラーニング アルゴリズムとニューラル ネットワークが決まります。 モデルに関する詳細については、「ArcGIS のディープ ラーニング モデル」をご参照ください。 ドキュメントの例、サポート対象のメタデータ、モデル アーキテクチャの詳細については、「ディープ ラーニング モデルのアーキテクチャ」をご参照ください。

  6. 必要に応じて、[モデル引数] パラメーター値を変更します。

    [モデル引数] パラメーターに、モデル定義の情報が入力されます。 これらの引数は、指定されたモデル アーキテクチャによって変わります。 ツールでサポートされているモデル引数のリストは、[モデル引数] パラメーターで使用できます。

  7. 必要に応じて、[バッチ サイズ] パラメーター値を設定します。

    このパラメーターでは、一度にトレーニングされるトレーニング サンプルの数を指定します。 バッチ サイズの値は、画像チップの数、GPU メモリ (GPU が使用されている場合)、カスタム値が使用されている場合の学習率など、さまざまな要因によって決まります。 デフォルトのバッチ サイズを使用すると、通常は良好な結果が得られます。

  8. 必要に応じて、[学習率] パラメーター値を指定します。

    値を指定しないと、トレーニング プロセス中に最適な学習率が学習曲線から抽出されます。

  9. 必要に応じて、[バックボーン モデル] パラメーター値を指定します。

    デフォルト値はモデル アーキテクチャに基づきます。 ドロップダウン リストを使用して、デフォルトのバックボーン モデルを変更できます。

  10. 必要に応じて、[事前トレーニング済みモデル] パラメーター値を指定します。

    類似したクラスを持つ事前トレーニング済みモデルは、新しいモデルに合わせて微調整することができます。 事前トレーニング済みモデルは、新しいモデルのトレーニングに使用される同じモデル タイプおよびバックボーン モデルでトレーニングされている必要があります。

  11. 必要に応じて、[検証 %] パラメーター値を変更します。

    これが、モデルの検証に使用するトレーニング サンプルの割合になります。 この値は、トレーニング サンプルの数やモデル アーキテクチャなど、さまざまな要因によって異なります。 一般的に、トレーニング データの量が少ない場合、検証には 10% 〜 20% を使用するのが適切です。 数千サンプルのような大量のトレーニング データが存在する場合、検証には 2% 〜 5% 程度の低い割合のデータを使用するのが適切です。 デフォルト値は 10 です。

  12. 必要に応じて、[モデルが改善しなくなったら停止] パラメーターをオンにします。

    オンにすると、指定した [最大エポック] 値にかかわらず、モデルの改善がなくなった時点でモデルのトレーニングを停止します。 デフォルト設定はオンです。

  13. 必要に応じて、[モデルの固定] パラメーターをオンにします。

    このパラメーターは、事前トレーニング済みモデルのバックボーン層が固定されるかどうかを指定します。これにより、ウェイトとバイアスが本来の設計どおりになります。 このパラメーターをオンにすると、バックボーン層が固定され、事前定義済みのウェイトとバイアスは [バックボーン モデル] パラメーターで変更されません。 このオプションをオフにすると、バックボーン層は固定されず、トレーニング サンプルに合わせて [バックボーン モデル] パラメーター値のウェイトとバイアスを変更できます。 この処理には時間がかかりますが、通常は優れた結果が得られます。 デフォルト設定はオンです。

  14. [実行] をクリックして、トレーニングを開始します。

ディープ ラーニング モデルのトレーニング (Train Deep Learning Model) ツール

推論の実行

トレーニングしたディープ ラーニング モデルを使用して、画像のピクセル分類を行います。 推論は、ディープ ラーニング トレーニングの最中に学習された情報を使用して、画像内の類似のピクセルを分類するプロセスです。 ピクセル分類ワークフローを実施するため、[ディープ ラーニングを使用したピクセルの分類 (Classify Pixels Using Deep Learning)] ツールを使用します。

  1. [ディープ ラーニングを使用したピクセルの分類 (Classify Pixels Using Deep Learning)] ツールを開きます。
  2. [入力ラスター] パラメーターで、分類したい入力ラスター データを参照して選択します。

    この入力には、モザイク データセット、イメージ サービス、画像のフォルダー、または画像の添付ファイルを含むフィーチャクラス内の単一のラスター データセットまたは複数のラスターを指定することができます。

  3. [出力ラスター データセット] パラメーターで、出力データセットの名前を付けます。

    出力データセットには、入力画像でクラス ラベルが割り当てられた各有効ピクセルが含まれます。

  4. [モデル定義] の値を指定します (*.emd または *.dlpk)。

    これが、トレーニング出力を含むモデル ファイルになります。 これが、ディープ ラーニングのトレーニング セクションの出力になります。

  5. [引数] パラメーターで、デフォルト値を承諾するか、変更します。

    [引数] パラメーターに [モデル定義] パラメーターの情報が入力されます。 これらの引数は、指定されたモデル アークテクチャによって変わります。 この例では、[U-Net] モデル アーキテクチャが使用されるため、以下の引数に情報が入力されます。

    1. padding - 隣接するタイルの予測がブレンドされる画像タイルの境界のピクセル数。 値を大きくすると、出力が滑らかになり、アーティファクトが減少します。 パディングの最大値には、タイル サイズの値の半分を設定できます。
    2. batch_size - モデル推論の各ステップで処理された画像タイルの数。 これはグラフィックス カードのメモリ サイズに応じて異なります。
    3. predict_background - 背景を分類するかどうかを指定します。 true の場合、背景クラスも分類されます。
    4. test_time_augmentation - 予測中にテスト時間の延長を実行します。 true の場合、入力画像の反転および回転バリアントの予測は、最終出力にマージされます。
  6. [実行] をクリックして推論を実行します。

    ディープ ラーニングを使用したピクセルの分類ツール

ピクセル分類されたラスターを以下に示します。

ピクセル分類の結果

関連トピック