Skip To Content

ラスター解析でのディープ ラーニング

ArcGIS Image Server では、統計的分類法または機械学習分類法によって、リモート センシング画像を分類することができます。ディープ ラーニングとは機械学習の一種であり、複数レイヤーの非線形処理によって、モデルで説明されるフィーチャの識別やパターン認識を行います。ディープ ラーニング モデルを ArcGIS Image Server に統合し、オブジェクト検出と画像分類を行えます。ArcGIS Pro で、分類トレーニング サンプル マネージャー ツールを使用して対象のフィーチャまたはオブジェクトのトレーニング サンプルが生成されます。この後、生成されたトレーニング サンプルは [ディープ ラーニング用にオブジェクトにラベル付け (Label Objects for Deep Learning)] ツールを使用してラベル付けされ、ディープ ラーニング フレームワークで使用される形式に変換されます。これらのトレーニング サンプルは、[ディープ ラーニング モデルのトレーニング] ラスター解析ツールまたは ArcGIS API for Python を使用したモデルのトレーニングに使用されます。トレーニングされたモデルは、モデル定義ファイル (およびオプションの Python ラスター関数スクリプト ファイル) と一緒にパッケージ化され、ディープ ラーニング パッケージ (*.dlpk) アイテムとして共有されます。このアイテムは、ラスター解析推論ツールの実行に使用されます。推論ツールは、特定のフィーチャの抽出か、画像のピクセルの分類に使用されます。*.dlpk アイテムはラスター解析ツールへの入力として複数回使用できるため、モデルをトレーニングした後に、複数の場所や期間にまたがる複数の画像を評価することができます。

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

ワークフロー アイテム 1

ArcGIS Pro[ディープ ラーニングのオブジェクトのラベル付け] ツールを使用してトレーニング サンプルを作成し、ArcGIS REST API または ArcGIS API for Python[ディープ ラーニング用のトレーニング データをエクスポート] ラスター解析ツールを使用してデータ サイエンティスト向けのデータを準備します。

ワークフロー アイテム 2

[ディープ ラーニング モデルのトレーニング] ラスター解析ツールを使用して、ディープ ラーニングをトレーニングします。ArcGIS REST API を使用して、ディープ ラーニング フレームワークでモデルのトレーニングを行うこともできます。モデル定義ファイルとトレーニング済みディープ ラーニング モデルまたは Python スクリプトで構成される出力ディープ ラーニング パッケージ (*.dlpk) は、*.dlpk アイテムとしてポータルで共有されます。

ワークフロー アイテム 3

データ サイエンティストがディープ ラーニング パッケージを提供します。これは、モデル定義ファイルとトレーニング済みモデルまたは Python スクリプトで構成され、ArcGIS Image Server のラスター解析環境に戻されます。

ポータル上の *.dlpk アイテムで、[ディープ ラーニングを使用したオブジェクトの検出] ツール、[ディープ ラーニングを使用したピクセルの分類] ツール、または [ディープ ラーニングを使用したオブジェクトの分類] ツールを実行して、出力を生成します。

特長と機能

ディープ ラーニング ラスター解析ツールでは、標準的なコンピューター ラーニング分類法以上のものを使用できます。

  • 畳み込みニューラル ネットワークを使用して画像分類とオブジェクト検出を行います。
  • ディープ ラーニング モデルを使用して、画像のピクセル分類や、航空機、樹木、車両、水域、建物、油田などのオブジェクトの検出または分類を行います。
  • PyTorch、Keras、TensorFlow など、外部のディープ ラーニング モデル フレームワークと統合します。
  • モデルの推論時に複数のラスターを処理し、経時的な変化を検出したり、さまざまな対象領域でオブジェクトを検出したりします。
  • ポリゴン フィーチャクラスを生成して検出されたオブジェクトを表示し、追加の解析やワークフローで使用します。
  • ディープ ラーニング推論ツールは、分散処理に CPU を使用することも、各サーバー ノードで強力な GPU を使用することもできます (利用可能な場合のみ)。
  • サーバー ノードごとに複数の GPU を使用して、TensorFlow Object Detection API および DeepLab、Keras MaskRCNN、PyTorch fastai Single Shot Detector など、ArcGIS で事前に定義されたモデル構成でディープ ラーニング推論ジョブを実行できます。
  • 入力ラスターに適切なマップ空間から画像空間への変換処理が含まれている場合、トレーニング画像チップを [ディープ ラーニング用のトレーニング データをエクスポート] で画像空間にエクスポートできます。

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

