LIFT: Learned Invariant Feature Transform

Paper: LIFT: Learned Invariant Feature Transform | SpringerLink

Code: GitHub - cvlab-epfl/LIFT: Code release for the ECCV 2016 paper

文章目录

  • Abstract
  • 思路来源
    • LIFT文献来源
  • 方法:LIFT
    • Pipeline
    • 网络架构
    • 训练流程
    • 概述
    • 创建训练数据集
    • Descriptor
    • Orientation Estimator
    • Detector
    • 测试流程
  • 实验结果
    • 定性结果
    • 定量结果
    • 单独部分的性能
    • 附作者所用的对比算法
  • 参考文献

Abstract

我们介绍了一种新颖的深度网络架构,实现了完整的特征点处理pipeline,即检测、方向估计和特征描述。虽然以前的工作已经成功地单独解决了这些问题中的每一个,但我们将展示如何学习以统一的方式处理所有三个问题,同时保持端到端可微性。然后,我们证明了我们的Deep pipeline在许多基准数据集上优于最先进的方法,而不需要再训练。


思路来源

技术背景:局部特征在大量计算机视觉应用中扮演着重要角色,在图像中检测和匹配这些特征成为大量研究的主题。传统依赖于精心设计的手工特征(hand-crafted features)的方法已经取得很好的性能。近年来,机器学习,特别是深度学习,在CV领域表现出超过传统方法的性能。

问题:目前基于深度学习的算法只用于处理单一的步骤,不能保证每个步骤都优化地很好。

解决方案:提出统一处理三个步骤(特征检测、方向估计、特征描述)的深度框架LIFT(Learned Invariant Feature Transform)。

LIFT文献来源

特征点检测(Feature Point Detectors)

特征点检测关注于找到可靠估计尺度和旋转的特殊位置(distinctive locations),例如FAST检测角点(corner points)、SIFT检测斑点(blobs)、MESR检测区域(regions)。

与这些专注于更好的工程设计的方法相比,在学习检测器上早期的尝试方法[1-3]展现出检测器是可以被学习到的,且具有更优的性能。

本文中,作者利用可学习的分段卷积滤波器检测在光照和季节变换下都鲁棒的特征点。同时,作者也将多尺度多视角变化融入到自己的pipeline中。

方向估计(Orientation Estimation)

方向估计主要是为了保持旋转不变性。方向估计虽然在特征点匹配中扮演中重要的作用,但是研究人员很少关注这一部分,因为SIFT方法已经成为标准。

文献[4]提出基于深度学习的方法预测稳定的方向,其产生了更优的结果。本文也将这种结构融入到自己的pipeline中。

特征描述(Feature Descriptors)

特征描述符旨在提供显著图像patch的鉴别表示,同时对视角、光照等变换具有鲁棒性。SIFT的出现使得这一领域达到成熟,它通过梯度方向直方图计算特征描述符。DAISY依赖于方向梯度的卷积图近似直方图。

但是,基于CNN的方法直接从原始图像patch中提取特征变成一种趋势。例如,MatchNet[5]训练孪生CNN学习特征表示,使用一个全连接层学习比较度量。DeepCompare[6]展示出关注于图像中心可以提高性能。DeepDesc[7]使用难负例挖掘用于学习紧凑描述符,其使用欧式距离来度量相似性。

由于欧式距离的广泛适用性,作者采用DeepDesc[7]的网络构建自己的pipeline。


方法:LIFT

Pipeline

整个pipeline如图1所示,由三个主要部分组成:DET(检测器,Detector)、ORI(方向估计器,Orientation Estimator)、DESC(描述器,Descriptor)。每个都是基于CNN。为了校正DET和ORI的输出图像patch(即保持尺度和方向不变性),使用空间转换(Spatial Transformers)[8]。同时,使用soft argmax函数[9]代替非局部极大值抑制(non-local maximum suppression, NMS),即保证端对端可微(可反向传播训练)。

网络架构

作者采用DeepDesc中的孪生网络构建整个网络,如图2所示。

网络为4分支的孪生网络,每个分支包含三个不同的CNN,即Detector、Orientation Estimator、Descriptor。

训练流程

概述

在不同视角和光照条件下捕获下的场景图像中运用SfM(Structure-of-Motion)算法生成特征点。

