このチュートリアルでは、高解像度のNAIP航空画像から建物フットプリントを抽出するための、エンドツーエンドのGeoAIワークフローを構築します。まず、GPU対応の深層学習環境を構成し、geoai-pyやsegmentation-models-pytorchなどの必要なPythonライブラリをインストールします。次に、Hugging FaceデータセットからNAIP訓練・テスト画像と建物ラベルのGeoJSONファイルをダウンロードし、ラスタ情報の確認やベクタデータの探索を通じて、空間参照系の整合性を検証します。
データ準備段階では、訓練画像とラベルを512×512ピクセル、ストライド256ピクセルで画像チップに分割し、対応する二値セグメンテーションマスクを生成します。エンコーダにResNet-34を用いたU-Netモデルを、バッチサイズ8、学習率1e-3、12エポックで訓練します。訓練中は早期停止とチェックポイント保存を導入し、損失曲線と検証IoUのプロットによって過学習や未学習の兆候を確認します。最良の検証IoUを持つモデル重みを推論に使用します。
推論段階では、テスト画像にスライディングウインドウ方式を適用し、予測マスクと確率ラスタを生成します。後処理では、領域グループ化により小さなノイズ領域を除去し、ラスタをポリゴンに変換してから直交化・正則化を施します。最終的には、面積・周長・ソリディティ・伸長率・方位などの幾何属性を持つGeoJSONファイルを出力します。生のポリゴン化結果と正則化後を比較し、後処理の効果を視覚的に示します。
精度評価では、訓練画像に対する予測をグランドトゥルースと比較し、ピクセル単位のIoUとF1を計算します。背景クラスのIoUは膨大なネガティブサンプルによって過大評価されるため、建物クラスの指標を重視するよう注意を促しています。また、Grounding DINOとSAMを組み合わせたゼロショットセグメンテーションを紹介し、「building」「house」「rooftop」などのテキストプロンプトだけで建物領域を抽出できることを示します。さらに、事前学習済みMask R-CNNモデル(building_footprints_usa.pth)を用いたインスタンスセグメンテーションも実行し、結果を正則化してセマンティックセグメンテーションと比較します。
実際の応用として、Microsoft Planetary ComputerのNAIP画像とOverture Mapsの建物ラベルデータを使用する方法も説明しています。チュートリアル全体はstep1からstep10までのモジュール化された関数で構成され、各ステップに詳細なコードコメントと可視化出力が含まれています。GeoAIを始めたばかりの開発者にも、研究で再現・調整したい研究者にも役立つ内容です。