目录
- 1. 背景
- 2. 方法简述
- 2.1 路径优化
- 2.2 稳定帧合成
- 3.数据集构建
- 4.稳像约束函数
- 5.性能展示
本文介绍我们最新发表在IEEE Transaction on Multimedia(TMM)的工作,采用姿态传感器信息的深度在线视频稳像。在该论文中,我们构建了含有7种典型拍摄场景的数据集。并且设计了一种自适应地滤波模型,仅使用3或者10帧的缓存,高效地进行路径优化。
1. 背景
手持设备的快速发展使得人们可以随时随地进行视频的拍摄。但是对于业余拍摄者来说,如果没有专业的三脚架或者云台的支持,很难长时间保持相机的稳定。因此拍摄的视频很可能包含较大抖动,进而对于后序的后处理和压缩造成不利影响。
现有的视频稳像大多是离线方法,这些方法不能够直接应用于终端设备。对于在线视频稳像场景,算法需要利用尽量少的未来信息(较低延迟),并且遵循“采集-稳定-输出”的流程。考虑到低延迟的需求,我们考虑采用深度学习的方法来尽可能利用历史信息,减轻对未来信息的需求。当前采用深度学习的稳像方法大多仅使用图像信息,通过稀疏的特征点追踪或者密集光流来进行运动估计。然而对于低质量视频或者特征点不明显的场景,往往会降低特征的可靠性。同时,这类方法往往需要较大的计算量,并不适用于终端设备。如今的手持设备大多装配着姿态传感器,这些传感器能够提供与拍摄内容无关的准确地相机姿态。基于这些因素,我们考虑使用姿态传感器来实现视频稳像。
本文主要面对两个问题:
- 1)数据集:大量成对的稳像数据集较难采集得到;
- 2)模型定义:手持设备的相机运动较为复杂,而在线稳定的场景通常不能采用太复杂的模型结构。
针对这两个问题,我们构建了一个包含7种典型拍摄场景的数据集,同时用一种改进的三次样条插值方法来得到伪Ground-Truth。针对第二个问题,我们设计了自适应地滤波模型来动态进行轨迹优化。
2. 方法简述
图1. 本方法的处理流程图
本方法的流程图如图1所示,主要由三个模块组成:运动估计,路径优化以及稳定帧合成。首先从相机的陀螺仪及加速度计拿到原始数据,通过时间戳的对齐,积分以及插值得到每一帧图像对应的原始路径(欧拉角)及加速度计。紧接着在路径优化过程中,原始路径及加速度值一起进行运动场景的检测,依此来指导平滑模型自适应地进行滤波。得到虚拟的平滑路径,和真实相机路径一起合成稳定的视频帧。
2.1 路径优化
图2. 路径优化模块的框架图(3帧缓存为例),batch长度为64
得到了真实的路径及加速度值,我们设计了如图2所示的模型来得到平滑的虚拟路径,在这个过程中,我们希望尽可能去除不期望的抖动,而留下拍摄者的主动运动。如前文所述,不同拍摄场景的路径相差较大,因此使用单一模型来应对所有场景并不一定能达到较好的效果。基于此,我们混合两种数据来对拍摄场景进行一个检测,并且运用中间的特征对路径平滑支路进行一个“调制”。而路径平滑由两层LSTM构成。此外,模型输出的路径有可能还存在一些高频抖动,为了进一步保证输出路径的平滑,我们在气候添加了两个额外的路径修正过程:
- 1)batch内平滑
- 2)相邻batch间平滑。
在第一步中,我们采用窗口为7的高斯滤波器(对于10帧缓存窗口为21)。
在第二步中,我们考虑历史20个时间步(不引入额外的缓存)的输出构造一个启发式滤波器。其中高斯核的均值为0,标准差为3。
经过这两步,可以保证输出路径的平滑,如图3所示。
图3. 路径修正步骤的效果展示
2.2 稳定帧合成
通过真实以及平滑的相机路径(欧拉角),我们可以得到每一帧的旋转矩阵R。已知相机内参K(焦距及投影中心),进而可以得出每一帧的单应矩阵H。根据相机投影模型,可以构建出投影前后相应点坐标的对应关系:
此外因为大多数相机都为滚动快门相机,因此在大尺度抖动下,均会产生卷帘门效应。考虑到这个因素,我们更新上述模型到每一行像素。
其中tr为每一行的时间戳。因为我们可以获取较为准确地帧时间戳,因此可以通过线性插值得到每一行的时间戳。
其中t1位第一行的时间戳,ft为一帧的采集时间,fl为行数而r为相应的行索引。然而实际上对每一行均进行变换计算量较大,通常对图像进行切片,对每一片进行上述操作。在本方法中,大多场景将图像分为10片。
3.数据集构建
我们采用标定好的智能手机进行视频的拍摄和数据采集。视频分辨率为1080p,帧率为30fps,陀螺仪和加速度计的采集率为200Hz和100Hz。我们考虑了七种典型的拍摄场景:走路,上下楼梯,手持静止拍摄,平移,跑步,缩放以及快速抖动。每种场景采集10段30s的视频及包含传感器输出信息的log文件。
对于伪Ground-Truth的生成,我们采用了针对该任务优化的三次样条平滑方法。原始的三次样条旨在拟合下面一个方程:
其中xi, yi 为原始曲线坐标,xi, f(xi)为拟合后的曲线坐标。通过S值来控制曲线的拟合程度,因此在上述公式中S值的选择对生成伪Ground-Truth的质量有很大影响。因为抖动视频的轨迹较为复杂,我们希望去除不希望的抖动并且保留主观运动。如果设置S较大,则会造成过度平滑,使得主观运动被错误去除,引起较大的裁剪率;如果S较小,则不希望的抖动则会被保留。因此我们引入了一个阈值th和一个outlier-allowance thoa来自适应选择合适的S值。
首先对于下面一个公式,我们希望平滑后的值与原值相差在±th之内,若在这个范围之外,被定义为一个异常点。这样如果在这段视频中异常点的数量大于thoa,我们对S乘以0.8来减小S值。这样就会约束平滑的曲线更加贴合原路径。
4.稳像约束函数
有了伪Ground-Truth的约束,我们可以进行端到端的训练。然而我们还是希望网络不被生成的Ground-Truth所限制,因此我们设计了四个loss:稳定loss,Batch间连续性loss,Batch内平滑性loss,运动保持loss。
图4. 不同loss的图示
1)稳定loss:计算输出与label之间的差异。
2)Batch间连续性loss:约束不同batch输出间相同时间步的差异尽量小,以减小不同batch间的偏差。
3)Batch内平滑性loss:约束一个batch的输出尽量平滑。计算输出曲线的频谱,让高频分量尽量小。
4)运动保持loss:约束输入batch和模型输出batch的均值尽量一致。
5.性能展示
我们通过在步行场景中,融合连续4张间隔10帧的图像来展现我们方法的性能。
图5. 融合连续4张间隔10帧的图像的效果对比
其他的方法或多或少都有一些明显的形变或者模糊,说明这个方法生成的连续几帧细节不够连续。而我们的方法相对清晰,展现了我们方法的一些优越性。下面展示一小段视频对比,我们的方法也得到最稳定的结果。更多的视频结果对比可以参见 https://github.com/sjtu-medialab/deep_imu_vs.