変化の検出

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

このワークフローは、2 つの異なる期間における 2 つの画像の変化を検出します。 最終的な出力は、変化ありと変化なしの 2 つの値のいずれかをとるバイナリ ラスターです。 下の図は、期間 1 の画像、期間 2 の画像、およびこれら 2 つの期間の間の変化を示しています。

変化の検出結果

Change Detector モデルをトレーニングするには、期間 1 の画像、期間 2 の画像、およびこれら 2 つの期間の間の変化を識別するフィーチャクラスまたはラスターが必要です。 2 つのラスターの例とトレーニング サンプルを以下に示します。

変化の検出のトレーニング サンプル

最初の画像は、2000 年のものです。 中央の画像は 2003 年のものです。 3 つ目の画像は、変化のフィーチャクラスのトレーニング サンプルです。

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

  1. トレーニング サンプルを作成し、エクスポートします。 ディープ ラーニングのオブジェクトのラベル付けウィンドウを使用してトレーニング サンプルを作成し、[ディープ ラーニング用のトレーニング データをエクスポート (Export Training Data For Deep Learning)] ツールを使用して、サンプルをディープ ラーニング トレーニング データに変換します。
  2. ディープ ラーニング モデルをトレーニングします。 [ディープ ラーニング モデルのトレーニング (Train Deep Learning Model)] ツールで、前のステップで作成したトレーニング サンプルを使用してモデルをトレーニングします。
  3. 推論を実行します。 [ディープ ラーニングを使用して変化を検出 (Detect Change 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. トレーニング サンプルを作成します。

    これらのトレーニング サンプルは、2 つの画像間で変化が発生した領域を示すため、ディープ ラーニング モデルをトレーニングできます。

    1. [画像分類] ウィンドウで、トレーニング サンプルを作成するクラスを選択します。
    2. [ポリゴン] などの描画ツールを選択します。
    3. クラスを表現したいピクセルの周辺にポリゴンを描画します。

      ポリゴンが重なる場合がありますが、オブジェクトが不明な場合は、トレーニング サンプルにオブジェクトを含めないでください。 新しいレコードが [画像分類] ウィンドウの [ラベル付きオブジェクト] グループに追加されます。

      新規開発

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

      スキーマの各クラスを表現するため、統計的に有意な数のトレーニング サンプルを収集することをお勧めします。

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

    ラベル付きトレーニング サンプル

    1. [現在のトレーニング サンプルの保存] ウィンドウで、ジオデータベースを参照します。
    2. フィーチャクラスの名前を指定し、[保存] をクリックします。
  5. [画像分類] ウィンドウを閉じます。
  6. トレーニング サンプルを画像チップとしてエクスポートできるよう、[ディープ ラーニング用のトレーニング データをエクスポート (Export Training Data For Deep Learning)] ツールを開きます。

    画像チップは、検出可能なオブジェクトを 1 つ以上含む小さな画像です。 画像チップは、ディープ ラーニング モデルのトレーニングに使用されます。

    1. [入力ラスター] の値を入力します。

      一般的に、これは、変化が発生する前の最初の画像となります。

    2. [追加入力ラスター] の値を入力します。

      一般的に、これは、変化が発生した後の最後の画像となります。

    3. [入力フィーチャクラス、分類ラスター、またはテーブル] の値を入力します。

      これは、作成したラベル付きオブジェクトのトレーニング サンプルのファイルです。

    4. [クラス値フィールド] の値を入力します。

      これは、変化について指定されたラベル フィーチャクラスです。 フィーチャクラスには、ClassValue というフィールドが含まれており、これを使用できます。

    5. [出力フォルダー] の値を指定します。

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

    6. 必要に応じて、[メタデータ形式] パラメーターの値を指定します。

      変化の検出に最適なメタデータ形式は、[分類済みタイル] です。

    7. [実行] をクリックして、トレーニング データをエクスポートします。
ディープ ラーニング用のトレーニング データをエクスポート ツールのパラメーター

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

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

入力トレーニング データは、[メタデータ形式] の値に基づいているため、適切な [モデル タイプ] の値がデフォルトで割り当てられます。 このツールは、指定したメタデータ形式をサポートする適切なモデル タイプの [モデル タイプ] の値のドロップダウン リストも更新します。 [バッチ サイズ][モデル引数][バックボーン モデル] の各パラメーターには、[モデル タイプ] の値に基づき値が入力されます。 2 つの画像間の変化を推論するため、出力モデルが使用されます。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ディープ ラーニング モデルのトレーニング ツールのパラメーター

推論の実行

推論は、ディープ ラーニング トレーニングの最中に学習された情報を使用して、画像内の類似のピクセルとオブジェクトを分類するプロセスです。 トレーニングしたディープ ラーニング モデルを使用して、2 つのラスター画像間の変化を検出します。 変化の検出ワークフローを実施するため、[ディープ ラーニングを使用して変更を検出 (Detect Change Using Deep Learning)] ツールを使用します。

  1. [ディープ ラーニングを使用して変化を検出 (Detect Change Using Deep Learning)] ツールを開きます。
  2. [From ラスター] パラメーターで、期間 1 の画像 (基準画像) を参照して入力します。
  3. [To ラスター] パラメーターで、期間 2 の画像 (現在の画像) を参照して入力します。
  4. [出力分類ラスター] パラメーターで、出力ラスターの名前を入力します。

    出力分類ラスターには、ピクセル値 0 と 1 が含まれます。0 は変化なし、1 は変化ありを示します。

    [引数] パラメーターに [モデル定義] の値に基づく情報が入力されます。 これらの引数は、モデル アークテクチャによって変わります。 この例では、[Change Detector] モデル アーキテクチャが使用されるため、[padding][batch_size] の引数に値が入力されます。

  5. [引数] パラメーターでデフォルト値をそのまま使用するか、編集します。
    1. padding - 隣接するタイルの予測がブレンドされる画像タイルの境界のピクセル数。 値を大きくすると、出力が滑らかになり、アーティファクトが減少します。 パディングの最大値には、タイル サイズの値の半分を設定できます。
    2. batch_size - モデル推論の各ステップで処理された画像タイルの数。 この値はグラフィックス カードのメモリ サイズに応じて異なります。
  6. [実行] をクリックして推論を実行します。
  7. ディープ ラーニングを使用して変化を検出ツールのパラメーター

関連トピック