SAM大模型分割地图?具体流程是如何?

GIS基础理论
Dr.GIS
wowwwai GIS研习社 · 工具流程与项目排障

SAM大模型分割地图?具体流程是如何? 这个问题,通常出现在两类场景:一是想从遥感影像、航拍正射影像中快速提取建筑、水体、道路等地物;二是想把已经配准好的地图截图、影像底图或专题图,半自动分割成可编辑的矢量边界。本文以 GIS 实操视角,说明如何用 SAM(Segment Anything Model)完成地图分割,并把结果整理成 QGIS、ArcGIS Pro 或 Python GIS 可以继续使用的数据。

引言:SAM大模型分割地图适合解决什么问题

SAM 是 Meta 发布的通用图像分割模型,它的特点是可以通过点、框、掩膜等提示方式,在图像中分割出目标对象。对 GIS 用户来说,SAM大模型分割地图并不是直接替代传统遥感分类、监督分类或目标检测,而是更适合做“交互式快速提取”和“半自动边界生成”。

典型应用包括:

  • 从无人机正射影像中快速圈出建筑物、水塘、裸地、树冠等对象。
  • 在老地图、扫描图或专题图中提取颜色明显的面状区域。
  • 辅助制作训练样本,用于后续深度学习分类或目标检测。
  • 在 QGIS 或 ArcGIS Pro 中对 SAM 生成的掩膜结果进行矢量化和清理。

需要注意的是,SAM 本质上是图像分割模型。它认识的是像素纹理和边界,不理解坐标系、投影、拓扑关系和地物语义。因此,在 GIS 工作流里,SAM 分割结果还需要经过地理配准、栅格掩膜、矢量化、拓扑修复和属性整理,才能变成可用的空间数据。

SAM大模型分割地图具体流程与SAM地图分割结果矢量化工作流
SAM 分割地图的典型 GIS 工作流:从影像输入、交互分割到掩膜矢量化和质量检查。

背景:为什么地图分割不能只看模型效果

很多初学者第一次使用 SAM 分割地图时,会把重点放在“分得像不像”。但在 GIS 项目里,真正的问题通常是“分割结果能不能用”。一个看起来边界不错的结果,如果没有空间参考、没有正确的像元大小、边界碎片过多,仍然无法进入正式制图或空间分析流程。

GIS 场景下的 SAM 地图分割至少要关注四件事:

  • 图像是否有空间参考:GeoTIFF、正射影像通常带坐标信息;普通 PNG、JPG 地图截图通常不带坐标信息。
  • 分割对象是否清晰:SAM 更擅长处理边界明显、纹理连续的对象,对混合像元、阴影、低分辨率影像效果会下降。
  • 输出结果是什么:SAM 通常输出掩膜,即像素级黑白区域,不会直接输出 Shapefile、GeoPackage 或 GeoJSON。
  • 后处理是否充分:掩膜需要清理噪声、填洞、平滑边界、矢量化,并检查拓扑错误。

因此,本文推荐把 SAM 看成 GIS 数据生产链条中的一个环节,而不是一个“一键出图斑”的完整系统。

原理:SAM地图分割结果在 GIS 中如何理解

SAM 的输出通常可以理解为一个二值掩膜。目标区域的像元值为 1,非目标区域的像元值为 0。对于 GIS 软件来说,这个掩膜本质上就是一幅栅格图层。

如果输入是一幅带空间参考的 GeoTIFF,理论上可以将 SAM 输出的掩膜重新写成同样坐标系、同样仿射变换参数的 GeoTIFF。这样,掩膜就可以在 QGIS 或 ArcGIS Pro 中准确叠加到原始影像上。

如果输入是普通截图,例如浏览器地图截图、论文图片、扫描地图截图,那么 SAM 输出的掩膜也只是普通像素坐标。此时必须先进行地理配准,或者在后续把结果配准到真实坐标空间,否则无法用于面积计算、距离量测和空间叠加分析。

