トレーニング サンプルの作成

トンガ王国のコロバイの農園にあるヤシの木それぞれの健康状態を目録に記入し、評価するには、大変な時間と労働力がかかります。このプロセスを簡略化するために、ArcGIS Pro でディープ ラーニング モデルを使用して、樹木を識別し、植生の若さを計測することで健康状態を算出します。最初に、トンガ王国のコロバイを表示する衛星画像として、樹木を識別できるだけの高い空間およびスペクトル解像度の衛星画像を検索します。衛星画像を入手したら、トレーニング サンプルを作成し、それらをディープ ラーニング モデルで使用できる形式に変換します。モデルが検索内容を認識できるように、ヤシの木の画像を定義して同じピクセルを識別できるようにします。

データのダウンロード

フィーチャの抽出には、正確で高解像度の衛星画像が不可欠です。ピクセル サイズがヤシの林冠を識別できるほどに小さくなければ、モデルはヤシの木を識別できません。さらに、樹木の健康状態を算出するには、画像に植生の健康状態インデックスを生成できるスペクトル バンドが必要です。OpenAerialMap (高解像度でマルチスペクトルの画像のあるオープンソースのリポジトリ) からこのレッスンに必要な衛星画像を見つけてダウンロードします。

  1. OpenAerialMap Web サイトに移動します。
  2. [エクスポートの開始] をクリックします。

    対話型マップ ビューで、地球上のあらゆる場所で使用できる衛星画像のズーム、画面移動、検索ができます。マップはグリッドに分割されています。グリッド ボックスをポイントすると、数字が表示されます。この数字は、そのボックスの使用可能な画像数を示します。

  3. 検索ボックスに「Kolovai」と入力します。結果のリストで [Kolovai] をクリックします。

    これは、ココナッツの農園があるトンガタプ島にある町です。

  4. 必要に応じて、拡大表示してマップ上にコロバイのラベルを表示します。コロバイの上で直接グリッド ボックスをクリックし、[Kolovai UAV4R Subset (OSM-Fit) by Cristiano Giovando] をクリックします。

    コロバイ画像タイルの選択

  5. [ダウンロード] ボタンをクリックして、未加工の .tif ファイルをダウンロードします。任意の場所に画像を保存します。

    衛星画像のダウンロード

    ファイル サイズによっては、ダウンロードに数分かかることがあります。

データの参照

分類プロセスを開始するには、ダウンロードした衛星画像を設定した ArcGIS Pro プロジェクト作成し、トレーニング サンプルの作成中に使用するブックマークをいくつか保存します。

  1. Start ArcGIS Pro. If prompted, sign in using your licensed ArcGIS account.
    備考:

    If you don't have ArcGIS Pro or an ArcGIS account, you can sign up for an ArcGIS free trial.

  2. [新規] の下で、[マップ] をクリックします。

    [マップ] テンプレートは、2D マップを含むプロジェクトを作成します。

  3. [新しいプロジェクトの作成] ウィンドウで、プロジェクトの名前を「CoconutHealth」に設定します。選択した場所にプロジェクトを保存して、[OK] をクリックします。

    プロジェクトが開き、[地形図] ベースマップが表示されます。

  4. [マップ] タブの [レイヤー] グループで、[データの追加] をクリックします。

    マップへのデータの追加

    [データの追加] ウィンドウが開きます。

  5. [データの追加] ウィンドウの [コンピューター] で、OpenAerialMap からダウンロードしたコロバイの画像を参照します。*.tif ファイルを選択して [OK] をクリックします。

    コロバイの画像がマップに追加されます。レイヤーは、一意の ID 別に [コンテンツ] ウィンドウに一覧表示されます。ID に意味はありません。レイヤーをわかりやすい名前に変更することをお勧めします。

  6. [コンテンツ] ウィンドウで、画像レイヤーを 2 回クリックし、「Kolovai Palms」と入力します。Enter キーを押します。

    レイヤーの名前の変更

  7. マップを画面移動しズームして、ヤシ農園の外観を確認します。

    この画像には多数のココヤシの木があります。現場で 1 つ 1 つ数えたり、画像を見ながら数えたりすると、数日かかります。ディープ ラーニング モデルをこの作業に利用するために、モデルのトレーニングに使用できるヤシの木の小型サンプルを作成します。最初に、画像のさまざまなエリアをすばやく拡大できるよう、カスタム マップ表示を作成します。

  8. マップ ウィンドウの下部で、マップ縮尺矢印をクリックし、[カスタマイズ] を選択します。

    カスタム縮尺範囲の作成

    [縮尺プロパティ] ウィンドウが表示されます。

  9. [縮尺プロパティ] ウィンドウで、[標準縮尺] タブが選択されていることを確認します。[縮尺] ボックスに、「1:500」と入力します。

    カスタム縮尺の作成

  10. [追加] をクリックし、[OK] をクリックします。

    カスタム縮尺オプションがプロジェクトのマップ縮尺のリストに追加されました。ブックマークを作成するたびに、この縮尺を使用します。

  11. リボンの [マップ] タブの [照会] グループで、[場所検索] をクリックします。

    [場所検索] ボタン

    [場所検索] ウィンドウが表示されます。

  12. [場所検索] 検索ボックスに、座標「175.3458501°W 21.0901350°S」を貼り付けて、Enter キーを押します。

    座標の位置をマークする A という文字がマップに表示されます。次のセクションで参照できるよう、カスタム縮尺を使用してこの位置をブックマークします。

  13. マップ縮尺リストをクリックし、[1:500] を選択します。

    マップには、座標位置が拡大表示されています。

  14. リボン上の [マップ] タブにある [ナビゲーション] グループで [ブックマーク] をクリックします。メニューで、[新規ブックマーク] をクリックします。

    ブックマークの作成

    [ブックマークの作成] ウィンドウが表示されます。

  15. [ブックマークの作成] ウィンドウで、「Northwest palms」と入力して [OK] をクリックします。
  16. 1:500 の縮尺で以下の座標のブックマークを作成します。

    座標ブックマーク名

    175.3413074°W 21.0949798°S

    Central east palms

    175.3479054°W 21.1018014°S

    Southwest palms

    175.3409475°W 21.1035265°S

    Southeast palms

    175.3479457°W 21.0959058°S

    Central west palms

  17. [場所検索] ウィンドウを閉じて、プロジェクトを保存します。

