オブジェクトの分類

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

[ディープ ラーニングを使用したオブジェクトの分類 (Classify Objects Using Deep Learning)] ツールを使用して、画像内のオブジェクトを分類します。 このツールは、入力ラスターに対してトレーニング済みのディープ ラーニング モデルを実行します。各入力フィーチャにはクラス ラベルが割り当てられます。 下の画像は、ディープ ラーニング ツールを使用したオブジェクト分類の例です。

被害を受けた建物と被害を受けていない建物のラベル付け

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

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

      フィーチャ分類器モデル タイプでサポートされているメタデータ形式は、ラベル付きタイル、Imagenet、複数ラベル付きタイルです。

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

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

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

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

入力トレーニング データは [メタデータ形式] の値に基づいているため、適切な [モデル タイプ] のデフォルト値が決定されます。 たとえば、エクスポート プロセスで [ラベル付きタイル] メタデータ形式を指定した場合、[モデル タイプ] パラメーターで [フィーチャ分類器] オプションが指定されます。 [モデル タイプ] ドロップダウン リストも、[ラベル付きタイル] メタデータ形式をサポートするモデル タイプを反映した形で更新されます。 [バッチ サイズ][モデル引数][バックボーン モデル] の各パラメーターにも、[モデル タイプ] パラメーターの値に基づき値が入力されます。

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

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

  5. [モデル タイプ] パラメーターのドロップダウン リストで [フィーチャ分類器 (オブジェクト分類)] の値が選択されていることを確認します。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  14. [実行] をクリックして、トレーニングを開始します。
ディープ ラーニング モデルのトレーニング (Train Deep Learning Model) ツール

推論の実行

推論は、ディープ ラーニング トレーニングの最中に学習された情報を使用して、入力画像内の各検出オブジェクトにクラスまたはカテゴリ ラベルを割り当てるプロセスです。 オブジェクト分類ワークフローを実施するため、[ディープ ラーニングを使用したオブジェクトの分類 (Classify Objects Using Deep Learning)] ツールを使用します。

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

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

  3. [出力分類オブジェクト フィーチャクラス] パラメーターで、出力フィーチャクラスの名前を付けます。

    出力フィーチャクラスには、入力画像内の検出オブジェクトを取り囲むジオメトリのほか、カテゴリ分けラベルを保存するためのフィールドが含まれます。

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

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

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

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

    1. batch_size - モデル推論の各ステップで処理された画像タイルの数。 これはグラフィックス カードのメモリ サイズに応じて異なります。
    2. test_time_augmentation - 予測中にテスト時間の延長を実行します。 true の場合、入力画像の反転および回転バリアントの予測は、最終出力にマージされます。
  6. [実行] をクリックして推論を実行します。
    ディープ ラーニングを使用したオブジェクトの分類ツール

関連トピック