论文学习:Learning to Compare Image Patches via Convolutional Neural Networks

之前留了一些系列都没有完成,有点惭愧。不过鉴于最近又开始了神经网络的学习,anyway,记录下这篇文章的学习。


摘要:开发一套通用的相似函数来对比图像集。这套函数基于CNN,用来解释图像显示的wide variety of changes。


1.介绍:

1)对比图像集的应用:

low-level tasks: structure from motion; wide baseline matching, building panoramas, image super-resolution. 

higher-level tasks: object recognition, image retrieval, classification of object categories. 

2)判断两幅图像是否correspond的难点:一幅图像的画面受许多因素影响(viewpoint的不同;场景illumination的变化;occlusions;shading;摄像机设备的不同)

3)对比图像集的需求带来技术的发展:hand-designed feature descriptors。例如SIFT。

(百科)SIFT,即尺度不变特征变换(Scale-invariant feature transform,SIFT),是用于图像处理领域的一种描述。SIFT特征是基于物体上的一些局部外观的兴趣点而与影像的大小和旋转无关。对于光线、噪声、微视角改变的容忍度也相当高。基于这些特性,它们是高度显著而且相对容易撷取,在母数庞大的特征数据库中,很容易辨识物体而且鲜有误认。

SIFT特征检测包括四个步骤:构建尺度空间,检测极值点,获得尺度不变性;特征点过滤并进行精确定位;为特征点分配方向值;生成特征描述子(以特征点附近16*16空间作为采样点,利用特征点和采样点的关系获得128维特征向量)。简而言之,抓住关键点,即特征。

SIFT特征匹配包括两个步骤:特征生成(从多幅图像中提取对尺度缩放、旋转、亮度变化无关的特征向量,其实就是特征检测);特征向量的匹配(采用关键点特征向量的欧式距离来作为两幅图像中关键点的相似性判定度量,针对图1的某个关键点,遍历图2距离最近的两个关键点,如果最近距离除以次近距离小于某个阈值,则判定为一对匹配点)。

4)本文的目标:1)从零产生一个patch similarity function,without使用任何manually designed features,仅仅使用标注过的raw image patches来学习。2)打算使用深度卷积神经网络,在文中会选择不同的网络架构来判断哪种架构最合适解决这类问题。3)应用我们的方法到各种问题和benchmark datasets。4)由于卷积特性,使可以在密集计算中效率更高。


2.相关工作

1)传统方法:SIFT、DAISY。

2)学习Descriptors的方法。

3)我们的方法使用卷积神经网络,虽然这些模型在训练过程中包含高度非凸目标函数,它们在各种任务中表现良好。

4)Fischer研究AlexNet网络的convolutional descriptors在Mikolajczyk数据集的表现,发现除了模糊以外大部分情况比SIFT好。

5)Zbontar and LeCun提出基于CNN的方法来对比patches,为了计算小基线立体问题的cost。在KITTI数据集表现最好。

6)相较于聚焦在窄基线立体问题,我们发力于解决a broader set of apperance changes,应用在更宽的领域:宽基线立体问题;特征匹配;图像检索。(基线的本意是指立体视觉系统中两摄像机光心之间的距离,宽基线一词用于匹配时,泛指两幅图像有明显不同的情况下的匹配。产生这种情况的原因有可能为摄像机之间的位置相差很大,也有可能由于摄像机旋转或焦距的变化等因素产生的。)


3.架构

使用64*64灰度图作为输入。

三个basic神经网络架构:

1)Siamese:网络有两个分支,share相同的架构和权重。

青色=Conv+ReLU,紫色:max pooling,黄色:全连接层。两个全连接层,每层512个隐藏单元,被ReLU激励层分开。

分支用来计算descriptors,top network用来匹配。


2)Pseudo-siamese:和siamese相同的架构,但是两个分支的权重uncoupled。这样可以增加被调整的参数,相较于restricted的siamese网络更加flexible。但是训练效率较siamese低。test效率一样。

3)2-channel:这个网络架构没有descriptor的概念。把输入的两张图像认为是一张2-channel image(单通道问题转化为多通道问题)。因为联合处理两个patches,更flexible,训练更快。但是test时间很长,brute-force manner。


4)其他模型:

a) 深度网络:将大的卷积层拆分为更小的3x3 kernels,每层kernel被ReLU激励层分开,通过这样增加深度及网络的非线性。

b) Central-surround two-stream network:两个分流(central和surround),每个分流两个支路。

central: high resolution。从原来的64x64 patch剪切中间的32x32部分。

surround: low resolution。从原来的64x64 patch下采样,变成32x32。

优点:多分辨率的信息有助于帮助image matching。在两个分流中都考虑到了patch的中间部分,将更多重心放心central part,减小周边像素的影响,有助于image matching。同时将维度减小一般,有助于提升训练的速度。


c) Spatial pyramid pooling (SPP) network:空间金字塔池化网络。

CNN中,卷积层和最大池化层是滑动窗操作,可以接受任意大小的图片输入。而全连接层是向量(输入)与矩阵(参数)乘操作,因此需要固定大小的输入。为了解决这个问题,input patches需要固定的空间维度,通过crop或warp方式,这隐形中忽略了对象的尺度问题。另一种思路是可以通过调整空间池化区域的大小,使其正比于input patch的大小,这样也可以使最后一层卷积层有固定维度的输出。

SPP网络就是在卷积层和全连接层中插入SPP层,SPP层的池化区域大小取决于输入的大小。



4.学习

1)优化:强监督方式。铰链损失函数+l2范式。学习目标函数如下所示:


o为第i个训练样本的网络输出,y属于-1到1之间,-1代表non-matching,1代表matching。

异步梯度随机下降算法(ASGD):持续的学习率1.0,动量0.9,权重衰减0.0005。mini-batches大小为128。权重随机初始化。

2)数据增强和预处理:水平、垂直翻转图片,旋转90、180、270度。减小过拟合的影响。


5.实验

1)Local image patches benchmark

评判标准:95%召回率下的false positive rate(FPR95)。

得出的结论:a. 2channel的架构效果最好,因此在网络的第一层就开始联合使用both patches的信息是有必要的;b. 2ch-2stream网络优于2ch-deep优于2ch,因此多分辨率信息及增加网络深度有助于匹配效果;c. pseudo-siamese网络优于siamese网络。

2)Wide baseline stereo evaluation

宽基线立体评价,应用在同一场景不同视点图像之间特征点的自动立体匹配。因为这一块不是目前关注的焦点,暂且跳过。

3)跳过。


6.结论

1)2-channel-based架构最好。

2)多分辨率信息(2-stream)有助于图像matching。

3)加入SPP层同样有助于图像matching。




猜你喜欢

转载自blog.csdn.net/u011937018/article/details/79679199