ArcGIS Image Analyst エクステンションを使用したディープ ラーニング

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

ArcGIS Image Analyst エクステンションでは、ArcGIS Pro の画像を使用してディープ ラーニング ワークフロー全体を実行できます。 ジオプロセシング ツールを使用して画像のトレーニング データを準備し、オブジェクトの検出、ピクセルの分類、またはオブジェクトの分類のモデルをトレーニングし、結果の生成と見直しを行います。

注意:

このトピックでは、Image Analyst を使用した画像のディープ ラーニングのワークフローについて説明します。 ArcGIS Pro のディープ ラーニングの全機能の概要については、「ArcGIS Pro のディープ ラーニング」をご参照ください。

ワークフローを次の図に示します。

ディープ ラーニング ワークフロー

ステップ説明

ディープ ラーニング ステップ 1

[ディープ ラーニングのオブジェクトのラベル付け] ウィンドウを使用してトレーニング サンプルを作成し、[ディープ ラーニング用のトレーニング データをエクスポート (Export Training Data For Deep Learning)] ツールを使用して、サンプルをディープ ラーニング トレーニング データに変換します。

注意:

Spatial Analyst エクステンションでは、[ディープ ラーニング用のトレーニング データをエクスポート (Export Training Data For Deep Learning)] ツールもサポートされています。

ディープ ラーニング ステップ 2

[ディープ ラーニング モデルのトレーニング (Train Deep Learning Model)] ツールを使用して PyTorch によってモデルをトレーニングするか、サポートされているサード パーティのディープ ラーニング フレームワークを使用して ArcGIS Pro の外部でモデルをトレーニングします。

ディープ ラーニング ステップ 3

トレーニングしたモデルを使用して、[ディープ ラーニングを使用したオブジェクトの検出 (Detect Objects Using Deep Learning)] ツール、[ディープ ラーニングを使用したピクセルの分類 (Classify Pixels Using Deep Learning)] ツール、または [ディープ ラーニングを使用したオブジェクトの分類 (Classify Objects Using Deep Learning)] ツールを実行し、出力を生成します。

[属性] ウィンドウを使用して結果の見直しと検証を行い、[オブジェクト検出精度の計算 (Compute Accuracy For Object Detection)] ツールを使用して精度を計算します。

特長と機能

ArcGIS Pro のディープ ラーニング ツールでは、標準的な機械学習分類法以上のものを使用できます。

  • 畳み込みニューラル ネットワークまたはディープ ラーニング モデルを使用して、オブジェクトの検出、オブジェクトの分類、または画像ピクセルの分類を行います。
  • TensorFlow、PyTorch、Keras などの外部のディープ ラーニング フレームワークを統合します。
  • モデル定義ファイルを複数回にわたって使用し、経時的な変化を検出したり、複数の対象地域のオブジェクトを検出したりします。
  • 検出したオブジェクトの場所を示すポリゴン フィーチャクラスを生成し、追加の解析やワークフローに使用します。
  • GPU 処理を利用するとともに、分散処理には CPU を使用します。

ディープ ラーニングを開始する

トレーニング サンプルの作成とエクスポートは、標準のトレーニング サンプル生成ツールを使用して ArcGIS Pro 内で行われます。 ディープ ラーニング モデルは、[ディープ ラーニング モデルのトレーニング (Train Deep Learning Model)] ツールを使用して PyTorch フレームワークでトレーニングするか、別のディープ ラーニング フレームワークを使用して ArcGIS Pro の外部でトレーニングできます。 モデルのトレーニングが終了すると、Esri モデル定義ファイル (*.emd) を使用してジオプロセシング ツールを実行し、画像内のフィーチャの検出や分類を行います。

