トレーニング データの生成
このワークフローでは、SAMLoRA のトレーニング プロセスを学び、画像内の対象フィーチャを特定します。今回のケースで特定するのは非公式居住地の建物です。 まず、画像内におけるこれらの建物のサンプルを示すトレーニング データを少量生成する必要があります。 ArcGIS Pro プロジェクトを設定し、提供されたサンプルを確認して、トレーニング データを SAMLoRA で想定されている形式にエクスポートします。
プロジェクトの設定
このチュートリアルのデータをすべて含むプロジェクトをダウンロードし、ArcGIS Pro で開きます。
- Alexandra_Informal_Settlements.zip ファイルをダウンロードし、コンピューター上でそのファイルを選択します。
注意:
ほとんどの Web ブラウザーでは、デフォルトでコンピューターのダウンロード フォルダーにファイルがダウンロードされます。
- [Alexandra_Informal_Settlements.zip] ファイルを右クリックし、コンピューター上の場所 (C: ドライブ上のフォルダーなど) に展開します。
- 展開した [Alexandra_Informal_Settlements] フォルダーを開きます。 [Alexandra_Informal_Settlements.aprx] をダブルクリックして、ArcGIS Pro でプロジェクトを開きます。
- サイン インを求められたら、ArcGIS アカウントを使用して、サイン インします。
注意:
ArcGIS Pro へのアクセス権限または組織アカウントがない場合は、ソフトウェア アクセスのオプションをご参照ください。
プロジェクトが開きます。
マップ上に、南アフリカのアレクサンドラ タウンシップ地域を表すドローン画像のレイヤーが表示されます。 画像は高解像度で、各ピクセルが地表の約 2 x 2 センチメートルの正方形を表しています。 これは South Africa Flying Labs により撮影されたものです。 ArcGIS Online では、このレイヤーが画像タイル サービスとして格納されています。
注意:
South Africa Flying Labs は南アフリカでドローン画像を制作する非営利組織であり、同国の社会問題の解決に必要な知識や技能を地域コミュニティに提供しようとしています。
このトゥルー オルソ画像レイヤーは、複数のオリジナルのドローン画像から取得されたものです。 Site Scan for ArcGIS アプリケーションで生成され、Site Scan から ArcGIS Online に直接保存されています。
このチュートリアルで提案しているワークフローを独自の画像に適用するには、「独自の画像へのこのワークフローの適用」セクションに示したヒントをご参照ください。
- マウス ホイール ボタンで拡大/縮小し、画像内の市街地を確認します。
これらの市街地の多くが、建物が密集して建てられている非公式居住地で、複雑なパターンを形成しています。 屋根は波形の金属板で作られていて、色やメンテナンス状態はさまざまです。 これらの理由から、従来のディープ ラーニング モデルでは、このような建物を高い正確度で特定することが難しい場合があります。 このチュートリアルで学習する SAMLoRA アプローチは、高い処理能力を必要とせずに高品質の結果を得るための優れた代替手段です。
非公式居住地のサンプルの探索
プロジェクトで提供されたトレーニング例を確認します。
- [コンテンツ] ウィンドウで [Training_Area] レイヤーの横にあるチェックボックスをオンにして、このレイヤーを有効にします。
画像の西側にオレンジのポリゴンが表示されます。 これは、SAMLoRA に非公式居住地の見た目をトレーニングさせるために選ばれたエリアを表しています。
注意:
このケースでは、トレーニング エリアが 1 つしかありませんが、それぞれ異なるポリゴンで表された複数のエリアをトレーニングに使うこともできます。 トレーニング エリアが複数ある例は、このチュートリアルの後半で紹介します。
- [コンテンツ] ウィンドウで、[Training_Area] レイヤーを右クリックし、[レイヤーにズーム] を選択します。
マップ上でトレーニング エリアが拡大表示されます。
- [Informal_Settlements_Examples] レイヤーをオンにします。
[Informal_Settlements_Examples] レイヤーでは、トレーニング エリア内のすべての建物がライト グレーのポリゴンで表されます。
注意:
トレーニング例のレイヤーの作成方法に関する段階的説明については、「転移学習によるディープ ラーニング モデルの強化」チュートリアルの「転移学習のトレーニング サンプルの準備」セクションをご参照ください。
トレーニング エリア内の建物すべてがポリゴンとしてキャプチャーされました。 欠けている建物がほんの数軒でも、混乱を招く情報が生成され、SAMLoRA が的確にトレーニングを実行しない可能性があります。 次の左側のサンプル画像は、トレーニング セットが完全で、トレーニングに使用できる状態です。 一方、右側の画像では一部の建物が欠けているため、トレーニングのパフォーマンスが低下します。
次に、[Informal_Settlements_Examples] 属性フィールドを検査します。
- [コンテンツ] ウィンドウで、[Informal_Settlements_Examples] レイヤーを右クリックして、[属性テーブル] を選択します。
テーブルの各行は建物ポリゴンの 1 つを表します。 [Class] 属性の値は [Building] です。
注意:
これは本ワークフローの本質部分ではありませんが、[Building] の値は実際には、基となる数値 [1] のラベルであることに注意してください。 このトピックに関する詳細は、本チュートリアル後半の「独自の画像へのこのワークフローの適用」セクションをご参照ください。
トレーニング例が複数のフィーチャ タイプを表現している場合、[Class] フィールドには、たとえば [Building]、[Road]、[Tree] などの複数のタイプが表示されます。 このアプローチにより、SAMLoRA は画像内のさまざまなフィーチャ タイプを認識する方法を学習できます。
- テーブルを閉じます。
- [クイック アクセス ツールバー] で [プロジェクトの保存] ボタンをクリックして、プロジェクトを保存します。
トレーニング チップとセル サイズの詳細
サンプルのポリゴン レイヤーと画像レイヤーを使用して、トレーニング データを指定の形式で生成します。 ディープ ラーニング モデルは、1 回のパスでは広いエリアをトレーニングできず、チップと呼ばれる、画像の小さな切り抜きに限定して処理を行うことができます。 チップは、画像タイルと、対象のオブジェクト (この場合は建物) の位置を示す、対応するラベル タイルから作成されます。 これらのチップは、トレーニング プロセス中にディープ ラーニング モデルに入力されます。
チップの生成時に決定すべき重要なことの 1 つは、チップの最適なサイズです。 非公式居住地の建物のように密集しているオブジェクトを検出する場合、1 つのチップに 6 ~ 12 個のフィーチャを含めるのが目安です。 あるいは、別の考え方として、1 つのチップの中央に少なくとも 1 つか 2 つの完全なフィーチャを含め、その周囲に適量のコンテキスト (または背景) が表示されるようにするとよいでしょう。
以下のサンプル画像には、異なるサイズのチップが 3 つ含まれています。
- チップ 1 は小さすぎます。完全なフィーチャが含まれておらず、コンテキストもほとんどありません。
- チップ 2 は適切なサイズです。完全なフィーチャが中央に 2 つあり、その周囲に不完全なフィーチャとコンテキストが数点あります。
- チップ 3 は大きすぎます。大量のフィーチャ (25 超) が含まれています。
どのようにすればチップのサイズを変更できるでしょうか。 チップのサイズは 256 x 256 ピクセル (またはセル) が通例なので、それをデフォルト値としてそのまま使用します。 ただし、チップを構成するセルのサイズを変更して、異なるサイズのチップを取得できます。 たとえば、上記の 3 つのタイルは以下のセル サイズで生成されました:
- チップ 1 - 0.02 メートル (2 センチメートル)
- チップ 2 - 0.05 メートル (5 センチメートル)
- チップ 3 - 0.1 メートル (10 センチメートル)
注意:
セル サイズが 5 センチメートルのチップの場合、各セルは地表の 5 x 5 センチメートルの正方形を表しています。
最適なチップ サイズは、特定するフィーチャのサイズによって異なります。 たとえば、農地、家、車、太陽光パネルのサイズは大きく異なります。 最適なチップ サイズを見つける方法の 1 つは試行錯誤することです。 1 つのセル サイズを選んで、チップを生成し、チップを視覚的に評価することができます。 チップ サイズとセル サイズを決定するもっと高度な方法もありますが、それはこのチュートリアルの範囲外です。 このチュートリアルでは、5 センチメートルのセル サイズにより、非公式居住地の建物の特定に最適なサイズのチップが生成されると判断されました。
トレーニング データのエクスポート
次に、ディープ ラーニング用のトレーニング データをエクスポート ツールを使用して、トレーニング チップを生成します。
- リボンの [解析] タブをクリックします。 [ジオプロセシング] グループで、[ツール] をクリックします。
- [ジオプロセシング] ウィンドウで、「ディープ ラーニング用のトレーニング データをエクスポート」を検索します。 検索結果のリストで、[ディープ ラーニング用のトレーニング データをエクスポート] をクリックします。
- 次のツール パラメーターを設定します。
- [入力ラスター] で、[Alexandra_Orthomosaic] を選択します。
- [出力フォルダー] に、「Informal_Settlements_256_5cm」と入力します。 (これにより、トレーニング データを格納するサブフォルダーがプロジェクト内に作成されます。)
- [入力フィーチャクラス、分類ラスター、またはテーブル] で、[Informal_Settlements_Examples] を選択します。
- [クラス値フィールド] で、[Class] を選択します。
- [入力マスク ポリゴン] で、[Training_Area] を選択します。
[Training_Area] レイヤーをマスクとして指定することは重要です。これにより、すべての建物にラベルが付けられているエリア内でのみ画像チップが作成されるようになるからです。
注意:
独自のデータに対して [Training_Area] レイヤーを作成する必要がある場合は、[フィーチャクラスの作成] ジオプロセシング ツールを使用できます。 フィーチャクラスの作成後、リボンの [編集] タブで、[作成] ツールをクリックし、トレーニング例を提供するエリアの輪郭を描く四角形ポリゴンを 1 つ以上トレースします。
- [タイル サイズ X] および [タイル サイズ Y] については、デフォルト値の [256] ピクセルのままにします。
- [メタデータ形式] で、[分類済みタイル] を選択します。
[分類済みタイル] は、SAMLoRA モデルのトレーニングに想定されているメタデータ形式です。
注意:
各種ディープ ラーニング モデル用にサポートされているメタデータ形式の詳細については、「ディープ ラーニング モデル アーキテクチャー」のページをご参照ください。 ツールで一覧表示されるパラメーターの詳細については、「ディープ ラーニング用のトレーニング データをエクスポート」ドキュメント ページをご参照ください。
- ツール ウィンドウで [環境] タブをクリックします。
- [セル サイズ] に「0.05」と入力します。
このセル サイズは 0.05 メートル、すなわち 5 センチメートルです。 前のセクションで説明したように、このセル サイズにより、生成されるタイルが、非公式居住地の建物を特定するのに適切なサイズになります。
注意:
画像チップのセル サイズを選択しても、入力画像の解像度は元のままです。 ツールがリアルタイムでデータを再サンプリングして、目的のセル サイズの画像チップを生成します。
セル サイズを含め、画像のプロパティーを特定する方法の詳細については、本チュートリアル後半の「独自の画像へのこのワークフローの適用」セクションをご参照ください。 画像のセル サイズや解像度の詳細については、「画像の探索 - 空間解像度」チュートリアルもご参照ください。
- [実行] をクリックします。
しばらくすると、ツールの実行が終了します。
トレーニング データの確認
次に、生成したトレーニング チップを調べます。 まず、建物サンプルのレイヤーを無効にし、マップをすっきりさせます。
- [コンテンツ] ウィンドウで、[Informal_Settlements_Examples] の横のチェックボックスをオフにして、このレイヤーをオフにします。
画像チップとラベル チップが保存されているフォルダーを参照します。
- リボンの [表示] タブをクリックします。 [ウィンドウ] グループで、[カタログ ウィンドウ] をクリックします。
- [カタログ] ウィンドウで、[フォルダー]、[Alexandra_Informal_Settlements]、[Informal_Settlements_256_5cm] の順に展開します。
[Informal_Settlements_256_5cm] フォルダーには、[images] フォルダーと [labels] フォルダーが含まれています。
- labels フォルダーを展開します。
このフォルダーには、128 個のラベル タイルが TIFF 形式で含まれています。
- [000000000000.tif] ファイルを右クリックし、[現在のマップに追加] を選択します。
- 統計情報を計算するように求められた場合は、[はい] をクリックします。
ラベル タイルがマップ上に表示されます。 これは、各セルが 0 または 1 の値を持つことができるラスターです。 値が 1 のセルは白で表示され、建物のエリアを表します。 値が 0 のセルは黒で表示され、建物以外のエリアを表します。
- [カタログ] ウィンドウで、[images] フォルダーを展開します。
このフォルダーには、128 個の画像タイルが TIFF 形式で含まれています。 各ラベル タイルには対応する画像タイルがあります。 たとえば、[000000000000.tif] 画像タイルは、次のサンプル画像に示されている小さな切り抜き画像で、[000000000000.tif] ラベル タイルに対応します:
SAMLoRA ディープ ラーニング モデルでは、ラベル付けされたタイルを使用して、建物の外観とその位置を学習します。
- 必要に応じて、[Alexandra_Orthomosaic] レイヤーをオフにし、画像タイルをマップに追加して、それらを確認します。 ラベル タイルをマップにさらに追加することもできます。
- [コンテンツ] ウィンドウで、[000000000000.tif] ラベル タイルを右クリックして、[削除] を選択します。 マップに追加した、他のラベル タイルおよび画像タイルを削除します。
ヒント:
ラベル タイルに関する、その他の数値情報を確認するには、[カタログ] ウィンドウの [labels] フォルダーにある [stats.txt] ファイルを右クリックし、[ファイル エクスプローラーで表示] を選択します。 このファイルには、チップごとのフィーチャ (今回のケースでは建物) の [最小] 数、[平均] 数、[最大] 数などの統計情報が含まれています。
- ArcGIS Pro で、Ctrl + S を押して、プロジェクトを保存します。
ここまでで、プロジェクトを設定し、非公式居住地のサンプルを表すポリゴン レイヤーを探索しました。また、トレーニング チップとセル サイズの詳細について理解し、ラベルと画像のトレーニング チップを生成して、その出力を調べました。
SAMLoRA 非公式居住地モデルのトレーニング
次に、生成したトレーニング データを使用して SAMLoRA ディープ ラーニング基本モデルをトレーニングし、画像内の非公式居住地の建物を特定するように教えます。 続いて、トレーニング済みのモデルを確認して、理解を深めます。
SAMLoRA モデルのトレーニング
最初に、ディープ ラーニング モデルのトレーニング ツールでモデルをトレーニングします。
- [カタログ] ウィンドウの下部にある [ジオプロセシング] タブをクリックします。
- [ジオプロセシング] ウィンドウで、検索ボックスに戻るまで、[戻る] ボタンをクリックします。
- [ディープ ラーニング モデルのトレーニング] ツールを検索して開きます。
- [入力トレーニング データ] で、[参照] ボタンをクリックします。 [フォルダー] → [Alexandra_Informal_Settlements] を参照し、[Informal_Settlements_256_5cm] を選択して、[OK] をクリックします。
- [出力フォルダー] に、「Informal_Settlements_256_5cm_SAMLoRA」と入力します。
このパラメーターにより、結果として得られるトレーニング済みモデルを格納するためのサブフォルダーがプロジェクト内に作成されます ([フォルダー] → [models] の下)。
- [最大エポック] に、「50」と入力します。
エポックとは、トレーニング データセット全体の 1 回の完全なパスを意味します。
- [モデル タイプ] で、[SAMLoRA (ピクセル分類)] を選択します。
- [データの準備] を展開します。 [バッチ サイズ] に、NVIDIA GPU 専用メモリーが 4 GB の場合は「2」を入力します。 8 GB の場合は「4」を入力します。
バッチ サイズの値によって、トレーニング プロセスの速度のみが変更されます。出力の品質は変更されません。
ヒント:
[バッチ サイズ] の値を決定するには、GPU の専用メモリー容量 (GB 単位) の半分のバッチ サイズから始めるのがよいガイドラインです。 たとえば、16 GB の GPU 専用メモリーがある場合は、バッチ サイズを 8 から開始できます。 不明な場合は、2 から始めてください。
より正確に言うと、GPU メモリー使用量をリアルタイムで調べることができます。 Windows スタート メニューからコマンド プロンプトを開き、コマンド「nvidia-smi -l -5」を貼り付けます。 ディープ ラーニング ツールを実行しているときに、使用しているメモリーの量を確認します。
最大値に達していない場合は、次回ツールを実行するときにバッチ サイズを増やすことができます。
- [高度] を展開します。 [バックボーン モデル] の場合は、[ViT-B] を選択します。
B は basic の略です。 このオプションにより、より小さな (基本的な) ニューラル ネットワークで SAMLoRA モデルをトレーニングします。
- [監視指標] では、[検証ロス] が選択されていることを確認します。
この指標により、モデルが、学習した内容を新しいデータにどの程度一般化するかを測定します。
- モデルの過剰適合を回避するために、[モデルが改善を見込めなくなった時点で停止] オプションがオンになっていることを確認します。
注意:
トレーニング データセットが大きく、GPU 専用メモリーが 8 GB 以上ある場合は、[ViT-L] (大) や [ViT-H] (巨大) などのより大きな [バックボーン モデル] でディープ ラーニング モデルをトレーニングすることを検討できます。
これでツールを実行する準備ができました。
注意:
このチュートリアルでは、8 GB 以上の専用メモリーが搭載された NVIDIA GPU の使用を推奨しています。 コンピューターに GPU が搭載されているかどうか、およびその仕様に応じて、このプロセスには 2 分未満から 20 分以上かかる場合があります。 その代わりに、トレーニング済みのモデルを使用することもできます。 その場合は、ツールを実行せずに、このセクションの最後までお読みください。 後ほど、提供されたモデルを取得するための手順が示されます。
お使いのコンピューターに GPU が搭載されているかどうかや、その仕様が不明な場合は、「ArcGIS Pro でのディープ ラーニングの準備」チュートリアルの「GPU の利用可能性の確認」セクションを参照してください。
- プロセスを自分で実行する場合は、[実行] をクリックします。 ツールの実行中に、[詳細の表示] をクリックすると、トレーニング プロセスに関する詳細情報が表示されます。
ヒント:
同じ情報を [履歴] ウィンドウで取得できます。 リボンの [解析] タブにある [ジオプロセシング] グループで、[履歴] をクリックします。 [履歴] ウィンドウで、[ディープ ラーニング モデルのトレーニング] のプロセスを右クリックし、[詳細の表示] を選択します。
- 詳細ウィンドウで [メッセージ] タブをクリックし、[validation loss] 指標を監視します。
[validation loss] の値は、小さいほど良好です。 この値は、モデルが建物エリアを正しく特定する能力が向上するにつれて、エポックごとに徐々に減少します。 この値が大きく変化しなくなると、トレーニングが停止します。 同時に、[accuracy] と [Dice] の指標 (3 番目と 4 番目の列) は着実に増加します。 これらの指標により、モデルのパフォーマンスが測定されます。
注意:
ディープ ラーニングのトレーニングは非決定論的なプロセスであるため、[メッセージ] タブの表示で取得する情報は、サンプル画像とは異なる場合があります。
- トレーニングが終了したら、[accuracy] と [Building precision] の数値を確認します。
サンプル画像で、全体の正確度は [8.9250e-01]、つまり [89.25] パーセントです。 このユース ケースでは、85 ~ 95 パーセントになるはずです。 特に建物の特定に関心があるため、[Building] の [precision] の値が、モデルのパフォーマンスを測る最適な指標となります。 このケースでは、[0.8913]、つまり [89.13] パーセントです。 (取得される値は、異なる可能性があります。)
- 詳細ウィンドウを閉じます。
トレーニング済み SAMLoRA モデルの確認
トレーニング済み SAMLoRA モデルについてさらに詳しく知る方法の 1 つは、ディープ ラーニング モデルの確認ツールを使用してモデルを確認することです。
- リボンの [画像] タブをクリックします。 [画像分類] グループで、[ディープ ラーニング ツール] をクリックして、[ディープ ラーニング モデルの確認] を選択します。
- [ディープ ラーニング モデル レビューアー] ウィンドウの [モデル] で、[参照] ボタンをクリックします。
- [フォルダー] → [Alexandra_Informal_Settlements] → [models] を参照し、[Informal_Settlements_256_5cm_SAMLoRA] を選択して、[OK] をクリックします。
- [ディープ ラーニング モデル レビューアー] ウィンドウで、[トレーニング ロスと検証ロス] の下のグラフを見つけます。
このグラフは、モデルがどのように学習したかについての詳細を示しています。 [トレーニング ロス] (青色) はトレーニング データにおけるモデルの学習度を表し、[検証ロス] (オレンジ色) は、モデルが、学習した内容を新しいデータにどの程度一般化できたかを示します。 (表示されるグラフは異なる場合があります。) トレーニングの最後の部分では、トレーニング ロスと検証ロスの曲線は漸近線を形成していました。
この現象は収束と呼ばれます。 トレーニングがこのフェーズを越えて継続されると、モデルは検証データよりもトレーニング データで優れたパフォーマンスを発揮し始める可能性があります。これは、モデルがトレーニング データに過剰適合し、新しいデータに一般化する能力を失っていることを示しています。
- [モデル タイプ]、[バックボーン]、全体的な [正確度]、[エポックの詳細] など、ウィンドウに表示されているその他の情報を確認します。
注意:
このウィンドウの情報の詳細については、「ディープ ラーニング モデルの確認」ドキュメント ページをご参照ください。
- モデル情報の確認が完了したら、[ディープ ラーニング モデル レビューアー] ウィンドウを閉じます。
- Ctrl + S を押して、プロジェクトを保存します。
これで、SAMLoRA 基本ディープ ラーニング モデルをトレーニングして、非公式居住地の建物を特定する方法を教えました。
SAMLoRA を使用した非公式居住地の分類と抽出
これまでで、画像から非公式居住地を抽出する準備ができました。 最初に、トレーニング済み SAMLoRA モデルを画像に適用し、建物または非建物としてピクセルを分類します。 このプロセスを推論と呼びます。 次に、建物フットプリント ポリゴンを作成します。 最後に、拡大した結果を調べ、SAMLoRA による手法で広い範囲のさまざまなオブジェクト タイプを抽出できることを理解します。
非公式居住地の分類
最初に、ディープ ラーニングを使用したピクセルの分類ツールを使用して、トレーニング済み SAMLoRA モデルを画像に適用しします。 このチュートリアルのワークフローを迅速に実行するために、ここでは狭い範囲に対してプロセスを実行するのみにします。 ただし、実際には、大量の画像を処理することもできます。
- リボンの [マップ] タブをクリックします。 [ナビゲーション] グループで、[ブックマーク] をクリックし、[Inferencing Area] ブックマークを選択します。
マップがブックマークにズームします。
- [ジオプロセシング] ウィンドウの [戻る] ボタンをクリックします。 [ディープ ラーニングを使用したピクセルの分類] ツールを検索して開きます。
- 次のツール パラメーターを設定します。
- [入力ラスター] で、[Alexandra_Orthomosaic] を選択します。
- [出力ラスター データセット] に、「Informal_Settlements_Raster」と入力します。
- [モデル定義] で [参照] ボタンをクリックします。 [フォルダー] → [Alexandra_Informal_Settlements] → [models] → [Informal_Settlements _256_5cm_SAMLoRA] を参照し、[Informal_Settlements _256_5cm_SAMLoRA.dlpk] を選択して [OK] をクリックします。
- [batch_size] に、以前に使用したものと同じ値 (例: GPU 専用メモリーが 4 GB の場合は「2」) を入力します。
注意:
自分でモデルのトレーニングを行わなかった場合は、[モデル定義] で、[フォルダー] → [Alexandra_Informal_Settlements] → [Provided_Data] → [models] → [Informal_Settlements _256_5cm_SAMLoRA] に用意されているモデルを使用します。
- ツール ウィンドウで [環境] タブをクリックします。
- [処理範囲] の下にある [現在の表示範囲] ボタンをクリックします。
このパラメーターにより、マップに現在表示されているエリアのみが処理されるようになります。
- [セル サイズ] に、SAMLoRA のトレーニングで使用したセル サイズに合わせて「0.05」と入力します。
注意:
GPU の有無やその仕様によっては、このツール プロセスに 1 分未満から最大 15 分の時間がかかります。 プロセスを自分で実行しない場合は、用意されている出力を使用できます。 [カタログ] ウィンドウで、[データベース] → [Provided_Data.gdb] を参照し、[Informal_Settlements_Raster] を右クリックして [現在のマップに追加] を選択します。
- プロセスを自分で実行する場合は、[実行] をクリックします。
プロセスが完了すると、新しいラスター レイヤーがマップに表示されます。
選択した範囲の画像のすべてのピクセルが分類され、結果が出力ラスターにキャプチャーされました。非公式居住地の建物に関するエリアには値 1 (ライト オレンジのシンボル表示) が割り当てられ、非建物エリアには値 0 (透過のシンボル表示) が割り当てられました。
注意:
色はランダムに割り当てられているため、異なる場合があります。
建物フットプリント ポリゴンの作成とクリーンアップ
GeoAI ツールから出力ラスターを生成したので、後処理を実行します。 目的は、建物フットプリントをポリゴンとして表現するレイヤーを取得することです。 次に示す主な手順を含むカスタム ツールを使用します。
- ラスター → ポリゴン ツールを使用して、ポリゴン レイヤーを取得します。
- 建物フットプリントの正規化ツールを使用して、ポリゴンの形状を正規化して滑らかにします。
- 小さすぎて建物にできないポリゴンを削除します。
- ディゾルブ ツールを使用して、重複するポリゴンを削除します。
最初に、当該ツールを含み、ArcGIS Online でホストされているツールボックスを取得します。
- [カタログ] ウィンドウで [ポータル] タブをクリックし、[ArcGIS Online] ボタンをクリックします。 検索ボックスに「Post_Deep_Learning_Workflows owner:Esri_Tutorials」と入力して Enter を押します。
検索結果で、[Post_Deep_Learning_Workflows] を右クリックして [プロジェクトに追加] を選択します。
このツールボックスがローカル プロジェクトにダウンロードされます。
- [カタログ] ウィンドウで、[プロジェクト] タブをクリックします。 [ツールボックス] を展開し、[PostDeepLearning.pyt] を展開します。
このツールボックスにはツールがいくつか含まれていますが、そのうちの 1 つが建物の後処理を行うツールです。
- [Post Processing Buildings from Raster Output] を右クリックして [開く] を選択します。
- [入力ラスター] で [Informal_Settlements_Raster] を選択します。
- [ラスター → ポリゴンのフィールド名] で、[Class] を選択します。
このフィールドには [Building] クラス値が含まれます。
- [選択したフィールドの個別値] で、[Building] を選択します。
このツールは、この値をラベルに持つラスター セルのみにフォーカスします。
- [出力フィーチャクラス] に「Informal_Settlements_Final」と入力します。
この出力が最終的なフィーチャクラス出力になります。 このフィーチャクラスは、デフォルトのプロジェクト データベースに保存されます。
注意:
入力ラスターに [Class] 属性がない場合は、[ラスター → ポリゴンのフィールド名] で [値] を選択し、[選択したフィールドの個別値] で目的のフィーチャに対応する数字 (たとえば [1]) を選択します。
- [実行] をクリックします。
出力レイヤーが表示されます。 このレイヤーに、このワークフローで以前に使用した [Informal_Settlements_Examples] レイヤーと同じシンボルを指定します。
- [コンテンツ] ウィンドウで、[Informal_Settlements_Examples] を右クリックして、[コピー] を選択します。
- [Informal_Settlements_Final] を右クリックして [プロパティーの貼り付け] を選択します。
レイヤーのシンボルがライト グレーに更新されます。 ラスター レイヤーをオフにし、マップをすっきりさせます。
- [コンテンツ] ウィンドウで、[Informal_Settlements_Raster] レイヤーをオフにします。
[スワイプ] ツールを使用して、最終的な出力レイヤーを元の画像と比較します。
- [コンテンツ] ウィンドウで、[Informal_Settlements_Final] レイヤーをクリックして選択します。
- リボンの [フィーチャ レイヤー] タブをクリックします。 [比較] グループの [スワイプ] をクリックします。
- マップ上で、カーソルを上から下にドラッグして [Informal_Settlements_Final] レイヤーを剥がし、その下の [Alexandra_Orthomosaic] 画像が表示されるようにします。
建物フットプリント ポリゴンが、画像内に存在する建物と高いレベルの正確度で一致します。
- リボンの [マップ] タブをクリックします。 [ナビゲーション] グループの [マップ操作] ボタンをクリックします。
拡大した結果の調査
これまで、ワークフローを迅速に実行するために、狭い範囲の非公式居住地を抽出しました。 次に、ドローン画像の範囲全体の出力を調べます。 また、SAMLoRA による手法で複数のフィーチャ タイプを抽出できることも確認します。 このケースでは、次のフィーチャが抽出されました。
- 非公式で小規模な建物から、より一般的で大規模な建物まで、さまざまな種類の建物
- 狭い未舗装道路から広い舗装道路まで、さまざまな種類の道路
まず、これらの例を含むマップを開きます。
- [カタログ] ウィンドウで、[マップ] を展開します。 [Explore Outputs] を右クリックして [開く] を選択します。
[Explore Outputs] マップが表示されます。 現時点では、[Alexandra_Orthomosaic] イメージ レイヤーのみがオンになっています。 他のレイヤーをオンにして確認します。
- [コンテンツ] ウィンドウで、[Expanded_Training_Areas] レイヤーと [Buildings_and_Roads_Examples] レイヤーをオンにします。
今度はオレンジ色のポリゴンがいくつか表示され、それぞれが異なるトレーニング エリアを囲んでいます。 これらのトレーニング エリアでは、さまざまな種類の建物と道路がグレーのサンプルとしてキャプチャされています。
- 拡大および画面移動して、建物と道路のサンプルを観察します。
- [コンテンツ] ウィンドウで、[Buildings_and_Roads_Examples] を右クリックして、[属性テーブル] を選択します。
- [Buildings_and_Roads_Examples] 属性テーブルで下にスクロールして [Class] の値を調べます。
このケースでは、[Building] と [Road] の 2 つの値が可能です。 SAMLoRA モデルは、その情報を使用して、2 つのフィーチャ タイプの識別を学習します。
- テーブルを閉じます。
これらのサンプルは、このチュートリアルと同じワークフローに従って、トレーニング データを生成するための入力として使用されたものです。 その後、これらのフィーチャの識別を学習するために SAMLoRA モデルがトレーニングされました。 このモデルは画像全体に適用され、最終的に建物と道路のフィーチャ レイヤーが作成されました。 結果として得られた出力を調べます。
- [コンテンツ] ウィンドウで、[Expanded_Training_Areas] レイヤーと [Buildings_and_Roads_Examples] レイヤーをオフにします。
- [Buildings_and_Roads_Raster_Full_Extent] レイヤーをオンにします。
出力ラスターで建物 (ライト オレンジ) と道路 (ネイビー ブルー) に関連するエリアが特定されます。
- 拡大および画面移動して、ラスター レイヤーを観察します。
特定された建物と道路の多様さは印象的です。 このモデルを、都市や地域全体をカバーする非常に広い画像範囲に適用することも可能です。
次に、作成した次の 2 つのフィーチャ レイヤーを確認します。
- 以前に使用した [Post Processing Buildings from Raster Output] ツールで作成した、建物のポリゴン レイヤー
- 上記ツールと同様に [Post_Deep_Learning_Workflows] ツールボックスに含まれている [Post Processing Roads from Raster Output] ツールで作成した、道路のポリライン レイヤー
- [コンテンツ] ウィンドウで、[Buildings_and_Roads_Raster_Full_Extent] をオフにします。 [Buildings_Full_Extent] と [Roads_Full_Extent] をオンにします。
- 拡大および画面移動して、建物と道路のフィーチャ レイヤーを観察します。
このように詳細なマップを地域の非営利組織が使用して、より優れたサービスを地域に提供することもできます。
- Ctrl + S を押して、プロジェクトを保存します。
独自の画像へのこのワークフローの適用 - オプション
このワークフローを独自の画像に適用する場合、次に示すヒントに留意します。
- 画像の保存場所 - このチュートリアルでは、Site Scan for ArcGIS によって未処理の高解像度ドローン画像から生成され、Site Scan から ArcGIS Online に直接保存されたイメージ レイヤーを使用しました。 独自のデータを扱う場合も、同じように ArcGIS Online でホストできます。 詳細については、「ホスト イメージ レイヤーの公開」ドキュメント ページをご参照ください。 もう 1 つの選択肢は、ローカル コンピューターに保存されている画像を使用することです。
- ワークフロー全体で一貫した画像を使用すること - SAMLoRA モデルを使用する際、モデルのトレーニングと適用に同様の画像を使用する必要があります。 特に、スペクトル バンド (赤、緑、青のバンドなど)、ピクセル深度 (8 ビットなど)、セル サイズが同じである必要があります。
- 画像のプロパティーの確認 - 画像のプロパティーが不明な場合は、[コンテンツ] ウィンドウでイメージ レイヤーを右クリックし、[プロパティー] を選択します。 [プロパティー] ウィンドウで、[ソース] ウィンドウをクリックします。 [ラスター情報] で、[バンド数]、[セル サイズ X]、[セル サイズ Y]、[ピクセル深度] の値を確認します。
- 画像入力の調整 - すでにトレーニング済みの SAMLoRA モデルへの入力として使用するために画像の調整 (バンドのサブセットの選択やピクセル深度の変更など) が必要な場合は、「転移学習によるディープ ラーニング モデルの強化」チュートリアルの「関連する画像バンドの選択」セクションをご参照ください。手順が段階を追って説明されています。 また、画像のリサンプリング (セル サイズの変更) 方法については、「画像の探索 - 空間解像度」チュートリアルもご参照ください。
- トレーニング例のポリゴン レイヤーの作成 - この方法に関する段階的説明については、「転移学習によるディープ ラーニング モデルの強化」チュートリアルの「転移学習のトレーニング サンプルの準備」セクションをご参照ください。
- 属性ドメインの使用 - トレーニング例のポリゴン レイヤーでは、[Class] 属性の [Building] の値は実際には、基となる数値 [1] のラベルです。 これは本ワークフローの本質部分ではありませんが、属性ドメインを使用してこれが実装されていることに注意してください。 この手法の詳細については、「ウィーンのハイキング コースへのサブタイプとドメインの適用」チュートリアルをご参照ください。 または、クラスに数値を使用することもできます。出力も数値になり、抽出されたフィーチャの名前は [Building] ではなく [1] になります。
- トレーニング エリア レイヤーの作成 - [フィーチャクラスの作成] ジオプロセシング ツールを使用できます。 その後、リボンの [編集] タブで [作成] ツールをクリックし、トレーニング例を提供するエリアの輪郭を描く四角形ポリゴンを 1 つ以上トレースします。
- セル サイズの選択 - 「トレーニング チップとセル サイズの詳細」セクションで説明されているように、抽出しようとしているフィーチャに最適なタイルを生成するために、セル サイズを変えて試してください。
- 狭い範囲での実験 - 実験中に、より高速に結果を得るために処理範囲を狭めることができます。 [環境] タブの [処理範囲] で、[範囲の描画] ボタンをクリックしてマップ上に小さいポリゴンを描画します。 または、マップを拡大して、[現在の表示範囲] ボタンをクリックします。
このチュートリアルでは、SAMLoRA による手法を使用して、画像内の非公式居住地を識別しました。 トレーニング データを生成し、これを使用して基本モデルをトレーニングしました。 トレーニング済みのモデルを適用して画像内の非公式居住地を分類し、その後、建物フットプリント ポリゴンを作成してクリーンアップしました。 最後に、拡大した結果を調査しました。
同様のチュートリアルについては、「ArcGIS のディープ ラーニング」シリーズをご参照ください。
他のチュートリアルについては、チュートリアル ギャラリーをご覧ください。