从 GIS 角度看,SAM大模型分割地图的核心流程可以概括为:

  1. 准备带空间参考或可配准的地图影像。
  2. 使用 SAM 根据点选、框选或自动模式生成分割掩膜。
  3. 将掩膜保存为带空间参考的栅格数据。
  4. 在 QGIS、ArcGIS Pro 或 Python 中进行栅格转面。
  5. 清理碎斑、修复拓扑、补充属性字段。
  6. 通过叠加原图、抽查样本和面积统计验证结果。

步骤:SAM大模型分割地图的具体流程

步骤一:准备地图影像或遥感影像

优先使用 GeoTIFF、COG、正射影像或其他带空间参考的栅格数据。如果只有 PNG、JPG 或截图,应先判断它是否需要配准。

准备数据时建议检查:

  • 图像分辨率是否足够,目标对象边界是否清楚。
  • 图像是否存在明显压缩块、阴影、云雾或水印。
  • 坐标系是否正确,例如 EPSG:4326、EPSG:3857 或本地投影坐标系。
  • 像元大小是否适合目标对象,不能指望用很粗的影像分割很小的地物。

在 QGIS 中,可以右键栅格图层,查看“属性”中的坐标参考系统、范围和像元大小。在 ArcGIS Pro 中,可以在图层属性的 Source 信息里查看空间参考和栅格分辨率。

步骤二:选择 SAM 使用方式

目前常见的 SAM 使用方式有三类:

  • 在线 Demo:适合快速体验,但不适合涉密数据或大批量影像。
  • 本地 Python 脚本:适合 GIS 工程化处理,可保留坐标信息并批处理。
  • QGIS 或第三方插件工作流:适合不想写太多代码的用户,但要注意插件版本和模型依赖。

如果你要做正式 GIS 数据生产,建议使用本地 Python 方式。因为只有这样更容易控制输入影像、掩膜输出、坐标参考、批处理范围和后处理逻辑。

步骤三:用提示方式生成分割掩膜

SAM 分割通常依赖提示信息。常用提示包括点、框和自动分割。

提示方式 适用场景 注意事项
点选提示 单个建筑、水体、地块等对象 点要落在目标内部,必要时增加反向点排除背景
框选提示 目标大致范围明确的对象 框太大容易包含相邻对象,框太小可能切断边界
自动分割 批量发现影像中的候选对象 容易产生大量碎片,需要严格后处理

对于 GIS 制图,建议先从框选或点选开始,不建议一上来就全图自动分割。原因是地图影像里往往有道路、阴影、标注、边界线、符号和纹理,自动分割会生成很多并不需要的对象。

步骤四:保存掩膜并保留空间参考

如果原始输入是 GeoTIFF,推荐把 SAM 输出的掩膜写回 GeoTIFF,并继承原图的 transform、crs、width、height 等信息。下面是一个简化的 Python 思路,适合理解流程:

import rasterio
import numpy as np

src_path = "input_ortho.tif"
mask_path = "sam_mask.tif"

# 假设 mask 是 SAM 输出的二维数组,目标区域为 1,背景为 0
# mask = ...

with rasterio.open(src_path) as src:
    profile = src.profile.copy()
    profile.update(
        count=1,
        dtype=rasterio.uint8,
        nodata=0,
        compress="lzw"
    )

    with rasterio.open(mask_path, "w", **profile) as dst:
        dst.write(mask.astype(np.uint8), 1)

这里的关键不是代码本身,而是空间参考继承。只要掩膜的行列数、像元大小、仿射变换和坐标系与原图一致,就能在 GIS 软件中正确叠加。

步骤五:在 QGIS 中将 SAM 掩膜矢量化