トレーニング サンプルの作成とエクスポートは、画像分類ワークフローに関する専門的な知識が必要となるため、経験豊富なイメージ アナリストが ArcGIS 内で行います。ディープ ラーニング モデルは、[ディープ ラーニング モデルのトレーニング] ラスター解析ツールまたは ArcGIS API for Python arcgis.learn を使用して、ArcGIS でトレーニングできます。代わりに、サードパーティのディープ ラーニング API を使用して、ディープ ラーニング モデルを ArcGIS の外部でトレーニングすることもできます。モデルのトレーニングが完了すると、*.dlpk アイテムが Portal for ArcGIS に追加され、モデル推論タスクの準備が整います。ラスター解析ツールを実行して、Map ViewerArcGIS API for PythonArcGIS REST API、または ArcGIS Pro でオブジェクトの検出と分類、またはピクセルの分類を行います。ディープ ラーニング モデルと ArcGIS 画像分類の経験がある 1 人のアナリストがいれば、すべてのディープ ラーニング ワークフローを実行できます。

個別のディープ ラーニング セットアップ アプリケーションも用意されています。このアプリケーションを使用すると、適切なディープ ラーニング フレームワーク API (TensorFlow、Keras、PyTorch、およびその他の必要なすべての Python ライブラリ) が ArcGIS Image Server のデフォルトの arcgispro-py3 環境にインストールされます。この作業は、ArcGIS Image Server でディープ ラーニング タスクを実行する際の前提条件になります。

