一小时内:从 QGIS 标注到新建建筑检测器和新数据集
我们一直在尝试 AI 智能体,这一次的场景是制图验证和施工检测。值得一提的是,这又是一种颠覆性的 AI 制图工作流。在这次实验中,我们把一个包含 487 个手工绘制多边形的 QGIS 项目交给 AI 智能体,并问它:这些标注是否足以训练一个低层新建建筑检测器?大约 30 分钟后,它已经用这些标注训练出一个变化分类器,并检查了每一个标注。它标记出 10% 需要删除或修正的标注,还找到了我们的制图员漏掉的新建筑。
任务
前期项目
项目区域位于印度卡纳塔克邦,约 9 × 8 公里。这里既有密集的城镇街区,也有村庄、棕榈种植园和农田。目标是低层新建建筑:主要是一到两层的住宅、棚屋和刚清理出来的地块。
- 初始数据集是用 Mapflow 的 QGIS 插件创建的。施工地块先被人工标注为外接矩形(bbox)或凸包区域,然后在这些区域内运行 Mapflow Buildings 模型来勾勒建筑轮廓。
- 根据标注结果,我们估计施工检测模型可能的准确率约为 70%,覆盖 90% 的施工地块。
- 按施工阶段分类的准确率预计会更低,置信区间也更宽。为提高准确率,我们曾要求客户使用航拍照片等更精细的影像,但成本过高,超出了项目预算,因此放弃了这个方案。
智能体工作流
智能体的输入是:
- 一个 QGIS 项目(.qgz),包含两个影像图层:2023 年的全球镶嵌影像(“之前”)和一景新的高分辨率影像(“之后”)。
- 一个包含 487 个施工变化多边形的 GeoJSON,带有
stage属性(completed / new / 空)。只有 110 个标注填写了阶段,数量太少无法用于学习,因此分类器被要求忽略该字段,把所有多边形视为同一个“施工变化”类别。
提示词只有一句话:把这些标注用作施工变化的训练标注,验证它们,并找出缺失或错误的标注。
智能体做了什么
智能体读取项目、确定步骤,并编写和运行了自己的脚本。
- 读取 QGIS 项目
- 下载影像
- 对齐两期影像。 这是最有意思的地方!两期影像相差 3–8 米,而且偏移量在整景中各不相同。智能体在一组影像窗口网格上测量偏移,并把 2023 年的镶嵌影像配准到新影像上,剩余误差降到约 0.8 米。
- 检查每一个标注。 它为 487 个多边形各裁剪了一组前后对比图,按每页 28 组进行审阅,然后把约 90 个存疑的案例放大重看。
- 用标注训练分类器。 它在两期影像上运行预训练的 ResNet-18,并用两期特征及其差值训练逻辑回归。在模型未见过的空间块上测试:AUC 0.96。
- 搜寻漏标。 它按“现在看起来有建筑,2023 年看起来没有”对未标注位置排序,逐一审阅前 108 个候选,并在列表靠后的位置抽样,以估算漏标数量。
- 交付结果。 它生成了带有逐多边形
qa_flag的标注 GeoJSON、一份漏标候选列表,以及一个包含影像对比图的报告页面。
发现了什么
487 个标注中有 88% 是正确的,问题集中在几种模式上。
| 问题 | 标注数 | 表现 |
|---|---|---|
| 2023 年已建成 | 23 | 房子在两期影像中都存在,或者根本没有变化 |
| 仅屋顶变化 | 14 | 轮廓不变;绿色屋顶变成蓝色,或红色变成橙色 |
| 多边形画得过大 | 9 | 框住了旧房子及其新扩建部分;其中一个达 2.4 公顷 |
| 拆除 | 3 | 棚屋被拆,没有新建 |
| 不确定 | 8 | 是在已有墙体上加了屋顶,还是只是换了屋顶?2023 年的影像太模糊,无法判断 |
更大的发现是缺失的部分。在排名前 108 的候选中,智能体确认了 39 栋未标注的新建筑和 29 处施工地块或清理出的地块。列表靠后的抽样又补充了几处。按命中率外推,这景影像中可能有 100–200 栋未标注的新建筑,也就是说建筑标注的召回率约为 70–80%。需要注意的是,这衡量的是人工标注的完整程度,而不是模型的准确率,因此还不能验证我们最初约 70% 的估计。

