ディープ ラーニング事前トレーニング済みモデルを使用したオブジェクトの検出

プロジェクトの設定とデータの探索

まず、このチュートリアルのデータをすべて含むプロジェクトをダウンロードし、ArcGIS Pro で開きます。

  1. Palm_Tree_Detection パッケージをダウンロードします。

    [Palm_Tree_Detection.ppkx] という名前のファイルがコンピューターにダウンロードされます。

    注意:

    .ppkx ファイルは、ArcGIS Pro プロジェクト パッケージです。これには、ArcGIS Pro で開くことができるマップ、データ、その他のファイルが含まれます。 .ppkx ファイルの管理の詳細については、ArcGIS Pro プロジェクト パッケージ (.ppkx ファイル) のガイドをご参照ください。

  2. コンピューター上で、ダウンロードしたファイルを選択します。 [Palm_Tree_Detection.ppkx] をダブルクリックして ArcGIS Pro で開きます。 サイン インを求められたら、ArcGIS アカウントを使用して、サイン インします。
    注意:

    ArcGIS Pro へのアクセス権限または組織アカウントがない場合は、ソフトウェア アクセスのオプションをご参照ください

    トンガのトンガタプ島のコロバイ村が中心にあるマップが表示されます。 地形図ベースマップの上にイメージ レイヤーが表示されています。

    プロジェクトの初期表示

  3. ズームおよび画面移動して画像を調べます。

    景色にある数多くのヤシの木を観察します。

画像はドローンでキャプチャされ、歪みを除去するためにオルソ補正されています。 これは、高解像度 (各ピクセルは地表の約 9 x 9 センチメートルを表します) で、ヤシの木や他のフィーチャを非常に鮮明に表示しています。 これは、赤、緑、青の 3 つのバンドから構成される TIFF 形式で、それらが合成されてナチュラル カラーのピクチャになっています。

この画像内にあるすべてのヤシの木を手動で識別するには、非常に時間がかかります。 その代わりに、ディープ ラーニングを使用して、それらを自動的に検出します。

事前トレーニング済みディープ ラーニング モデルを使用したヤシの木の検出

ディープ ラーニングを使用して、画像からヤシの木を検出します。 ディープ ラーニング モデルが準備できていない場合は、まずモデルを最初からトレーニングして、モデルに何がヤシの木かを示すために多数のサンプルを入力する必要があります。 高パフォーマンス モデルでは、場合によっては数万のサンプルを入力する必要があります。 そうでなければ、すでにトレーニングされたモデルを使用します。 そのようなモデルを取得して、画像に適用します。

注意:

ディープ ラーニング ツールを ArcGIS Pro で使用するには、正しいディープ ラーニング ライブラリがコンピューター上にインストールされている必要があります。 これらのファイルがインストールされていない場合は、プロジェクトを保存し、ArcGIS Pro を終了して、「ArcGIS Pro でのディープ ラーニングの準備」に記載された手順に従います。 これらの手順では、お使いのコンピューター ハードウェアとソフトウェアでディープ ラーニング ワークフローを実行できるかどうかを確認する方法と他の有用なヒントについても説明します。 インストールが完了したら、プロジェクトを再度開いてチュートリアルを続行できます。

