Discriminative Learning of Deep Convolutional Feature Point Descriptors

Discriminative Learning of Deep Convolutional Feature Point Descriptors

基于深度卷积特征点描述符的判别学习

2015 ICCV

(优点:网络简单+有判别力  提取描述符可用sift直接替换,有广泛应用,宽基线匹配,非刚性变化,极端光照变化)

(缺点,训练麻烦,)

摘要:深度学习使图像等级任务(分类)发生了革命性变化,但是块等级任务(相关性),还依赖手工制作特征,如SIFT。本文用CNN学习判别块表示和尤其训练siamese网络用成对非联系块。我们来处理潜在对,用组合随机采样训练集和积极挖掘策略,策略偏向于难以分类的块。

通过在训练期间用L2距离,发展了128-D描述符,欧几里得反应块相似性。可以用在任何涉及SIFT任务的直接代替。我们展示了现有技术的一致性能增益,概括了缩放和旋转,透视变换,非刚性变形和光照变化。我们描述符可以高效计算并适用于现代GPU,可以公开获取。

L0范数是指向量中非0的元素的个数——曼哈顿距离(Manhattan Distance)

L1范数是指向量中各个元素绝对值之和。

L2范数是指向量各元素的平方和然后求平方根,欧几里德距离(Euclidean Distance)

L_infinity范数是指向量中绝对值最大的那个元素的绝对值——切比雪夫距离(Chebyshev Distance)

p范数和闵可夫斯基距离——p=1,L1范数;p=2,L2范数;p趋向无穷,就是L_infinity范数。

马氏距离——闵可夫斯基距离的缺陷,那就是没有考虑向量各维度之间的关系,比如量纲的问题。

余弦相似度比较简单,与之相关的是皮尔逊相似系数:汉明距离;叫做巴氏距离

 

1介绍

不变或判别方式表示本地图像块是计算机视觉的主要研究主题。大部分描述符如sift依赖手工制作特征,最近很热门用机器学习算法从大型数据集中学习他们。

本文,我们从深度CNN在大型图片分类问题的成功获得了灵感,从本地块来建立判别描述符。在我们的判别学习训练情况,不依赖与单个块的标签,依赖于对应或者非对应的块对。我们用siamese网络结构,用两个相同参数的CNN来比较块对,将CNN的输出看成块描述符。我们最小化损失,对于他们的差异强制执行L2范式,对于对应的块要小,其他为大。

 

为了训练网络,我们用多视图立体数据集(MVS),包括1.5M灰度64x64 图像块从不同视角 500k 3D点。这么大数据集的困难在于无法彻底探索所有对应或非对应对,所以我们必须采取某种形式随机采样。基于以下观察:在一定点的学习学习后,大部分对被正确分类,使用它们不在提高学习嵌入,我们提出一个积极挖掘困难正面和负面策略。

在学习阶段,我们强制执行具有大损失的样本的反向传播,即,两个匹配很差的对应对和难以区分的非对应对。这证明对于高效学习判别描述符是很有用的。

我们进行了深入比较。对传统的,手工制作描述符,最近描述符,用PR和AUC作为度量,介绍了性能的一致性增益。我们的描述符也非常使用与未经过专门训练的应用程序。表现出稳健性对于缩放 旋转 视点变化 非刚性变形和光照变化。

在我们所有实验中用L2距离来比较描述符,不是某些非线性  特定任务的度量。这揭示了我们的描述符可以被直接替换,对于流行的表示如SIFT,其方式与应用程序无关。此外,我们的描述符主要通过卷积构建,可以非常高效的计算,可以非常容易并行化,利用现代GPU可以大大加快提取速度。我们实现基于torch7.

 

2相关工作

局部特征在图像匹配点方面非常成功,在计算机视觉几乎不出不在,有着广泛应用,包括立体,运动结构,动作估计分类,检测,医学成像。本地图片描述符的最新设计正在摆脱精心设计的特征和从大量数据中学习功能。这一系列的任务包括基于散列的无监督技术、基于线性判别分析的方法、提升和凸优化。

此文探索了基于卷积神经网络的方法,这是目前设计语义分析任务中的主要范例,比如图片分类和语义分割。尽管可能不清楚cnn是否同样适用于缺少语义信息的块级应用程序,我们认为我们的特别问题适用这种情况。

用cnn描述符学习早期被提出来,但这些任务中的实验结果在几个实际方面留下了开放性问题。比如最适合的网络结构和依赖应用的训练方案。最近,联合描述符和度量网络用siamese网络学习描述符的方法被探索,Han用在siamese结构用深度卷积网络加全连接层来学习比较函数。Zagoryko依赖于类似的体系的结构,但是仅关注于图片中心,代价计算性能提高。LeCun训练cnn用于窄基线立体,在KITTI得到了最佳结果。这些方法依赖于大型网络,并不一定向我们那样学习紧凑、有判别的表示。相反,我们展示了如何探索判别训练策略来建立小而有力的模型。