トレーニング スキーマの作成

ディープ ラーニング モデル (画像分類モデル) をトレーニングする場合、すぐれたトレーニング サンプルを作成することが不可欠です。多くの場合、これはプロセスの中で最も時間のかかる手順です。画像内のすべてのヤシの木を抽出するのに必要な情報をディープ ラーニング モデルに提供するには、多数のヤシの木のフィーチャを作成して、ココヤシの大きさ、形状、およびスペクトル シグネチャをモデルに教えます。これらのトレーニング サンプルは、[ディープ ラーニングのオブジェクトのラベル付け] ツールを使用して作成および管理されます。

  1. リボンの [画像] タブをクリックします。

    ArcGIS Pro は、コンテキストベースで機能するため、関連データが [コンテンツ] ウィンドウから選択されている場合にのみ特定のツールとタブを使用できます。画像解析ツールをアクティブ化するには、ラスター レイヤーを選択する必要があります。

  2. [コンテンツ] ウィンドウで、[Kolovai Palms] が選択されていることを確認します。

    [画像分類][計測]、および [ツール] グループのツールが使用できます。新しいコンテキスト タブである [ラスター レイヤー]、および [表示設定] タブと [データ] タブがアクティブ化されています。

  3. [画像分類] グループで、[分類ツール] をクリックして、[ディープ ラーニングのオブジェクトのラベル付け] を選択します。

    画像分類ツール

    [画像分類] ウィンドウに、空白の新しいスキーマが表示されます。衛星画像からココヤシの木を抽出することのみが目的であるため、1 つのクラスのみを設定したスキーマを作成します。

  4. [新しいスキーマ] を右クリックし、[プロパティの編集] を選択します。[名前] に、「Coconut Palms」と入力します。[説明] に短い説明を追加して、[保存] をクリックします。

    スキーマの名前が [画像分類] ウィンドウで変更されます。これで、サンプルを追加できるようになりました。

  5. [Coconut Palms] を右クリックして [新しいクラスの追加] を選択します。
  6. [新しいクラスの追加] ウィンドウで、次のパラメーターを設定します。

    • [名前] に、「Palm」と入力します。
    • [値] に、「1」と入力します。
    • [色] で、[マーズ レッド] を選択します。

    クラス プロパティ

  7. [OK] をクリックします。

    [画像分類] ウィンドウで、[Palm] クラスが [Coconut Palms] スキーマに追加されます。作成した各ブックマークでディープ ラーニング モデルをトレーニングするために、[Palm] クラスを設定したフィーチャを作成します。

トレーニング サンプルの作成