ディープ ラーニング フレームワークの Python パッケージをインストールする必要があります。インストールしない場合、Esri モデル定義ファイルをディープ ラーニング ジオプロセシング ツールに追加するとエラーが発生します。 これらのパッケージのインストール方法については、「ArcGIS 用のディープ ラーニング フレームワークのインストール」をご参照ください。

  1. トレーニング サンプルを作成し、エクスポートします。
    1. [ディープ ラーニングのオブジェクトのラベル付け] ウィンドウか [トレーニング サンプル マネージャー] を使用して、分類スキーマを選択または作成します。
    2. クラス カテゴリか対象フィーチャのトレーニング サイト サンプルを作成します。 トレーニング サンプル ファイルを保存します。
    3. [ディープ ラーニング用のトレーニング データをエクスポート (Export Training Data for Deep Learning)] ジオプロセシング ツールを実行し、ソース画像とトレーニング サンプルをディープ ラーニング トレーニング データに変換します。 ソース画像は、イメージ サービス、モザイク データセット、ラスター データセット、またはラスターのフォルダーのいずれかです。 ツールにより、ディープ ラーニング モデルのトレーニングに使用されるトレーニング サイトを含む画像チップやサンプルが出力されます。 設定が必要なツールの追加出力としてテンプレートの *.emd ファイルがあります。
  2. ディープ ラーニング モデルをトレーニングします。
    1. [ディープ ラーニング モデルのトレーニング (Train Deep Learning Model)] ツールで、前の手順で生成した画像チップを使用してディープ ラーニング モデルをトレーニングします。
  3. ArcGIS Pro の推論ジオプロセシングを実行します。
    1. [ディープ ラーニングを使用したオブジェクトの検出 (Detect Objects Using Deep Learning)][ディープ ラーニングを使用したピクセルの分類 (Classify Pixels Using Deep Learning)]、または [ディープ ラーニングを使用したオブジェクトの分類 (Classify Objects Using Deep Learning)] ジオプロセシング ツールを使用し、画像を処理します。 トレーニングされたモデルに、追加の変数 (パディング、感度を微調整するための信頼閾値など) を含むカスタム Python ラスター関数が組み込まれている場合、これらの変数はジオプロセシング ツールのダイアログ ボックスに表示され、ユーザーによる入力を行えるようになっています。 文字列や数値などのデータ型は、Python ラスター関数で指定されます。 追加の推論パラメーターは 2 つまでに限定することをお勧めします。

      [Esri モデル定義] パラメーター値には、Esri モデル定義 JSON ファイル (*.emd) または JSON 文字列を指定することができます。 JSON 文字列は、このツールがサーバーで使用されている場合に便利で、*.emd ファイルをアップロードする代わりに JSON 文字列を貼り付けることができます。

      The output of the ディープ ラーニングを使用したオブジェクトの検出 (Detect Objects Using Deep Learning) ツールはフィーチャクラスで、モデルによって検出されたオブジェクトが表示されます。 ディープ ラーニングを使用したピクセルの分類 (Classify Pixels Using Deep Learning) ツールでは分類されたラスターが出力されます。 [ディープ ラーニングを使用したオブジェクトの分類 (Classify Objects Using Deep Learning)] ツールでは、入力データセットにフィーチャクラスと画像が必要です。出力は、各フィーチャ内のそれぞれのオブジェクトにクラス名のラベルが付けられたフィーチャクラスになります。

ディープ ラーニング モデルを使用後、結果を確認して、モデルの精度を評価することが重要です。 [属性] ウィンドウを使用して、オブジェクトベースの推論 ([ディープ ラーニングを使用したオブジェクトの分類 (Classify Objects Using Deep Learning)] ツールまたは [ディープ ラーニングを使用したオブジェクトの検出 (Detect Objects Using Deep Learning)] ツール) の結果を確認します。 または、[オブジェクト検出精度の計算 (Compute Accuracy For Object Detection)] ツールを使用し、精度評価の表やレポートを生成することもできます。

コンピューター ビジョンを備えたディープ ラーニングのアプリケーションの基礎については、「ディープ ラーニングの概要」をご参照ください。

ジオプロセシング ツールの実行要件と発生する可能性のある問題の詳細については、「ディープ ラーニングに関するよくある質問」をご参照ください。

Esri モデル定義ファイル

