上一篇主要讲搜索问题。我们把自由 3D 探索改成了基于正射视角的覆盖扫描,阀门盘点的召回率从约 40% 提升到了约 90%。现在系统能比较稳定地把主要区域扫到。

但覆盖扫描只是把目标送进视野。真正进入盘点结果之前,还需要经过检测、定位、合并和验证。

接下来就是候选生成和验证。

现在的流程大致是:先用 2D detection 在正射 tile 里找出可能是阀门的位置,再用 3D verification 从更合适的视角确认这些候选。2D 阶段更像 proposal generator,负责尽量多找;3D 阶段更像 verifier,负责把明显不对的候选过滤掉。

2D detection:先把候选找出来

正射覆盖扫描以后,每个 tile 都会被送进视觉模型做检测。这个阶段的目标不是直接给出最终盘点结果,而是尽量生成候选。

当前 2D detection 的指标大致是:

指标数值
Precision约 69%–71%
Recall约 60%–63%

这个结果有两个含义。

第一,2D detection 已经能找到不少目标。它不再是随机猜测,输出的候选里大约七成是对的。

第二,它仍然会漏掉不少目标。Recall 只有 60%–63%,说明还有相当一部分阀门没有在 2D 阶段变成候选。

在这个系统里,2D detection 的 recall 很关键。后面的验证流程只会处理已经生成的候选。如果一个阀门在 2D 阶段没有被提出来,3D verification 就不会看到它。

3D verification:主要作用是过滤误报

2D 阶段会产生误报。阀门周围通常有管道、法兰、平台结构、支架和其他设备,在俯视图里很容易混在一起。为了减少误报,我们会把 2D 候选送到 3D verification。

3D verification 会围绕候选位置,从更适合识别的视角重新观察目标。很多设备从正上方看不清楚,从侧面或斜侧面看会更容易判断。验证阶段的目标是给候选一个结论:confirmedrefuted,或者 unverified

从目前结果看,3D verification 对 precision 的帮助比较明显。

阶段FP 比例
2D only约 29%–31%
3D 后,效果较好时约 15%–20%
3D 后,现实情况约 20%–25%
3D coverage 不好时可能接近 2D,仍约 30%

这个数据说明,3D verification 的收益取决于它是否真的拿到了有用视角。

如果候选附近有合适的观察角度,3D verification 可以把不少误报过滤掉。FP 从约 30% 降到 20% 左右,效果好的时候可以到 15%–20%。

但如果 3D 视角覆盖不好,或者候选被遮挡,verification 的作用就会明显下降。它看到的画面不比 2D 阶段更有信息量时,结果自然也不会好很多。

Verification 救不了没有出现的候选

一开始我把 verification 当成 recall 的补救手段,但实际上它很难做到这一点。

当前流程是:

2D Discovery
↓
Candidate
↓
3D Verification

限制是候选必须先出现。

如果 2D 阶段没有检测到某个阀门,后面的 3D verification 不会主动去找它。验证阶段处理的是候选,不是全场景搜索。

所以3D verification 能降低误报,却很难恢复漏检。

3D verification 更像 precision gate。它可以把一些错误候选挡在结果之外,但它不会显著抬高 proposal recall。最终 recall 的天花板,很大程度上由 2D discovery 决定。

所以最近我们的重点放在 fine-tuning 2D detection 上。只继续优化 verification,收益会越来越有限。真正缺的是更多、更准的候选。

为什么 2D proposal 还会漏

2D detection 的漏检来源比较复杂。

有些是视角问题。阀门从正上方看结构不明显,和周围管道、平台混在一起。

有些是分辨率问题。tile span 太大时,单个阀门在截图里占的像素太少;span 太小时,扫描成本又会上升。

还有一些是场景本身的问题。工厂里的阀门不是一个标准化物体,它可能有不同尺寸、不同颜色、不同安装方向,周围还会有各种相似结构。通用视觉模型能识别一部分,但很难覆盖所有长尾情况。

遮挡也会影响候选生成。建筑物、管廊和大型设备可能直接挡住阀门。正射视角下看不到的目标,自然不会进入 2D 候选集。

这些问题混在一起,最后就表现为 2D recall 卡在 60%–63% 左右。

为什么下一步是 fine-tuning

现在的系统已经把搜索流程稳定下来了。每个 tile 是否扫描过、截图质量如何、候选有没有产生,都可以追踪。3D verification 也已经证明能降低误报。

因此,下一步最直接的瓶颈是 2D proposal recall。

fine-tuning 的目标不是让模型“更聪明”地理解整个场景,而是让它更熟悉这个资产类别在这个场景里的样子。阀门在真实工厂里有很多变体:有些很小,有些被管道包围,有些颜色和背景接近,有些只露出一部分。靠 prompt 很难覆盖这些情况。

更有价值的数据包括:

  • 典型阀门样本
  • 小目标样本
  • 部分遮挡样本
  • 容易误判的 hard negatives
  • 不同高度、颜色、方向和安装方式的样本

这类数据能帮助 2D proposal model 更稳定地产生候选。只要候选能进入后续流程,3D verification 就还有机会做过滤和确认。

后面可能需要多来源候选

Fine-tuning 能提升 2D detection,但它不能解决所有问题。尤其是那些从正射视角不可见的目标,仅靠 top-down detection 很难覆盖。

后续候选来源可能需要扩展成多路:

Top-down 2D Detection
+
Side-view Detection
+
3D Keypoint Detection
+
Geometry Heuristics
↓
Unified Verification

Top-down 2D detection 继续作为基础 proposal layer。它稳定、可覆盖,适合处理大部分地面层目标。

Side-view detection 可以补正射视角的盲区,尤其是建筑物侧面、管廊侧面和高架设备。

3D keypoint detection 可以在局部 3D verification 或 tile sweep 中找新的候选,而不仅仅是验证已有候选。

Geometry heuristics 可以利用管线、设备连接关系和已知资产分布,为模型提供额外线索。

这些候选不一定都直接进入最终结果。更合理的方式是统一进入 verification,再由后续阶段判断是否确认。

小结

目前这条链路里,2D detection 的 precision 大约是 69%–71%,recall 大约是 60%–63%。3D verification 可以把 FP 从约 29%–31% 降到现实情况下的 20%–25%,效果好的时候可以到 15%–20%。

这说明 3D verification 对 precision 有帮助,但它不是 recall 的主要来源。漏掉的候选不会自动进入验证阶段。

所以接下来的重点会放在 2D proposal recall 上,尤其是通过 fine-tuning 和更有针对性的数据提高候选生成能力。再往后,系统需要从单一 top-down proposal 扩展到多来源 proposal,让那些从正射视角不可见的目标也有机会进入验证流程。