【读论文】Breaking of brightness consistency in optical flow with a lightweight CNN network


摘要

稀疏光流法是计算机视觉的基础任务。然而,该方法依赖于环境亮度一致性(brightness consistency),限制了它在高动态范围(HDR)场景的应用。本文提出一个新颖的方法,目的是通过学习光照变化鲁棒的特征图(feature map)超越图像颜色信息。特征图是特征金字塔结构的一个子序列,整合到稀疏LK光流中。通过采用这个混合光流的方法,我们克服了被亮度一致性假设的限制。具体地,我们利用轻量级网络从图像中提取特征图和关键点。对于浅的网络(shallow network),给定获得可信赖关键点的挑战,我们利用附加的深度网络支持训练过程。我们提出的轻量级网络在cpu上实现190FPS的非凡加速。为了验证我们的方法,我们用常规的光流法在动态光照条件下进行重复性和匹配性能的对比。此外,我们通过整合我们的方法到VINS-Mono中证明了我们方法的有效性,在一个公开的HDR数据集上实现平移误差减少93%。


一、引言

光流参考一个图片序列上连续帧之间的像素运动,光流法是一个为了估计连续图像之间像素运动的算法,包括稀疏光流法和稠密光流法。稀疏光流法仅估计关键点的像素运动距离,而稠密光流法估计所有位置。光流估计是计算机视觉的一个经典问题。例如,VINS-Mono[1]和OV2SLAM[2]在视觉SLAM中利用稀疏光流法作为关键模块。光流法在HDR场景的性能决定它们对于光照改变的鲁棒性。因此,光照鲁棒的光流法的研究至关重要。

历史上认为,传统的稀疏光流法是环境光照不变的,这限制了这类方法在HDR场景下的有效性。尽管子序列研究已经引入梯度连续性和像Hessian和Laplacian的不变性等其他更高级别的限制来提高光照鲁棒,但这些方法仅部分地解决了这些问题。基于学习的稠密光流法,比如FlowNet[6],提供了一个解决方法。然而,他们更低效并且需要GPU的支持。因此,没有稀疏光流法能在不依赖先前的假设在CPU上实时执行。因此,即使最先进的VSLAM[2]在HDR场景下仍然努力保持鲁棒。

我们提出一个混合光流法,该方法用传统的方法结合深度学习来克服在HDR场景下常规方法的限制。混合光流法和LK光流法的不同在图1中展示。我们的方法通过利用轻量级CNN在图像上提取光照不变的特征图(illumination-invariant feature map)和分数图(score map)开始。这些特征图超越基本的RGB信息,包含更高级的信息。接着,我们用传统的金字塔光流法整合这些特征图,产生混合光流法,如图2所示。在我们的方法中,训练过程涉及两个关键步骤。首先,我们利用一个辅助训练策略,即深度网络来提高轻量级网络的性能。其次,我们引入新的损失函数,比如掩膜神经重投影误差(mNRE)损失,来学习光照不变特征和线路尖峰损失(the line peaky loss)学习关键点分数。混合光流法实现光流计算的有效性和准确性,然后证明对于光照变化是鲁棒的。总的来说,本文主要贡献如下:

  1. 我们提出一个混合光流法,该方法不依赖与亮度一致性假设并且可以在HDR环境下正确工作。
  2. 为了提取图像的光照不变性,我们提出一个mNRE损失函数,并且在关键点提取上改善尖峰损失。
  3. 我们提出使用深度网络进行训练,使用浅的网络进行推理,平衡性能和有效性,在CPU上达到190Hz。
    图1.动态光线场景图片例子。我们在光的不同位置下收集图片证明所提方法是光照鲁棒的。在它们之中,第一张图片前向光流提取关键点,第二张图是跟踪关键点。后向光流是相反的。图1.动态光线场景图片例子。我们在光的不同位置下收集图片证明所提方法是光照鲁棒的。在它们之中,第一张图片前向光流提取关键点,第二张图是跟踪关键点。后向光流是相反的。
    图2.混合光流法的流程。首先,共享编码器提取图片的共享特征图,然后共享特征图解码得到分数图S和光照不变特征图F。利用分数图S提取关键点,用非最大抑制NMS鉴定它们。光照不变特征图F用于构建金字塔光流法。接着是金字塔LK光流法,混合光流法开始从最高级的特征金字塔中跟踪提取的关键点。特征图用于定位另一个图片中这些关键点的坐标。随后,从更上级跟踪的结果用于更低级跟踪计算的初始值,最终产生稀疏光流的结果。图2.混合光流法的流程。首先,共享编码器提取图片的共享特征图,然后共享特征图解码得到分数图S和光照不变特征图F。利用分数图S提取关键点,用非最大抑制NMS鉴定它们。光照不变特征图F用于构建金字塔光流法。接着是金字塔LK光流法,混合光流法开始从最高级的特征金字塔中跟踪提取的关键点。特征图用于定位另一个图片中这些关键点的坐标。随后,从更上级跟踪的结果用于更低级跟踪计算的初始值,最终产生稀疏光流的结果

