【译】StableNet: Semi-Online, Multi-Scale Deep Video Stabilization

原文地址:https://arxiv.org/abs/1907.10283

原文日期:2019.7.24

翻译欠妥之处,欢迎大家在评论区批评指正

摘要

随着手持设备的普及,视频稳定算法变得越来越重要,因为这些手持设备产生视频时不可避免地会带有不希望出现的抖动。本文提出了一种数据驱动的在线视频稳定方法,并结合成对数据集进行深度学习。该网络对每个不稳定帧进行多尺度处理,从低分辨率到高分辨率,然后输出仿射变换来稳定帧。与传统的特征跟踪或光流估计方法不同的是,通过训练数据来隐式学习稳定过程,可以在线完成稳定过程。由于公共视频稳定数据集有限,我们合成了不同震动程度的不稳定视频,模拟真实摄像机的运动。实验表明,该方法在多个不稳定样本中优于其他稳定方法,但总体上仍具有可比性。此外,我们的方法在复杂的视频内容上进行了测试,发现它足够强大,可以在一定程度上抑制这些样品,即使它没有在内容物上进行明确的训练。

1.引言

手持相机和手机拍摄的视频通常包含不良的摇晃动作,这可能导致视频内容质量差。数字视频稳定是对给定的不稳定视频的后处理,它消除了高频抖动,并保留了稳定的视觉可接受的结果。一个高效和有效的视频稳定算法将是有益的,因为智能手机作为视频记录设备,并且易于颤抖的手运动占主导地位。有了一个成功的独立于硬件的视频稳定系统,用户可以在不用购买昂贵的物理稳定器的情况下制作出更好的视频。

大多数先前的视频稳定算法遵循以下步骤:

(1)摄像机路径估计

(2)摄像路径平滑

(3)基于平滑路径的稳定帧合成

这需要基于特征检测或光流估计的离线路径估计,并且可能导致错误。与以往的工作不同,我们采用数据驱动和端到端的方法来实现视频稳定,不需要中间的摄像机路径估计和明确的特征检测。此外,我们的方法还可以对视频进行在线处理,这对于实时拍摄设备来说是一个很有价值的功能。

随着计算能力的快速增长和大规模数据的可利用性,数据驱动的深度学习算法(卷积神经网络)在视频生成[24]、去模糊[23]和风格化[29]等视频处理任务中取得了突出的性能。与传统的视频稳定方法相比,数据驱动方法在优化过程中只需要很少的显式操作,并且更注重结果,因此可以将损失函数视为结果性能。然而,将深度学习应用到视频稳定中,存在两个主要挑战。首先,由于我们没有明确估计和优化摄像机路径(这是一种更直观的稳定方法),稳定过程定义需要适应于卷积网络的解决方案。第二,与现有算法不同的是,深度学习方法主要是独立于输入数据的,它需要大量的训练数据。数据不仅要足够大,而且要包含足够的方差。

为了解决训练数据的不足,我们基于直观的物理方法合成了训练数据。通过适当的参数设置,我们能够生成具有不同程度抖动的真实不稳定视频。使用合成数据的优点包括:为学习提供准确的真值输出和可扩展的数据内容。因此,我们基于140个稳定的视频片段生成了约420个不稳定的视频,其中包含超过17万帧用于培训。

对于问题的定义,我们采用了一种在线稳定和多尺度改进的方法,如图1所示。网络的输入是3组不同分辨率的帧。每组包含一个要稳定的不稳定帧,以及稳定的历史帧。历史稳定帧的采样时间间隔随分辨率的不同而不同。通常,较高分辨率的一组是由较小的采样间隔形成的。此设置用于将不同范围的时间信息合并到网络中。网络最终将输出仿射变换来稳定不稳定帧。除了原有的在线稳定问题设置外,我们还提出了一种半在线稳定方法,该方法首先稳定部分视频(即视频块),然后将新稳定的块合并回视频。该方法减少了在线稳定过程中的误差传播,使网络能够解决低频倾斜问题。