エリア内の樹木の代表的なサンプルを確実に取得するために、画像全体のフィーチャをデジタイズします。これらのフィーチャは、画像チップと呼ばれる形式で、ディープ ラーニング モデルに読み込まれます。画像チップは、ソース画像からカットされた画像の小片です。[画像分類] ウィンドウで十分な数のフィーチャを作成したら、メタデータを持つ画像チップとしてこれらのフィーチャをエクスポートします。

  1. リボンの [マップ] タブをクリックします。[ナビゲーション] グループで、[ブックマーク] ドロップダウンボタンをクリックして、[Northwest palms] を選択します。
  2. [画像分類] ウィンドウで、[Palm] クラスを選択し、[円] ツールをクリックします。

    [円] ツール

    このツールを使用して、現在表示されている各ヤシの木の周囲に円を描きます。フィーチャの中心から外側へ円が描画され、フィーチャの半径が計測されます。

  3. マップ上で、ヤシの木の中心をクリックし、1 本の木の周囲に円を描きます。

    トレーニング サンプルの作成

    新しいヤシ レコードが [画像分類] ウィンドウの [ラベル付きオブジェクト] グループに追加されます。ディープ ラーニング モデルをトレーニングする場合、各画像チップのすべてのヤシの木がヤシとしてラベル付けされている必要があります。画像チップは、現在のマップ表示よりもかなり小さくなりますが、マップ内のすべての木をマークして多数の画像チップを作成するために、すべての木のヤシ レコードを作成します。

  4. マップ表示内の各木の周囲に円を描きます。

    ヤシの木のトレーニング サンプル

    終了すると、[トレーニング サンプル マネージャー] ウィンドウにおよそ 100 のサンプルが記録されます。

  5. ブックマークごとにすべてのヤシの木のトレーニング サンプルを作成します。

    トレーニング データの概要

    備考:

    モデルのトレーニングに使用するサンプルが多いほど、モデルの分類パフォーマンスは高くなります。

    トレーニング サンプルのデジタイズは、時間のかかるプロセスですが、多数のサンプルを作成できるメリットがあります。トレーニング データとしてモデルに提供するサンプルが多いほど、返される結果が正確になります。

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

    トレーニング サンプルの保存

  7. [現在のトレーニング サンプルの保存] ウィンドウの [プロジェクト] で、[フォルダー] をクリックし、デフォルトのプロジェクト フォルダーである [CoconutHealth] をダブルクリックします。
  8. フィーチャクラスに「PalmTraining」という名前を付けて [保存] をクリックします。

    モデルをトレーニングするための最後の手順として、トレーニング サンプルを画像チップとして正しい形式にエクスポートします。

  9. [画像の分類] ウィンドウで、[トレーニング データのエクスポート] タブをクリックします。

    トレーニング サンプルのリストに代わって、[トレーニング データのエクスポート] パラメーターが表示されます。

  10. [トレーニング データのエクスポート] タブで、次のパラメーターを入力します。

    • [出力フォルダー] で、[CoconutHealth] プロジェクトを参照して、「ImageChips」という名前の新しいフォルダーを作成します。
    • [イメージ形式] で、[JPEG 形式] を選択します。
    • [タイル サイズ X][タイル サイズ Y] で、「448」と入力します。
    • [メタデータ形式] で、[PASCAL Visual Object Classes] を選択します。

    トレーニング用の画像チップのエクスポート

  11. [実行] をクリックします。

    ツールが実行されます。この処理には多少時間がかかる場合があります。

  12. [カタログ] ウィンドウで、[フォルダー] を展開します。[CoconutHealth] を右クリックして [更新] を選択します。

    このフォルダーが更新されて、[ImageChips] フォルダーが表示されます。

  13. [ImageChips] を展開します。

    現在、このフォルダーには、画像チップ サンプルとメタデータが追加されています。

  14. プロジェクトを保存します。

このレッスンでは、オープンソースの衛星画像をプロジェクトにダウンロードして追加し、[トレーニング サンプル マネージャー] ウィンドウを使用してトレーニング サンプルを作成し、トレーニング用のディープ ラーニング モデルに対応する形式にサンプルをエクスポートしました。次は、農園のすべての樹木を識別します。


ディープ ラーニング モデルを使用したヤシの木の検出

デフォルトの conda 環境のクローン作成

