高光谱拼接算法(五)SIFT 的变体与发展

前两篇完整展开了 SIFT 的算法逻辑,本篇关于其后续变体和这类特征检测和匹配算法的发展,更类似于综述一些,之后再完整展开部分现代算法。

1. SIFT 的局限和改进路线

在前两篇的内容里我们已经知道:从 DoG 尺度空间开始,到关键点检测、亚像素定位、方向分配,再到 128 维描述子的构建和最终匹配,SIFT 建立了一套完整且高度系统化的局部特征提取管道。解决了局部特征中的多个核心问题,如尺度不变性、旋转不变性和一定程度上的光照变化鲁棒性等。

直今,SIFT 依然是评价局部特征算法的重要基准之一。

但没有完美的算法,随着应用场景越来越复杂,人们发现 SIFT 仍然存在一些明显的不足:

问题 影响
计算速度较慢 难以满足实时视觉任务
描述子维度较高(128维) 存储和匹配开销较大
对大视角变化支持有限 大倾角拍摄时匹配性能下降
没有充分利用颜色、多光谱等信息 在特殊数据上表现受限

自然,在 SIFT 提出后的二十多年里,大量研究工作开始围绕这些问题不断改进,并提出变体和新算法。

基于这些,本篇内容围绕以下问题展开:

SIFT 的变体是否像其他领域一样将 SIFT 这样的起点算法完全取代?特征检测算法是否有了新的突破?DL 盛行的当下,SIFT 现代价值是怎么样的?

为了较清晰地回答这些问题,可以大致将后续发展分为以下四类:

  1. 让 SIFT 更快。
  2. 让 SIFT 的描述能力更强、匹配更加准确
  3. 让 SIFT 能适应更多特殊应用场景
  4. 深度学习方法

前三类工作虽然采用的方法各不相同,但都没有脱离 SIFT 的整体框架

真正改变这一领域发展方向的还是最后的深度学习时代:以数据驱动的逻辑重新设计特征检测与匹配算法。

2. 第一条路线:让 SIFT 更快

那一大串复杂的算法管道让 SIFT 精度有了保障,在很长一段时间里,它一直都是局部特征匹配精度的标杆。

但相应地,SIFT 的计算速度也限制了它的广泛应用:它几乎每一步都需要大量计算,这些操作共同带来了较大的计算开销。

对于图像拼接而言,这样的速度通常还能接受,因为拼接更关注最终精度。

但对于另外一些视觉任务,例如视频实时处理、机器人定位、自动驾驶等领域,算法往往需要达到几十帧甚至上百帧每秒(FPS)的处理速度。

此时,SIFT 的计算量就成为最大的瓶颈。改进想法自然出现:

能否保留 SIFT 的整体思想,尝试把那些计算最耗时的部分换成更简单、更快速的实现?

SURF,就是围绕这个问题诞生的。

2.1 SURF:用近似计算换取速度

2006 年,论文 SURF: Speeded Up Robust Features 提出了 SURF,它的目标十分直接:

在尽量保持 SIFT 匹配性能的前提下,大幅提高计算速度。

SURF 几乎保留了 SIFT 的整个处理流程,但在每一个计算量最大的地方,都寻找了一种更加高效的替代方案。

先摆个表格整体来看,二者的对应关系如下:

SIFT SURF
DoG 检测器 Hessian 行列式
高斯卷积 Box Filter(箱式滤波)
梯度计算 Haar 小波响应
128维描述子 64维描述子

下面来简要展开一下:

2.2 Box Filter 和积分图

SIFT 为了计算 LoG,需要不断进行高斯卷积,高斯卷积虽然精确,但卷积核越大,计算量也越大。

于是 SURF 采用了一种更简单的近似方法:Box Filter(箱式滤波器)

如图所示,Box Filter 其实就是用了更简单的权重取代高斯核。

这样,SURF 不再需要像 SIFT 那样不断建立高斯金字塔,而是直接通过改变滤波器尺寸来模拟不同尺度。

而与其搭配使用的是一种数据结构:积分图(Integral Image),它本质上是一张累加表:

\I_{\\Sigma}(x,y)= \\sum_{i=0}\^{x}\\sum_{j=0}\^{y}I(i,j) \\

同样如图,积分图和 Box Filter 的配合起到了如下作用:

任意矩形区域内的像素和,都可以通过四次加减运算直接得到。配合 Box Filter 的简化权重,可以让卷积不再逐个加权求和,而是通过常数级的计算构建金字塔。

这是整个算法能够加速的基础。

2.2 进一步简化描述子

除去对检测器的加速外,SURF 对描述子的计算也进行了简化。

SIFT 在每个子区域统计多个方向的梯度直方图,最终得到 128 维描述子。