【译】StableNet: Semi-Online, Multi-Scale Deep Video Stabilization_第1张图片
图1.多尺度稳定网络概述。输入是一组由历史稳定帧和(当前*)不稳定帧构成的堆栈。我们将输入resize为3个级别,并按顺序进行处理。最后的输出是对不稳定帧进行稳化的仿射变换。请参阅我们的附加材料,包括所有输入和输出视频。

我们在两个主要方面对我们的方法进行了定量评估:保真度和稳定性。结果表明,该系统在定量上优于其他在线稳定方法,甚至在部分样本中可以实现离线稳定。我们还对模型在变焦相机和视差场景等复杂内容上的鲁棒性进行了评估,发现该方法仍能在一定程度上处理这些样本。我们的贡献可以概括为:(1)提出了一种基于深度神经网络和多尺度技术的视频稳定算法。(2)我们为未来的视频稳定工作提出了一个合成配对训练数据集。

2.相关工作

传统的视频稳定是通过估计摄像机运动轨迹、平滑原始路径和用平滑路径合成稳定的视频序列三个步骤来消除不需要的运动。在路径估计方面,这些方法主要应用于二维或三维视角,而Jin等人[7]提出了2.5d帧间运动模型,处理了仿射变换,实现了实时稳定。

在二维摄影方面,Hu等人[6]提取尺度不变特征,通过高斯核滤波去除抖动。在[12]中还使用了仿射模型来描述帧间变换,并使用递归卡尔曼滤波来稳定轨迹。粒子滤波改进了[27]中的估计,并显示出更强的鲁棒性。Grundmann等人[5]提出了一种应用多约束条件下的L1优化算法,合成的平滑路径由常量、线性或抛物线运动组成。在[14]中实施了子空间约束,并适用于长视频,生成了视觉上可信的视频。特别是对于摄像机运动的估计,已经开发出许多方法。松下等人[18]将轨迹分为全局运动和局部运动,并采用运动修复来提高视频质量。另一种估算帧间摄像机运动的方法是Bosco等人开发的动态时间扭曲技术。[1]用于移动物体视频。Liu等人[17]提出了处理空间变化运动的稳定流模型。通过粒子平流框架[20],在湍流条件下减缓了摄像机的运动。Lee等人没有聚焦于相机运动路径。[10]优化了不稳定视频的特征轨迹,在稳定视频中产生了较少的未定义空间。

对于包括焦距变化的三维透视图,Liu等人[13]在3D相机运动中重建动态场景,以获得直观可信的结果。Gold Stein和Fattal[4]采用了极性点传输技术,用于移动摄像机和目标视频,匹配3D方法的功能,无需场景重建。Zhang等人[28]通过处理稀疏线性方程组解决了这个问题。此外,Liu等人[16]通过一组摄影机路径处理摄影机运动,并成功地处理视差和卷动快门效果。

除了以上离线方法,还有几种实时应用所青睐的在线方法。拉塔孔达[21]提出了一种二维累积运动曲线的原始在线稳定算法。计算了[3]中连续帧之间的光流,并用正则化方法优化了相机路径。Liu等人[15]仅使用过去的运动呈现网格流。Karpenkoet等人[8]演示了陀螺仪在手机上自动校准的实时稳定性。Wang等人[25]最近使用卷积网络提出了Stabnet通过将历史帧加载到网络中并直接生成单应性矩阵来执行在线稳定。然而,这种方法可能会导致严重的误差传播,因为前者的失误导致后者的视觉性能异常。

我们提出的系统使用卷积网络来提取帧间转换,这种转换并不明确地估计摄像机的运动路径或特征轨迹,而是留给网络进行隐式学习。为了在稳定过程中达到多层次的精细化,我们参考了文献[2]中的金字塔实现方法,改进了光流检测的性能,构造了三个不同分辨率的层次来进行稳化的迭代调整。据我们所知,我们的方法Stablenet是第一个在多尺度环境中使用深度卷积网络进行视频稳定的方法,与最先进的方法相比,它产生了具有竞争力的结果。

3.方法

