GeoAI教程教你用U‑Net、Grounding DINO与SAM提取NAIP影像建筑轮廓
背景与意义
随着高分辨率遥感影像的广泛获取,建筑足迹提取已成为城市测绘、灾害评估和智能交通等场景的基础任务。传统手工绘制成本高、时效差,而基于深度学习的 GeoAI 工作流能够实现批量、精准的自动化提取。本文以 NAIP 影像为例,展示了从数据准备、模型训练到后处理的完整步骤,并对比不同模型的优劣,为实际项目落地提供参考。
环境配置与数据准备
- 运行平台:Google Colab(支持 T4 GPU)或本地 Python 环境。
- 核心依赖:
geoai-py、segmentation-models-pytorch、buildingregulariser、torch、rasterio、geopandas。 - 数据来源:
- NAIP RGB 影像(
naip_rgb_train.tif、naip_test.tif) - 建筑矢量标签(
naip_train_buildings.geojson) - 通过 HuggingFace 数据集链接一键下载,自动校验文件大小。
- NAIP RGB 影像(
小技巧:在 Colab 中运行
torch.cuda.is_available()可确认 GPU 是否被正确识别,若未检测到 GPU,请在 Runtime → Change runtime type 中选择硬件加速器。
模型训练与评估
配置参数
{
"tile_size": 512,
"stride": 256,
"architecture": "unet",
"encoder": "resnet34",
"epochs": 12,
"batch_size": 8,
"lr": 1e-3
}
训练流程
- 切片:使用
geoai.export_geotiff_tiles将原始影像按 512×512 像素、256 像素步幅切分为训练/验证样本,自动生成对应的掩模。 - 模型构建:调用
geoai.train_segmentation_model,采用 ResNet‑34 预训练权重初始化编码器,实现语义分割(建筑 vs 背景)。 - 监控指标:训练结束后读取
training_history.pth,绘制 IoU、Loss 曲线,最佳模型在第 7 轮达到验证 IoU 0.78。
像素级评估
使用 geoai.calc_segmentation_metrics 对训练集进行交叉验证,得到 IoU=0.78、F1=0.82,说明模型对建筑像素的捕获能力较强。
零样本分割与实例对比
Grounding DINO + SAM
通过 GroundedSAM 类加载 IDEA-Research/grounding-dino-tiny 检测器和 facebook/sam-vit-base 分割器,给定文本提示 ["building", "house", "rooftop"],在单张 1024×1024 切片上实现零样本分割。结果显示约 150 个建筑候选,多数轮廓较为粗糙,需要后处理。
预训练 Mask R‑CNN
加载官方提供的 building_footprints_usa.pth 权重,直接对整幅 NAIP 影像进行实例分割。得到约 180 个建筑实例,轮廓更为精细且每个实例均带置信度。
对比要点
- 精度:Mask R‑CNN 在建筑边界上更贴合真实形状;Zero‑shot 方法在复杂屋顶上常出现漏检。
- 成本:Zero‑shot 免训练,仅需数分钟即可得到结果;Mask R‑CNN 需要先完成 U‑Net 训练,整体耗时更高。
- 适用场景:若项目对快速原型或少量样本敏感,推荐 Grounding DINO+SAM;若追求高质量实例并具备标注数据,仍建议自研 U‑Net 或直接使用 Mask R‑CNN。
后处理与矢量化
- 噪声清除:利用
geoai.region_groups移除面积小于 50 px 的孤立区域。 - 栅格转矢量:
geoai.raster_to_vector将清洗后的掩模转为 GeoJSON 多边形。 - 正交化 & 正则化:分别调用
geoai.orthogonalize与geoai.regularization,得到角度误差 ≤12°、简化容差 0.4 m 的建筑足迹。 - 属性计算:使用
geoai.add_geometric_properties为每个多边形添加面积、周长、长宽比等属性,便于后续统计分析。
结论与展望
本文示范了一个可复用的 GeoAI 工作流:从原始 NAIP 影像出发,经过切片、U‑Net 语义分割、零样本/预训练实例分割、后处理到矢量化,最终得到结构化的建筑足迹数据。该流程兼容多波段(RGB+NIR)影像、支持多类地表覆盖的扩展训练,也可迁移至其他遥感平台(如 Sentinel‑2、PlanetScope)。未来可进一步结合大模型(Prithvi、SAM‑v2)实现跨尺度、跨地区的统一检测,或将生成的建筑库用于城市三维建模与空间决策。
本文代码与完整 notebook 已同步至 https://opengeoai.org,欢迎下载复现。