而 SURF 则采用 Haar 小波响应(其实就是差分),只统计四个统计量:

\\\sum d_x,\\quad \\sum\|d_x\|,\\quad \\sum d_y,\\quad \\sum\|d_y\| \\

这样,最终描述子维度变为了 64 维,后续匹配速度进一步提高。

经过这一系列近似替换,SURF 在保持较高匹配性能的同时,大幅降低了计算复杂度,在典型情况下,比 SIFT 约快 2~5 倍

但实际加速比例会受到图像规模、特征点数量以及具体实现方式等因素影响,因此不同实验中的速度提升并不存在统一数值。

最终,RootSIFT 几乎不增加任何额外计算,却能够显著提升匹配效果,因此被认为是"性价比最高"的 SIFT 改进之一,在许多工程实践中已经成为默认配置。

3. 第二条路线:让描述子更精确

SURF 解决了 SIFT 的速度问题。

但研究者们很快便发现了新的优化空间:SIFT 使用 128 维梯度直方图获取的描述子信息丰富,区分能力强,但带来了两个问题:

  1. 维度较高: 需要更大的存储开销和更慢的匹配速度。
  2. 各维度的重要性并不完全相同: 有些方向上的梯度特别强,而另一些方向虽然较弱,却同样包含着有价值的信息。

于是便有了另一种优化思路:

能不能保持 SIFT 检测器不变,只改描述子本身的获取逻辑来提升精度?

随后几年,大量工作开始围绕描述子展开。

3.1 RootSIFT:改动最小,收益最大

2012 年,论文 Three things everyone should know to improve object retrieval 提出的 RootSIFT 是一个改动极小的变体,它唯一修改的,仅仅是最后一步:描述子的归一化方式。

SIFT 在得到描述子以后,会进行 L2 归一化:

\\\mathbf h_{SIFT} = \\frac{\\mathbf h} {\\\|\\mathbf h\\\|_2} \\

这样可以减弱整体亮度变化带来的影响。

但研究者发现,仅使用 L2 归一化仍然存在一个问题:

假设某个方向上的梯度特别强,欧氏距离会更多关注最大的那个数值,80 与 79 的差异往往比 3 与 1 的差异更加影响最终距离。

但对于局部特征来说,那些较小的梯度方向,同样可能包含着重要的信息。

于是,RootSIFT 把最后一步改成了少见的 L1 归一化后再开平方:

\\\mathbf h_{RootSIFT} = \\sqrt{ \\frac{\\mathbf h} {\\\|\\mathbf h\\\|_1} } \\

整个改动,就只有这一行公式,但它在多个公开数据集上,都获得了约 10%~20% 的匹配精度提升。

其逻辑可以这么理解:

RootSIFT 会削弱那些特别大的梯度响应,让原本较弱的方向拥有更多的话语权,这样,描述子的各个维度能够更加均衡地参与匹配。

3.2 PCA-SIFT:更精简的描述子

除了提高精度,还有另一部分研究者提出了一个问题:

128 维描述子中是否存在冗余?

还是图像数据的偏置:相邻方向之间、相邻网格之间,本身就存在较强相关性。

因此,128 维之间并不是完全独立的,能不能把这些重复的信息压缩掉?

04 年,论文 PCA-SIFT: A More Distinctive Representation for Local Image Descriptors 提出了 PCA-SIFT ,显然,其关键技术是我们之前展开过的 PCA

但其改进了 PCA 的使用思路,做法是这样的:

对大量训练图像提取 SIFT 描述子组成矩阵进行 PCA,取最终结果中固定维度的主成分组成投影矩阵,对之后新的描述子直接使用该投影矩阵降维。

这么做是因为如果两张图各自 PCA,那么同一个点投影以后就在不同坐标系,描述子无法比较,所以必须都用同一个 PCA。

直观来看这样不仅减少了存储空间,也提高了匹配速度。

但由于 PCA 投影矩阵需要提前训练,让其泛用性较低:自然图像训练得到的投影矩阵,未必适用于遥感图像;可见光训练得到的模型,也未必适用于高光谱图像。

因此,PCA-SIFT 虽然理论出色,但实际应用远没有 RootSIFT 广泛。

3.3 GLOH:重新设计描述子

此外,还有一部分工作,则没有选择修改归一化方式,也没有选择降维,而是重新设计描述子的空间结构。

其中比较具有代表性的是 05 年的论文 **A Performance Evaluation of Local Descriptors 提出的 GLOH(Gradient Location and Orientation Histogram) ,其采用 极坐标划分同心圆后统计方向 的方式生成描述子:

这种结构更加符合图像中局部区域的几何分布,因此理论上能够表达更多空间信息。

但这也意味着更复杂的计算,而且最终 GLOH 仍然需要利用 PCA 再次降到 128 维。