最初に、ココヤシの木のトレーニング サンプルを作成し、画像チップとしてエクスポートしました。これらのトレーニング サンプルは、ArcGIS Pro 2.5 の [ディープ ラーニングを使用したオブジェクトの検出 (Detect Objects Using Deep Learning)] ツールを使用したモデルのトレーニングに使用できます。このツールは TensorFlow、Keras、CNTK などのディープ ラーニング フレームワークに依存しています。これらのディープ ラーニング ライブラリをインストールするには、Python コマンド プロンプトを使用してデフォルトの Python 環境のクローンを作成します。ArcGIS Pro の [ディープ ラーニング] ツールセットおよびディープ ラーニング フレームワークのインストール プロセスの詳細については、このドキュメントをご参照ください。

  1. 必要な場合は、プロジェクトを保存し、ArcGIS Pro を閉じます。
  2. デスクトップで、管理者として Python コマンド プロンプトを検索して実行します。

    Python コマンド プロンプトは、ArcGIS Pro のインストール時にダウンロードされているため、propy.bat 初期化ファイルが自動的に実行されます。python.exe の代わりに実行されるこのファイルはアプリケーションのアクティブな conda 環境を認識するため、ユーザーはその環境を使用してスタンドアロン スクリプトを実行できます。

    このプロジェクトでは、deeplearning という名前の新しい環境を作成します。ArcGIS Pro では、デフォルトの環境が読み取り専用であるため、変更を行えるように、この環境のクローンを作成します。

  3. 次のコマンドを実行して、デフォルトの ArcGIS Pro 環境のクローンを作成することで新しい conda 環境を作成します。
    conda create -n deeplearning –-clone arcgispro-py3

    クローン作成処理には数分かかる場合があります。クローン環境は envs フォルダー (%LOCALAPPDATA%\Esri\conda\envs\) に保存されます。システム変数 %LOCALAPPDATA% は、C:\Users\YourUserFolderName\AppData\Local\ の代用です。

  4. 新しい環境が作成されたら、次のコマンドを実行して、ディレクトリをそのフォルダーに変更します。
    cd C:\Program Files\ArcGIS\Pro\bin\Python\envs\deeplearning
    備考:

    ArcGIS Pro のインストールが Program Files フォルダーに存在しない場合は、代わりにユーザー自身のインストール パスを使用する必要があります。Python 環境のクローンを保存できるデフォルト フォルダーはいくつかあります。\AppData\Local\ESRI\conda\envs\ArcGIS\Pro\bin\Python\envs などのデフォルト フォルダーは、以前のアクティブな環境に応じて異なることがあります。

  5. 次のコマンドを実行して、新しい環境をアクティブ化し、クローン環境の保存先に一致するようにファイル パスを更新します。
    activate deeplearning

    この処理には数分かかる場合があります。アクティブ化プロセスが完了すると、フォルダーの場所の前の括弧内にアクティブな環境名が示されます。新しい環境をアクティブ化することで、行ったすべての変更が選択した環境内でのみ実行されるように指定します。それぞれ異なるパッケージまたは異なるバージョンのパッケージを必要とする複数のプロジェクトを実行している場合、このプロセスは重要です。次に、arcgis.learn モジュールで実行する必要があるパッケージをインストールします。

    新しい環境のアクティブ化

  6. 次のコマンドを一度に 1 つずつ実行して、ディープ ラーニング パッケージの依存関係をインストールします。
    conda install tensorflow-gpu=1.14.0
    conda install keras-gpu=2.2.4
    conda install scikit-image=0.15.0
    conda install Pillow=6.1.0
    conda install fastai=1.0.54
    conda install pytorch=1.1.0
    conda install libtiff=4.0.10 --no-deps
    備考:

    一部のパッケージでは、インストールの確認を求められます。確認を求められたら、「y」と入力し、Enter キーを押します。

  7. コマンド proswap を使用して、ArcGIS Pro プロジェクト環境を deeplearning 環境に設定します。
    proswap deeplearning

    これで、conda 環境が設定され、ディープ ラーニング ツールの実行に必要なすべてのライブラリが追加されました。

  8. コマンド プロンプトを閉じてから、CoconutHealth プロジェクトを再び開きます。

    このプロジェクトを更新して、新しい環境設定での更新を可能にする必要があります。ディープ ラーニング モデルのトレーニング プロセスを開始する前に、Python パッケージ マネージャーを使用して、deeplearning 環境が ArcGIS Pro でアクティブであることを確定します。

  9. リボンの [プロジェクト] タブをクリックして、[Python] を選択します。

    Python パッケージ マネージャーが開きます。これまでに ArcGIS Pro で別の環境を使用していた場合を除き、デフォルトの環境である arcgispro-py3 がアクティブになっています。コマンド プロンプトで作成してアクティブ化した環境は、さらに ArcGIS Pro でアクティブに設定しない限り、プロンプトの該当するインスタンスでのみ維持されます。

  10. [プロジェクト環境] で、deeplearning 環境がアクティブであることを確定します。

    ArcGIS Pro での環境の管理

    次に、[ディープ ラーニング モデルのトレーニング (Train Deep Learning Model)] ツールを使用して、Esri モデル定義 (*.emd) ファイルを作成します。このファイルは [ディープ ラーニングを使用したオブジェクトの検出 (Detect Objects Using Deep Learning)] のような ArcGIS ジオプロセシング ツールで読み取られるように書式設定されます。

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

