基于跨模态上下文的局部描述子增强
github:https://github.com/lzx551402/contextdesc
论文:https://arxiv.org/abs/1904.04084
转载注明出处!
1.早期特征设计的目标:
可重复性:相同的“区域”可以在不同的图像中被找到;
可区别性:不同的“区域”有不同的表示;
高效性:同一张图像,特征点的数量应<<像素数量;
本地性:特征仅与一小片图像区域相关;
误匹配 由于图像特征的局部特性,场景中存在大量重复纹理,都有相似的特征描述,仅利用局部特征;
导致误匹配广泛存在,长期以来没有很好的解决办法,成为了制约视觉SLAM性能的一大瓶颈;
2.论文主要思想
通过区域信息和几何结构信息来增强原特征描述子;
它不包含关键点的检测.
加入高阶图像表示的视觉上下文;
加入关键点分布的几何上下文;
- 从输入的单张图像中提取:
关键点[k, 2];
区域特征[H/32, W/32, 2048];
基础描述子特征向量[k, 128]; - 将三种信息转化为:
几何信息;
视觉信息;
3.GeoDesc(2018.8)–基础描述子
一种基于卷积神经网络的描述子;
输入是关键点的image patch,[32,32,1];
整个网络共7层;
输出尺寸是128维特征向量;
4.几何上下文模块
- 此模块输入:
K个关键点坐标;
K个描述子,用来得到关键点的可匹配度; - 输出:
是128维特征向量.
5.可匹配度
- 提出一种预测“匹配能力”的度量;
- 目标是在匹配阶段之前, 确定一个关键点是否可匹配的;
- 其实就是一种置信度,在经过多层卷积之后,使用tanh激活函数进性激活;
6.Context Normalization(CN)
-
在多层卷积中,加入CN技术,公式:
-
由于原始输出都是非负的,会影响表达能力,所以调整顺序,每个残差单元使用预激活, 能兼容CN. 替换了最后四个残差单元. 简单的变化却在减少优化负担中起到了关键的角色.
7.视觉上下文模块
- 输入:
1)区域特征,尺寸是H/32W/322048;
2)K个局部特征描述子(基础的局部描述子);
3)k个关键点坐标; - 输出:
K个增强后的带有视觉信息的特征向量;
8.区域特征数与关键点匹配
- , 网格点坐标;
- ,关键点坐标;
- 使用与距离成反比的加权平均特征来表示关键点的区域特征;
- 使用K近邻来选取邻域,k=3;
- 之后再通过多层卷积和squeeze,降低维度;
9.特征融合
- 对于融合基础特征、几何上下文、视觉上下文特征, 简单的做法是将3种特征合并起来, 然而增加的维度将会在匹配阶段增加计算复杂度;
- 因此,将3种特征加权求和,加入L2正则项,从而不改变维度;
- 除了实现简单, 这种策略还可以灵活的运用. 例如,在区域特征不显著的情境,可以仅融合几何上下文,而不需要训练模型.
10.N-pair损失函数
-
原始的N-pair没有可调参数:
-
由于D输出是[0,2],导致softmax函数尺度敏感,从而导致收敛问题;
所以乘以一个可训练的缩放因子α,初始化为1:
- 可训练的,所以不需要人为干预或者复杂的启发式方法;
实验证明,对比其原始形式,这一简单调整有很大的提升; - α参数训练日志:
11.训练
- 每次有1024个随机选取的关键点(包含关键点和噪声).
- 输入patch都经过0均值和归一化.
- 输入关键点坐标相对于图像,被规范到[-1,+1]之间.
- 训练数据集:GL3D–一个大规模摄影旅游航拍数据集;
12.关于关键点检测
- 虽然本文中并未讨论检测子,
- 但作者认为更先进的关键点检测技术无疑可以带来很大提升;
- 可以利用深度的方法来检测关键点,例如SuperPointNet;
13.评估
作者做了很多实验,结果都是state-of-the art,详细的可以看论文,我只是将我的见解讲一讲