SIFT 的变体与发展)
SIFT 的局限和改进路线#在前两篇的内容里我们已经知道从 DoG 尺度空间开始到关键点检测、亚像素定位、方向分配再到 128 维描述子的构建和最终匹配SIFT 建立了一套完整且高度系统化的局部特征提取管道。解决了局部特征中的多个核心问题如尺度不变性、旋转不变性和一定程度上的光照变化鲁棒性等。直今SIFT 依然是评价局部特征算法的重要基准之一。但没有完美的算法随着应用场景越来越复杂人们发现 SIFT 仍然存在一些明显的不足问题影响计算速度较慢难以满足实时视觉任务描述子维度较高128维存储和匹配开销较大对大视角变化支持有限大倾角拍摄时匹配性能下降没有充分利用颜色、多光谱等信息在特殊数据上表现受限自然在 SIFT 提出后的二十多年里大量研究工作开始围绕这些问题不断改进并提出变体和新算法。基于这些本篇内容围绕以下问题展开SIFT 的变体是否像其他领域一样将 SIFT 这样的起点算法完全取代特征检测算法是否有了新的突破DL 盛行的当下SIFT 现代价值是怎么样的为了较清晰地回答这些问题可以大致将后续发展分为以下四类让 SIFT 更快。让 SIFT 的描述能力更强、匹配更加准确。让 SIFT 能适应更多特殊应用场景。深度学习方法。前三类工作虽然采用的方法各不相同但都没有脱离 SIFT 的整体框架。真正改变这一领域发展方向的还是最后的深度学习时代以数据驱动的逻辑重新设计特征检测与匹配算法。2. 第一条路线让 SIFT 更快#那一大串复杂的算法管道让 SIFT 精度有了保障在很长一段时间里它一直都是局部特征匹配精度的标杆。但相应地SIFT 的计算速度也限制了它的广泛应用它几乎每一步都需要大量计算这些操作共同带来了较大的计算开销。对于图像拼接而言这样的速度通常还能接受因为拼接更关注最终精度。但对于另外一些视觉任务例如视频实时处理、机器人定位、自动驾驶等领域算法往往需要达到几十帧甚至上百帧每秒FPS的处理速度。此时SIFT 的计算量就成为最大的瓶颈。改进想法自然出现能否保留 SIFT 的整体思想尝试把那些计算最耗时的部分换成更简单、更快速的实现SURF就是围绕这个问题诞生的。2.1 SURF用近似计算换取速度#2006 年论文 SURF: Speeded Up Robust Features 提出了SURF它的目标十分直接在尽量保持 SIFT 匹配性能的前提下大幅提高计算速度。SURF 几乎保留了 SIFT 的整个处理流程但在每一个计算量最大的地方都寻找了一种更加高效的替代方案。先摆个表格整体来看二者的对应关系如下SIFTSURFDoG 检测器Hessian 行列式高斯卷积Box Filter箱式滤波梯度计算Haar 小波响应128维描述子64维描述子下面来简要展开一下2.2 Box Filter 和积分图#SIFT 为了计算 LoG需要不断进行高斯卷积高斯卷积虽然精确但卷积核越大计算量也越大。于是 SURF 采用了一种更简单的近似方法Box Filter箱式滤波器。如图所示Box Filter 其实就是用了更简单的权重取代高斯核。这样SURF 不再需要像 SIFT 那样不断建立高斯金字塔而是直接通过改变滤波器尺寸来模拟不同尺度。而与其搭配使用的是一种数据结构积分图Integral Image它本质上是一张累加表同样如图积分图和 Box Filter 的配合起到了如下作用任意矩形区域内的像素和都可以通过四次加减运算直接得到。配合 Box Filter 的简化权重可以让卷积不再逐个加权求和而是通过常数级的计算构建金字塔。这是整个算法能够加速的基础。2.2 进一步简化描述子#除去对检测器的加速外SURF 对描述子的计算也进行了简化。SIFT 在每个子区域统计多个方向的梯度直方图最终得到 128 维描述子。而 SURF 则采用Haar 小波响应其实就是差分只统计四个统计量这样最终描述子维度变为了 64 维后续匹配速度进一步提高。经过这一系列近似替换SURF 在保持较高匹配性能的同时大幅降低了计算复杂度在典型情况下比 SIFT 约快 25 倍。但实际加速比例会受到图像规模、特征点数量以及具体实现方式等因素影响因此不同实验中的速度提升并不存在统一数值。3. 第二条路线让描述子更精确#SURF 解决了 SIFT 的速度问题。但研究者们很快便发现了新的优化空间SIFT 使用 128 维梯度直方图获取的描述子信息丰富区分能力强但带来了两个问题维度较高需要更大的存储开销和更慢的匹配速度。各维度的重要性并不完全相同有些方向上的梯度特别强而另一些方向虽然较弱却同样包含着有价值的信息。于是便有了另一种优化思路能不能保持 SIFT 检测器不变只改描述子本身的获取逻辑来提升精度