模型实现
本文的任务是在给定包含T帧的图像序列下,将每一帧分解为清晰的背景图像和各种原因造成的遮挡层。将图像分解为背景层和遮挡层是十分困难的任务,因为两层在输入图像中是强耦合的,同时也需要解决两个强耦合的问题:光流分解和每层的重建。
如果没有好的光流分解,不精确的运动估计将会使得每层无法精确地重建。但另一方面,没有良好重建的背景层和遮挡层,混合的图像无法精确估计出代表运动的光流。我们所面临的是一个鸡生蛋蛋生鸡的悖论问题,无法坚实地选择先重建光流还是两层图像。
为了解决这一问题,本文尝试利用三个模块构建的深度学习模型来处理。模型主要包括初始光流分解、背景-遮挡层重建以及光流优化三个部分。首先在在粗糙的层级上估计光流,来作为初始光流;而后渐进的重建遮挡和背景层,并对前景和背景的光流运动场进行优化。在每一层级上,利用前一层的结果和重建模块来重建背景和前景遮挡层,并利用PWC-Net来预测两层优化后的光流结果。
首先我们来分析初始光流分解模块的构成。首先需要在粗糙的层级上对前景和背景光流进行预测,针对每一层提出了均匀运动矢量来代替稠密光流场的估计。初始光流模块分为特征抽取和层流估计器两个模块。特征抽取器对输入帧特征进行特征抽取得到尺度大小的特征图结果。随后利用协方差重建出第k帧和第j帧间的损失,其中和代表抽取出的特征,x代表像素的位置。构建的cost volum与特征合并在一起输入层(光)流估计模块。
层流估计器利用全局池化和全连接层生成两个全局运动矢量。随后将全局运动矢量转换为两个均匀运动场,其空间分辨率为输入的,针对初始化层来说,得到背景层和遮挡/反射层的初始运动光流场为,。
下图显示了初始分解模块的细节:
在前景和反射层初始流估计后,就需要对每一层的图像进行重建了。虽然都是对图像进行重建,前景和背景具有不同的特点。背景图像通常在图像中占据主要位置,而反射层图像则通常较暗也较为模糊。所以分别训练了两个网络来重建前景和背景图像。下图以背景重建网络作为例子,前景重建网络也具有相同的结构。
首先将上一层级重建得到关键帧的背景与反射图像,以及得到的背景流结果进行二倍上采样;一方面使用上一层级的背景流与当前层级的输入图像基于关键帧进行变换与对齐得到背景注册的帧序列;随后计算出被遮挡或者其他问题造成的失效掩膜序列,并利用关键帧计算出差异图序列;随后失效掩膜序列、差异图序列、上采样后的上一层级关键帧反射与背景图一同叠加送入到背景重建网络中;最后通过叠加背景重建网络得到的残差与当前层级关键帧上采样背景图来得到重建后的背景图结果。
在对每一层图像进行重建后,还需要对光流进行优化。这一部分主要利用预训练的PWC-Net来估计背景图像间的光流场,值得一提的是此处PWC-Net的权重固定不参与训练:
为了改善训练的稳定性,研究人员首先对初始光流分解模块进行训练;随后将初始光流分解网络固定,对图像重建网络进行进一步训练。在训练过程中,研究人员基于Vimeo-90k数据集进行了训练数据合成,通过随机变换与裁剪,结合反射图像合成模型来构建数据集。
在模型构建后,为了提升在真实图像序列上的性能,研究人员还采用了无监督的方法来对最终结果进行在线优化:
上面的连续性损失主要基于这样的考虑,预测出的背景和遮挡结果应该可以重新变换回输入结果。此外还加入了总变分损失来鼓励网络尽可能生成自然的图像。
为了展示这种方法的广泛适用性,研究人员针对反射、遮挡和雨滴等情况进行了实验。特别需要指出的是,在针对图像遮挡移除时模型只需要重建背景层,而无需再对遮挡层进行光流和图像重建。背景重建网络只需要增加一个alpha通道来分割出障碍层。这样细微地改造后使得网络可以有效处理篱笆金属网以及雨滴遮挡等问题。