HardNet

Mishchuk 2017 · 论文

一句话总结 — 通过在每个批次内最大化匹配对与最难负样本之间的间隔,学习出一个紧凑的128维局部图像块描述子,表明采样策略比损失函数和架构复杂度更重要。

问题

像SIFT这样的经典描述子是手工设计的,在强烈的外观变化下判别能力有限,但当时的研究表明,在真实图像匹配和3D重建任务中,SIFT变体仍然优于学习型描述子(MatchNet、DeepCompare、TFeat)——这些方法使用对比损失或三元组损失,并对随机采样的负样本进行训练,导致大部分梯度都浪费在了已经容易区分的样本对上。HardNet的出发点是Lowe为SIFT提出的匹配准则(最近邻与次近邻距离比检验):一个好的描述子应使正确匹配比最接近的错误匹配更近,因此训练目标就应该直接优化这一点。

方法与架构

批内最难样本采样。 一批匹配图像块对 X=(Ai,Pi)i=1..n\mathcal{X}=(A_i,P_i)_{i=1..n}(锚点、正样本;每个3D点恰好对应一对)经过网络处理后,在GPU上计算完整的 n×nn \times n L2距离矩阵,公式为

d(ai,pj)=22aipjd(a_i,p_j)=\sqrt{2-2a_ip_j}

(针对单位长度描述子)。对每一对样本,在两个方向上都寻找最接近的非匹配描述子:pjminp_{j_{min}},其中 jmin=argminjid(ai,pj)j_{min}=\arg\min_{j\neq i} d(a_i,p_j);以及 akmina_{k_{min}},其中 kmin=argminkid(ak,pi)k_{min}=\arg\min_{k\neq i} d(a_k,p_i)。二者中更难的一个构成三元组。

三元组间隔损失。nn 个最难三元组被送入一个间隔为1的损失函数:

L=1ni=1nmax(0,  1+d(ai,pi)min(d(ai,pjmin),d(akmin,pi)))L=\frac{1}{n}\sum_{i=1}^{n}\max\Bigl(0,\;1+d(a_i,p_i)-\min\bigl(d(a_i,p_{j_{min}}),\,d(a_{k_{min}},p_i)\bigr)\Bigr)

只需要一个双流孪生网络(而非三流),相比标准三元组训练节省约30%的内存;与随机采样相比,唯一的额外开销是这个距离矩阵及其行/列最小值的计算。

架构。 与L2Net完全相同:一个全卷积网络,作用于经过均值/标准差归一化的 32×3232\times32 灰度图像块,通过带步长的卷积(而非池化——池化会损害性能)来缩小空间尺寸,除最后一层外每层之后都有批归一化和ReLU,最终卷积前有dropout,输出经L2归一化为一个128维单位长度描述子——刻意设计得与SIFT兼容。与L2Net不同,本文不需要任何辅助损失(无深度监督,无描述子相关性惩罚项);也未观察到明显的过拟合。

训练。 使用UBC Phototour(Brown)数据集——Liberty/Notre Dame/Yosemite,每个约40万个DoG图像块——在一个子集(Liberty,标准协议)上训练,使用带权重衰减的SGD。随着负样本池随批大小增大,性能也随之提升,在512之后趋于饱和。

实验结果

对SLAM的意义

HardNet描述子成为SfM和SLAM流程中SIFT的一种流行的直接替代品:同样的128维接口,但对外观变化更鲁棒。更具影响力的是,其批内最难样本挖掘策略成为了描述子学习的标准训练方案,被SOSNet、HyNet以及像DISK这类联合检测器-描述子网络的描述子分支所采用。它标志着在向完全学习型前端演进的过程中,“经典关键点上的学习型描述子”这一阶段的确立。

相关条目