[ディープ ラーニング モデルのトレーニング (Train Deep Learning Model)] ジオプロセシング ツールは、ラベル付けされた画像チップを使用して、特定の画像内でどのピクセルの組み合わせがヤシの木を表すかを決定します。このトレーニング プロセスで作成される Esri モデル定義 (*.emd) ファイルは、ArcGIS の他のディープ ラーニング ツールで使用できます。*.emd ファイルを設定したら、次に [ディープ ラーニングを使用したオブジェクトの検出 (Detect Objects Using Deep Learning)] ツールを使用して画像内のヤシの木を識別します。

  1. リボンの [解析] タブをクリックします。[ジオプロセシング] グループで、[ツール] をクリックします。
  2. [ジオプロセシング] ウィンドウで、[ディープ ラーニング モデルのトレーニング (Train Deep Learning Model)] ツールを検索して開きます。
  3. [入力トレーニング データ] で、[CoconutHealth] プロジェクト フォルダーに保存した [ImageChips] フォルダーを参照します。

    ImageChips フォルダーには 2 つのフォルダーと 2 つのテキスト ファイル (*.json および *.emd) があります。これらは、[ディープ ラーニング用のトレーニング データをエクスポート (Export Training Data for Deep Learning)] ツールから作成されたものです。esri_model_definition.emd ファイルは、モデルをトレーニングしたデータ サイエンティストが設定するテンプレートです。ディープ ラーニング フレームワーク、トレーニング済みモデルへのパス、クラス名、モデル タイプ、トレーニングで使用される画像の画像仕様などの情報があります。*.emd ファイルにより、トレーニング済みモデルと ArcGIS Pro が統合されます。

  4. [出力モデル] で、[CoconutHealth] プロジェクト フォルダー内に [PalmDetection_25_SSD] という名前のフォルダーを作成します。

    この命名規則は、モデルのトレーニングに使用するパラメーターに関する情報で構成されています。25 は使用するエポックの数、SSD は使用するモデル タイプである Single Shot Detector (シングル ショット検出器) を表します。

  5. [最大エポック] に、「25」と入力します。

    エポックとは、トレーニング データセットを処理する完全な 1 サイクルをいいます。エポックごとに、ImageChips フォルダーに保存したトレーニング データセットがニューラル ネットワークを通って前方/後方に 1 回渡されます。デフォルトは 20 です。

  6. [モデル パラメーター] を展開して、[モデル タイプ][シングル ショット検出器] に設定されていることを確認します。

    [モデル タイプ] はモデルのトレーニングに使用するディープ ラーニング アルゴリズムとニューラル ネットワークを決定します。この例では、シングル ショット検出器手法を使用します。この手法がオブジェクト検出用に最適化されているためです。

    EMD ファイル

  7. 残りのパラメーターについてはデフォルト値をそのまま使用します。

    モデル引数や、モデルのトレーニングに使用されるパラメーター値は、選択したモデル タイプによって異なり、カスタマイズ可能です。モデル引数の選択の詳細については、「ディープ ラーニング モデルのトレーニング」のドキュメントをご参照ください。

    備考:

    コンピューターの処理能力によっては、このツールの実行にしばらく時間がかかることがあります。このレッスンをすぐに進める場合は、事前にトレーニング済みの PalmDetection_25_SSD ファイルをダウンロードして、次のセクションに進みます。

  8. [実行] をクリックします。

ヤシの木の検出

衛星画像からフィーチャを抽出する主な作業は、データの準備、トレーニング サンプルの作成、モデルのトレーニングです。これらの手順は完了しているため、トレーニング済みモデルを使用して、画像全体のヤシの木を検出します。オブジェクト検出は、最適な結果を得るために一般的に複数回のテストが必要となるプロセスです。モデルの最適なパフォーマンスを実現するためにユーザーが修正できるパラメーターがいくつかあります。これらのパラメーターを簡単にテストするため、画像の一部からヤシの木を検出してみましょう。検出結果に問題がなければ、検出ツールの処理範囲を画像全体に広げます。

  1. [ジオプロセシング] ウィンドウで、[ディープ ラーニングを使用したオブジェクトの検出 (Detect Objects Using Deep Learning)] ツールを検索し、開きます。

    このツールは、サードパーティのディープ ラーニング Python API を呼び出し、指定された Python ラスター関数を使用して、画像を処理します。

  2. [ディープ ラーニングを使用したオブジェクトの検出 (Detect Objects Using Deep Learning)] ツールで、以下のパラメーターを入力します。

    • [入力ラスター] で、[Kolovai Palms] を選択します。
    • [出力検出オブジェクト] に、「CoconutTrees」と入力します。
    • [モデル定義] で、PalmDetection_25_SSD.emd (C:\DeepLearning\Data にあるレッスン データと一緒にダウンロードされている)、または [ディープ ラーニング モデルのトレーニング (Train Deep Learning Model)] ツールを使用して作成された *.emd ファイルに移動します。
    • Padding: 0
    • Threshold: 0.5
    • nms_overlap: 0.6
    • [Batch Size] に、「1」と入力します。
    • [Non Maximum Suppression] のチェックボックスをオンにします。
    • [最大オーバーラップ率] に、「0.6」と入力します。

    トレーニング済みモデルに情報があるため、ツール ウィンドウにその他の引数が表示されます。モデルを提供したデータ サイエンティストが、各引数のヒントを提供しています。異なる値を試したい場合は、引数に関する詳細が提供されます。必要のない場合は、デフォルトの設定のままにします。

    threshold 引数は、信頼度 (オブジェクトにヤシの木のラベル付けをする際に受容できる信頼度) の閾値です。この数値を調整して、求める精度を達成します。

    畳み込みニューラル ネットワーク モデリングで画像の畳み込みを実行する場合、実際には、データを縮小し、分析時に内側のピクセルに比べて画像のエッジのピクセルの使用を非常に少なくします。デフォルトでは、[padding] パラメーターは 0 です。[padding] パラメーター 1 は、すべてが値 0 を持つ画像の外側のエッジにピクセルの境界が追加されることを意味します。これにより、有効なエッジ ピクセルからの情報の損失および縮小が軽減します。この効果を得るには、パラメーターを 1 または 2 に変更できます。

    パディング ピクセル

    [最大オーバーラップ率] (Python 引数の nms_overlap としても表示される) は、各フィーチャの許容される交差領域を制御します。引数が *.emd ファイルに指定されているため、このパラメーターは 2 回表示されますが、常に追加されるとは限りません。この引数の低い方の数値によって、オブジェクトが個別のフィーチャと見なされるためのオーバーラップ制限が指定されます。[batch_size] パラメーターは、トレーニングの繰り返し手順のたびにネットワークのトレーニングに使用されるサンプルの数を定義します。たとえば、トレーニング サンプルが (画像チップ) が 1,000 あり、バッチ サイズが 100 である場合、最初の 100 のトレーニング サンプルがニューラル ネットワークをトレーニングします。次の繰り返し手順で、その次の 100 のトレーニング サンプルが使用される、というように続いていきます。コンピューターで利用可能なメモリに応じて、このパラメーターの値を増やすことができます。ただし、トレーニングは完全平方バッチでのみ実行できます。たとえば、4、9、16 などのバッチを使用できます。

    画像全体に対してこのツールを実行すると時間がかかる場合があるため、他のパラメーターも操作する場合は、処理範囲を小さい範囲に変更します。

  3. 画像内の場所を 1:500 の縮尺に拡大します。
  4. [ディープ ラーニングを使用したオブジェクトの検出 (Detect Objects Using Deep Learning)] ツールで、[環境] タブをクリックします。[範囲][現在の表示範囲] に変更します。
  5. [実行] をクリックします。
  6. これらのパラメーターを変更してみて、モデルのパフォーマンスが改善するか確認します。小さい縮尺の結果に問題がなければ、画像全体を処理できるよう処理範囲を [デフォルト] に戻します。
  7. [実行] をクリックします。

    使用しているハードウェアや、CPU、GPU、RAM のいずれで実行しているかに応じて、ツールの実行には数分かかります。

    ディープ ラーニング ツールで検出されるオブジェクト

  8. プロジェクトを保存します。

