HardNet
Mishchuk 2017 · 论文
一句话总结 — 通过在每个批次内最大化匹配对与最难负样本之间的间隔,学习出一个紧凑的128维局部图像块描述子,表明采样策略比损失函数和架构复杂度更重要。
问题
像SIFT这样的经典描述子是手工设计的,在强烈的外观变化下判别能力有限,但当时的研究表明,在真实图像匹配和3D重建任务中,SIFT变体仍然优于学习型描述子(MatchNet、DeepCompare、TFeat)——这些方法使用对比损失或三元组损失,并对随机采样的负样本进行训练,导致大部分梯度都浪费在了已经容易区分的样本对上。HardNet的出发点是Lowe为SIFT提出的匹配准则(最近邻与次近邻距离比检验):一个好的描述子应使正确匹配比最接近的错误匹配更近,因此训练目标就应该直接优化这一点。
方法与架构
批内最难样本采样。 一批匹配图像块对 (锚点、正样本;每个3D点恰好对应一对)经过网络处理后,在GPU上计算完整的 L2距离矩阵,公式为
(针对单位长度描述子)。对每一对样本,在两个方向上都寻找最接近的非匹配描述子:,其中 ;以及 ,其中 。二者中更难的一个构成三元组。
三元组间隔损失。 这 个最难三元组被送入一个间隔为1的损失函数:
只需要一个双流孪生网络(而非三流),相比标准三元组训练节省约30%的内存;与随机采样相比,唯一的额外开销是这个距离矩阵及其行/列最小值的计算。
架构。 与L2Net完全相同:一个全卷积网络,作用于经过均值/标准差归一化的 灰度图像块,通过带步长的卷积(而非池化——池化会损害性能)来缩小空间尺寸,除最后一层外每层之后都有批归一化和ReLU,最终卷积前有dropout,输出经L2归一化为一个128维单位长度描述子——刻意设计得与SIFT兼容。与L2Net不同,本文不需要任何辅助损失(无深度监督,无描述子相关性惩罚项);也未观察到明显的过拟合。
训练。 使用UBC Phototour(Brown)数据集——Liberty/Notre Dame/Yosemite,每个约40万个DoG图像块——在一个子集(Liberty,标准协议)上训练,使用带权重衰减的SGD。随着负样本池随批大小增大,性能也随之提升,在512之后趋于饱和。
实验结果
- Brown数据集图像块验证(95%召回率下的FPR,越低越好):HardNet+达到平均FPR95为1.51,而L2Net+为2.23,TFeat-M*为6.64,SIFT为26.55——比手工设计方法高出一个数量级。
- 消融实验(HPatches匹配,平均mAP):批内最难采样配合三元组间隔损失达到0.482,而经典难负样本挖掘+相关性惩罚为0.346,随机采样+惩罚为0.286;不加惩罚项的随机采样和经典挖掘方法则会直接过拟合。采样方案(而非损失函数——softmin/三元组/对比损失均可行)才是HardNet性能的主要原因。
- HPatches:HardNet在匹配和检索上均优于L2Net+,在Hard和Tough几何噪声设置中提升最大;随着干扰项增加到10,000以上,检索mAP只略微下降,而此时TFeat已跌至SIFT以下。
- 宽基线立体(W1BS,MODS匹配器):在跨域数据集(SymB、GDB、WxBS、LTLL)上,HardNet+的表现与RootSIFT及其他学习型描述子相当或更优,尽管它从未在跨域数据上训练过。
- 图像检索:结合BoW+SV+QE,HardNet++在Oxford5k上达到84.5 mAP,在Paris6k上达到79.1 mAP(100万词表);HardNet++–HQE变体在Oxford5k上取得86.8/88.3(单次/多次分配)——在当时以独立学习词表所报告的最佳结果。
对SLAM的意义
HardNet描述子成为SfM和SLAM流程中SIFT的一种流行的直接替代品:同样的128维接口,但对外观变化更鲁棒。更具影响力的是,其批内最难样本挖掘策略成为了描述子学习的标准训练方案,被SOSNet、HyNet以及像DISK这类联合检测器-描述子网络的描述子分支所采用。它标志着在向完全学习型前端演进的过程中,“经典关键点上的学习型描述子”这一阶段的确立。
相关条目
- SuperPoint — 联合检测器+描述子的后继范式
- KeyNet — 常与HardNet搭配使用的学习型检测器
- DISK — 受HardNet损失设计影响的端到端特征学习
- R2D2 — 为描述子学习加入可靠性感知检测
- Keypoints — 这些方法所取代的经典特征背景
- 2D-2D correspondence — 描述子存在的目的所在的匹配问题