AI News HubLIVE
站內改寫2 分鐘閱讀

GeoAI 教程:使用 U-Net、Grounding DINO、SAM 和 Mask R-CNN 從 NAIP 影像中提取建築足跡

本教程演示了從高分辨率 NAIP 航空影像中提取建築足跡的完整 GeoAI 工作流,涵蓋環境配置、數據下載、U-Net 語義分割模型訓練、滑窗推理、矢量化與規則化、精度評估,以及基於 Grounding DINO 和 SAM 的零樣本分割和 Mask R-CNN 實例分割對比。教程還展示了將流程擴展到 Microsoft Planetary Computer 和 Overture Maps 真實數據的方法。

來源MarkTechPost作者: Sana Hassan

本教程旨在構建一個完整的地理空間人工智能(GeoAI)工作流,用於從高分辨率 NAIP 航空影像中自動提取建築足跡。作者首先配置了支持 GPU 的深度學習環境,並安裝了 geoai-py、segmentation-models-pytorch 等必要的 Python 庫。隨後,從 Hugging Face 數據集下載了示例 NAIP 影像(訓練與測試場景)以及對應的建築標註 GeoJSON 文件,並通過柵格信息查看、矢量文件探索等方式檢查數據的空間屬性,確保後續處理的座標參考一致性。

在數據準備階段,教程將訓練影像和標籤切割為 512×512 像素、步長為 256 像素的圖像塊(chip),並生成對應的二值分割掩膜。作者使用基於 ResNet-34 編碼器的 U-Net 模型進行語義分割訓練,設置了 12 個 epoch、批量大小 8、學習率 1e-3 等超參數,並在訓練過程中採用早停和檢查點保存策略。通過繪製訓練損失和驗證 IoU 曲線,用户可以直觀地判斷模型是否過擬合或欠擬合,並找到驗證 IoU 最高的模型權重作為後續推理的輸入。

完成訓練後,作者利用滑窗推理方法對未參與訓練的測試影像進行預測,同時輸出預測掩膜和概率圖。為了得到乾淨的矢量建築輪廓,代碼首先通過區域分組過濾掉小於 50 像素的噪聲區域,然後將掩膜柵格轉換為多邊形,並依次進行正交化(直角化)和規則化(簡化容差)處理,最終生成具有面積、周長、緻密度、延伸率和方向等幾何屬性的建築足跡 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 的開發者,也便於研究者快速復現和調整參數。