ArcGIS Pro のディープ ラーニング ツールは、データ サイエンティストのトレーニング済みモデルと inference 関数 (サードパーティのディープラーニング モデリング ソフトウェアの Python パッケージに付属) を利用します。次のレッスンでは、ラスター関数を使用して、分析範囲内の各樹木の健康状態を推定します。


植生の健康状態の推定

前のレッスンでは、画像からココヤシの木を抽出するためにディープ ラーニング モデルを作成しました。このレッスンでは、同じ画像を使用して、植生の健康状態指数を算出することで、植生の健康状態を推定します。

植生の健康状態を評価するには、可視大気抵抗植生指数 (VARI) を算出します。これは、可視波長から反射率の値のみを使用して、葉面積指数 (LAI) と植生比率 (VF) の間接的な計測値として作成されたものです。

(Rg - Rr) / (Rg + Rr - R(Rg - Rb))

Rr、Rg、Rb は、それぞれ、赤、緑、青を示す反射率です (Gitelson et al. 2002)。

通常、正規化植生指数 (NDVI) の場合と同様に、可視波長バンドと近赤外 (NIR) 波長バンドの両方の反射率の値を使用して、植生の健康状態を推定します。OpenAerialMap からダウンロードした Kolovai Palms ラスター データは、すべてが可視電磁スペクトルにある 3 つのバンドを持つマルチバンド画像であるため、VARI を使用します。

VARI の算出

VARI の計測には、Kolovai Palms ラスター内の 3 つのバンドの入力が必要です。VARI を算出するには、[バンド演算] ラスター関数を使用します。ラスター関数は、新しいラスター データセットを作成しないため、ジオプロセシング ツールよりも高速です。画面移動やズームに対応して、ピクセルのリアルタイムの分析を実行します。

  1. 必要に応じて、ArcGIS Pro.で [CoconutHealth] プロジェクトを開きます。
  2. リボンの [画像] タブをクリックします。[解析] グループで [ラスター関数] をクリックします。
  3. [ラスター関数] ウィンドウで、[バンド演算] ラスター関数を検索して選択します。

    バンド演算関数

  4. [バンド演算プロパティ] 関数で、次のパラメーターを設定し、[レイヤーの新規作成] をクリックします。

    • [ラスター] で、[Kolovai Palms] ラスター レイヤーを選択します。
    • [方法] で、[VARI] を選択します。この関数では、式に入力バンドに対応するバンド インデックスを指定する必要があります。バンド インデックスパラメーターの下にある入力は、赤、緑、青を表示しているため、対応するバンド インデックスに、赤、緑、青のバンドをこの順序で指定します。各バンド間にはシングル スペースを必ず入れてください。
    • [バンド インデックス] に「1 2 3」と入力します。

    バンド演算パラメーター

    VARI レイヤーが、[Band Arithmetic_Kolovai Palms] として [コンテンツ] ウィンドウに追加されます。エリアをズームしたり画面移動することで、海岸線、道路、建物、田畑などのフィーチャを表示できます。

    VARI ラスター結果

  5. [コンテンツ] ウィンドウで、[Band Arithmetic_Kolovai Palms] レイヤーが選択されていることを確認します。
  6. リボン上の [表示設定] コンテキスト タブをクリックします。
  7. [レンダリング] グループで、[ストレッチ タイプ] ドロップダウン メニューを選択し、[標準偏差] を選択します。

    ラスターのストレッチ タイプの変更

  8. [コンテンツ] ウィンドウで、[Band Arithmetic_Kolovai Palms] を 2 回クリックし、名前を「VARI」に変更します。