まず、ディープ ラーニングを使用したオブジェクトの検出ツールを開きます。

  1. リボンの [表示] タブの [ウィンドウ] グループで、[ジオプロセシング] をクリックします。

    ジオプロセシング ツール

  2. [ジオプロセシング] ウィンドウの検索ボックスに「ディープ ラーニングを使用したオブジェクトの検出」と入力します。 結果のリストで、[ディープ ラーニングを使用したオブジェクトの検出] ツールをクリックして開きます。

    ディープ ラーニングを使用したオブジェクトの検出 (Detect Objects Using Deep Learning) ツール

  3. [ディープ ラーニングを使用したオブジェクトの検出] に、次のパラメーターの値を設定します。
    • [入力ラスター] には、[Kolovai_imagery.tif] を選択します。
    • [出力検出オブジェクト] に、「Detected_Palm_Trees」と入力します。
    • [モデル定義][参照] ボタンをクリックします。

    ディープ ラーニングを使用したオブジェクトの検出のパラメーターの値

    次に、ArcGIS Living Atlas of the World から Palm Tree Extraction 事前トレーニング済みモデルを取得します。

    注意:

    ArcGIS Living Atlas of the World は、Esri の信頼できる GIS データ コレクションです。 これには、建物から船舶、農地の境界に至るまで、さまざまなオブジェクトを検出するための 50 を超える事前トレーニング済みディープ ラーニング モデルのライブラリが用意されており、常に拡充が続けられています。

  4. [モデルの定義] ウィンドウで、[ポータル] の下の [Living Atlas] をクリックします。 検索ボックスに「Palm Tree Detection」と入力します。 [Palm Tree Detection] を選択して [OK] をクリックします。

    選択された Palm Tree Detection モデル

    注意:

    Palm Tree Detection モデルの詳細については、ArcGIS Living Atlas サイトで取得して確認できます。 このモデルは、ドローン画像などの高解像度画像 (5 ~ 15 センチメートル) でヤシの木を検出することを目的としています。 画像は、赤、緑、青 (RGB) の 3 つのバンドがあることが想定されています。 このモデルは、今回の画像に適しています。

    ディープ ラーニング モデルを選択すると、モデルの引数が自動的に読み込まれます。

  5. [引数] の下は、すべてデフォルト値のままにします。

    モデル引数

    2 つの引数は特に興味深いです。

    • [Threshold] - 閾値が 0.5 とは、オブジェクトが実際にヤシの木であることにモデルが少なくとも 50% の信頼度を持つ場合にのみ、検出されたオブジェクトが出力データセットに追加されることを意味します。 最適な閾値の値を見つけるには、試行錯誤が必要です。
    • [Batch_size] - ディープ ラーニングのオブジェクト検出は、画像全体を 1 回で実行することはできません。 代わりに、ツールは画像をチップと呼ばれる小さな断片に分割します。 バッチ サイズが 4 とは、ツールが一度に 4 つの画像チップを処理することを意味します。 ツールを実行すると、コンピューターにそのレベルの処理に十分なメモリがないため、メモリ不足エラーが発生する場合があります。 その場合は、[Batch_size] の値を 4 から 2 または 1 に変更してみてください。 この値を小さくしてもモデルの品質には影響せず、モデルの検出プロセスの効率にのみ影響します。

    ここでは、これら 2 つの引数をデフォルト値のままにします。

    場合によっては、モデルが 1 つのオブジェクトを複数回検出することがあります。 NMS (Non Maximum Suppression) は、重複がある場合に、検出されたオブジェクトの一部を除外するオプションのプロセスです。 最も高い信頼度で検出されたオブジェクトは保持され、それ以外のオブジェクトは削除されます。 次のサンプル画像では、ヤシの木が 2 回検出されました。 NMS を使用して、1 回しか検出されなかったオブジェクトのみが保持されます。

    2 回検出されたヤシの木

  6. [Non Maximum Suppression] の横のチェックボックスをオンにします。
  7. [最大オーバーラップ率] に、「0.5」と入力します。

    Non Maximum Suppression オプション

    • [最大オーバーラップ率] パラメーターは、検出された 2 つのオブジェクトを重複とみなし NMS を適用するために必要な、オブジェクト間のオーバーラップの割合を決定します。 値が 0.5 とは、オーバーラップが 50 パーセント以上である必要があることを意味します。 次のサンプル画像では、検出された 2 つのオブジェクトはオーバーラップが 50% 未満であるため同じオブジェクトを表しておらず、NMS は適用されません。

      検出された 2 つのオブジェクト間のオーバーラップ

  8. [環境] タブをクリックします。
    • 環境タブ
  9. [プロセッサー タイプ] で、[GPU] を選択します。
    • GPU として設定されたプロセッサ タイプ
      注意:

      このチュートリアルは、コンピューターに推奨される GPU が搭載されていることを前提とします。 GPU が搭載されていない場合は CPU で処理できますが、データの処理に時間がかかります。 その場合は、CPU オプションを選択します。

      この時点で、ツールをそのまま実行できます。ツールは、[Kolovai_imagery.tif] 画像全体に対してヤシの木の検出を続行します。この処理には、コンピューターのスペックに応じて 20 分から 1 時間かかる可能性があります。 このチュートリアルを簡素化するため、ここでは、入力画像の小さいサブセット内のヤシの木のみを検出します。

  10. リボンの [マップ] タブの [ナビゲーション] グループで、[ブックマーク] をクリックして [Detection Area] を選択します。

    Detection area ブックマーク

    マップに、コロバイのより狭い地域が拡大表示されます。

    マップ上のより小さな範囲

  11. [ジオプロセシング] ウィンドウの [環境] タブにある [処理範囲] で、[現在の表示範囲] ボタンをクリックします。

    現在の表示範囲ボタン

    マップ上に表示されている現在の範囲に合わせて、[上][左][右][下] の座標が更新されます。

  12. その他のデフォルト値をそのままにして、[実行] をクリックします。

    処理の進行は、 [実行] ボタンの下で監視できます。また、[詳細の表示] をクリックすると詳細情報を見ることができます。

    詳細の表示リンク

    数分後、[Detected_Palm_Trees] 結果レイヤーが [コンテンツ] ウィンドウとマップに表示されます。 これはフィーチャ レイヤーで、各ポリゴンがヤシの木を表します。

    ヒント:

    メモリ不足エラーが発生した場合は、[batch_size] の値を 4 から 2 または 1 に減らして、プロセスをもう一度実行してみてください。

    ディープ ラーニング事前トレーニング済みモデルを使用して、コロバイの地域にあるヤシの木を検出することができました。

    マップ上で検出されたヤシの木

    注意:

    色はランダムに割り当てられているため、異なる場合があります。