*.emd ファイルは、トレーニングされたディープ ラーニング モデルを説明する JSON ファイルです。 このファイルには、推論ツールの実行に必要なモデル定義パラメーターが含まれており、モデルをトレーニングしたデータ サイエンティストが変更する必要があります。 次のテーブルに示すように、必須のパラメーターと任意のパラメーターがあります。

*.emd ファイルの作成と検証が終了したら、推論において複数回使用できるようになります。このとき、入力画像が元のモデル入力と同じセンサーから取り込まれることと、検出されるクラスやオブジェクトが同じである必要があります。 たとえば、Sentinel-2 衛星画像を使用して油田を検出するモデルで定義された *.emd ファイルは、Sentinel-2 画像を使用する複数の対象地域および日付にわたって油田を検出するために使用できます。

すべての推論ツールで共通して使用されるパラメーターを、以下の表に示します。 [CropSizeFixed] パラメーターや [BlackenAroundFeature] パラメーターなど、特定のツールでのみ使用されるパラメーターもあります。これらのパラメーターは、[ディープ ラーニングを使用したオブジェクトの分類 (Classify Objects Using Deep Learning)] ツールにのみ使用されます。

モデル定義ファイルのパラメーター説明

フレームワーク

モデルのトレーニングに使用されるディープ ラーニング フレームワークの名前。

次のディープ ラーニング フレームワークがサポートされます。

  • TensorFlow
  • Keras
  • PyTorch
お使いのモデルが、リストに記載されていないディープ ラーニング フレームワークでトレーニングされている場合、カスタム推論関数 (Python モジュール) とトレーニング モデルが必要です。また、InferenceFunction を Python モジュール パスに設定する必要があります。

ModelConfiguration

モデル構成の名前。

モデル構成は、モデルの入力と出力、推論ロジック、モデルの入力と出力に関する仮説を定義します。 既存のオープン ソース ディープ ラーニング ワークフローは、標準的な入力および出力構成、および推論ロジックを定義しています。 ArcGIS では、事前定義された以下の構成をサポートしています。

TensorFlow

  • ObjectDetectionAPI
  • DeepLab

Keras

  • MaskRCNN

事前定義された構成のいずれかを使用する場合、*.emd ファイルに構成の名前を入力します。 カスタム構成を使用したディープ ラーニング モデルをトレーニングした場合は、入力と出力を *.emd ファイルかカスタム Python ファイルで完全に説明する必要があります。

ModelType

モデルのタイプ。

  • ImageClassification - ピクセルの分類
  • ObjectDetection - オブジェクトまたはフィーチャの検出
  • ObjectClassification - オブジェクトおよびフィーチャの分類

ModelFile

トレーニングしたディープ ラーニング モデル ファイルへのパス。 ファイル形式は、モデルのフレームワークによって異なります。 たとえば、TensorFlow の場合、モデル ファイルは *.pb ファイルです。

説明

モデルに関する情報を提供します。 モデル情報にはトレーニングしたモデルに関するあらゆる情報を含めることができます。 たとえば、モデル番号やモデル名、モデルの作成日時、パフォーマンスの精度などを含めることができます。

InferenceFunction

(オプション)

推論関数のパス。

推論関数はトレーニングされたモデル データ ファイルを理解し、推論ロジックを提供します。 ArcGIS Pro のディープ ラーニング ジオプロセシング ツールでは、6 つの推論関数がサポートされています。

  • TensorFlow 用オブジェクトの検出
  • Tensor Flow 用ピクセルの分類
  • Keras 用オブジェクトの検出
  • PyTorch 用オブジェクトの検出
  • PyTorch 用オブジェクトの分類
上記の推論関数のいずれかを使用した場合、*.emd ファイルで指定する必要はありません。 未サポートのディープ ラーニング モデル構成を使用してモデルをトレーニングした場合、または特別な推論ロジックが必要な場合は、トレーニング済みモデルとともにカスタム推論関数 (Python モジュール) が必要です。 その場合は、[InferenceFunction] を Python モジュール パスに設定します。 推論 Python モジュール ファイルは、ArcGIS Pro がアクセスできる場所であれば、どこに置いてもかまいません。