構成および配置については、ヘルプ ドキュメント「ArcGIS Enterprise をラスター解析用に構成して配置」をご参照ください。サーバー ノードごとに複数の GPU を使用するように Raster Analysis サーバーを構成するには、「追加手順」をご参照ください。

  1. トレーニング サンプルを作成し、エクスポートします。
    1. ArcGIS Pro[ディープ ラーニング用にオブジェクトにラベル付け (Label Objects for Deep Learning)] ツールを使用して、分類スキーマを選択または作成します。
    2. クラス カテゴリか対象フィーチャのトレーニング サイト サンプルを作成します。トレーニング サンプル ファイルを保存します。
    3. [ディープ ラーニング用のトレーニング データをエクスポート (Export Training Data for Deep Learning)] ラスター解析ツールを実行し、ソース画像とトレーニング サンプルをディープ ラーニング トレーニング データに変換します。ソース画像はイメージ サービスの場合もあります。ツールの出力は、出力画像チップ、ラベル、およびメタデータ ファイルが格納されたデータ ストア文字列です。また、*.emd のテンプレート ファイルも追加で出力されます。このファイルはデータ サイエンティストが設定します。
  2. ディープ ラーニング モデルをトレーニングします。
    1. 上記の手順 1 で生成された画像チップを使用して、[ディープ ラーニング モデルのトレーニング] ラスター解析ツールでモデルをトレーニングできます。また、ユーザーは ArcGIS API for Python arcgis.learn やサードパーティのディープ ラーニング フレームワーク API を使用して、ディープ ラーニング モデルをトレーニングすることもできます。
    2. [ディープ ラーニング モデルのトレーニング] ラスター解析ツールを使用してディープ ラーニング モデルをトレーニングすると、出力はポータルで公開されたディープ ラーニング モデル パッケージ アイテムになります。ディープ ラーニング モデル パッケージ (*.dlpk) は、次の手順で直接使用できます。
    3. サードパーティのディープ ラーニング フレームワーク API を使用してモデルをトレーニングする場合、ユーザーはディープ ラーニング フレームワークの名前、モデル構成、その他のオプション プロパティ、およびオプションでモデル推論用のカスタム Python ラスター関数を使用して *.emd ファイルを更新する必要があります。*.emd ファイル内の必須パラメーターと任意のパラメーターの詳細については、下記の「Esri モデル定義ファイル」セクションをご参照ください。
  3. Map ViewerArcGIS API for PythonArcGIS REST API、または ArcGIS Pro から、推論ラスター解析ツールを実行します。
    1. [ディープ ラーニングを使用したオブジェクトの検出][ディープ ラーニングを使用したオブジェクトの分類]、または [ディープ ラーニングを使用したピクセルの分類] ラスター解析ツールを使用して、画像を処理します。トレーニングされたモデルに、追加の変数 (パディング、感度を微調整するための信頼閾値など) を含むカスタム Python ラスター関数が組み込まれている場合、これらの変数は ArcGIS Pro または Map Viewer ラスター解析ツールのダイアログ ボックスに表示され、ユーザーによる入力を行えるようになっています。文字列や数値などのデータ型は、Python ラスター関数で指定されます。

      [ディープ ラーニングを使用したオブジェクトの検出] ツールや [ディープ ラーニングを使用したオブジェクトの分類] ツールは、モデルによって検出または分類されたオブジェクトを示すフィーチャクラスを出力し、[ディープ ラーニングを使用したピクセルの分類] ツールは分類されたラスターを出力します。

      メモ:

      推論ツールを実行するには、ディープ ラーニング モデル フレームワークを Raster Analysis サービス コンピューター上にインストールする必要があります。これは、推論のロジックがフレームワークの Python API に組み込まれており、計算に必要となるためです。

Esri モデル定義ファイル

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

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

フレームワーク

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

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

  • TensorFlow
  • Keras
  • PyTorch

InferenceFunction

ModelConfiguration

モデル構成の名前。

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

TensorFlow

  • ObjectDetectionAPI
  • DeepLab

Keras

  • MaskRCNN
  • KerasClassifier

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

ModelFile

トレーニングしたディープ ラーニング モデル ファイルへのパス。モデル フレームワーク ファイル形式の多くはプロトコル バッファーに基づいているため、トレーニングされたディープ ラーニング モデルは *.pb ファイルです。ただし、他のファイル形式もサポートされています。

ModelType

モデルのタイプ。タイプは次のいずれかです。

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

InferenceFunction

(オプション)

推論関数のパス。

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

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

ImageHeight

(オプション)

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

ImageWidth

(オプション)

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

ExtractBands

(オプション)

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

Classes

(オプション)

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

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

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

ディープ ラーニング パッケージ (*.dlpk) アイテム

ディープ ラーニング ラスター解析ツールの入力には、ディープ ラーニング モデル パッケージ (*.dlpk) が必要です。ディープ ラーニング モデル パッケージは、Esri モデル定義 JSON ファイル (*.emd)、ディープ ラーニング バイナリ モデル ファイル、および使用されるオプションの Python ラスター関数で構成されます。

すべてのコンポーネントの準備が整ったら、すべてのファイルを 1 つの *.zip ファイルに圧縮し、*.zip ファイルを *.dlpk アイテムとしてポータルにアップロードできます。詳細については、「コンピューターからのファイルの追加」をご参照ください。アイテムを追加する際に *.dlpk アイテム タイプが自動的に検出されるように、*.zip ファイルの拡張子を *.dlpk に変更することもできます。

メモ:

ルート フォルダー レベルでディープ ラーニング モデル パッケージに含まれているすべてのファイルを圧縮する必要があります。