我们工作的关键区别是,我们siamese网络的输出用来传统描述符的直接对应,这里没有非线性度量网络在siamese网络之后,我们简单用L2距离来比较块。基于L2的相似性的有限评价中显示了有希望的结果。但并不完全明显优于,代替我们展示了实质性增益,可以归功与用L2训练。使用可用L2距离来比较的描述符有助于用高效的方法来最邻近计算,比如KD-tree,为大规模检索应用开辟了道路。

我们工作另一个不同是,我们观察到,描述符训练期间,大多数非对应块对最有容易辨别,阻碍了判别模型的学习。挖掘难 负集滑动窗口上下文检测是一个著名的过程,负采样的数目实际上是无限的,大多数负集很容易被区分,一旦我们已经使用了一定数量的负样本进行训练。此文我们发现了,积极挖掘难 正集 和负集显著提高了学习过程。我们采样了大量块并使用最大损失的自己来更新网络。

3学习描述符

(网络输出看成描述符,并可用其他描述符直接代替)

给定强度快x描述符的非线性映射D(x),预期有辨别力的。图像块对应的描述符在相同点应该相似,否则相反。

我们提出用siamese网络学习这种描述符,非线性映射用cnn表示,cnn对 对应或非对应的块对进行了优化。我们通过模型提取快来提取描述符,然后计算他们的L2范式(图像描述符的标准相似性方法),目标是学习描述符,将非对应的块放的很远,对应的块方得很近。

再多视角几何的上下文中,通常针对显著点计算描述符,可以可靠的估计尺度和方向。块然后捕捉3d场景的局部投影。我们考虑每个图像块xi有一个索引pi,唯一标识3d点,从一个特定视角大概投影到2d平面。用l2范式作为描述符的相似性度量,用铰链嵌入损失描述我们的目标

P1p2是3d点投影到x1x2的索引。损失惩罚远离的对应对和小于c单元的非对应对,特别D(x1)-D(x2) 的L2范式=0时我们给予最大惩罚,他们的距离增加,损失最终到达为0.

3.1

设计cnn结构时,我们限制输入数据大小。64x64块,从MVS数据集,我们提取描述符和sift相同大小,128维度。较大的块或特征空间允许我们考虑更多信息的描述符,同时也更容易导致遮挡和加慢训练和计算。

我们探索了许多过滤器、隐藏单元、映射、归一化、池化数量的配置,这种结构在补充材料中详细说明。但是由于空间限制,我们仅适用最佳性能模型CNN3,如下。

三层网络的结构如下所示。每个卷积层包括四个子层:过滤器层、非线性层、池化层和归一化层。由于稀疏连接已被证明可以提高性能,降低参数和加快速度,除了第一层,过滤器没有密集连接到前面的层。相反,他们随即稀疏连接,因此每个输入层的平均连接数是恒定的。第二层和第三层的每个滤波器也随机连接到前一个层的8个特征图,使得平均连接数保持大致等于每个滤波器输出的16个连接。

(输出维度是输入维度2倍,因此每个滤波器连接前面8个,输处16个连接)(输入64x64灰度图,输处128维(2x2还是1)向量,输入L2距离度量)

关于非线性层,我们使用双曲正切单位tanh,我们发现他比ReLU表现好一点。我们用L2;来池化池化子层。归一化对于神经网络也是很重要的并且对描述符至关重要。我们用减法归一化,减去5x5邻域加权平均值,用高斯核在第一层和第二层之间。(归一化防止过拟合)

 

3.2随机抽样策略和挖掘

我们的目标是优化网络参数,从训练块集任意大小。我们考虑一个数据集有k个块和m≤k的唯一3d块索引,每个索引对于图像块。然后,匹配图像块的数量,P(positive)和不匹配图像块的数量N(negtive)如下

 

P和N都很大的时候,我们使用随机梯度下降,用训练集的随机子集来估计损失函数的梯度。对于正集,我们随机采样3D点索引集从(p1p2  pm),对于每个选择的3d索引,我们随机选择具有3d索引的2d块。

对于负集,一个简单想法是随机选择有不匹配索引的随机对sn,一旦网络达到了合理的性能水平,大多数不匹配点已经具有大于c的距离,对于损失和梯度就没有贡献。这可能导致非常小有噪声的梯度估计,从而停止有效的学习过程。

