论文阅读——LIFT: Learned Invariant Feature Transform

一、概述

  本文是一篇非常经典的基于深度学习的局部特征提取的论文,也是最早将特征检测和描述放在一起优化(即joint learning)的论文之一。此前对于局部特征描述的各个模块,包括兴趣点检测、方向估计和特征描述,均已有相应的基于CNN的方法提出,其中深度特征描述这一方向吸引了大部分关注,而兴趣点检测上的成果相对少一些。本文则认为之前对于单独模块的研究报道的高性能,在实际任务pipeline中可能并不能达到最佳。

  局部特征描述任务(以SIFT和Harris等为代表)通常以完整图像为输入,首先提取出其中潜在的兴趣点,然后对兴趣点周围的邻域patch提取固定长度的特征作为其描述。要使用单个神经网络完成该流程,主要难点在于保持梯度流。比如要从检测模块输出的特征图提取出K个兴趣点,这一步通常需要NMS来辅助,而传统的NMS算法并不可微。本文为了完成该流程使用了一系列trick,其中很多trick在后续的patch-based文章中(如LF-Net等)均有沿用。从理解论文的角度来说,搞懂本文对于阅读后续一些流程更复杂的文章比较有帮助。

  以下为原文摘要:

  我们提出了一种新的深度神经网络结构,该结构实现了完整的特征点处理管道,即兴趣点检测,方向估计和特征描述。 尽管先前的工作已成功地单独解决了每个问题,但我们展示了如何在保持端到端的可区分性的同时以整体的方式完成各个模块的学习。 然后,我们证明了该深度学习的管线在许多基准数据集上无需重新训练,性能即可超过此前的SOTA方法。

二、方法

  由于本文插图绘制地比较详细,这一部分就直接结合插图,以算法流程的形式记录LIFT中的主要内容。

  首先,本文的CNN以patch为输入,而非全图。作者的解释是这样可以在不损失信息的情况下以更轻量级的方式解决该任务,因为全图中包含关键点的patch数量并不多。因此为了得到patch,作者首先需要对整个训练集通过某种方式提取出兴趣点位置。作者构建数据集的步骤大致如下:

  • 选择multi-view的图像来构建训练数据

  • 利用SIFT检测每张图像的兴趣点

  • 将multi-view图像利用VisualSFM算法进行3D重建,剩下的兴趣点将作为本文算法的GT

    以下为LIFT的完整预测流程。可见该流程基本是按照传统的局部特征提取算法设计的。

    以下为LIFT的训练过程:

2.1 训练过程

  1. LIFT网络在训练时需要输入一个四元对,即P1-4,其中P1和P2代表同一个3D点经不同视角投影得到的2D点对应patch;P3和P1为不同3D点投影的2D点对应patch;P4则为不包含兴趣点的patch。

  2. 对每个patch先使用检测模块进行预测。该模块较简单,直接用单层卷积+分段线性激活(来自TILDE论文)对原图提取特征并返回一个score map,记为S=f_\mu(P),其中\mu代表了检测模型的权重。

  3. 在对\mu进行训练时,不同于TILDE论文中使用sfm得到的关键点位置作为S的GT,本文认为S在除了sfm产生的兴趣点之外的位置也可以有maxima,这体现在检测模块的损失设计上。

    • 本文早期实验发现,强行让检测模块将兴趣点预测为sfm模型得到的位置是有害的。(我的理解应该说的是直接用sfm模型得到的兴趣点生成GT score map,然后做强监督的方式)
  4. 对DET预测的score map提取关键点。本文提出可以使用softargmax代替nms,在保持可微的同时实现相似的功能。然后根据提取到的特征点x和原patch,送入STL(spatial transformer layer)进行crop,得到refine之后的小p(大写P代表原Patch),该过程记为p = Crop(P, x)

    • softargmax是一个用于计算物体质心的函数,其公式如下。softargmax在LF-Net中也有用到。


    • STN在这类任务中扮演着的角色,简单来说就是可微版本的OpenCV warpPerspective函数,通常都不是训练模块。

  5. 将p送入方向估计模块,预测出当前patch的方向θ。然后同4中的做法,利用spatial transformer crop将P进行crop,不同的是这次需要考虑在转换中加入方向信息。记为pθ=Rot(P,x,θ)

    • 注意,送入第二个STL的patch是原始输入Patch,而非第一个STL crop的patch。说明第一个STL的patch唯一作用在于预测方向。

    • 问题:对p估计出的方向θ,是p->pθ的方向还是pθ->p的方向?这里涉及对STN细节的理解。

  6. 将旋转之后的patch pθ送入特征描述网络,提取出固定维度的embedding d

  7. 根据输入四元组构建的patch之间的关系,计算检测、方向估计、特征描述三个部分的损失:

    • a. 检测模块:

      • 第3步提到,检测模块如果使用sfm得到的GT score map做强监督可能是有害的。故作者利用P1和P2的关系,利用相同兴趣点的可靠性reliability,即最小化d1和d2之间的距离来训练检测模块。即下式:
      • 此外,作者认为还需要对某个原本包含兴趣点的patch在预测中漏检的情况进行惩罚,体现在损失函数上为:
      image.png
      • 这里的softmax应该是对四个Patch中的每一个,即Pi,输出其包含兴趣点的概率,所以求softmax的维度应该是在??
    • b. 方向估计模块:

      • 该模块的优化目标比较隐式,需要反映到下游的特征提取模块。因为方向估计的目的就是为了使同一个3D点在不同视角下的投影点的描述尽可能接近(描述子的可靠性,或者可重复性)

        其中,
        • 注意这个式子其实和检测模块的L_{pair}基本一样,唯一的不同在于输入中的x是已经提取出来的兴趣点位置,因此这部分梯度不需要再从x传递到输入P,作者还是很严谨的
    • c.特征描述模块:

      • 本文的特征描述部分损失相对来说是很简单的了,因为patch之间的关系不需要在线构造,而是直接通过输入构造好的。直接给出损失函数的计算:


2.2 预测过程

LIFT的预测过程和训练稍有差异。由于方向估计和特征描述模块只需要在局部最大值处运行,作者认为可以在预测时将检测网络和后续两模块解耦:

  • 构建原始大图输入的图像金字塔,利用DET预测出score map金字塔(scale space score map,这一概念在LFNet中进一步延伸),然后利用NMS直接估计出所有兴趣点坐标
  • 再对各个兴趣点位置提取patch,分别进行方向估计和特征描述。

三、实验

  1. 结果示例(和SIFT对比,每行代表一个测试集)


  2. 另外,作者做了一个比较有意思的实验:将LIFT的各个模块分别替换成SIFT的组件,并比较在Strecha数据集上的评估指标:



    这个实验说明,LIFT和SIFT的模块设计高度一致;将LIFT的任意一个模块替换为SIFT都会导致结果下降。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容