训练时,采用四组图像patch。

Patch P1P^1P1P2P^2P2(blue),对应于相同3D点的不同视角的patch,作为正例训练Descriptor;

Patch P3P^3P3(green)包含不同的3D点,作为负例训练Descriptor;

PatchP4P^4P4(red)不包含任何显著特征点,作为负例训练Detector。

为了实现端对端可微,每个分支的组件按如下方式连接:

  1. 给定输入图像patch PPP,Detector输出一个得分图 SSS
  2. SSS 执行soft argmax,返回单个潜在点的位置 x;
  3. 使用Spatial Transformer later Crop在 x 的中心提取更小的patch ppp
  4. ppp 输入到Orientation Estimator,输出 ppp 的方向 θ\thetaθ
  5. 使用Spatial Transformer later Rot旋转 ppp ,输出旋转后的patch pθp_{\theta}pθ
  6. 最后,pθp_{\theta}pθ被送入描述器处理,输出描述符 ddd

注意Spatial Transformer只用于操作图像patch,同时保留可微性,这其中没有可学习的模块。

由于各个组件(DET、ORI、DESC)是针对不同的目标进行优化,因此从头开始训练整个网络是不可能的。作者早期尝试过从头开始训练整个网络,但没成功。因此,作者设计了针对特点问题(problem-specific)的学习方法,即从后往前训练:

先训练Descriptor,然后在给定描述符的情况下训练Orientation Estimator,最后在上述两者都给定的情况下,训练Detector。

创建训练数据集

