论文

论文题目:Learning to Compare Image Patches via Convolutional Neural Networks

发表于:CVPR2015

论文地址:http://de.arxiv.org/pdf/1504.03641

论文代码:https://github.com/szagoruyko/cvpr15deepcompare

Abstract

  • 直接从图像数据(不使用手工设计的特征)学习一个通用的相似函数来比较图像块;
  • 选择一个基于CNN的模型,该模型经过训练,可以考虑图像外观的各种变化;
  • 探索和研究了多种神经网络架构;
  • 在几个问题和基准数据集上优于当前最先进方法。

1 Introduction

比较图像之间的补丁可能是计算机视觉和图像分析最基本的任务之一。

“Comparing patches across images is probably one of the most fundamental tasks in computer vision and image analysis.”

problem 

在不同图像中,由于视点、光照、遮挡、阴影、相机设置等因素的影响,同一patch在不同图像中往往呈现出不同的appearance,判断两个patch是否对应是一个具有挑战性的问题。

传统手工设计的特征,如SIFT,难以以最佳的方式捕获到同一patch因各种因素导致的appearance不同。

另一方面,人们可以很容易获得大量包含图像间patch对应的大型数据集。

此时就产生了一个问题:能否适当利用这些数据集来自动学习图像间patch的相似度函数?

本文主要解决这一问题。

目标是从0开始生成一个patch相似函数,不适用任何手动设计的特征,直接从带注释的原始图像patch对中学习该相似函数。使用深度卷积网络,本文探索并提出了各种类型的网络,拥有展示不同权衡和优势的架构。为训练这些网络,使用一个大型数据库作为唯一的输入,该数据库包括一对原始图像patch(包括匹配与不匹配)。

Contribution

  1. 直接从图像数据(没有任何手工设计的特征)学习通用的patch相似函数,能隐含各种类型的转换和效果,得到有利于图像patch匹配的特征;
  2. 探索并提出不同的神经网络模型,适用于表示该函数,同时强调提供改进性能的网络架构;
  3. 将该方法应用于几个问题和基准数据集上,其性能显著优于当前最优的方法;
  4. 由于卷积特性,使可以在密集计算中效率更高。

2 Related work

1)传统比较patch方法:使用descriptors 描述符和 squared euclidean distance 欧几里得距离的平方。

2)传统特征描述符方法:SIFT、DAISY。

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

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

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

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

3 Architectures

输入:一对图像patch对

训练时只使用灰度图像patch,尺寸为64*64 (SPP模型除外)

网络可以通过几种方式处理patch对,以及如何做到信息共享。

为此,本文研究了3种网络架构:2-channel(2-通道) 、Siamese(孪生)、Pseudo-siamese(伪孪生)。以提供不同方面的权衡速度和准确度。

这些架构源于它们试图解决以下问题的不同方式:当构成一个用于比较图像patch的相似度函数时,我们是首先选择为每个patch计算一个描述符,然后在这些描述符之上创建一个相似度,还是选择跳过与描述符计算有关的部分,直接进行相似度估计?

3.1 basic models

1)Siamese:孪生。网络有两个分支,共享完全相同的架构和权重。

每个分支以patch对中的一个作为输入,再经过一系列卷积层、ReLU层和max-pooling层。

分支输出被连接到一个由线性全连接层和ReLU层组成的顶层网络。

图中:青色=Conv+ReLU,紫色:max pooling,黄色:全连接层。

测试时,使用两个全连接层(每层512个隐藏单元)组成顶层网络,中间用ReLU激励层隔开。

先用分支独立计算descriptors,顶层网络则是一个相似函数,用来匹配。

2)Pseudo-siamese:伪孪生。和上面siamese架构相同,但两个分支的权重不耦合,不共享。

增加了灵活性,可以在训练期间调整参数量。但是训练效率较siamese低,测试效率一样。

3)2-channel:2通道。这个网络架构没有descriptor的概念。

将一个输入对的两个灰度化的单通道patch拼接成一张2通道的patch(单通道问题转化为多通道问题),直接送入网络的第一个卷积层。

网络底层由一系列卷积、ReLU层和max-pooling层组成。这部分的输出作为顶层模块的输入。

顶层由一个带有单一输出的全连接线性决策层组成。

因为联合处理两个patch,更灵活,训练更快。但是测试时间很长,需要brute-force对所有patch组合进行测试。

3.2  Additional models