二、相关工作

1.传统光流法

Horn和Schunck[7]提出第一个真正的光流法,该方法阐述光流估计作为一个最优化问题,最小化全局能量函数。高斯过滤器已经被引入作为变分法的预处理操作来提高噪声条件下的性能[8]。与HS相反,该方法为整个图像计算光流域,Lucas等人[3]为特定的点提出一个方法去跟踪光流。为了解决真实场景中像素位移不足的问题,Bouguet[9]提出一个金字塔结构实现由精到粗(coarse-to-find)的金字塔Lucas Kanade(PLK)。为了提高光照鲁棒性,[5]提出梯度连续性和比如Hessian一致性和Laplacian一致性等其他更高级的一致性限制。鲁棒局部光流(RLOF)[10],[11]提出相邻窗口尺寸的调整来解决普遍的孔径问题。虽然利用这些方法可以提高光流的鲁棒性,但是他们不能从根本上解决这个问题。

2.基于学习的光流法

在Dosovitskiy[6]中,CNN首次被使用于计算光流。两个端到端的网络,FlowNetS和FlowNetC,被提出直接从合成标注Flying Chairs数据集中学习光流。在FlowNet[12]中,通过为小的位移增加子网络提高了光流估计的准确率。受迭代更新的启发,循环的全对域变换(RAFT)[13]为光流估计提出一个新的网络架构,[14]进一步提高了它的检测有效性。尽管端到端的方法设计尽可能的轻量级,但是光流估计的复杂度仍然限制在GPU上实时性计算。

3.关键点检测

经典的Harris[15]关键点检测使用自相关矩阵搜索关键点。为了提高关键点的跟踪性能,Shi和Tomasi[16]提出一个选择标准,使关键点分布更均匀,该方法在光流法中广泛使用。此外,SIFT[17]、ORB[18]等几何方法被提出用于提取关键点和通过描述子匹配。

受手写特征检测器的启发,对于基于CNN检测的一个常见方法是构建响应图,以监督的方式[19]定位兴趣点。SuperPoint提出用预训练模型生成伪标签的自监督学习。此外,非监督的训练方法被使用于提取关键点,KeyNet[21]和其他方法。为了克服不可微分、非极大抑制的问题,ALIKE[22]提出可微分特征点检测模块。

我们提出的方法不属于传统光流也不属于基于学习的端到端光流。该方法用传统方法结合了基于学习的方法,在计算效率和性能之间获得惊人的平衡。我们称这个方法为混合光流法。


三、混合光流法

1.网络架构

如图2所示,网络设计尽可能的轻量化,仅使用了4个卷积操作。首先,从W x H x 3的输入图像中提取大小为W x H x 16的共享特征图。然后,共享特征图使用一个1 x 1的卷积核转换为光照不变的特征图和关键点分数图。用这个轻量级的网络,光照不变特征图包含少量的高级语义信息,同时保留更多低级图像信息。考虑对于我们的任务,低级信息是充足的。因此,设计网络的计算复杂度比其他网络更低。对每一个的详细解释如下:

(a)共享编码器:图像特征编码器将输入图像W x H x 3大小转变为W x H x 16。前两个卷积操作选择使用3 x 3的卷积核并扩展共享特征图为8通道。在上一层,一个1 x 1的卷积核被使用来增加通道数到16。ReLU激活函数在每次卷积后使用。我们在所有卷积操作中保持原始图像清晰度。

(b)特征和分数图解码器:通过解码层,将共享特征图解码到分数图,并且它是一个光照不变的特征图。解码器使用1 x 1的卷积核减少特征图的通道到4。前三个通道是光照不变的特征图,最后一个通道是关键点的分数图。在卷积之后,通过sigmoid函数将分数图激活限制在[0,1]之间。所以我们用W x H x 1的分数图和W x H x 3的光照不变特征图获得最后的输出。

2.利用光照不变特征图的光流法

首先,从分数图中提取关键点。然后,使用关键点作为光流法的初始位置。基于LK光流法,修改亮度一致性假设为光照一致特征图一致性,即在不同的图像中同样关键点的位置的卷积特征向量是一样的。假设,一个新的混合光流法被提出结合金字塔光流法。

1)关键点提取:光流法期待一个关键点更一致的分布来提高全面跟踪的鲁棒性。所以,我们使用一个类似于GoodFeaturesToTrack的函数提取关键点。首先,通过NMS在3 x 3的邻域中保留局部最大化,然后用比阈值更低的分数删除关键点。然后,我们使用最大化间隔采样方法确保关键点的一致分布。

2)金字塔光流法:根据[4],金字塔光流法可以被分为三个步骤。首先,计算光照一致特征图F(x,y,t)的空间和时间导数,称为FxFyFt。然后,所有关键点的导数合并成一个系数矩阵A和一个常数向量b
公式(1)

其中k是关键点的个数。最后,通过求解等式Av=b获得光流速度v。在我们的方法中,我们使用标准的LK光流算法,但是修改亮度一致性假设为卷积特征一致性假设。因此,我们的方法称为混合光流法。
图4. 线路尖峰损失和尖峰损失的对比。在5 x 5大小的批次里,青色方块代表得分0.5,而红色方块代表得分1。方块中的数字表示不同损失相对于方块的导数。可以看出,线峰值损失增加了对线条末端的惩罚权重。图4. 线路尖峰损失和尖峰损失的对比。在5 x 5大小的批次里,青色方块代表得分0.5,而红色方块代表得分1。方块中的数字表示不同损失相对于方块的导数。可以看出,线峰值损失增加了对线条末端的惩罚权重。

四 学习跟踪关键点和不变特征

图3描述了网络的训练过程。对于1对图像,使用一个浅的网络提取分数图S和特征图F,用深度网络提取稠密描述子图D。浅的网络是一致性的,其结构如第三节所述,然后深度网络仅用于辅助训练。关键点的损失,光照不变特征损失和描述子损失被使用于训练这三个目标输出*[S,F,D]*。关键点损失由重投影损失、线路尖峰损失和重复性损失组成。NRE函数和提出的mNRE函数分别用于描述子损失和光照不变特征损失。
图3. 网络训练过程。首先,使用浅的网络提取分数图S和特征图F。然后,为了监督训练关键点的可靠性,使用深度网络提取稠密描述子图D。最后,我们基于[S, F, D]的结果计算关键点损失,特征损失和描述子损失。图2描述的混合光流法仅使用浅的网络,而训练仅使用深度网络。图3. 网络训练过程。首先,使用浅的网络提取分数图S和特征图F。然后,为了监督训练关键点的可靠性,使用深度网络提取稠密描述子图D。最后,我们基于[S, F, D]的结果计算关键点损失,特征损失和描述子损失。图2描述的混合光流法仅使用浅的网络,而训练仅使用深度网络。

1.关键点损失