VARI のココヤシへの抽出

VARI を表示するラスター レイヤーは有益ですが、必ずしも実用的ではありません。どの樹木に注目すべきかを知るために、個々の樹木の平均 VARI を知る必要があります。各樹木の VARI 値を特定するには、基本となる平均 VARI を抽出し、どの樹木が健康で、どの樹木が保守を必要としているかを表示するようシンボル化します。

最初に、ポリゴン フィーチャをヤシの木を表す円に変換します。

  1. [ジオプロセシング] ウィンドウで、[フィーチャ → ポイント (Feature To Point)] ツールを検索して開きます。以下のパラメーターを入力し、[実行] をクリックします。

    • [入力フィーチャ] で、[CoconutTrees] レイヤーを選択します。
    • [出力フィーチャクラス] に「CoconutTrees_Points」と入力します。

    フィーチャ → ポイント (Feature to Point) ツール

    検出された各ポリゴンの重心にポイント フィーチャクラスが設定されます。さまざまな位置にズームして、計測ツールを使用すると、ヤシの木におよそ 3 メートルの平均半径が設定されているのがわかります。

  2. [ジオプロセシング] ウィンドウで、[バッファー (Buffer)] ツールを検索して開きます。
  3. 以下のパラメーターを指定し、[実行] をクリックします。

    • [入力フィーチャ][CoconutTrees_Points] を選択します。
    • [出力フィーチャクラス][PalmTreesBuffer] を選択します。
    • [距離][3] [メートル] を選択します (値は必ず [距離単位] に設定します)。

    ポリゴン フィーチャクラスが各ココヤシの頂部の位置と形状を示します。

  4. [コンテンツ] ウィンドウで、[VARI][CoconutTrees][CoconutTrees_Points] レイヤーをオフにします。

    バッファー処理されたヤシの木

    次に、各ポリゴンの平均 VARI 値を抽出します。

  5. [ジオプロセシング] ウィンドウで、[ゾーン統計をテーブルに出力 (Zonal Statistics as Table)] ツールを検索して開きます。
  6. [ゾーン統計をテーブルに出力 (Zonal Statistics as Table)] ツールで、次のパラメーターを入力し、[実行] をクリックします。

    • [入力ラスター、またはフィーチャ ゾーン データ] で、[PalmTreesBuffer] を選択します。
    • [ゾーン フィールド] で、[ORIG_FID] を選択します。
    • [入力値ラスター][VARI] を選択します。
    • [出力テーブル] に「MeanVARI_per_Palm」と入力します。
    • [計算時に NoData を除外] をオンにします。
    • [統計情報の種類] で、[平均値] を選択します。

    [ゾーン フィールド][ORIG_FID] に設定すると、各樹木の統計情報が個別に取得されます。この属性は、元の [CoconutTrees] レイヤーの一意の ID です。

    [ゾーン統計をテーブルに出力 (Zonal Statistics as Table)] のパラメーター

    出力テーブルが [コンテンツ] ウィンドウの下部に追加されます。これを開くと、元の FID 値と、平均 VARI 値を含む MEAN という列が表示されます。このテーブルを PalmTreesBuffer レイヤーに結合して、検出された各ヤシの木の信頼度スコアと平均 VARI 値の両方を持つフィーチャクラスを取得します。

  7. [ジオプロセシング] ウィンドウで、[フィールドの結合 (Join Field)] ツールを検索して開きます。
  8. [フィールドの結合 (Join Field)] ツールで、次のパラメーターを入力し、[実行] をクリックします。

    • [入力テーブル] で、[PalmTreesBuffer] を選択します。
    • [レイヤー、テーブル ビューのキーとなるフィールド] で、[ORIG_FID] を選択します。
    • [結合テーブル] で、[MeanVARI_per_Palm] を選択します。
    • [結合テーブルのキーとなるフィールド] で、[ORIG_FID] を選択します。
    • [結合フィールド] で、[MEAN] を選択します。

    [PalmTreesBuffer] レイヤーに、[MEAN] というフィールドが結合されました。データをわかりやすくするために、名前を変更し、シンボル化します。

  9. [コンテンツ] ウィンドウで、[PalmTreesBuffer] を 2 回クリックし、名前を「PalmTreesVARI」に変更します。
  10. リボンの [表示設定] タブの [描画] グループで、[シンボル表示] をクリックします。
  11. [プライマリ シンボル] で、[等級色] を選択します。

    等級色シンボル

  12. [フィールド] で、[MEAN] を選択します。
  13. 必要に応じて、[方法] で、[自然分類(Jenks)] を選択し、[クラス][4] に設定します。
  14. [配色] でドロップダウン メニューをクリックし、[すべて表示][名前の表示] チェックボックスをオンにします。スクロールして、[赤黄緑 (4 クラス)] スキーマを選択します。

    赤黄緑の色スキーマ

  15. [クラス] で、各ラベルをクリックし、クラスの名前を上から下に次のように変更します - 「Needs Inspection」、「Declining Health」、「Moderate」、「Healthy」。

    カテゴリ ラベル

    マップに、画像内の各ヤシの木のモデルの位置、健康状態、信頼度を示すフィーチャクラスが設定されます。

    画像による樹木の健康状態

  16. プロジェクトを保存します。