我们将任务设定为在线稳化,输入仅包含历史信息,但不包含未来信息。该模型一次处理一个帧,给定一个帧组,其中是历史稳定帧,是当前不稳定帧。网络从帧组中捕捉到潜在的摄像机运动后,输出相应的仿射变换以稳化当前帧。我们将仿射变换简化为3个更具物理意义的参数,分别对应于旋转角度、轴平移和轴平移。不包括缩放因子,因为它并不是不稳定的主要来源。对于模型的输入,给出了3种不同分辨率的图像帧的堆栈,以使得3级多尺度优化(第3.1节)。为了更好地结合长期和短期的帧间运动,我们为具有不同分辨率的图像帧的堆栈设置了不同的采样间隔(第3.2节)。然后在数据集上对模型进行训练,包括有监督和无监督的损失函数(第3.3节)。在测试期间,网络逐帧稳定视频。为了进一步减小逐帧稳定引起的误差传播,我们提出了一种逐块稳定方法,可以将其视为半在线方法(第3.4节)。

3.1多尺度稳定网络结构

我们采用了Siamese网络作为主干网络,接着是3个尺度的部分。所有层都是卷积层,以便更好地保存空间信息。图2显示了我们模型的细节。选择Siamese网络是因为它被证明能出色地捕获帧间运动[11],帧间运动是视频稳化的关键信息。在训练期间,和分别传递到网络的两个分支,每个分支包含3个不同的分辨率。不同的分辨率是由原始图resize得到的。我们将表示为帧索引,表示分辨率索引,其中表示帧总数。网络处理低分辨率图像帧的堆栈,并生成一个中间仿射变换,其将应用于下一个分辨率的不稳定帧。然后网络处理下一个分辨率的堆栈。每个后续级别的输出作为前一级别的修正。

【译】StableNet: Semi-Online, Multi-Scale Deep Video Stabilization_第2张图片
图2.网络架构。多尺度稳定网络是基于Siamese。选择两个连续的不稳定帧,分别形成两个输入堆栈。帧堆栈将被调整为3个级别。两种损失分别计算,并通过网络反向传播。

3.2变化的采样时间间隔

输入堆栈包含一组历史稳定帧 和一个当前不稳定帧。 历史帧堆栈由23个稳定帧构成,以恒定的时间间隔采样。因此,,如果下标小于1,则使用第一帧。对于单个,需要解决一些问题。如果采样间隔太大,会导致非相干变换,因为输入缺少来自邻近帧的运动。对于采样间隔不足的情况,整个视频将发生长期倾斜。

因此,我们为具有不同分辨率的堆栈选择不同的采样率,以更好地捕获时间信息。低分辨率堆栈选择较大的时间间隔,因此低分辨率输入包含长期时间信息。基于从低分辨率输入中捕获的长期动态,网络输出原始仿射变换,在下一个分辨率中进一步修正。由于高分辨率的堆栈作为小范围的改进,采样间隔应该更小,这样可以更好地提供附近帧的信息,并使帧之间的变换更平滑。

3.3损失函数

损失函数包括两个部分:相似度和平滑度。

【译】StableNet: Semi-Online, Multi-Scale Deep Video Stabilization_第3张图片

和分别表示第个不稳定帧和稳定帧。是对于的预测的仿射变换。是仿射变换的真值。为了简化问题, 只包括旋转和平移,因此可表示为。是平衡两部分的系数。

相似度损失

相似度损失是一种监督损失,它根据真值评估模型的预测。仿射变换真值可以从训练数据的合成过程中得到。相似度损失由两部分组成,一部分是参数层面的比较,另一部分是图像层面的比较。

参数层面项对模型输出有较强的指导作用,使训练过程更快地收敛。图像层面项为模型提供了视觉质量指导,将模型稳定帧与真值稳定帧进行比较。损失可以表示为

【译】StableNet: Semi-Online, Multi-Scale Deep Video Stabilization_第4张图片

其中是图像的空间尺寸,是平衡两项的系数。

平滑度损失