有一些数据集用于训练特征描述器[10]和方向估计器[4]。TILDE[1展示了如何训练关键点检测器,但它的数据集不存在任何视角变换。

采用摄影旅游图像集[11]:来自伦敦皮卡迪利(Piccadilly)广场和古罗马城市广场(Roman-Forum)。作者利用基于SIFT特征的VisualSFM方法[12]使用这些图像集进行3D重建。

Piccadilly包含3384张图像,重建有59k个唯一点,每个点平均6.5个观测值。Roman-Forum包含1658张图像和51k个独特点,平均每个点有5.2个观测值。如图3展示了一些例子。

作者将数据集分为训练集和验证集。为了构建正训练样本,只考虑在SfM重建过程中匹配下来的SIFT特征点。为了提取不包含任何显著特征点的patch,随机采样不包含SIFT特征的图像区域,包括那些没有被SfM使用的图像区域。

针对特征点和非特征点图像区域,根据点的尺度 σ\sigmaσ 提取灰度训练patch。Patch PPP 从这些点的 24σ×24σ24 \sigma \times 24 \sigma24σ×24σ 支持区域中提取,然后标准化为 S×S(S=128)S\times S (S=128)S×S(S=128) ,更小的 ppppθp_{\theta}pθ,进行裁剪和旋转后,大小减半,为s×s(s=64)s\times s (s=64)s×s(s=64)。更小的patch能够更好的对应到SIFT描述符的12σ\sigmaσ 支持区域。为了避免数据的偏差,对patch位置施加均匀随机扰动,其范围为20% (4.8σ\sigmaσ)。最后,利用整个训练集的灰度均值和标准差对图像进行归一化。

Descriptor

对于描述器,作者使用DeepDesc的简单网络,3层卷积和一个tanh激活层、l2l_2l2 池化层和局部减归一化(local subtractive normalization)。Descriptor用 ddd 表示为:
d=hρ(pθ)d = h_{\rho}(p_{\theta}) d=hρ(pθ)训练描述器时,还未对检测器和方向估计器进行训练,因此,使用SfM使用的SIFT特征点的图像位置和方向来生成图像斑patch pθp_{\theta}pθ。训练目标为最小化配对patch 和非配对patch 的总损失,其由它们描述向量之间欧氏距离的hinge embedding损失:

表示欧式距离,C=4为embedding的边距。

同样,作者也采用DeepDsec中的难例挖掘机制。(在描述子网络中,难负样本挖掘是一种非常有效的方法,因为大量的特征点之间的差别是非常大的,很容易区分,且负样本的数量往往远远大于正样本,导致网络训练效率下降。)

Orientation Estimator

作者这部分灵感来源于文献[4],然而,这个特定的方法需要预先计算多个方向的描述向量,从而以数值计算方法参数相对于方向的雅可比矩阵。

给定检测器中输出的patch ppp,方向估计器预测 ppp 的方向:

联合Detector中的位置 x 和原始图像pacth PPP,经过Spatial Transformer Layer Rot后,得到旋转后的patch

在训练方向估计器时,描述器已经训练好,而特征检测器还未训练。因此,使用训练好的描述器计算描述符,Orientation Estimator的目标是最小化描述符的欧式距离:

为方向校正后以x为中心的patch。配对(P1P^1P1, P2P^2P2)为相同3D点投影的图像patch,位置x1和x2表示这些3D点的重投影。与文献[4]一样,不使用对应于方向不相关的不同物理点的patch对。

Detector

检测器由一层卷积和分段线性激活层组成(文献[1]),以图像patch作为输入,得分图(score map)作为输出:

如果n是奇数,则δn为+1,否则为−1。滤波器WmnW_{mn}Wmn和偏置bmnb_{mn}bmn为卷积层需要去学习的参数。N和M是控制分段线性激活函数复杂度的超参数。

由得分图S,可以获得特征点的位置x:

其中softargmax是一个计算质心的函数,权重是标准softmax函数[9]的输出:

y是S中的位置,β=10\beta=10β=10是控制softargmax平滑度的超参数。这个softargmax函数充当了非最大抑制的可微版本。

此时,方向估计器和描述器均已训练好,因此,Detector的优化目标是:最小化相同点配对patch的描述符距离,最大化相同点非配对patch的分类得分。

检测器输入为(P1,P2,P3,P4)(P^1, P^2, P^3, P^4)(P1,P2,P3,P4),前两个为相同点的patch对,1和3为不同SfM点的patch对,4为非特征点patch。总损失为:

γ\gammaγ为平衡两项的超参数。

i=4式,yi =−1,αi =3/6,否则yi =+1, αi =1/6。Softmax是对数-均值-指数的Softmax函数。

即为经过已经训练好的方向估计器和描述器后得到描述符的欧式距离。同样,在训练检测器时,作者也使用难例挖掘机制。

实际上,由于描述符已经学习了一些不变性,检测器很难找到隐式学习的新点。理想情况下,检测器应该从它应该检测的区域开始检测,因此,首先约束与相同物理点对应的patch: 。因此, 作者采用下式代替上式预训练检测器:

随后,去除上述限制,继续训练检测器,即还是用上上式训练。

测试流程

测试流程如图4所示。由于方向估计器和描述器只需要运行在局部最大值上,因此作者认为检测器可以和后两个部分解耦合,

并使用NMS替代softargmax。

具体的地,是将检测器独立应用于不同分辨率的图像,以获得尺度空间中的得分图。


实验结果

在三种数据集上进行评估:

StrchaStrchaStrcha[13]:包含了逐渐增加视角的两个场景的19张图片。

DTUDTUDTU[14]:包含60个具有不同视点和光照的目标序列。本文使用这个数据集在视角变化下评估LIFT。

WebcamWebcamWebcam[1]:包含在相同视角下强光照变化的六个场景的710张图像。本文使用这个数据集在自然光照变化下评估LIFT。

StrchaStrchaStrchaDTUDTUDTU使用提供的真实图像产生对应不同视角的图像。每张图像最多使用1000个关键点。公共视点区域的标准评估遵循文献[15]。

评估以下指标:

  • 重复率(Repeatability, Rep.):特征点的可重复性,用比值表示,即特征点检测器检测出的特征点,用以衡量检测器的性能。

  • 最近邻平均精度均值(Nearest Neighbor mean Average Precision, NN mAP):精度-召回率曲线下面积(Area Under Curve,AUC),采用最近邻匹配策略。该指标通过在多个描述符距离阈值处计算描述符评估描述符的鉴别度。

  • 匹配分数(Matching Score, M. Score):匹配的特征点与所有标签特征点的比值。这个指标衡量网络的整体性能。

定性结果

图5为SIFT和LIFT在四个数据上的对比,使用Piccadilly数据集训练。圆圈表示描述符支持区域。

定量结果

图6为所有三个数据集的平均匹配得分。


表1中LIFT-pic和LIFT-rf分别为在Piccadilly和Roman-Forum上训练的模型。

单独部分的性能

  • Fine-Tuning the Detector

前面所述,先预训练检测器,然后再训练方向估计器和描述器。结果如表2所示。

we pre-train the detector and then finalize the training with the Orientation Estimator and the Descriptor. (in paper)

由于新的pair损失项被设计用来模拟理想描述符的行为,预训练(Pre-trained)的检测器已经表现良好。然而,完整的训练(Fully-trained)会略微提高性能。

【疑问】这里我不太明白,Pre-trained和Fully-trained到底区别是什么?按作者的意思,是从后往前训练(描述器->方向估计器->检测器),这是完整的流程,即这里说的Fully-trained;那这里的预训练阶段说:先预训练检测器,然后再训练方向估计器和描述器(上面高亮部分),这不是和Fully-trained的训练流程完全相反么?


仔细观察表2可以发现,Piccadilly数据集的整体性能大于Roman-Forum。这可能是由于Roman-Forum没有很多非特征点区域。事实上,在Roman-Forum数据集上进行了几次迭代后,网络开始快速过拟合。当进一步尝试对整个Pipeline进行微调时,也会网络过快过拟合,这表明所提的学习策略已经提供了一个很好的全局(global)解决方案。

  • Performance of Individual Components

作者这里研究了将DET、Ori、Desc三个部分分别用SIFT替代,在三个指标上评估其性能。

附作者所用的对比算法

这些前期的算法还是值得一看的,特别是SIFT、SURF、ORB、Harris-affine、BRISK、DeepDesc、PN-Net、MatchNet

算法 关键点检测器 文献
SIFT - Distinctive image features from scale-invariant keypoints,IJCV2004
SURF - SURF: speeded up robust features,CVIV2008
KAZE - KAZE features,ECCV2012
ORB - ORB: an efficient alternative to SIFT or SURF,ICCV2011
Daisy SIFT Daisy: an efficient dense descriptor applied to wide baseline stereo,TPAMI2010
sGLOH Harris-affine Improving sift-based descriptors stability to rotations,ICPR2010
[Harris-affine]Scale and affine invariant interest point detectors,IJCV2010
MROGH Harris-affine Aggregating gradient distributions into intensity orders:
a novel local image descriptor,,CVPR2011
LIOP Harris-affine Local intensity order pattern for feature description,ICCV2011
BiCE Edge Foci Binary coherent edge descriptors,ECCV2010
[Edge Foci]Edge foci interest points,ICCV2011
BRISK - BRISK: binary robust invariant scalable keypoints,ICCV2011
FREAK BRISK Vandergheynst, P.: FREAK: fast retina keypoint,CVPR2012
VGG SIFT Learning local feature descriptors using convex optimisation,TPAMI2014
DeepDesc SIFT Discriminative learning of deep convolutional feature point descriptors,ICCV2015
PN-Net SIFT PN-Net: conjoined triple deep network for learning local image descriptors,arXiv2016
MatchNet SIFT MatchNet: unifying feature and metric learning for patch-based matching,CVPR2015

参考文献

  1. TILDE: a temporally invariant learned DEtector,CVPR2015
  2. Learning a fast emulator of a binary decision process,ACCV2007
  3. Using evolution to learn how to perform interest point detection,ICPR2006
  4. Learning to assign orientations to feature points,CVPR2016
  5. MatchNet: unifying feature and metric learning for patch-based matching,CVPR2015
  6. Learning to compare image patches via convolutional neural networks,CVPR2015
  7. Discriminative learning of deep convolutional feature point descriptors,ICCV2015
  8. Spatial transformer networks,NeurIPS2015
  9. Gradient descent optimization of smoothed information retrieval metrics,Information Retrieval 2010
  10. Learning local image descriptors,CVPR2007
  11. Robust global translations with 1DSfM,ECCV2014
  12. Towards linear-time incremental structure from motion,2013 International Conference on 3D Vision
  13. On benchmarking camera calibration and multi-view stereo for high resolution imagery,CVPR2008
  14. Interesting interest points,IJCV2012
  15. A performance evaluation of local descriptors,CVPR2003

LIFT: Learned Invariant Feature Transform详细笔记相关推荐

  1. LIFT: Learned Invariant Feature Points完整调试记录(三)安装theano+Lasagne

    基本环境到这里算是安装结束了,接下来就是安装论文所需的工具了,对这部分的过程也做一个简单记录. 参考网址:LIFT: Learned Invariant Feature Points完整调试记录 ub ...

  2. SIFT算法详解:Scale Invariant Feature Transform

    尺度不变特征变换匹配算法详解 Scale Invariant Feature Transform(SIFT) Just For Fun zdd  zddmail@gmail.com or (zddhu ...

  3. 《Scale Invariant Feature Transform on the Sphere: Theory and Applications》论文阅读和源码理解(一)

    <Scale Invariant Feature Transform on the Sphere: Theory and Applications>论文阅读和源码理解(一) 摘要 主要贡献 ...

  4. 尺度不变特征变换匹配算法详解 Scale Invariant Feature Transform(SIFT)

    1.SIFT综述 尺度不变特征转换(Scale-invariant feature transform或SIFT)是一种电脑视觉的算法用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取 ...

  5. 算法 | 尺度不变特征变换匹配算法 Scale Invariant Feature Transform (SIFT)

    /******************************************************/ github:https://github.com/MichaelBeechan CS ...

  6. OpenCV中的尺度不变特征变换(SIFT Scale-Invariant Feature Transform)

    OpenCV中的尺度不变特征变换(SIFT Scale-Invariant Feature Transform) 1. 效果图 2. 原理 2.1 步骤 2.2 opencv实现方法 2.3 SIFT ...

  7. 论文阅读笔记之——《Recovering Realistic Texture in Image Super-resolution by Deep Spatial Feature Transform》

    本博文是文章<Recovering Realistic Texture in Image Super-resolution by Deep Spatial Feature Transform&g ...

  8. 论文笔记:SIFT(Scale-invariant feature transform 尺度不变特征变换)

    1.SIFT介绍 1.1.介绍 SIFT(Scale-invariant feature transform 尺度不变特征变换)图像特征匹配,即使图像有旋转.模糊.尺度.亮度的变化,即使使用不同的相机 ...

  9. SIFT(Scale-invariant feature transform, 尺度不变特征转换)特征

    SIFT算法的全称是Scale-invariant feature transform,尺度不变特征转换,是一种不随图像尺度旋转变化而变化的特征,因此SIFT特征不会随着图像的放大缩小,或者旋转而改变 ...

最新文章

  1. ArcGIS的许可文件问题
  2. 关于软件开发的随想,纯属意淫
  3. 计算机硬件的作用论文,计算机硬件的作用论文.doc
  4. Cocoa原理指南-学习和实践1
  5. sql查询复习笔记-小技巧,大智慧(续一)
  6. GraphPad Prism 9.2.0 更新新功能说明
  7. windows下使用MinGW+msys编译ffmpeg
  8. 麒麟信安:根植于openEuler,走操作系统自主创新之路
  9. 图像语义分割(13)-OCNet: 用于场景解析的目标语义网络
  10. 如何学习多传感器感知融合技术?
  11. Raspberry Pi网络监控
  12. 微分方程模型_MIT—微分方程笔记03 一阶线性常微分方程解法
  13. pandas计算对数收益率
  14. 应该像许三多学习的职业态度!
  15. C#判断当前系统当前时区是否使用夏令时(夏时制)
  16. 计算机在线作业题,精选《计算机原理与结构》在线作业试题
  17. 思维模型 情绪ABC理论
  18. java中的消息队列
  19. php 递归无限极分类和层级展示(适用于权限管理和分类管理功能)
  20. python数独代码_Python 解数独(Sudoku)

热门文章

  1. vscode龟速下载解决方法
  2. 电流检测放大器替代仪表放大器实现在电路中的应用
  3. GPFS和Lustre之后,还有谁来统接盘?
  4. linux克隆机修改网络配置
  5. Charles 乱码问题解决
  6. python猜字游戏_python入门到实践-猜字游戏
  7. 【愚公系列】2023年01月 Java教学课程 001-Java语言背景介绍
  8. 破解Visra系统登录密码
  9. 学会python之后可以做哪些兼职?
  10. 基于树莓派运行OpenWrt固件