SensorName

(オプション)

トレーニング サンプルの生成元から画像を収集するために使用するセンサーの名前。

RasterCount

(オプション)

トレーニング サンプルを生成するために使用したラスターの数。

BandList

(オプション)

ソース画像で使用されるバンドのリスト。

ImageHeight

(オプション)

分類または処理される画像の行数。

ImageWidth

(オプション)

分類または処理される画像の列数。

ExtractBands

(オプション)

入力画像から抽出するバンド インデックスまたはバンド名。

クラス

(オプション)

出力クラス カテゴリまたはオブジェクトに関する情報。

DataRange

(オプション)

スケーリングまたは正規化を前処理で行った場合の、データ値の範囲。

ModelPadding

(オプション)

推論の入力画像に追加する埋め込みの量。

BatchSize

(オプション)

モデルの各反復処理で使用されるトレーニング サンプルの数。

PerProcessGPUMemoryFraction

(オプション)

モデルの各反復処理で割り当てられる GPU メモリの割合。 デフォルトは 0.95 つまり 95% です。

MetaDataMode

(オプション)

画像チップに使用されるメタデータ ラベルの形式。

ImageSpaceUsed

(オプション)

モデルのトレーニングに使用される参照システムのタイプ。

  • MAP_SPACE
  • PIXEL_SPACE

WellKnownBandNames

(オプション)

各入力バンドに与えられる名前 (バンド インデックス順)。 バンドは、他のツールでもこれらの名前で参照されるようになります。

AllTileStats

トレーニング データの各バンドの統計情報

次に、標準的なモデル構成を使用するモデル定義ファイル (*.emd) の例を示します。

{
    "Framework": "TensorFlow",
    "ModelConfiguration": "ObjectDetectionAPI",
    "ModelFile":"C:\\ModelFolder\\ObjectDetection\\tree_detection.pb",
    "ModelType":"ObjectionDetection",
    "ImageHeight":850,
    "ImageWidth":850,
    "ExtractBands":[0,1,2],
    "Classes" : [
      {
        "Value": 0,
        "Name": "Tree",
        "Color": [0, 255, 0]
      }
    ]
}

次に、構成内により多くのオプション パラメーターがあるモデル定義ファイル (*.emd) の例を示します。

{
    "Framework": "PyTorch",
    "ModelConfiguration": "FasterRCNN",
    "ModelFile":"C:\\ModelFolder\\ObjectDetection\\river_detection.pb",
    "ModelType":"ObjectionDetection",
				"Description":"This is a river detection model for  imagery",
    "ImageHeight":448,
    "ImageWidth":448,
    "ExtractBands":[0,1,2,3],
				"DataRange":[0.1, 1.0],
				"ModelPadding":64,
				"BatchSize":8,
				"PerProcessGPUMemoryFraction":0.8,
				"MetaDataMode" : "PASCAL_VOC_rectangles",
				"ImageSpaceUsed" : "MAP_SPACE",
    "Classes" : [
      {
        "Value": 1,
        "Name": "River",
        "Color": [0, 255, 0]
      }
    ],
				"InputRastersProps" : {
						"RasterCount" : 1,
						"SensorName" : "Landsat 8",
						"BandNames" : [
								"Red",
								"Green",
								"Blue",
								"NearInfrared"
						]
				},
				"AllTilesStats" : [
      {
      		"BandName" : "Red",
      		"Min" : 1,
      		"Max" : 60419,
      		"Mean" : 7669.720049855654,
      		"StdDev" : 1512.7546387966217
      },
      {
      		"BandName" : "Green",
      		"Min" : 1,
      		"Max" : 50452,
      		"Mean" : 8771.2498195125681,
      		"StdDev" : 1429.1063589515179
      },
      {
      		"BandName" : "Blue",
      		"Min" : 1,
      		"Max" : 47305,
      		"Mean" : 9306.0475897744163,
      		"StdDev" : 1429.380049936676
      },
      {
      		"BandName" : "NearInfrared",
      		"Min" : 1,
      		"Max" : 60185,
      		"Mean" : 17881.499184561973,
      		"StdDev" : 5550.4055277121679
      }
    ],
}