相反,我们迭代不匹配块对来搜索难负集对,在描述空间接近高损失的对。在这种方式,它能够更快的训练判别模型,同时加强性能。

尤其,在每个epoch,我们生成sn集随机选择块对,对网络前向传播后,计算他们的损失,我们只保持一个最难负集Shn子集。经过网络后向传播可以更新权重。此外,相同的过程可以用在正集采样,我们采用sp相应块对,修剪它们到最难负集Nhp。我们的实验结果显示组合正集负集块对的高效挖掘允许我们大大提高所学描述符的判别能力。

(数据预处理,前向传播后计算损失,挑选高损失的负集对和正集对,加快训练和判别力)

 

4结果

对于训练,我们用MVS数据库,包括64x64灰度图像块从LY的3d重建采集而来,ND和YO。用高斯检测器的差异提取块,确定为有效对应,如果他们在位置5个像素内,尺度在0.25个八度,角度在π/8个弧度。图三显示明显变化在位置,旋转,照明条件,通常表现出非常明显的透视变化。

 

我们加入LY LO的数据形成一个超过一百万个块的训练集。我们形成10000个独立点的子集用于验证(3000块)。导致的训练集包括1133525可能的正集组合和1.117x10^12可能的负集组合。这种偏向在对应关系是很常见的,比如立体或者运动结构。我们用高效挖掘解决它。我们用它来拆分解决估计不同的结构和配置,然后在剩余两个拆分在训练性能最佳的模型。

关于分类系统非常流行的度量是ROC,可以通过其曲线下面积(AUC)来概括。但是ROC可能会产生误导当正集和负集采样的数量非常不同时,并且已经接近SIF基线的饱和度。更精细的性能指标是PR精确回忆曲线。我们模拟模型用PR曲线和AUC。特别的,我们模拟大海捞针设置通过比正集更多的负集,对于我们验证集1000独特点的每一个,我们生成一个正集对,从两个正集块中随机采样,和1000个非对应块,从剩余点。

结果概述:我们探索多种结构和配置,由于空间限制许多结果被遗漏,但在补充材料仍然可用。

 

4.1网络训练

随机梯度下降 ,学习率0.01,每10000次迭代减少10倍,动量0.9.根据经验,用均值和标准差归一化预处理块。我们用数据的自己进行验证并停止培训。当网络评估指标收敛时。显然由于可用于训练的大量正集和负集因素和我们结构的少量参数,没有遇到过拟合问题。

 

4.2挖掘

我们通过训练不同模型分析正集和负集的影响,正集Sp和负集Sn的初始池被修剪成少量的硬正集和负集匹配,用来更新我们网络的参数。我们观察到增加批量的大小并不能增加训练方面的好处。因此保持块大小固定Shp=128 Shn=128,增加所有正集挖掘和负集挖掘的比率。保持其余所有参数恒定。

大挖掘向量有高计算成本,总计算成本的80%,包括挖掘(所有sp sn采样的前向传播)和学习(硬正集和负集采样的后向传播)。这仅适用于学习阶段,一旦模型部署就会丢弃siamese网络和不会产生于挖掘相关的计算成本。为了加速学习过程,我们用正集挖掘初始化CNN3模型,2/2 4/4 8/8 16/16 ,仅用负集挖掘在早期迭代训练模型(1/2)。

对于这个特殊问题,我们发现高效 难 挖掘是至关重要的。这是由于数据集的正集和负集相当多,和模型相结合参数数量少。8/8性能急剧上升。

 

 

 

 

——————————————————————————————————————

 

监督学习的过程可以概括为:最小化误差的同时规则化参数。

最小化误差是为了让模型拟合训练数据,规则化参数是为了防止过拟合。参数过多会导致模型复杂度上升,产生过拟合,即训练误差很小,但测试误差很大。所以需要采取措施,保证模型尽量简单的基础上,最小化训练误差,使模型具有更好的泛化能力(即测试误差也很小)。

 

范数规则化有两个作用:

1)保证模型尽可能的简单,避免过拟合。

2)约束模型特性,加入一些先验知识,例如稀疏、低秩​等。

 

一般来说,监督学习中最小化的目标函数结构如下:

http://s13.sinaimg.cn/mw690/0024jHPsgy6VgQYyh2c7c

其中第一项L​用于计算模型预测值与样本真实值之间的误差,优化目标是希望该项尽可能小(即训练误差尽可能小)。第二项Ω用于对参数进行规则化,保证模型尽可能简单,避免过拟合。

 

规则化函数Ω有多重选择,不同的选择效果也不同,不过一般是模型复杂度的单调递增函数——模型越复杂,规则化值越大​。例如,可以是模型中参数向量的范数。常见的选择包括零范数,一范数,二范数等。

 