正如前面的工作[22]描述,一个好的关键点应该是可重复的、高准确率的以及可匹配的。因此,三个损失函数被训练用于提取关键点。重投影损失函数确保关键点的可重复性。线路尖峰损失函数对于提高关键点的准确率是有益的。并且,可靠性的损失使它更容易匹配提取的关键点。

1)重投影损失:在不同条件下,两张图像的关键点应该同时被提取。重投影误差被定义为投影点和提取点之间的距离。图像IA中的一个点PA投影到图像IB,投影点记为PAB。单个重投影误差是
公式2
其中PB是图像IB提取的点,||.||是向量的2-norm。重投影误差损失定义为一个对称形式
公式3
其中N是图像IA的点的数量,可以在图像IB中发现,disABi是N个特征外的第i个特征的重投影误差,M是图像IB的点的数量,可以在图像IA中发现,distBAi是M个特征点之外的第i个特征的重投影误差。

2)线路尖峰损失:在分数图上,相邻的关键点应该保持在尖峰的型状。在分数图上,考虑关键点P附近一个NN大小的批次,每个像素坐标[i,j]和关键点之间的距离为
公式4
其中||.||是向量的2-norm。[22]提出的尖峰损失被使用来减少一个批次中远距离位置的分数,定义为
公式5
其中,s(p,i,j)是关键点p附近批次位置[i,j]对应的分数。该定义均匀地查看批次内的所有像素,在训练期间,使分数图形成一个局部线性形状。因此,我们考虑4个线性模式:平行的、垂直的、左斜的和右斜的,线型随着惩罚权重增加。在关键点p附近的N
N大小的批次,四个线性权重w1, w2, w3, w4被定义为
公式6
其中[i, j]是批次内的像素位置,px,py是关键点p的坐标,N是高斯分布,|.|是1-norm。通过使用这些权重,线路尖峰损失被定义为
公式7
其中max函数是从4个线性模式中选择最大值。图4展示了由于线路尖峰损失的线最后的尖峰是增加的,尖峰损失和所提出的线性尖峰损失的导数不同。

3)可靠性损失:准确和可重复的关键点是不够的。必须要却到关键点的可匹配性。为了计算图像IA的关键点PA的可匹配性,它对应的描述子和图像IB的稠密描述子图之间的距离向量计算为
公式8
其中CdPA, DB是已知的相似图,表示图像IB上每个像素点的位置和关键点PA之间的相似度。然后,归一化函数使位置的分数趋向于1的高相似度,而趋向于0则为低相似度。因此,匹配可能性图被定义为
公式9
其中exp是用于构成归一化函数的指数函数,t=0.02控制函数的形状。对于关键点PA,它的投影位置PAB的更高匹配可能性意味着它的更高可靠性。因此,关键点PA的可靠性RPA被定义为公式
公式10
其中bisampling(M, p)是在位置P的M的双线性采样函数。然后考虑图像IA上的所有关键点,并处罚它们中的那些可靠性低的关键点分数以获得可靠性损失
公式11
其中NA是图像IA所有关键点的数量,SPA是关键点PA的分数,sPAB是投影位置的分数。

基于以上三个损失函数,我们获得关键点的损失
公式12
其中k1=1, k2=0.5, k3=1是权重,N和M是图像IA和IB的关键点数量。

2.描述子损失

NRE函数被使用来学习描述子。由于它的良好表现,我们采用它作为描述子损失。前人的工作阐述了通过交叉熵函数定义和求导NRE函数。我们给定一个更直观的说明。基于公式(8)定义的相似图,一个新的匹配可能性图被定义为
公式13
其中归一化函数softmax将相似性转换为概率并满足所有元素总和等于1。对于一个良好的描述子dPA,它应该尽可能地类似于投影位置PAB的描述子并远离所有其他描述子。因此,通过公式(10)的相同采样函数,我们获得匹配概率为
公式14
在投影位置上最大化匹配可能性,其中限制所有元素之和等于1暗示在其他位置最小化匹配可能性。然后,描述子损失函数由公式(15)获得
公式15
其中NA是图像IA的关键点的数量,NB是图像IB的关键点的数量,-ln(.)函数将最小化问题转换为最大化问题。