a) Deep network:深度网络。将大的卷积层拆分为更小的3x3 kernels,每层kernel用ReLU激励层分开,以此增加网络内部的非线性,使决策函数更具有鉴别性。最终架构的卷积部分由1个4*4卷积层和6个3*3卷积层组成,中间由ReLU激活层分开。

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

  • central: high resolution。接收2个32*32的patch作为输入。每个patch是从原始64*64分辨率的patch剪切中间的32*32部分。
  • surround: low resolution。接收2个32*32的patch作为输入。每个patch是从原来的64*64的patch下采样,变成32*32。

优点:多分辨率的信息有助于帮助图像匹配。在两个分流中都考虑到了patch的中间部分,更加关注patch的中心部分像素,减小周边像素的影响,有助于提升匹配精度。同时将维度减小2倍,提升训练的速度。

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

  • CNN中,卷积层和最大池化层是滑动窗操作,可以接受任意大小的图片输入。
  • 全连接层是向量(输入)与矩阵(参数)乘操作,因此需要固定大小的输入。

为了解决这个问题,input patches需要固定的空间维度。

  1. 通过crop或warp方式,固定输入patch尺寸为64*64。
  2. 另一种思路是通过调整空间池化区域的大小,使其正比于input patch的大小,可以使最后一层卷积层有固定维度的输出。

SPP网络就是在卷积层和全连接层中插入SPP层,该层通过空间池化对最后一个卷积层1的特征进行聚合,SPP层的池化区域大小取决于输入的大小。

网络结构的3次创新:

  1. 从siamese 到2-channel: 将输入对的2个灰度化的单通道patch(64*64)拼接成一个2通道的patch(64*64*2),直接使用双通道图像进行训练。经过第一个卷积层后,两张图像的像素进行加权组合和映射,联合使用了两图的信息,不再分彼此。而Siam网络则是到最后全连接层时,两图特征才进行关联。"This is something that indicates that it is important to jointly use information from both patches right from the first layer of the network."
  2. 结合Central-surround two-stream network: 联合使用图像patch中心区域(32*32)和边缘环绕区域的信息(64*64下采样为32*32),也着重关注patch中心区域的像素,类似多尺度。
  3. 结合Spatial pyramid pooling (SPP) network: 训练图像不需要归一化处理,不需要裁剪成同等尺寸进入网络。使用了图像的多尺度信息,效果更好。
  4. 最终的网络结构:2-channel+Central-surround two-stream+SPP 

 4. Learning

1)优化:强监督方式。铰链损失函数 + l2范式(Hinge-based loss term and squared l2-norm regularization)。学习目标函数如下所示:

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

输入两个patch,输出两个patch的匹配相似度。作者将其当作了一个分类问题。

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

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

5. Experiments

5.1 Local image patches benchmark

数据集:有标准的benchmark dataset: Yosemite、Notre Dame, and Liberty。

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

实验结果

得出的结论:

  • 2channel(包括2ch, 2ch-deep, 2ch-2stream)的架构性能最好,可以给网络更大的自由度去捕获两个patch相似的本质因素,因此在网络的第一层就开始联合使用两个patch的信息非常重要;缺点是,测试时,如果判断每个patch与另外所有patch是否相似,计算量会增加。
  • 性能:2ch-2stream > 2ch-deep > 2ch,因此多分辨率信息及增加网络深度有利于匹配;
  • Siamese模型中,双流网络(siam-2stream)性能最好,再次验证多分辨率信息在patch比较的重要性。 pseudo-siamese网络优于siamese网络。
  • 孪生网络,虽然灵活性降低了,但测试时,可以提取所有patch的卷积层输出,然后后续使用全连接层进行对比,计算量较小。

5.2 Wide baseline stereo evaluation

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

5.3 Local descriptors performance evaluation

跳过。

6. Conclusions

  • 论文展示了如何直接从原始图像像素学校一个通用的patch相似函数;
  • 研究了几种适用该任务的神经网络架构,且性能突出;
  • 基于2通道的架构性能优于其他架构;
  • 多分辨率信息有助于图像patch匹配;
  • 增加SPP层有助于图像patch匹配。

参考博客

深度学习(十六)基于2-channel network的图片相似度判别_hjimce的专栏-CSDN博客_卷积图像相似度论文学习:Learning to Compare Image Patches via Convolutional Neural Networks_u011937018的博客-CSDN博客

【CV论文笔记】Learning to Compare Image Patches via Convolutional Neural Networks - 简书

论文笔记 — Learning to Compare Image Patches via Convolutional Neural Networks - 深度机器学习 - 博客园

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