在 QGIS 中可以按照以下方式处理 SAM 地图分割结果:

  1. 加载原始影像和 SAM 掩膜 GeoTIFF。
  2. 检查两者是否完全重合。
  3. 打开“处理工具箱”。
  4. 使用“栅格像元转多边形”或 Polygonize 工具。
  5. 选择掩膜图层作为输入,字段可使用像元值字段。
  6. 输出为 GeoPackage,便于后续编辑和保存中文字段。
  7. 删除值为 0 的背景面,只保留值为 1 的目标面。
  8. 对结果执行“修复几何图形”“融合”“删除小面”等操作。

如果分割对象很多,建议不要直接输出 Shapefile。Shapefile 对字段名长度、编码、几何类型和文件数量都有历史限制,GeoPackage 更适合当前 GIS 工作流。

步骤六:在 ArcGIS Pro 中后处理分割结果

如果使用 ArcGIS Pro,可以采用类似流程:

  1. 加载原始栅格和 SAM 掩膜。
  2. 使用 Raster To Polygon 将掩膜转为面要素。
  3. 用 Select By Attributes 选择目标值,例如 gridcode = 1。
  4. 导出选中目标面。
  5. 使用 Repair Geometry 修复几何错误。
  6. 使用 Dissolve 合并相邻对象。
  7. 按面积字段删除明显噪声小斑块。
  8. 叠加原图进行人工抽查。

如果你的目标是建筑物提取,通常还需要进一步进行正交化、边界简化和形状规则化。SAM 输出的边界往往更接近图像纹理边缘,不一定符合制图规范中的建筑轮廓表达。

步骤七:验证分割质量

SAM 地图分割结果不要只凭肉眼看一两处。建议至少做三类检查:

  • 叠加检查:将矢量面半透明叠加到原始影像,查看边界是否明显偏移。
  • 属性统计:统计图斑数量、面积范围和异常小面数量。
  • 样本抽查:随机抽取若干区域,对漏分、错分和边界偏差进行记录。

如果用于面积统计,还要确认图层使用的是适合面积计算的投影坐标系,而不是直接在经纬度坐标系下计算面积。

常见坑:SAM地图分割容易失败的原因

坑一:用没有坐标信息的截图直接做 GIS 分析

普通地图截图经过 SAM 分割后,只得到像素坐标下的掩膜。它不能直接用于面积、距离、缓冲区和叠加分析。必须先配准,或者使用带空间参考的原始数据。

坑二:分割结果看起来很好,但边界存在系统偏移

如果掩膜和原图行列数不一致,或者在导出过程中进行了缩放、裁剪、重采样,后续叠加时就会出现偏移。解决办法是保证 SAM 输入图像与输出掩膜尺寸一致,并在写出 GeoTIFF 时继承原图的空间参考参数。

坑三:自动分割生成大量碎斑

地图图像里有文字、符号、阴影、道路标线、网格线和注记,这些都可能被 SAM 当成对象。自动分割适合探索候选对象,但正式生产前必须通过面积阈值、形状筛选、属性筛选和人工核查进行清理。

坑四:把 SAM 当成语义分类工具

SAM 负责“分出边界”,不负责判断“这是什么地物”。如果要区分建筑、水体、道路、林地,还需要人工标注、规则筛选,或结合分类模型、光谱指数和 GIS 先验条件。

坑五:忽略投影坐标系导致面积不准

即使 SAM 掩膜矢量化成功,如果图层仍在地理坐标系中,用经纬度直接算面积也会出错。面积统计前应投影到合适的平面坐标系,例如本地高斯投影、UTM 分带或项目指定坐标系。

方法比较:SAM分割地图、传统分类和人工矢量化怎么选

方法 优势 局限 适合场景
SAM大模型分割地图 交互快,边界提取效率高,少量样本即可开始 不理解地物类别,后处理要求高 快速提取单类对象、制作训练样本、半自动制图
传统遥感监督分类 流程成熟,可按类别批量分类 需要样本和特征设计,边界可能粗糙 土地利用分类、植被水体提取、多类别制图
阈值和指数法 简单透明,容易解释 对影像质量和阈值敏感 NDVI 植被、水体指数、简单二分类任务
人工矢量化 可控性强,成果规范 效率低,人工成本高 小范围精细制图、权属边界、最终成果修编