3.光线一致性特征损失

光线一致特征图类似于稠密描述子图,都尝试在一个各种视角和光线的图像上提取特征。不同的是,描述子通常使用64或128个通道获得,并卷积几次,然而光线一致特征图仅有3或1通道并通过4个卷积获得。因此,光照一致性特征图很难学习去获得整个图像上显著的特征。因此,我们提出用mNRE损失函数学习局部显著光照一致性特征图。考虑第一定义关键点p附近的掩模函数
公式16
其中d是掩模范围,|.|是1-norm。然后掩模是增加到NRE损失函数的公式(13)以获得局部匹配可能性图
公式17
其中mCdPA从PA范围中有一个0值。然后类似于NRE损失,我们计算投影位置的局部匹配可能性
公式18
最后,在图像IA和IB中基于所有关键点的局部匹配可能性计算损失函数为
公式19

五 实验

1.训练细节

MegaDepth被使用于训练这个模型。在数据集中训练过程的所有图像的尺寸是480*480。训练使用ADAM优化器,学习率为3e-3。设置batch为1,16个batch累积一个梯度,100个epochs。设置上使用,我们的模型在4090显卡(graphics card)上训练将近一天。

2.HPatches可靠性

为了在关键点检测上验证我们提出的模型的性能,我们在HPatches数据集上计算关键点的可重复性。我们用我们提出的方法对比了ALIKE,SuperPoint,Harris,Fast,Random几种方法。对240*320分辨率萨皇宫内提取的300个关键点计算可重复性。对于所有特征点检测方法使用同样的NMS抑制特征点聚集的现象。用两图像间的重投影距离少于3的关键点考虑为可重复的关键点,在这个阈值之上的关键点是不可重复的。在观照场景和视角场景对比的可重复性展示在表1中。我们可以看到所提出的关键点重复率是当前研究的水平。
表1
计算时间上,所有方法在同样的板子CPU I7-1165G7上运行和测量。我们在480 x 640尺寸上计算非深度学习关键点提取方法,在240 x 320尺寸上计算深度学习关键点分数图,然后在480 x 640尺寸上采样。从表格I中,可以看到所提出的方法对比其他深度学习的方法在实时性表现更好,甚至对比传统方法也是。

3.关键点跟踪

我们用典型的光线改变收集几个图像对集合并激活光线序列。图6展示了收集图像的一些样本。这些场景被分为4类,分别是室内光源改变,室外太阳光改变,活动光源和图像模糊。每类用小角度的不同但大光照改变收集5个图像对。
图6. 动态光场景的例子。收集的数据包括四个典型场景,室内光源变化、活动光源、室外太阳光变化和被光散射的图像模糊。所有图像对不满足灰度图假设。图6. 动态光场景的例子。收集的数据包括四个典型场景,室内光源变化、活动光源、室外太阳光变化和被光散射的图像模糊。所有图像对不满足灰度图假设。