分类器找到的漏标新建筑。青色框为候选位置:2023 年为空地(左),现在是新房或棚屋(右)。
农村与密集城区的错误类型不同
这两种环境以相反的方式破坏标注,因此训练集需要有意识地覆盖两者。
- 农村地区:漏标。 大多数未标注建筑是棕榈林中的独栋房屋、田边的棚屋以及村庄边缘的新院落。在 42 个确认的漏标中,有 35 个周围 500 米内的标注少于 5 个,大多数周围一个都没有。标注员会集中在变化密集的地方,跳过看起来空旷的瓦片——这正是我们在 QGIS 中标注流程的做法(在新旧影像图层 <> 之间切换,用肉眼找差异)。用这样的数据训练出的模型会学会忽略零散的新建建筑。
- 密集城区:错标。 约九成的错误标注和仅屋顶变化的标注位于密集簇中,周围 500 米内有 5 个或更多其他标注。屋顶紧挨在一起时,新的蓝色屋顶或加盖的一层看起来就像新建筑(这也是人眼的因素),而模糊的 2023 年影像让情况更糟。
- 标注员需要针对边界情况的书面规则。 换屋顶、扩建、拆除和土地清理,在有的地方被标注了,在有的地方没有。
- 裁剪对比图前先对齐影像。 几米的偏移会让每一栋未变化房屋的边缘都变成虚假的“变化”像素。这在建筑小而密集、彼此相连的城区影响最大。
用 Mapflow 闭环
接着,智能体自己把 45 栋漏标建筑加入了训练集。在通过 MCP 连接的 Mapflow SAM 会话中,这一步用了大约 12 分钟。
- 智能体在 42 个已确认位置的每栋漏标建筑上放一个点,Mapflow 的魔棒工具根据这个点勾勒出建筑轮廓。
- 第一次尝试使用了 2.3 米的粗尺度,画出的轮廓很松散。把魔棒切换到 0.29 米后问题解决。这个参数是智能体自己调整的。
- 一张包含所有轮廓的检查图发现了四个错误:一段院墙、一块铺装、一片暗斑和一块裸地。智能体删除了它们,并把其余轮廓规整为矩形。