虽然实验结果表明,它的描述能力略优于 SIFT,但是提升并不算明显,而实现复杂度却增加了不少。

因此,这类方法更多还是停留在学术研究中。

4. 第三条路线:让 SIFT 适应更多场景

经过前面的改进,SIFT 的速度越来越快,描述子也越来越成熟。

但在不断实验中,研究者们发现 SIFT 还存在一点局限:它的不变性其实是有限的 ,当两张图像之间存在较大的拍摄角度变化,比如无人机俯视拍摄或者手持相机斜拍建筑时,SIFT 的匹配性能会明显下降。

因为这些情况下,同一个物体在图像中的形状已经发生了明显拉伸。

这种变化已经不再是简单的旋转或缩放,而属于仿射变换(Affine Transformation) 的范畴了:

一种介于刚体变换(只允许平移和旋转,保持长度与角度)和更一般的投影变换之间的几何模型,能够很好地描述许多实际拍摄场景中的局部形变,是计算机视觉中应用最广泛的变换模型之一。

而对这类情况的处理思路其实我们已经见过很多次了:

既然 SIFT 无法直接适应这种变化,那就想办法主动"制造"这些变化让模型提前适应。

ASIFT,就是这一思路下具有代表性的工作。

4.1 ASIFT:模拟仿射变换

09 年,论文 ASIFT: A New Framework for Fully Affine Invariant Image Comparison 提出了 ASIFT,相比上面各种改进,它的思路显得非常简单,连 SIFT 本身都几乎没有修改,它只是增加了一步:

在运行 SIFT 之前,先人为模拟不同拍摄角度下的图像。

整个流程如下:

最终,同一张图像会扩展成几十张不同视角的图像,每一张都运行一次完整的 SIFT,因此,它能够覆盖绝大多数真实拍摄角度。

ASIFT 大幅提高了大视角变化下的匹配成功率, 但代价也同样明显:整体计算量几乎增加了几十倍。

所以在很多工程中,如果只是普通无人机航拍,通常不会使用 ASIFT。只有在大倾角摄影、建筑摄影等特殊任务中,它才真正发挥价值。

4.2 进一步细分特殊场景

ASIFT 之后,一种特征检测领域的共识逐渐出现:

不存在一种能够适用于所有数据的局部特征。

于是,越来越多针对特殊场景的 SIFT 变体开始出现,列举如下:

变体 解决的问题
ASIFT 大视角变化
Color SIFT / CSIFT 利用颜色信息
SAR-SIFT SAR 图像中的相干斑噪声
光谱 SIFT 多光谱、高光谱数据

这些工作已经不再追求设计一种新的通用算法,而是根据不同数据特点,不断对 SIFT 的某一个模块进行定制。

至此,SIFT 家族已经发展得相当成熟,几乎所有能够改进的方向,都已经有人尝试过。

那么,新的突破还能来自哪里?

5. 其他传统特征检测算法

在进入 DL 前,要说明的是虽然传统特征检测算法中 SIFT 可以说是最高的山,但这个领域同样存在其他优秀作品。

其中,11 年的论文 ORB: an efficient alternative to SIFT or SURF 提出的 ORB(Oriented FAST and Rotated BRIEF) 以实时性为目标,采用 FAST 关键点检测和二值描述子,大幅降低了特征提取与匹配的计算开销,因此被广泛应用于 SLAM、视觉定位以及移动端视觉等对速度要求较高的场景。

此外,还有 12 年 KAZE Features提出的 KAZE(这不是英文缩写,而是日语"风"的读音):它重新设计了传统的高斯尺度空间,引入非线性扩散构建尺度空间,在保持边缘结构的同时完成多尺度分析,并进一步发展出计算效率更高的 AKAZE。

到此为止,上面的所有算法仍然属于人工设计特征(Handcrafted Features) 的范畴,即研究者根据经验设计关键点检测器和描述子,只是在速度、尺度空间或描述方式等方面进行了不同方向的优化。

而真正改变局部特征发展方向的,是下面的深度学习方法:它们开始利用大量数据自动学习如何检测关键点、构建描述子以及建立匹配关系。

6. DL:数据驱动的特征检测

DL 领域的常见逻辑就是让模型自己去学以前我们手工设计的特征,在特征检测中也不例外:

既然神经网络能够学习图像分类、目标检测,那么它能不能自己学会什么叫"好的局部特征"?

这部分如果展开内容较多,DL 相关的算法内容之后会再单独详细展开。

6.1 第一阶段:网络开始学习关键点

18 年,论文 SuperPoint: Self-Supervised Interest Point Detection and Description 提出了 SuperPoint,第一次让神经网络同时完成关键点检测和描述子生成。

其大致流程是这样的:

总之,现在网络不再依赖固定公式,而是通过大量数据学习:

什么样的位置最容易重复检测,什么样的描述子最容易区分。

6.2 第二阶段:网络开始学习匹配

虽然 SuperPoint 已经能够学习检测器,但是后面的匹配过程仍然和传统方法类似:

于是,又有人提出新的问题:

为什么匹配规则也要人为设计?

20 年的论文 SuperGlue: Learning Feature Matching with Graph Neural Networks 提出的 SuperGlue 便第一次尝试让网络直接学习哪些点应该互相匹配。

相比传统最近邻匹配,它在复杂场景下具有明显更好的鲁棒性。

6.3 第三阶段:无检测器匹配

进入 20 年度,一个更大胆思路出现了:

为什么一定要先检测关键点?如果整幅图像都交给网络,是不是也能够直接找到对应关系?

于是,21 年的 LoFTR: Detector-Free Local Feature Matching with Transformers 出现了,其提出的 LoFTR 最大的特点就是彻底放弃关键点检测。

现在,网络直接学习整幅图像中,哪些位置应该互相对应。这种方法被称为:Detector-Free Matching(无检测器匹配)。

但需要注意的是,Detector-Free 并不意味着完全没有"特征",而是网络不再显式检测离散关键点,而是直接在稠密特征图上建立对应关系。

相比传统稀疏特征,LoFTR 能够获得更加密集的匹配结果,尤其是在传统方法几乎检测不到关键点的背景区域,仍然能够建立稳定对应关系。

这也是近年来图像匹配领域最重要的发展方向之一。

6.4 后续的发展

当然,局部特征的发展并没有停止。近年来,研究者围绕检测器设计、描述子学习、训练策略、推理效率以及匹配算法等多个方向持续优化,部分成果简单列举如下:

方法 主要改进方向 核心思想
D2-Net: A Trainable CNN for Joint Description and Detection of Local Features 检测器 + 描述子联合学习 将关键点检测与描述子提取融合,直接从深层特征中同时获得关键点和描述子。
R2D2: Repeatable and Reliable Detector and Descriptor 检测器设计、训练策略 在训练过程中同时学习关键点的可重复性和可靠性,筛选更稳定、更适合匹配的特征点。
DISK: Learning local features with policy gradient 训练策略 将关键点检测视为可学习的决策过程,采用强化学习思想优化检测与描述,使匹配性能直接驱动网络训练。
LightGlue: Local Feature Matching at Light Speed 匹配速度、推理效率 在匹配阶段采用轻量级 Transformer,并根据匹配难度动态调整计算量,实现更快、更高效的特征匹配。

7. 总结

最后,一个很自然的问题是:

既然深度学习已经成为主流,SIFT 是否已经没有价值了?

答案是否定的。直到今天,SIFT 仍然具有不可替代的重要地位:它是大量算法的重要基线,在很多数据获取困难的工程场景中,SIFT 依然具有很高的实用价值。

就像我们之前提到的高光谱遥感,此外还有医学影像等领域,往往缺乏足够规模的训练数据。相比需要大量数据训练的深度学习模型,SIFT 仍然能够提供稳定、可靠且可解释的匹配结果。

反而是 DL 方法在这些领域由于数据驱动的特性显露出了部分局限,因此小样本、自监督学习甚至零样本学习也成为了 DL 的重要研究方向。

而总结来看,从 SIFT 到现在的 DL 方法,局部特征的发展都围绕着三个核心问题:

  1. 如何找到更稳定的关键点?
  2. 如何构建更具判别性的描述子?
  3. 如何建立更加准确、高效的匹配关系?

无论是 SIFT、SuperPoint、LoFTR ,还是其他现有算法,它们本质上仍然围绕这三个问题不断演进。

相关推荐
哥布林学者2 天前
高光谱拼接算法(四)SIFT 特征匹配
高光谱成像
哥布林学者3 天前
高光谱拼接算法(三)SIFT 特征点检测
高光谱成像
哥布林学者1 个月前
高光谱拼接算法(二)Harris 角点探测
高光谱成像
哥布林学者1 个月前
高光谱拼接算法(一)扫推式成像和航带拼接算法
机器学习·高光谱成像
哥布林学者3 个月前
高光谱成像基础(完)光谱融合(Spectral Fusion)
机器学习·高光谱成像
哥布林学者3 个月前
高光谱成像(十二)光谱重建(Spectral Reconstruction)
机器学习·高光谱成像
哥布林学者4 个月前
高光谱成像(十一)异常检测算法 RX 与 KRX
机器学习·高光谱成像
哥布林学者4 个月前
高光谱成像(十)基于 LMM 的端元提取
机器学习·高光谱成像
哥布林学者4 个月前
高光谱成像(九)光谱解混基础
机器学习·高光谱成像