分路造 16 万同地点硬正样本,AdaptVPR 遮挡 R@1 最高加 9.2%

AdaptVPR: Route-Aware Hard Positive Generation for Robust Visual Place Recognition

Shunpeng Chen, Jingyi Zhang, Changwei Wang, Shengpeng Xu, Yukun Song, Xingtian Pei, Jinzhou Lin, Li Guo, Shibiao Xu

cs.CV

2026-09-04

AdaptVPR 用 VLM 规划加几何校验,按天气、遮挡、双扰动三条路线从街景造出 16 万同地点硬正样本;接到现有 VPR 上,遮挡场景 R@1 最高加 9.2%。

这篇在解决什么

视觉地点识别(Visual Place Recognition, VPR)把定位做成图像检索:拿一张查询图,从数据库里找回同一地点或附近的图。同一条街白天和夜里、晴天和雨天、被车挡住和没挡住,外观差得可能比两个不同地点还大。训练时几乎只见过晴朗白天的街景,测试时碰到冬天、夜晚、前景遮挡就会掉点。

真去同一地点反复拍,覆盖天气、光照、季节、车流的组合,贵而且扩不动。变色、裁切、模糊、随机擦除改不出雨夜反光或结构化前景遮挡。扩散模型随便改图更麻烦:看起来真实的雨景,可能已经把楼面、车道线、路口拓扑改掉了。这些图如果当正样本喂进度量学习,等于在告诉模型「改过的假地点」和原地点该靠近。VPR 要的是外观够难、地点身份还在的同地点硬正样本。

方法

北京邮电大学和齐鲁工业大学把生成拆成三条路线,不再拿一条流水线硬改所有图。框架叫 AdaptVPR:先看图能不能改,再选路,再生成,再验货。

场景规划用 Qwen3-VL-4B-Instruct,给每张参考图打结构化能力字典。核心三个字段是天气可编辑分数、遮挡可编辑分数,以及「这张图根本不适合生成」的坏图标记。近景墙面、招牌特写、看不见路的碎片直接跳过。

规则调度按分数开门。多条都合格时,按配额缺口和能力分选一条,避免样本全堆在好改的路上。四选一:全局外观、局部遮挡、双扰动、跳过。

三条生成路线后端不同。全局外观走 IC-Light,改天气、光照、昼夜,只生成一次,验不过就扔。局部遮挡和双扰动走 Qwen-LightX2V,往合理地面区域插车或行人;原图车已经很多时也可以反向清掉几辆再补背景。双扰动再叠一层天气或昼夜。失败后最多改 prompt 重试 3 次,路线和生成器锁死。

验货两道门。几何一致性用 SuperPoint 提点、LightGlue 匹配、RANSAC 估单应,看内点比例;外观多样性用 CLIP 特征距离。两条都过才入库。阈值按路线分开:全局几何 0.78、局部几何 0.82、双扰动几何 0.72,因为雨加车本来就会少掉一批匹配点。多样性阈值分别是 0.15、0.09、0.20,雨加车双扰动降到 0.12。

管线从 GSV-Cities 的 88989 张参考图做出 AdaptCities:16 万张过检合成硬正样本,全局 50239 张(31.4%)、局部 45804 张(28.6%)、双扰动 63957 张(40.0%)。训练时并进原训练集,骨干、聚合器、损失函数都不改。批次里真实与合成按 8:1 混最好。

结果

接到 SALAD、BoQ、EDTformer、ImAge 四个现成 VPR 上,模型配置不动。标准五数据集、20 组 R@1 全部上涨。Pitts30k 只加 0.1 到 0.7 个百分点,城市视角集已经很高;Nordland 季节切换上 BoQ 从 90.6% 到 95.9%,加 5.3 个点。SF-XL-v1 上 SALAD 从 88.6% 到 93.0%,加 4.4 个点。

难域差更大。

设置基线+AdaptVPRΔ R@1
BoQ / SF-XL-Occlusion43.452.6+9.2
BoQ / Nordland81.389.6+8.3
EDTformer / Nordland73.181.2+8.1
EDTformer / SF-XL-Occlusion51.357.9+6.6
ImAge / SF-XL-Occlusion56.663.2+6.6
SALAD / Nordland76.082.0+6.0

SF-XL-Night 上四个方法加 1.7 到 3.2 个百分点。Pitts250k 大规模城市场几乎不动,BoQ 还掉了 0.5 个点,是全文唯一的 R@1 回落。SALAD 在 SF-XL-Occlusion 上 Δ 为 0。

消融把「多造图」打回去了。几何、多样性单独过滤都不稳,两道一起过才最好,候选留存从 100% 降到 65.6%。局部遮挡单独就能把 SF-XL-Occlusion 的 R@1 从 50.0% 拉到 52.6%,三条齐上才全面。相对随机 one-shot,完整流程把接受率从 50.8% 提到 65.6%,平均尝试 2.24 次、每张 46.5 秒。DINOv2-B 和 DINOv3-B 上的 SALAD 都涨。合成比例加到 4:1、2:1、1:1 会掉,后两档在 SF-XL-v1 上甚至略低于纯真实数据。

为什么重要

这是训练数据层的补丁,推理时不加模块、不加描述子维度、不涨检索存储。已经有一套 VPR 训练代码的人,最省事的用法是把 AdaptCities 并进正样本池,按 8:1 混。增益集中在季节、夜晚、遮挡,原训练集覆盖最差的那一块。城市晴天大街(Pitts)基本买不来分数,别指望靠它刷排行榜。

生成本身不便宜:局部和双扰动平均 2.24 次尝试、46.5 秒一张,全在线下。代码和数据挂了 GitHub。

局限与存疑

作者自己写了三点。几何一致性只是地点身份的代理,不能证明每张合成图还在原位置;路线和阈值预先定死,没见过的环境可能不适配;主要开销在线下生成。

另外几处没讲透。SF-XL-Occlusion 只有 76 张查询,BoQ 加 9.2 这个最大数字建在极小 query 集上,方差可能不小。SALAD 在同一遮挡集上完全不动。几何门用单应拟合街景,街景是三维加动态物体,内点比例高不等于楼没被改。阈值声称没在下游测试集上调,消融却拿这些测试集在比,存在间接泄漏的空间。GSV-Cities 是谷歌街景,合成图再分发还受源数据许可和隐私约束,16 万张能不能无障碍公开训练,要看仓库实际放了什么。

术语

原文与代码

相关论文

全部论文解读