平滑度损失是一种无监督损失,用于评估连续帧之间的平滑度。为了测量平滑度,我们首先计算两个稳定帧之间的变换。根据Lucas Kanade方法[2]计算的光流和Good Features to Track[22] 来计算。请注意,此估算仅用于计算训练损失,测试阶段不需要。然后我们计算和之间的差异,如果两帧都稳定,取值应该接近于零。公式为

3个分辨率级别的损失在处理最后一个分辨率后进行累积和反向传播。注意,除了最低分辨率外,损失计算中使用的仿射变换是经过修正后的变换。

3.4半在线视频稳化

训练期间,真值稳定帧输入到堆栈中。测试期间将没有真值稳定帧,因此堆栈是由以前稳定过的帧形成的。然而,这在测试期间很容易发生错误传播。例如,随着视频长度的增加,稳定的场景可能会错误地倾斜,尽管视频仍然可以被视为稳定的。除了采用变化的采样时间间隔外,我们还提出了一种半在线稳定方法来解决误差传播问题。首先,整个视频被分成小块,其中每个块包含的帧的数目相对较少(32),因此。然后,该模型分别稳定每个块,假设每个块的第一帧是稳定的,并产生一系列稳定过的块。对于块合并,每个块将进行另一个块层面的仿射变换,其是基于之前合并的块,以及当前块的第一帧。这一步起到了块层面的稳定的作用。这种方法可以解释为半在线,因为它一次处理一小批帧,而不是一次处理一个帧。然而,由于每个块中的帧数量很少,它仍然利用在线稳定的优势。此外,该方法还成功地降低了标准的在线视频稳定引起的误差传播的影响。

3.5实现细节

我们的网络的详细实现可以在图3(原文似笔误成图2)中查看。我们使用Adam 优化器[9]对我们的网络进行了训练,学习率为0.001,每5个周期的指数衰减=0:98,批量大小为96。在4张Nvidia GTX 1080Ti显卡上进行训练时,大约花了60个小时才能涵盖到170000个样本上。

【译】StableNet: Semi-Online, Multi-Scale Deep Video Stabilization_第5张图片
图3.实施细节。所有padding都是valid padding。注意,没有全连接层,以更好地保留空间信息。

我们还规范化了输入和输出域。观察到模型输出在训练的初始阶段太大,导致平移超出边界,我们将目标值放大1000倍数以避免小数错误。所以中的每一个都在[1000;1000]范围内,并且在构造仿射矩阵时会被缩小回去。实验中的参数设置为:。对原始帧进行了区域内插,得到了30×30、125×125、256×256三种分辨率,分别对应于6、3、1(帧)的采样间隔。

输入栈中的稳定帧是通过对不稳定帧进行真值仿射变换生成的。这将导致带有一些黑色边框的帧,以便更好地模拟测试期间的输入。此外,我们还为训练数据添加了稳定的堆栈,因此正确的输出应该是恒等变换。这是为了抑制模型在不变地执行转换,即使没有这样的需求。实验中稳定与不稳定训练样本的比值为0.2,为模型增加了足够的正则化量。

4.训练数据

数据采集是神经网络训练过程中面临的挑战之一。由于合适的数据集资源很少,包括稳定和不稳定视频对,因此我们利用人工噪声抖动构建了自己的数据集。我们考虑了Wang等人提出的并行硬件训练数据采集方法[25]。然而,由于特征点选择不当等因素,在光流检测中不可避免地会出现从稳定帧到不稳定帧的估计误差,在计算损失时会引起不一致。因此,我们开发了一种包含旋转和平移的震动合成算法。由于我们提出的方法集中于二维空间的稳定,因此我们不包括视频合成中的深度变化。这样,我们就只需要把稳定的视频收集起来作为合成的基础,不仅可以实现视频对之间的同步,而且由于我们能够通过采用多种参数将真值视频扩展到不同程度的人工振动,所以也更高效。

对于稳定的视频,我们选择了不包含场景变化和字幕的视频,这些都会影响用于训练的帧堆栈的内容。为了防止网络过拟合,需要保证摄像机运动类型和视频内容的多样性。因此,采集的视频包括电影剪辑、音乐视频、现场音乐会、体育录像等,摄像机的运动一般涉及静态、平移和locomotive类型。

