【SLAM】NetVLAD论文精读
一句话定位
把经典 VLAD 改成 CNN 里可反向传播的 NetVLAD 层,再用街景 Time Machine 的弱标签做三元组排序训练,得到可欧氏检索的地点指纹——深度学习时代 VPR 全局描述子的奠基作之一。
本页概念卡
- 任务:VPR
- 方法:NetVLAD · 软分配 · 弱监督三元组排序损失
- 对照:VLAD · SALAD · BoW
1. 背景概念(给新人)
站在 视觉地点识别(Visual Place Recognition,VPR) 线上:给一张查询图,从海量带 GPS 的图库里找出「曾经到过的地方」,服务回环检测、冷启动重定位。
| 术语 | 白话 |
|---|---|
| VPR | 用图像认「这是不是旧地图里的某处」 |
| 局部描述子 | 图上很多小块的特征向量(SIFT,或 CNN 卷积图每个位置) |
| VLAD | 把局部特征按聚类柜累加「和柜心差多少」,压成一条全局向量 |
| 硬分配 / 软分配 | 硬=只进最近柜;软=按相似度给多个柜打权重 |
| PCA + whitening | 降维并拉齐各维方差,便于欧氏距离检索 |
| Street View Time Machine | 谷歌街景「时光机」:同地不同年份/季节的街景 |
痛点(生活类比):里程计像蒙眼走路会漂;认地方像翻旧相册「这路口眼熟」。2015 年前好用的是 SIFT+VLAD;CNN 分类特征直接当检索描述子,换光照/昼夜常常翻车。
2. 论文在干什么
- 问题:如何设计并端到端训练一个专为地点识别的 CNN,而不是拿 ImageNet 分类网当黑盒?
- 设定:
- 任务:大规模地点识别 / 实例级图像检索
- 训练数据:Pittsburgh / Tokyo 的 Street View Time Machine(弱地理正样本)
- 测试:Pitts250k、Tokyo 24/7;顺带 Oxford / Paris 检索
- 输出:紧凑全局描述子 fθ(I)f_\theta(I)fθ(I),查询时与库图做欧氏近邻。
3. 核心创新点
-
NetVLAD 可微聚合层
把 VLAD 的硬分配换成 软分配,用标准卷积 + softmax + 残差聚合实现,可插进任意 CNN,可用反向传播。 -
比经典 VLAD 更灵活的可学参数
软分配参数 {wk,bk}\{w_k,b_k\}{wk,bk} 与残差锚点 {ck}\{c_k\}{ck} 解耦,可针对「该不该匹配」学更好的局部坐标系(文中 Fig.3)。 -
Time Machine + 弱监督排序损失
利用同地不同时的街景;因标签噪声,在潜在正样本袋中选最近者当正样本,再对负样本做 margin 排序(弱监督三元组排序损失)。 -
端到端为地点识别微调
证明 off-the-shelf 分类 CNN 远逊于为目标任务训练的表示;VGG-16 + NetVLAD + whitening 在当时 Tokyo 24/7 等上达 SOTA。
4.1 骨干当稠密局部特征提取器
截取 AlexNet / VGG-16 的 conv5(ReLU 前),输出 H×W×DH\times W\times DH×W×D,每个空间位置一个 DDD 维描述子。动机:无序池化对平移、局部遮挡更稳(检索社区惯例)。
4.2 NetVLAD 层
经典 VLAD(硬分配)对每个聚类 kkk:
V(:,k)=∑i: ak(xi)=1(xi−ck) V(:,k) = \sum_{i:\,a_k(x_i)=1}(x_i - c_k) V(:,k)=i:ak(xi)=1∑(xi−ck)
NetVLAD 用软权重 aˉk(xi)\bar a_k(x_i)aˉk(xi):
aˉk(xi)=ewk⊤xi+bk∑k′ewk′⊤xi+bk′ \bar a_k(x_i) = \frac{e^{w_k^\top x_i + b_k}}{\sum_{k'} e^{w_{k'}^\top x_i + b_{k'}}} aˉk(xi)=∑k′ewk′⊤xi+bk′ewk⊤xi+bk
V(j,k)=∑i=1Naˉk(xi) (xi(j)−ck(j)) V(j,k) = \sum_{i=1}^{N} \bar a_k(x_i)\,\big(x_i(j) - c_k(j)\big) V(j,k)=i=1∑Naˉk(xi)(xi(j)−ck(j))
实现上:1×11\times11×1 卷积得到 KKK 路打分 → softmax → 与残差相乘累加 → 列内 L2(intra-normalization)→ 展平再整体 L2。默认 K=64K=64K=64,AlexNet / VGG 分别约 16k / 32k 维,再 PCA+whitening 到 4096 或更低。
4.3 弱监督训练
- 从 Time Machine 采元组:查询、地理邻近的潜在正样本袋、远处负样本。
- 令 p∗p^*p∗ 为袋中与 qqq 距离最小者,要求对所有负样本 njn_jnj:
dθ(q,p∗)+m<dθ(q,nj) d_\theta(q, p^*) + m < d_\theta(q, n_j) dθ(q,p∗)+m<dθ(q,nj)
违反则 hinge 惩罚(文中 margin m=0.1m=0.1m=0.1);配合难负样本挖掘。
4.4 推理
离线算库描述子并索引;在线算查询描述子,欧氏距离排序取 top-N;评测用 recall@NNN(查询位姿在 top-N 候选的地理容差内算成功)。
5. 整体框架(Mermaid)
训练时额外:
6. 实验与结论
- 端到端远强于 off-the-shelf:Pitts250k-test 上,训练后的 AlexNet+NetVLAD recall@1 约 81.0%,相对 off-the-shelf AlexNet+VLAD 的 55.0% 大幅提升(文中称相对改进约 47%)。
- 聚合方式:同骨干下 NetVLAD 明显优于 Max pooling;压到 128-D 仍可与更高维 Max 接近(Tokyo 24/7 上 128-D NetVLAD recall@1 42.9% vs 512-D Max 38.4%)。
- 训哪些层:只训 NetVLAD 层已有大增益;再往下训到 conv3–5 继续涨,过深到 conv1 可能过拟合(Pitts30k-val,Table 1)。
- Time Machine 必要:同一次采集当「正样本」训,跨时变化泛化差;TM 提供外观变化监督。
- 检索迁移:Pittsburgh 上训的 VGG-16 NetVLAD(whitening 至 256-D)在 Oxford/Paris 上也提升紧凑描述子表现。
- 局限:骨干偏旧(AlexNet/VGG);依赖街景式弱 GPS;后续有 Patch-NetVLAD、DINOv2+SALAD 等全面超越,但范式影响至今。
7. 要点总结
- NetVLAD = 可微 VLAD(软分配 + 可学锚点),不是另一套完全不同的特征。
- 真正拉开差距的是 为目标任务端到端训练,不是「随便拿个 CNN 池化一下」。
- 弱监督关键:潜在正样本袋里 再选最近者 当正样本。
- hloc 等工具链里 NetVLAD 仍是常见全局检索基线。
8. 开放问题
- 工程侧若换 NetVLAD ONNX CPU,与 DINOv2+VLAD 在走廊弱纹理上 recall 差多少?
- Soft-assignment 的 {wk,bk}\{w_k,b_k\}{wk,bk} 与 {ck}\{c_k\}{ck} 解耦,在 DINOv2 特征上是否仍必要?
- Patch-NetVLAD 重排相对纯 NetVLAD 的延迟–精度曲线,边缘机是否划算?
相关
- https://github.com/Relja/netvlad
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)