CVPR2021
论文地址:https://arxiv.org/abs/2012.08512
代码地址:https://github.com/avinashpaliwal/Super-SloMo
1. 亮点
- 使用3D卷积来学习帧间运动信息
- 无光流估计的单次预测视频插帧方法(CAIN也是,但CAIN一次只能插一帧(t=0.5),FLAVR可以进行一次多帧预测)
2. Sampling Training Data from Unlabeled Videos
-
训练时以插帧倍数为步长从原始视频数据中进行抽帧,比如要进行4倍插帧,那么要采样的视频帧序列就是 A 1 A_{1} A1, A 5 A_{5} A5, A 9 A_{9} A9, A 13 A_{13} A13,…
-
设置了滑动窗口(时间窗口),窗口大小为2 C C C( C > = 1 C>=1 C>=1, C ∈ Z C\in\Z C∈Z),表示C组上下文帧信息(Context Frames),图中所示就是 C = 2 C=2 C=2,利用{ A 1 A_{1} A1, A 5 A_{5} A5, A 9 A_{9} A9, A 13 A_{13} A13} 作为输入,然后一次生成中间的{ A 6 A_{6} A6, A 7 A_{7} A7, A 8 A_{8} A8}帧
-
基于上述的训练过程,该网络设置了如下损失函数:
L ( { I ‾ } , { I } ) = 1 N ∑ i = 1 N ∑ j = 1 k − 1 ∣ ∣ I ^ j ( i ) − I j ( i ) ∣ ∣ 1 L(\lbrace \overline{I} \rbrace,\lbrace {I} \rbrace) =\frac{1}{N}\sum_{i=1}^{N}\sum_{j=1}^{k-1}||\hat{I}_j^{(i)}-{I}_j^{(i)}||_{1} L({I},{I})=N1i=1∑Nj=1∑k−1∣∣I^j(i)−Ij(i)∣∣1
其中, N N N表示min-batch的大小,而k-1就是要一次生成的中间帧的数量,k表示插帧倍数
3. 模型结构
-
3D U-Net结构,希望利用3D核所引入的时间维度来学习插帧所需要的时间信息(包含运动轨迹、动作以及帧间的对应关系)
-
encoder部分使用ResNet-3D(R3D)并移除了最后的分类器,取而代之的是5个3D conv模块
-
decoder部分渐进形地融合编码器特征以及多尺度上采样特征(融合高级语义信息以及低级的细节纹理信息)
-
针对decoder部分使用3D TransConv上采样导致的棋盘格伪影,在3D TransConv layers后加入了3D Conv
-
decoder部分输出的是一个3D feature map,通过一个2D Conv(时间信息融合层)转为2D feature map
-
Spatio-Temporal Feature Gating(时空特征选通模块),实际是一种注意力机制,网络中每一个block最后都会加上该模块,通过适当提高特征映射的某些block的权重,以学习更有用的信息
4.训练时的一些设置
-
基于问题的对称性,随机选择输入序列并随机对序列进行反转,也会对输入帧进行一个随机的水平翻转
-
评估阶段,对于多帧插帧,计算生成的多个中间帧的平均PSNR 和 SSIM
5.实验结果
5.1 单帧插值
-
单帧插值,视频帧率由15FPS—>30FPS
-
上述结构是在VImeo90K的训练集上训练,然后分别在Vimeo90K-val以及UCF101和DAVIS数据集上进行评估,后两者是为了测试模型的泛化能力
-
DAIN以及QVI都引入了额外的模块(已有的网络),DAIN是深度估计以及光流估计网络,QVI是光流估计网络PWC-Net
5.2 多帧插值
-
8倍插帧,相邻帧间要插入7帧,视频帧率由30FPS------>240FPS
-
在GoPro上进行训练,然后在GoPro的val集和Adobe 数据集上进行评估
-
QVI在Adobe上的效果更好,但是该模型引入了额外的预训练流估计网络
5.3 速度vs.精度
-
图3是各算法在GoPro数据集(512x512图像分辨率 240FPS)上进行8倍插帧后的一个PSNR和推理速度的比较图
-
图4文中没有提到是在哪个数据集上测出来的结果(能进行32倍插帧比较的话应该是GoPro),但从结果上来说,FLAVR的推理速度随着K的增加几乎没有增加,这一点比较亮眼
-
文章中也提到这篇工作最大的共享可能就在于提出的FLAVR在现有方法中在速度和精度上达到了最佳平衡,尽管CAIN的速度也很快,但是它只能在t=0.5时刻进行插帧,所以这也是第一篇不需要利用流估计且能进行多帧插值的视频插帧算法。
5.4 面对不同任务难度的鲁棒性比较
-
上图所示结果是在SNU-Film数据集(AAAI 2020)上测出来的,该数据集根据不同的帧间隔,设置了不同的插帧难度:
- easy(120-240FPS)
- medium(60-120FPS)
- hard(30-60FPS)
- extreme(15-30FPS)
都是进行x2插帧(单帧插值),但是很明显若帧间的时间间隔越大,帧间所具有的时间信息就会越多,网络所需要学习并预测的运动信息也会越多,难度就更大。实际上,easy,medium,hard这三个难度是如今更多场合下所需要的。
5.5 一些消融实验
-
不同的骨干网络以及上下文输入帧
-
R3D(ResNet 3D)的整体效果优于R2D
-
采用两组含上下文信息的视频帧(C=2)作为输入的效果会比较好
-
-
编码器和解码器部分的不同特征融合方式
- 比起不进行融合,在编解码器之间相同维度上采用一定的特征传输(融合)方式,能够达到更好的效果(原因:编码器所提供的细节纹理信息和解码器的一个语义信息将进行融合)
- 融合方式上,从实验结果上来说沿通道维度拼接后,在通过CNN进行聚合优于直接相加
-
时间步的设置
- 池化(pooling)和步长(striding)的设置会在一定程度上造成帧间细节信息,而对于VFI这样low-level的合成任务来说对这些细节信息又是有需求的
-
特征选通(Gating Module)的作用
- 如下图所示,在每个block后添加了Gating Module后,拥有最大激活值(注意力权重)的特征图如(b)所示会更加关注帧间可视的运动信息,这一点上和CAIN的想法是一致的
6.总结
上下文帧对中间帧的合成很重要,一般情况下不能引入太多的相关帧,这会带来太多的干扰信息,但并不意味着仅使用前后两帧作为输入(目前大部分方法还是使用这种策略),尤其是在比较高帧率的视频上插帧,时间间隔小了,更大的窗口应该也能引入更多有用信息,QVI做了转变,但实际上也仅是对运动情况做了稍微复杂一点的假设,我觉得FLAVR使用3D Conv 全靠网络自己学习运动轨迹,至少学到得轨迹是不规则的,。。大致就是我觉得前面的方法有下限,也有上限,但这个属于没下限(应该是下限比前者低)也没有上限 。文章来源:https://www.toymoban.com/news/detail-423147.html
还没跑模型,但我觉得网络要学习这么多的信息,模型可能会不太好训练,即不容易收敛文章来源地址https://www.toymoban.com/news/detail-423147.html
到了这里,关于视频插帧论文阅读(一)——FLAVR的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!