在积累了140多个稳定视频后,每个视频长约15秒,一般24FPS。我们利用旋转角和平移矢量导出的仿射变换矩阵在稳定帧上添加了人工噪声。矩阵计算形式为:

其中是旋转角,是水平和竖直方向的平移,,其中是旋转中心(在我们的合成过程中,设定为640,360,因为这是原始的稳定帧的中心)。

我们开发了三组与小、中、大震动范围相对应的参数,这些参数在的范围内以及两个随机分配参数之间的时间间隔内变化。为了进一步阐述这一点,我们利用线性插值技术保证合成的视频与手持设备的真实不稳定视频相似。每隔一定的时间间隔(如4、6帧),我们为每个参数生成两个随机数;在当前的时间间隔内,我们根据帧索引将由插值方法计算的数值分配给每个过渡帧,这样一来合成到视频就不会受相邻帧之间突发变化和松弛变化的影响。震动的程度体现在随机数生成的初始化过程中,其中标准偏差是不同的。

此外,由于稳化过的帧在稳定过程中被用作帧堆栈的一部分,因此无法避免仿射变换产生的黑边界。因此,我们必须将这些未定义的区域包括在真值视频中,而不是直接将原始视频为标准。为了增加合理的边界,我们用逆矩阵变换不稳定的帧,为每个合成的不稳定帧生成一个稳定的视频,这个变换也可以从人工参数中推导出来。我们最终共有420对视频,分为390对训练对和30对验证对,根据摄像机运动类型精心选择验证对,以代表各种稳定效果。图4展示了数据集的一些示例框架。

【译】StableNet: Semi-Online, Multi-Scale Deep Video Stabilization_第6张图片
【译】StableNet: Semi-Online, Multi-Scale Deep Video Stabilization_第7张图片
【译】StableNet: Semi-Online, Multi-Scale Deep Video Stabilization_第8张图片
图4.数据集中的一些帧。数据集包括大约420对稳定的和合成的不稳定视频,其从140个稳定的视频剪辑中获得,带有三个不同程度的摄像机抖动。黑边界在训练数据中保留,以便更好地模拟测试阶段中的输入。

5.实验和结论

在本节中,我们将我们的方法与现有的几种视频稳定算法[16、4、5]和iMovie稳定器进行了比较。评估主要从两个方面进行,即结果的保真度和稳定性(第5.1节)。评估结果将在第5.2节中显示和讨论。我们还对那些仅用仿射变换不能完全稳定的样本进行了测试,发现我们的模型仍然可以稳定这些样本(第5.3节)。最后,我们方法的当前局限性将在第5.4节中进行考察。

5.1评价指标

保真度

如Morimotoet等[19]所建议,利用峰值信噪比(PSNR)可以评估视频稳定系统的保真度。

直观地说,一个完全稳定的图像序列在理想情况下不会有残留的运动。因此,两个连续帧的像素之间没有差别。因此,两个连续帧之间的PSNR越大,序列就越稳定。虽然场景中的对象通常在帧的转换之间移动,这会导致像素值的差异,即使视频是稳定的,但这种直观的评估指标仍然提供了对稳定系统性能的洞察。在我们的实验中,我们测量了整个稳定视频的平均PSNR作为该方法的保真度。

稳定度

根据[16]提出的标准,我们通过对估计的相机路径的二维运动进行频域分析来测量输出视频的稳定度。相机路径根据帧间的累积单应性变换来估计:,其中帧间的单应性变换是根据基于特征的光流检测计算出来的。低频运动的功率比例越大,路径越稳定。在理想的稳定情况下,该比例接近1。在我们的实验中,我们计算了从第2个至第7个低频分量的功率之和占所有频率分量总功率的比例。我们评估了旋转、水平平移和垂直平移分量的能量百分比,并选择这三个值中的最小值作为视频的稳定性度量。

5.2.结果与评价