結果レイヤーのスタイル設定と確認

[Detected_Palm_Trees] レイヤーのスタイルを変更して確認します。

  1. [コンテンツ] ウィンドウで、[Detected_Palm_Trees] シンボルをクリックして [シンボル] ウィンドウを表示します。

    Detected_Palm_Trees シンボル

  2. [シンボル] ウィンドウで、必要に応じて [プロパティ] タブをクリックします。

    シンボル ウィンドウのプロパティ タブ

  3. [表示設定] の下で、次のパラメーターの値を設定します。
    • [色][色なし] を選択します。
    • [アウトライン色] で、[ソーラー イエロー] などの明るい黄色を選択します。
    • [アウトライン幅][2 pt] を選択します。

    シンボル ウィンドウのパラメーター

  4. [適用] をクリックします。

    レイヤーが新しいシンボルに更新されます。

    • 新しいシンボルのレイヤー
  5. マップを拡大し、[Detected_Palm_Trees] レイヤーを調べます。

    検出されたオブジェクト (拡大)

    モデルがほとんどのヤシの木の検出に成功し、誤検知 (モデルが何もない場所にヤシの木を間違って検出) がほとんどないことがわかります。

  6. 必要に応じて、選択した別の範囲や画像全体に対して、[ディープ ラーニングを使用したオブジェクトの検出] ツールをもう一度実行します。 これを行うには、マップ上の新しい範囲にズームおよび画面移動して、[環境] タブの [現在の表示範囲] をクリックします。 続いて [実行] をクリックします。
    注意:

    画像全体に対してツールを実行すると、コンピューターのスペックに応じて 40 分以上かかります。

    代わりに、プロジェクトには全範囲の結果レイヤーを表示するマップが含まれています。 それを表示するには、[カタログ] ウィンドウに移動して [マップ] を展開し、[Map_results] を右クリックして [開く] を選択します。

    画像全体で 12,500 本を超えるヤシの木が検出されました。

  7. 必要に応じて、[閾値][最大オーバーラップ率] などの引数とパラメーターを変更して試してみましょう。
  8. [クイック アクセス] ツールバーで [保存] ボタンをクリックして、プロジェクトを保存します。

    保存ボタン

事前トレーニング済みモデルの画像への適用

事前トレーニング済みディープ ラーニング モデルを独自のデータに適用するには、まず、このチュートリアルで学習したワークフローを使用してみてください。 これは最も簡単な手法であり、高品質の結果をすぐに得ることができるでしょう。

ただし、最初の結果に完全には満足できない場合もあります。 その場合は、次に適用できる手法がいくつかあります。 最も重要なのは、次のことができることです。

  • 画像を変更して、事前トレーニング済みモデルの想定に合わせます (たとえば、モデルが赤、緑、青の画像でトレーニングされた場合、画像には赤外線やその他のスペクトル バンドではなく、赤、緑、青のバンドのみが存在する必要があります)。
  • 独自のデータの例をいくつか与えて、ディープ ラーニング モデルをさらにトレーニングします。

これらの強力な手法については、「転移学習によるディープ ラーニング モデルの強化」チュートリアルで学習できます。

このチュートリアルでは、ArcGIS Living Atlas の事前トレーニング済みモデルでディープ ラーニングを使用して、画像内のヤシの木を検出しました。 生成されたフィーチャ レイヤーは、地域全体のヤシの木の数を推定し、農業慣行を監視し、今後の生産を評価するために使用できます。

他のチュートリアルについては、チュートリアル ギャラリーをご覧ください。