ディープ ラーニング モデル パッケージ

ディープ ラーニング モデル パッケージ (*.dlpk) は、オブジェクト検出または画像分類のためにディープ ラーニング推論ツールを実行するのに必要なファイルおよびデータを含んでいます。 このパッケージを DLPK アイテムとしてポータルにアップロードし、ディープ ラーニング ラスター解析ツールの入力として使用できます。

ディープ ラーニング モデル パッケージは、Esri モデル定義ファイル (*.emd) およびトレーニング済みモデル ファイルを含む必要があります。 トレーニング済みモデル ファイルの拡張子は、モデルをトレーニングするのに使用したフレームワークによって変わります。 たとえば、TensorFlow を使用してモデルをトレーニングした場合、モデル ファイルは *.pb ファイルになり、Keras を使用してトレーニングされたモデル ファイルは、*.h5 ファイルを生成します。 モデルをトレーニングするのに使用したモデル フレームワークおよびオプションに応じて、Python ラスター関数 (*.py) または追加ファイルを含めることが必要になる場合があります。 複数のトレーニング済みモデル ファイルを 1 つのディープ ラーニング モデル パッケージに含めることができます。

ほとんどのパッケージは任意の ArcGIS Pro バージョンで開くことができます。 デフォルトでは、パッケージのコンテンツは、<User Documents>\ArcGIS\Packages フォルダーに格納されます。 この場所は、共有およびダウンロード オプションで変更できます。 パッケージを使用する際の ArcGIS Pro バージョンでサポートされていないパッケージの機能は利用できません。

*.dlpk パッケージのプロパティの表示や編集、*.dlpk パッケージに対するファイルの追加や削除を行うには、[カタログ] ウィンドウの *.dlpk パッケージを右クリックし、[プロパティ] をクリックします。

[カタログ] ウィンドウでディープ ラーニング パッケージを開く

プロパティには、次の情報が含まれています。

  • [入力] - *.emd ファイル、トレーニングされたモデル ファイル、および推論ツールの実行に必要なその他のファイル。
  • [フレームワーク] - モデルのトレーニングに使用するディープ ラーニング フレームワーク。
  • [モデル構成] - 実行されるモデル トレーニングのタイプ (オブジェクト検出、ピクセル分類、またはフィーチャ分類)。
  • [説明] - モデルの説明。 この情報はオプションで、編集可能です。
  • [概要] - モデルの簡単な概要。 この情報はオプションで、編集可能です。
  • [タグ] - パッケージの識別に使用するタグ。 この情報は、ポータルに格納されている *.dlpk パッケージ アイテムで使用されます。

ディープ ラーニング パッケージ プロパティ

[プロパティ] ウィンドウで編集されたプロパティは、[OK] をクリックすると更新されます。 [カタログ] ウィンドウでポータルから *.dlpk パッケージ アイテムにアクセスしている場合、ポータル アイテムが更新されます。

*.dlpk パッケージの作成方法については、「ディープ ラーニング モデル パッケージの共有」をご参照ください。

開発者向けのリソース

ArcGIS Pro で使用できるジオプロセシング ツールやワークフローに加えて、スクリプトやノートブックでもディープ ラーニング タスクを実行できます。 ArcGIS REST API で作業を行っている場合は、ラスター解析サービスラスター解析サービス タスクを使用してディープ ラーニング タスクを行うことができます。 これらのタスクは使用可能なジオプロセシング ツールと同じですが、処理の構成によっては分散処理でも使用できます。

ArcGIS API for Python で作業を行っている場合は、arcgis.learn モジュールArcGIS for Python API Web サイトを使用して、さらに多くのディープ ラーニング タスクを行うことができます。

関連トピック