45 个新轮廓中的 24 个。每组左侧为 2023 年影像,右侧为带有 Mapflow 轮廓的新影像。
结果可以直接并入训练标注:质检后保留的 446 个标注加上 45 个新轮廓,共 491 个。
投入、成本与下一步
智能体运行耗时约 26 分钟,模型使用费用约 $6.30。如果由我们的标注员手工审阅 487 组前后对比图,并在 75 平方公里范围内寻找漏标,需要几天甚至更久。
整个制图质检会话花费约 $31。下表根据会话的使用日志按步骤列出明细。所用模型是 Claude Opus 5.5,属于最昂贵的模型之一。
| 步骤 | 智能体步数 | 按价格加权的 token | 费用(美元) |
|---|---|---|---|
| 标注质检:瓦片、对齐、分类器、审阅、报告 | 73 | 2.28M | 6.31 |
| Mapflow SAM 轮廓(合计) | 61 | 2.75M | 7.59 |
| 上传影像到 Mapflow,准备会话 | 15 | 0.51M | 1.40 |
| 在 42 个位置放置种子点 | 19 | 1.12M | 3.10 |
| SAM 会话:魔棒、审阅、矩形化、导出 | 17 | 0.68M | 1.89 |
| 更新文章和项目文档 | 10 | 0.43M | 1.19 |
| 博客初稿 | 13 | 0.73M | 2.01 |
| 根据评论修改 | 55 | 4.44M | 12.28 |
| 修正项目文档 | 5 | 0.61M | 1.67 |
| 用量查询 | 8 | 0.30M | 0.82 |
| 合计 | 215 | 11.1M | ~31 |
上表只统计智能体的模型使用费用,Mapflow 的面积费用另计。按每平方公里 $1、最低 1 平方公里计算,整景约 $75。如果只把 42 栋漏标建筑周围 200 米的窗口作为一个多部分区域提交,费用约为 $2。勾勒所有新建筑大约需要 5% 的面积,即 $4(见扩展成本表)。
智能体不用 SAM,能自己勾勒这 45 栋建筑吗?它仍然需要种子点($3.10),然后凭肉眼画出每个多边形,再经过 2–3 轮检查和修正,大约多 25 步。这在 token 上约花 $6,与 SAM 路线大致相同($5 token 加 $2–4 的 Mapflow 费用)。差别在于质量:在 0.58 米影像上手工放置的角点会偏差 1–2 个像素,约 1 米,对一栋 150 平方米的房子来说,面积误差约为 25%。SAM 会把轮廓贴合到屋顶边缘。
扩展到整个卡纳塔克邦
在全邦尺度上,成本几乎全部转移到 Mapflow 的面积费用上。智能体 token 变成一笔很小的固定成本,前提是三项优化:
- 变化检测以代码运行。 训练好的分类器作为普通代码运行,不需要智能体参与循环。这景 75 平方公里影像的特征计算约耗时 340 个 CPU 秒,约每平方公里 4.5 秒。
- 智能体只做审阅。 它在每个县抽查约 200 个检测结果,而不是检查每一个标注。
- SAM 只看变化窗口。 轮廓提取只在检测结果周围 100 米的窗口上运行,每个县作为一个多部分区域提交,不再逐栋点击魔棒。
在马杜尔,100 米窗口对真实新建筑覆盖 5% 的面积,对当前检测器标记的全部结果覆盖 16%。下表假设 5% 的面积提交给 Mapflow:所有新建筑周围 100 米的窗口,每个县作为一个多部分区域提交。仅 42 栋漏标建筑只需要 2%。
| 尺度 | 面积(平方公里) | 提交给 Mapflow 的面积(5%) | 检测计算 | Mapflow 费用($1/平方公里) | 智能体 token | 合计 | 每平方公里 |
|---|---|---|---|---|---|---|---|
| 本次测试(马杜尔) | 75 | 3.8 平方公里(按 4 计费) | < $0.01 | $4 | $11 | $15 | $0.20 |
| 单个县(平均) | 6,200 | 310 平方公里 | ~$1 | $310 | ~$10 | ~$321 | $0.052 |
| 卡纳塔克邦(31 个县) | 191,800 | 9,590 平方公里 | $30–50 | $9,590 | ~$350 | ~$9,980 | $0.052 |
| 对比:整个邦提交给 Mapflow | 191,800 | 191,800 平方公里 | $30–50 | $191,800 | ~$350 | ~$192,200 | $1.00 |
在全邦尺度上,智能体 token 约为:构建和重新训练流程约 $20,再加上每个县约 $10 用于抽样审阅和运行 Mapflow。如果改为逐景运行完整的智能体质检,费用约为 $16,000(2,560 景 × $6.30)。以上不含影像费用,也不含为提高检测器精度而重新训练的成本——精度提高后,窗口和费用都会缩小。
结论
与其说是结论,不如说是我们在这项快速变化的技术上当前实验的一个快照。
利用可扩展 GPU 和开放模型(Mapflow 的案例)的智能体工作流,是处理耗时的制图验证任务的有力方法:比智能体单独工作更准确、更快,成本大致相同。在全邦尺度上,优化后的工作流比逐景运行智能体便宜约 1.6 倍($1 万 对 $1.6 万),比用 Mapflow 处理整个卡纳塔克邦便宜约 20 倍。差距非常大!
它并没有把制图员排除在外,而是让制图员换了一个角色:标注员 + 监督者。下一步,我们将用清理并对齐后的影像对重新训练,并再次运行同样的审核,以衡量在新区域上的提升。
写这篇文章花的时间,比训练分类器和运行智能体流程还要长(不包括最初的影像标注)。
我们正处在一个变革的时代,这并不意外。仍让我们惊讶的是,变化来得如此之快。
制图愉快!🗺️