追加: フィールド タスクの割り当てとプロジェクトの進行状況の監視

フィーチャの抽出と画像の分析に ArcGIS Pro を使用する最大のメリットは、ArcGIS プラットフォーム全体と統合できることです。最後のレッスンでは、ArcGIS Pro でディープ ラーニング ツールを使用して、画像からココヤシの木を特定しました。樹木は、GIS での使用に適したフィーチャクラスのフィーチャとして保存できます。拡張ワークフローとして、結果をクラウドに公開する、品質保証のために Web アプリケーション テンプレートを構成する、樹木の調査タスクを現場の作業員に割り当てる、ダッシュボードを使用してプロジェクトの進行状況を監視する、などのワークフローが可能です。

ArcGIS Online での公開

構成可能なアプリを使用してデータと連携するには、ArcGIS Online または ArcGIS Enterprise で、ヤシの木をフィーチャ サービスとして公開する必要があります。ArcGIS Pro で、[コンテンツ] ウィンドウの [PalmTreesVARI] レイヤーを右クリックし、[共有] を選択し、[Web レイヤーとして共有] を選択します。ArcGIS Online アカウントに公開されます。

フィーチャ サービスの公開の詳細

アプリ テンプレートを使用したディープ ラーニングの精度確認

ディープ ラーニング ツールが提供する結果の精度は、トレーニング サンプルの精度とトレーニング済みモデルの品質に比例します。言い換えると、結果は常に完全とは限りません。モデルの結果の品質を評価するには、ディープ ラーニング結果に保存されている [信頼度] スコアが一定値より低い樹木をチェックします。ArcGIS Pro の属性フィルターを使用して各レコードにズームするのではなく、構成可能な Web アプリ テンプレートの [Image Visit] を使用して、Web アプリケーションの結果の精度を確認します。

Image Visit アプリの詳細

Workforce for ArcGIS を使用した現場確認の実行

Workforce for ArcGIS は、フィーチャの位置情報を使用して現場作業者を調整するモバイル アプリ ソリューションです。Workforce アプリを使用して、組織のメンバーにタスクを割り当てて、VARI スコアが「Needs Inspection」と表示されたすべての樹木を現場の作業員に割り当て、樹木を確認し、推奨される処置でマークすることができます。

Workforce for ArcGIS の詳細

Operations Dashboard を使用したプロジェクト進行状況の監視

Workforce for ArcGIS を使用して、Operations Dashboard for ArcGIS プロジェクトで割り当てられた作業の進行状況を監視できます。Operations Dashboard for ArcGIS は、 作業員、サービス、およびタスクの状況をリアルタイムに表示できるビジュアライゼーションと分析を提供する構成可能な Web アプリです。

Operations Dashboard を開始する詳細を理解します。

このレッスンでは、オープンソースのドローン画像を取得し、画像内のヤシの木のトレーニング サンプルを作成しました。これらの画像チップは、画像チップとしてデータ サイエンティストに提供され、トレーニング済みのディープ ラーニング モデルで使用されて、画像内の 11,000 以上のヤシの木が抽出されました。

ディープ ラーニングと画像分析、さらに、ArcGIS プラットフォームの構成可能なアプリについて学習しました。ディープ ラーニング モデルの画像と知識があれば、このワークフローを多数のタスクに使用できます。たとえば、これらのツールを使用して、自然災害による構造上の損害を評価したり、都市部の車両を数えたり、地質学上の危険地帯付近の人工構造物を検索したりすることができます。

You can find more lessons in the Learn ArcGIS Lesson Gallery.