使用这个数据,我们对比所提出方法的匹配结果在表2中。所有方法在480*640图像上运行,并为了匹配,限制提取大于300个关键点。暴力匹配被用于获得所有伴随描述子的关键点的匹配结果,如ORB。对采用普查变换和直方图均衡化对图像进行预处理后的光流方法进行了比较。这里没有真值,我们使用SIFT关键点匹配帧的每个集合,并在RANSAC估计基础矩阵。该矩阵用于过滤所有匹配项以获得正确的数字。表格3展示了不同场景的正确跟踪率的对比。从这个表格可以看到,提出的方法在所有场景实现最高的正确跟踪率。
表2
为了在动态光线场景验证所提方法的性能,我们还用一个活动光源收集一个序列。在VIO系统,我们在这个序列连续跟踪提取关键点的位置。正如图5所示,所提方法可以连续跟踪点边缘的关键点。此外,图7展示了所提方法在光照变化的场景可以连续跟踪关键点。传统光流法由于活动光源的干涉而失败,导致在重投影率急剧增加。
图5. 图像序列中光流法对比。在图像序列中,用活动光源模拟动态光环境。椭圆形点的边缘,恒定亮度假设不再成立,因此光流法的性能将受到挑战。当前的关键点以绿色绘制,十帧内的光流结果以红色绘制。序列中的图像对每十帧绘制一次。可以看到,传统的LK光流法在斑点边缘有较大的误差。而提出的光流法在斑点边缘的性能显著提高。图5. 图像序列中光流法对比。在图像序列中,用活动光源模拟动态光环境。椭圆形点的边缘,恒定亮度假设不再成立,因此光流法的性能将受到挑战。当前的关键点以绿色绘制,十帧内的光流结果以红色绘制。序列中的图像对每十帧绘制一次。可以看到,传统的LK光流法在斑点边缘有较大的误差。而提出的光流法在斑点边缘的性能显著提高。

图7. 关键点跟踪重投影率。在活动光源序列中,光流匹配中异常数据的数量除关键点总数得到重投影率。对比原始的LK光流法,所提出的方法有效低减少异常数据的数量,因此提高了光流的准确率。图7. 关键点跟踪重投影率。在活动光源序列中,光流匹配中异常数据的数量除关键点总数得到重投影率。对比原始的LK光流法,所提出的方法有效低减少异常数据的数量,因此提高了光流的准确率。

4.VIO轨迹估计

我们将所提的光流法嵌入流行的VIO系统,VINS-Mono。通过替换原始关键点提取算法和光流计算方法,修改VIO系统被获得。正如图8所示,一个对比测试在UMA-VI数据集上执行,该数据集用动态光线数据。当数据集只提供部分真值,我们只计算最后的轨迹平移误差,如表3所示。我们广泛地使用EuRoC数据集类似地测试,如表4。结果展示混合光流同样可以在常规数据集提高精度。
表3-4图8. 在UMA-VI数据集上序列1轨迹的对比。序列的起点和终点一致,可以看到所提的方法可以显著提高动态光场景轨迹的准确率。两个图片集合对应轨迹误差急速累积的两部分在曲线上是没有显示的,它验证了光的变化是主要的误差源。图8. 在UMA-VI数据集上序列1轨迹的对比。序列的起点和终点一致,可以看到所提的方法可以显著提高动态光场景轨迹的准确率。两个图片集合对应轨迹误差急速累积的两部分在曲线上是没有显示的,它验证了光的变化是主要的误差源。

5.烧蚀实验

这一小节包含两个对比试验,验证线路尖峰损失和mNRE损失。获得关键点可重复性之后,用尖峰损失和线路尖峰损失训练结果如表5所示。可重复性计算NMS残差期间是2,关键点数量是4,在原始图像尺寸上执行。类似地,跟踪正确率通过使用mNRE和NRE损失训练光照不一致特征图训练获得,展示如表6所示。从表中可以看到mNRE可以有效提高光流跟踪的数量。实验参数以V-C同样的方式设置。
表5-6

总结

在这篇文章中,我们提出一个混合稀疏光流法,该方法保持传统光流法的实时性的同时,在动态光线场景中提高了鲁棒性。该工作的基本思想是CNN适合于提取图像特征,而传统LK光流法适合光流计算。这两个方法的结合提高了光流法的性能。为了实现这个目标,我们提出了用轻量级网络提取关键点和提出一个光照一致性特征图。我们还提出用深度网络辅助训练过程,以及用多个损失函数训练网络。所提出方法的可重复性在HPatches数据集萨皇宫内验证,它在多个动态光线数据集上验证动态光线场景的性能。最后,将它嵌入VIO系统验证它在实际应用中的有效性。随着希望实现在比如洞穴和隧道环境改变的鲁棒性能,该工作将支持光照鲁棒的视觉SLAM的发展。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值