L0范数是指向量中非零元素的个数。如果用L0规则化一个参数矩阵W,就是希望W中大部分元素是零,实现稀疏。

 

L1范数是指向量中各个元素的绝对值之和,也叫”系数规则算子(Lasso regularization)“。L1范数也可以实现稀疏,通过将无用特征对应的参数W置为零实现。

 

L0和L1都可以实现稀疏化,不过一般选用L1而不用L0,原因包括:

1)L0范数很难优化求解(NP难);

2)L1是L0的最优凸近似,比L0更容易优化求解。

 

稀疏化的好处

1)特征选择

​实现特征的自动选择,去除无用特征。稀疏化可以去掉这些无用特征,将特征对应的权重置为零。

2)可解释性(interpretability)​

例如判断某种病的患病率时,最初有1000个特征,建模后参数经过稀疏化,最终只有5个特征的参数是非零的,那么就可以说影响患病率的主要就是这5个特征。

 

L2范数​​是指向量各元素的平方和然后开方,用在回归模型中也称为岭回归(Ridge regression)。

 

L2避免过拟合的原理是:让L2范数的规则项||W||2 尽可能小,可以使得W每个元素都很小,接近于零,但是与L1不同的是,不会等于0;这样得到的模型抗干扰能力强,参数很小时,即使样本数据x发生很大的变化,模型预测值y的变化也会很有限。

 

L2范数除了避免过拟合问题,还有一个优点是有助于处理condition number不好的情况下,矩阵求解困难的问题。condition number是对系统ill-condition程度的一个衡量标准。假设有方程组Ax=b,需要求解x。如果A或者b发生轻微改变,就会使得x的解发生很大变化,那么这个方程组系统就是ill-condition的,反之就是well-condition的。下图为例说明:

​第一行是两个原始的方程序系统;第二行对系统的b做出轻微修改,左侧方程组的解发生较大变化,右侧的变化不明显;第三行对系统的A做出轻微修改,同样左侧系统的解发生较大变化,右侧的变化不明显。这说明左侧的系统是ill-condition的,右侧的是well-condition的。

具体到通过训练数据建立的模型中时,ill-condition可以说就是不稳定的,当输入的样本数据发生变化时,预测结果就会不准确。​condition number就是用来对系统的ill-condition程度进行衡量的,condition number值小的就是well-condition,反之为ill-condition。

 

 

3 L1和L2的差别

1)下降速度

建立模型的过程中,会尝试最小化损失函数,这个过程就像一个下坡的过程,L1和L2的差别在于坡的斜率,如下图所示

http://s13.sinaimg.cn/mw690/0024jHPsgy6Vh30QYMY8c

​2)模型空间的限制

使用L1,L2范式建立模型时,损失函数可以写成如下形式:

http://s12.sinaimg.cn/mw690/0024jHPsgy6Vh4mjWb19b

可以说成是将模型空间限制在w的某个范围内,如下图所示,在(w1,w2)空间上可以画出目标函数的等高线,约束条件则是平面上半径为C的一个norm ball,等高线与norm ball首次相交的地方就是最优解。

http://s9.sinaimg.cn/mw690/0024jHPsgy6Vh4wTaJOc8

通过对比可以看出,L1-ball和L2-ball的不同在于L1在和每个坐标轴相交的地方都有”角“出现,与目标函数相交的地方也是在角的位置。角的位置就容易产生稀疏性,例如图中的交点处w1=0。L2就没有这样的性质,因为没有角,相交的位置有稀疏性的概率就非常低,从直观上解释了为什么L1能够产生稀疏性而L2就不行。

 

总结一下就是:L1范式会趋向于产生较少的特征,在特征选择时很有用;L2会选择更多特征,但对应权值接近零。

 

4 规则化参数的选择

 

再来看模型的目标函数

http://s14.sinaimg.cn/mw690/0024jHPsgy6Vh5ZoqQJ5d

 

这其中除了损失函数,规则项以外,还包括参数λ,称为hyper-parameters​(超参)。该参数用于平衡损失函数和规则项的,λ越大,则规则项的作用越重要,就是说相比于拟合训练数据,更希望模型能够满足约束条件Ω(w)的特性,反之亦然。举个极端的例子,如果λ=0,规则化项不起作用,就是希望模型能够最小化损失函数项,当模型拟合了所有训练数据时损失函数项最小,但这样得到的模型对于新的数据泛化能力就非常差,产生了过拟合。​由此可知,需要协调λ的值,使得模型即具有较小的训练误差,又具有很好的泛化能力。最常用的方法是交叉验证,实验不同的λ值。

 

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值