实际项目中,最稳妥的方式通常不是单独使用某一种方法,而是组合使用:先用 SAM 快速生成候选边界,再用 GIS 规则和人工检查进行修正。这样既能提高效率,又能控制成果质量。

检查清单:正式使用 SAM 分割地图前要确认什么

  • 原始影像是否清晰,目标边界是否可辨认。
  • 输入影像是否带空间参考,坐标系是否正确。
  • SAM 输出掩膜是否与原图尺寸一致。
  • 掩膜 GeoTIFF 是否继承了原图的 transform 和 crs。
  • 矢量化后是否删除了背景面和明显噪声小面。
  • 是否执行了几何修复、融合、平滑或简化。
  • 面积计算前是否投影到合适的投影坐标系。
  • 是否对漏分、错分、边界偏移做了抽样检查。
  • 成果格式是否满足后续软件要求,例如 GeoPackage、File Geodatabase 或 GeoJSON。
  • 是否记录了模型版本、参数、数据来源和处理日期,便于复现。

FAQ:关于 SAM大模型分割地图的常见问题

SAM 可以直接输出 Shapefile 吗?

通常不可以。SAM 直接输出的是图像掩膜,不是 GIS 矢量文件。你需要先把掩膜保存为带空间参考的栅格,再通过 QGIS、ArcGIS Pro 或 Python 工具进行栅格转面,最后导出为 Shapefile、GeoPackage 或其他矢量格式。

SAM 分割地图一定需要显卡吗?

不一定。小图和少量测试可以在 CPU 上运行,但速度会慢很多。对于较大的遥感影像、批量瓦片或自动分割任务,建议使用支持深度学习推理的 GPU 环境。实际工作中,也可以先将大影像切片,再分批处理。

地图截图能不能用 SAM 分割后计算面积?

可以作为辅助,但不能直接计算。地图截图没有真实空间参考,必须先进行地理配准,并确认比例、投影和变形误差在可接受范围内。对于正式面积统计,优先使用原始遥感影像或权威矢量数据。

SAM 适合提取道路吗?

可以尝试,但道路是细长线状对象,容易被阴影、车辆、树冠和路面纹理干扰。SAM 更擅长分割边界明显的面状对象。道路提取通常还需要中心线提取、连通性修复和拓扑编辑,不建议只依赖 SAM 一步完成。

SAM 分割建筑物后为什么边界不规整?

SAM 根据图像边缘和纹理分割,输出边界可能沿着阴影、屋顶纹理或影像噪声波动。建筑物制图通常要求直角、平行边和规则轮廓,因此还需要边界简化、正交化、人工修边或专门的建筑物规则化算法。

QGIS 能不能完成 SAM 地图分割的全部后处理?

大部分后处理可以。QGIS 可以完成栅格加载、栅格转面、删除小面、融合、修复几何、面积统计和制图检查。但如果需要批量推理、切片处理或自动化质检,建议配合 Python、Rasterio、GeoPandas 和 GDAL 使用。

结论:把 SAM 当成 GIS 工作流中的高效分割环节

SAM大模型分割地图的价值在于快速生成对象边界,尤其适合辅助提取建筑、水体、地块、树冠等边界较清晰的目标。但在 GIS 项目中,真正可交付的成果不仅要“分得出来”,还要有正确坐标系、合理拓扑、可解释属性和可复核质量。

推荐的实用流程是:使用带空间参考的影像作为输入,通过 SAM 生成掩膜,把掩膜写成 GeoTIFF,再在 QGIS 或 ArcGIS Pro 中矢量化、清理和检查。只要把空间参考、掩膜尺寸、矢量化后处理和质量验证这几个环节做好,SAM 就可以成为 GIS 数据生产中非常有效的半自动分割工具。