视觉定位系统上线前,团队经常用一组现场视频验证“能否定位”。这种测试可以发现明显故障,却很难回答三个工程问题:系统在什么条件下失败、地图更新是否造成性能回退、不同版本的结果能否公平比较。
要让评测真正服务于发布决策,需要把输入数据、定位输出、成功条件和失败类型都结构化。本文给出一套适用于室内外VPS定位系统的离线评测方法。
先明确定位接口的输出
评测程序不能只接收一个“成功”布尔值。一次定位请求至少应返回位姿、置信度、地图版本和处理时间。位姿通常包含三维位置与旋转,置信度用于表达结果是否可信,地图版本用于保证结果可以复现。
可以将一次请求记录为如下结构:
{
"sample_id": "mall-b1-east-00042",
"map_version": "map-2026-08-31-r3",
"device_class": "wide-camera-a",
"timestamp_ms": 1788240600123,
"pose": {
"position_m": [12.41, 3.08, 1.62],
"quaternion": [0.01, 0.72, 0.02, 0.69]
},
"confidence": 0.84,
"latency_ms": 286,
"status": "localized"
}
如果缺少地图版本或设备类型,即使之后发现异常,也很难判断问题来自算法、地图还是相机参数。
样本应按场景因素分层
随机抽取视频帧会让容易定位的区域占据多数,从而掩盖边界问题。更合理的做法是按区域、光照、运动状态、遮挡程度、设备类型和地图新鲜度分层。
区域维度可以区分入口、走廊、扶梯、开阔大厅和重复纹理区域;光照维度可以区分日间、夜间、逆光与局部暗区;运动维度可以覆盖静止、步行、快速转向和短时模糊。每个分层都应保留足够样本,并在版本之间使用相同的数据分布。
评测集还需要划分开发集与冻结集。开发集允许团队反复调参,冻结集只在候选版本发布前运行。否则,算法会逐渐适配已知测试样本,离线成绩上升,但真实场景的泛化能力没有改善。
用指标矩阵替代单一平均误差
平均位置误差不能完整描述用户体验。建议至少同时记录以下指标:
- 首次定位成功率:从冷启动开始,在限定时间内达到业务精度要求的请求比例。
- 首次定位时间:从收到第一帧到输出首个可信位姿的耗时分布。
- 位置与姿态误差:分别统计中位数、高分位数和最大值,避免少量极端结果被平均值隐藏。
- 重定位成功率:跟踪丢失后,系统在限定帧数内恢复到正确位置的比例。
- 错误接受率:系统输出高置信度结果,但实际定位到错误区域的比例。
- 拒绝率:系统因信息不足而不输出位姿的比例。
错误接受与合理拒绝必须分开。没有足够视觉特征时,拒绝定位通常比输出错误楼层更安全。置信度阈值也不应只追求成功率,而要通过校准曲线检查“高置信度是否真的更可靠”。
建立可操作的失败分类
失败样本如果只标记为“定位失败”,对修复帮助有限。可以将原因分成五类:输入质量、地图覆盖、视觉混淆、设备差异和服务异常。
输入质量包括过曝、欠曝、运动模糊和镜头遮挡;地图覆盖包括采集缺口和现场结构变化;视觉混淆包括重复走廊、相似店面和弱纹理墙面;设备差异包括焦距、畸变和自动曝光策略变化;服务异常则包括超时、模型加载失败和版本不一致。
自动分类无法覆盖所有情况时,可以先由规则筛选,再对高频失败簇进行人工复核。最终目标不是让每个样本都有完美标签,而是让失败能够转化为明确动作,例如补采、重建地图、调整阈值或修复服务。
地图更新必须做回归测试
地图不是一次性产物。装修、展陈移动、道路施工和季节性光照变化都会触发更新。新地图发布前,应同时检查变化区域与未变化区域。
变化区域需要验证新增内容是否改善定位,未变化区域则用于发现意外回退。推荐同时运行旧地图与候选地图,比较同一批冻结样本的首次定位成功率、错误接受率和时延。若候选版本只提升局部区域,却让大量稳定区域退化,就不应直接全量替换。
发布流程还应保留地图清单、构建参数和回滚指针。客户端请求中携带地图版本,服务端日志记录实际使用版本,出现问题时才能快速定位受影响范围并回退。
离线评测与线上观测要闭环
离线数据可重复、适合比较版本,但无法覆盖所有真实行为。线上系统应只采集完成诊断所需的最少信息,例如匿名化区域编号、设备类别、地图版本、耗时和失败类型,并避免保存与评测无关的原始画面。
当某类线上失败持续增加时,团队可以从对应区域补充经过授权的评测样本,加入开发集;经过一段时间验证后,再选择代表性样本进入下一版冻结集。这样,评测集会随真实问题演进,而不会变成一份长期不变的演示数据。
结论
VPS评测的核心不是生成一个总分,而是建立可复现的发布依据。完整流程应包含版本化输入、分层样本、指标矩阵、失败分类、地图回归和线上反馈闭环。只有能够解释“为什么成功或失败”,离线评测才真正具备工程价值。