尺度不变特征匹配 SIFT & 可变形卷积 Deformable Convolution
什么是SIFT
Scale Invariant Feature Transform(SIFT) 尺度不变特征匹配算法。
尺度不变特征转换是一种电脑视觉的算法,用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量。SIFT特征是基于物体上的一些局部外观的兴趣点而与影像的大小和旋转无关。对于光线、噪声、些微视角改变的容忍度也相当高。使用SIFT特征描述对于部分物体遮蔽的侦测率相当高,甚至只需要3个以上的SIFT物体特征就足以计算出位置和方位。SIFT特征的信息量大,适合在海量数据库中快速准确匹配。
SIFT算法可以解决的问题:
- 目标的旋转、缩放、平移(RST)
- 图像仿射/投影变换(视点viewpoint)
- 光照影响(illumination)
- 目标遮挡(occlusion)
- 杂物场景(clutter)
- 噪声(noise)
SIFT算法的步骤:
- 尺度空间极值检测:搜索所有尺度上的图像位置。通过高斯微分函数来识别潜在的对于尺度和旋转不变的兴趣点。
- 关键点定位:在每个候选的位置上,通过拟合一个精细的模型来确定位置和尺度,关键点的选择依据于它们的稳定程度。
- 方向确定:基于图像局部的梯度方向,分配给每个关键点一个或多个方向。所有后面的对于图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。
- 关键点描述:在每个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变化。
SIFT算法详解:
1. 高斯模糊
SIFT算法在不同的尺度空间上查找关键点,而尺度空间的获取需要使用高斯模糊来实现。【高斯卷积核已经被证明是实现尺度变换的唯一变换核,并且是唯一的线性核。】
2. 尺度空间极值点检测
尺度空间使用高斯金字塔表示。尺度规范化的LoG(Laplacion of Gaussian)算子具备真正的尺度不变性。【LoG过滤器本身的作用就是突出图像中的边缘】【由于LoG卷积核的输出包含负数值,因此需要将最后输出的结果归一化到0-255之间。如果将经过过滤的部分图像或梯度图像添加到原始图像中,那么结果将使原始图像中的任何边缘更清晰和具有更高的对比度】【增强之后图像的边缘变得更加锋利,但也带来了一定的噪声】
SIFT中使用高斯差分金字塔近似LoG算子,在尺度空间检测稳定的关键点。
2.1 尺度空间理论
scale space,尺度空间理论的基本思想:在图像信息处理模型中引入一个被视为尺度的参数,通过连续变化尺度参数获得多尺度下的尺度空间表示序列,对这些序列进行尺度空间主轮廓的提取,并以该主轮廓作为一种特征向量,实现边缘、角点检测和不同分辨率上的特征提取等。
尺度空间方法将传统的但尺度图像信息处理技术纳入尺度不断变化的动态分析框架中,更容易获取图像的本质特征。尺度空间中各尺度图像的模糊程度逐渐变大,能够模拟人在距离目标由近到远时目标在视网膜上的形成过程。
尺度空间满足视觉不变性。当我们用眼睛观察物体时,一方面当物体所处背景的光照条件变化时,视网膜感知图像的亮度水平和对比度是不同的,因此要求尺度空间算子对图像的分析不受图像的灰度水平和对比度变化的影响,即满足灰度不变性和对比度不变性。另一方面,相对于某一固定坐标系,当观察者和物体之间的相对位置变化时,视网膜所感知的图像的位置、大小、角度和形状是不同的,因此要求尺度空间算子对图像的分析和图像的位置、大小、角度以及仿射变换无关,即满足平移不变性、尺度不变性、欧几里得不变性以及仿射不变性。
2.2 高斯金字塔的构建
尺度空间在实现时使用高斯金字塔表示,高斯金字塔的构建分为两部分:(1)对图像做不同尺度的高斯模糊。(2)对图像做降采样。
图像的金字塔模型是指,将原始图像不断降阶采样,得到一系列大小不一的图像,由大到小,从下到上构成的塔状模型。原图像为金字塔的第一层,每次降采样所得到的新图像为金字塔的一层(每层一张图像),每个金字塔共n层。金字塔的层数根据图像的原始大小和塔顶图像的大小共同决定,其计算公式如下:
n
=
l
o
g
2
{
m
i
n
(
M
,
N
)
}
−
t
,
t
∈
[
0
,
l
o
g
2
{
m
i
n
(
M
,
N
)
}
]
n=log_2\{min(M,N)\}-t,t \in[0,log_2\{min(M,N)\}]
n=log2{min(M,N)}−t,t∈[0,log2{min(M,N)}]
其中M,N为原图像的大小,t为塔顶图像的最小维数的对数值。
为了让尺度体现其连续性,高斯金字塔在简单降采样的基础上加上了高斯滤波,将金字塔每层的一张图像使用不同参数做高斯模糊,使得金字塔的每层含有多张高斯模糊图像,将金字塔每层多张图像合称为一组(Octave),金字塔每层只有一组图像,组数和金字塔层数相等,每组含有多张图像(也叫层interval)。另外,降采样时,高斯金字塔上一组图像的初始图像(底层图像)是由前一组图像的倒数第三张图像隔点采样得到的。
2.3 高斯差分金字塔
有研究发现,尺度归一化的高斯拉普拉斯函数
σ
2
δ
2
G
\sigma^2\delta^2G
σ2δ2G(即LoG)的极大值和极小值能够产生最稳定的图像特征。而后Lindeberg发现高斯差分函数(Difference of Gaussian, 简称DOG算子)与LoG非常近似。
在实际计算时,使用高斯金字塔每组中相邻上下两层图像相减,得到高斯差分图像,进行极值检测。
2.4 空间极值点检测(关键点的初步探查)
关键点是由DoG空间的局部极值点组成的,关键点的初步探查是通过同一组内各DoG相邻两层图像之间比较完成的。为了寻找DoG函数的极值点,每一个像素点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。如下图所示,中间的监测点x和它同尺度的8个相邻点和上下相邻尺度对应的9x2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。
;;由于要在相邻尺度进行比较,如图3.3右侧的高斯差分金字塔,只能在中间两层进行两个尺度的极值点检测,其他尺度只能在不同组中进行。为了在每组中检测S个尺度的极值点,则DoG金字塔每组需要S+2层图像,而DoG金字塔由高斯金字塔相邻两层相减得到,则高斯金字塔每组需要S+3层图像,实际计算时S在3到5之间。【这样产生的极值点并不全都是稳定的特征点,因为某些极值点响应较弱,而且DoG算子会产生比较强的边缘效应】
2.5 构建尺度空间需确定的参数
- σ \sigma σ——尺度空间坐标
- O O O——组(octave)数【降采样】
- S S S——组内层数【滤波】
3. 关键点定位
以上方法检测到的极值点是离散空间的极值点,以下通过拟合三维二次函数来精确确定关键点的位置和尺度,同时去除低对比度的关键点和不稳定的边缘相应点(因为DoG算子会产生比较强的边缘响应),以增强匹配稳定性、提高抗噪声能力。
3.1 关键点的精确定位
离散空间的极值点并不是真正的极值点。利用已知的离散空间点插值得到的连续空间极值点的方法叫做子像素插值。
为了提高关键点的稳定性,需要对尺度空间DoG函数进行曲线拟合。
3.2 消除边缘响应
一个定义不好的高斯差分算子的极值在横跨边缘的地方有较大的主曲率,而在垂直边缘的方向有较小的主曲率。DoG算子会产生较强的边缘响应,需要剔除不稳定的边缘响应点。
3.3 有限差分法求导
有限差分法以变量离散取值后对应的函数值来近似微分方程中独立变量的连续取值。在有限差分方法中,我们放弃了微分方程中独立变量可以取连续值的特征,而关注独立变量离散取值后对应的函数值。但是从原则上说,这种方法仍然可以达到任意满意的计算精度。因为方程的连续数值解可以通过减小独立变量离散取值的间格,或者通过离散点上的函数值插值来近似得到。
有限差分法的具体操作分为两个部分:
- 用差分代替微分方程中的微分,将连续变化的变量离散化,从而得到差分方程组的数学形式。
- 求解差分方程组
4. 关键点方向分配
为了使描述符具有旋转不变性,需要利用图像的局部特征给每一个关键点分配一个基准方向。使用图像梯度的方法求取局部结构的稳定方向。在完成关键点的梯度计算后,使用直方图统计邻域内像素的梯度和方向。
方向直方图的峰值代表了该特征点处邻域梯度的方向,以直方图中最大值作为该关键点的主方向。为了增强匹配的鲁棒性,只保留峰值大于主方向峰值80%的方向作为该关键的辅方向。因此,对于同一梯度值的多个峰值的关键点位置,在相同位置和尺度将会有多个关键点被创建但方向不同。
至此,将检测出的含有位置、尺度和方向的关键点即是该图像的SIFT特征点。
5. 关键点特征描述
通过上述步骤,对于每一个关键点,拥有三个信息:位置、尺度以及方向。接下来就是为每个关键点建立一个描述符,用一组向量将这个关键点描述出来,使其不随各种变化而变化,比如光照、视角变化等等。这个描述子不但包含关键点,也包含关键点周围对其有贡献的像素点,并且描述符应该有较高的独特性,以便于提高特征点正确匹配的概率。
6.SIFT的缺点
SIFT在图像的不变特征提取方面拥有无与伦比的优势,但并不完美,仍然存在
(1)实时性不高
(2)有时特征点较少
(3)对边缘光滑的目标无法准确提取特征点
等缺点。
参考:SIFT算法详解
什么是可变形卷积
Abstract
对几何图形的变化进行建模的一般方法:(1)构建一个包含各种变化的数据集,其本质是数据扩充(2)使用具有形变不变性的特征和算法(如SIFT)。这两种方法都有很大的局限性:几何形变被假设是固定和已知的,这是一种先验信息,用这些已知的形变去处理未知的形变是不合理的;手工设计的特征或算法无法应对过度复杂的形变,即使该形变是已知的。CNNs拥有固定的几何结构,导致对几何形变的建模受到限制,论文提出了两个新模块来提升CNNs形变建模能力,称为“deformable convolution”和“deformable ROI pooling”。新模块可以很容易的取代现有CNNs的普通模块并且利用反向传播进行端到端的训练,产生可变形的卷积神经网络。
Introduction
CNNs对大型,未知形状变换的建模存在固有缺陷,这种缺陷来源于CNNs模块固有的几何结构:卷积单元对输入特征图的固定位置进行采样;池化层以固定的比例进行池化;即使是ROI pooling也是将ROI分割到固定的bin中去。这就导致了在同一层conv中,所有的激活单元的感受野是一样的,但由于不同位置可能对应着不同尺度或变形的物体,因此对尺度或者感受野大小进行自适应是精确定位非常有意义的。
“deformable convolution”和“deformable ROI pooling”都是基于一个平行网络学习offset,使得卷积核在input feature map的采样点发生偏移,集中于我们感兴趣的区域或者目标。
研究发现,标准卷积中的规则格点采样是导致网络难以适应几何形变的“罪魁祸首”,为了削弱这个限制,对卷积核中每个采样点的位置都增加了一个偏移变量,可以实现在当前位置附近随意采样而不局限于之前的规则格点。
参考:关于可变形卷积