实验是在[16]中提供的视频剪辑上进行的。我们比较了[16,4,5]中的工作,以及iMovie的稳定器。在视频保真度方面,如图5(a)所示,我们的方法有时可以优于其他离线、基于路径优化的方法,并且与商业软件相当。至于稳定性测量,它的表现类似于保真度,根据图6,我们的方法有时可以与其他离线算法相媲美。由于我们的方法是一种在线方法,因此它不能持续优于其他离线方法。由于缺乏未来的信息和稳定过程中的误差传递,会影响性能。

图5(b)显示了与其他在线方法在保真度方面的比较。对[26]中发布的数据进行了比较。结果表明,我们的方法在保真度方面优于[26],并且具有与[15]相当的结果。在稳定性方面与在线方法相比,图6显示了我们的方法具有与Liud等[15]相当的结果。[15]

【译】StableNet: Semi-Online, Multi-Scale Deep Video Stabilization_第9张图片
【译】StableNet: Semi-Online, Multi-Scale Deep Video Stabilization_第10张图片
图5.逼真度实验结果。通过计算平均帧间PSNR(单位:dB)来测量保真度:(a)显示了相比较现有SOTA及商用软件的评估;(b)具体显示了与在线稳定方法的比较。结果表明,我们的方法和目前最先进的方法具有可比性,略优于其他在线方法。


【译】StableNet: Semi-Online, Multi-Scale Deep Video Stabilization_第11张图片
图6.稳定性实验结果。通过频率分析,根据旋转、水平平移和垂直平移的最小能量百分比测量稳定性。对现有的稳定算法、代表商业产品的imovie和我们提出的stablenet模型进行了比较。

5.3.鲁棒性

请注意,虽然我们的模型目标是解决由行走和意外的手运动引起的规则抖动,但我们的方法足够强大,在某种程度上可以稳定更复杂的内容,如变焦相机和带有视差的室内场景。评估如图7所示,这是对[16]中变焦和视差类别的视频进行的。结果表明,在这类内容上,我们的模型在数量上与[16]相当,即使设置没有显式地处理它们。

这可能是使用隐式包含这些类型内容的合成数据集的优点。虽然我们的数据集仅通过简单的转换进行合成,但是合成数据集的内容和抖动模式的可伸缩性是一个优势,可以提供额外的变化。我们的大型数据集与深度神经网络结合能很好地work,并具有鲁棒性。

【译】StableNet: Semi-Online, Multi-Scale Deep Video Stabilization_第12张图片
【译】StableNet: Semi-Online, Multi-Scale Deep Video Stabilization_第13张图片
图7.(a)变焦和(b)视差视频的保真度和稳定性。虽然在我们的模型的输出仿射变换中没有缩放或网格扭曲,但是我们的模型显示出足够的鲁棒性来处理缩放和视差场景。这可以归因于使用的数据集变化很大,其中包含这些更复杂的场景。

5.4.局限性

虽然我们的方法能够处理包含简单二维运动的常规不稳定视频,但由于相对简单的输出,它限制了处理其他更复杂的问题,如自然处理卷帘门效果。这可能是未来要做的工作,通过修改模型输出以更好地处理更复杂的帧间运动。我们方法的另一个局限性是,相比低频抖动,高频抖动处理效果更好;相比大运动,小运动处理效果更好。这可能导致在一些情况下似乎具有较低的视觉稳定性。这可能是因为我们的训练数据中的模式有限,这些模式不包含剧烈的运动。在训练数据中添加更多的震动模式应该能够解决这个问题。

6.结论

我们已经介绍了Stablenet,这是一种采用深度学习技术的半在线多尺度稳定方法。该模型可以通过提取和分析历史框架中的潜在模式来稳化不稳定的图像帧。该方法无需运动估计,可用于在线稳定。我们还为未来的数据驱动的视频稳化工作提供了一个配对数据集,其中包含基于公共视频的三种抖动类型的420个合成视频。定量评估表明,我们的模型不仅能够在常规的不稳定视频上与以前的SOTA和商业软件相比,表现出稳化的性能,而且还通过使用我们的大型合成数据集获得了强大的鲁棒性。

你可能感兴趣的:(【译】StableNet: Semi-Online, Multi-Scale Deep Video Stabilization)