阅读笔记5:董超底层视觉之美|时空的交错与融合——论视频超分辨率

原文链接:https://mp.weixin.qq.com/s/pmJ56Y0-dbIlYbHbJyrfAA

1. 多帧超分和时空超分

视频超分的本质就是多帧超分,多帧超分的历史远早于视频超分。

在早期,Super Resolution专指多帧超分,因为只有多帧超分才能补充进入真实的信息,而单帧超分主要是指插值算法。

早期的一些工作:

首篇单帧超分:《Super-resolution from a single image》

Bicubic 发表于1981年

首片多帧超分:1984年Thomas Huang《Multi-frame Image Restoration and Registration》

现在的单帧超分由于加入了生成的成分,也被叫作hallucination,我们现在仍然用face hallucination来形容人脸超分。

但是现在已经不区分这些名词了,统一称为超分。

时空超分,代表作:《Space-Time Super-Resolution》

时空耦合:

  • 运动模糊 由于相机都有曝光时间,物体在曝光时间内产生了运动,光线经过时间的积累,就产生了轨迹(如图4左)。从某种程度上讲,运动模糊带来的是空间分辨率的缺失,而弥补它的办法,恰恰是增加时间分辨率。也就是说,如果我们可以用高速相机拍摄,缩短曝光时间,增加快门速度,就能有效的减少运动模糊(如图4右)。
  • 运动混叠

第二个现象是运动混叠,当运动速度超过了帧率,那么运动轨迹的高频部分就会与低频部分混叠,产生出虚假的幻觉。比如车轮逆转效应(wagon wheel effect),我们看快速转动的车轮会感觉它好像在倒转,这就是运动混叠带来的假象。也就是说,没有正确的帧率,就没有正确的画面,时空又一次耦合在一起了。

  • 建模时空分辨率

假设真实的运动场景在时间和空间上都是连续的,那么视频就是在连续时空场景下的采样,时间降采样形成时间分辨率(帧率),空间降采样形成空间分辨率(像素)。时间采样用的是时间模糊函数(temporal blur),代表曝光时间,空间采样用的是点扩散函数(point-spread-function),代表光圈大小。当我们选出一个三维时空块(如图5所示)时,就可以对它进行时空两个维度上的降采样,在信息量不变的情况下,时空分辨率可以进行置换。

当空间分辨率不足时,可以通过时间分辨率来弥补,反之亦然。如此一来,我们要想进行视频超分,增加空间分辨率,就必须要有足够的时间分辨率(帧率)做支撑,帧率越高,动作越慢,就越容易恢复。相反的,如果帧率不够,动作很快,那就很难进行视频超分。

2 基于深度学习的视频超分

视频超分的基本框架如下图所示:包括多帧对齐模块、特征融合模块和图像重建模块。

  • 与多帧超分的区别

    视频超分的帧数更多,帧间关系更加复杂,帧间相对位移较大,且存在运动、遮挡、转场等问题。

  • 与时空超分的区别

    视频超分是从单一视频重建出高空间分辨率的视频,中间无须进行插帧,也不用考虑时空补偿。

  • 视频超分最关键的就是多帧信息的利用,成功的标准就是恢复出了单帧图像中没有的信息。

2.0 数据集

  • Vimeo-90k
    • 6万段
  • REDS
    • 270段视频
    • REDS是用手持设备拍摄的外景数据,帧率很高,相邻帧有切实有用的互补信息,而且同一场景可以利用的帧数长达100帧,能够充分验证算法的优劣。

2.1 基于CNN的方法

2.1.1 VSRnet

发表于2016年,是第一篇借鉴了SRCNN的视频超分网络。

核心贡献就是探索了多种对齐和融合的可能性:

多帧对齐:光流估计和运动补偿,其中光流估计用的是传统的光流估计算法 Druleas ,以及根据像素相似度来调节的自适应运动补偿算法

多帧信息融合:早期融合,中间融合和最后融合,中间融合的效果最好,因为它让每张图像的特征都提取的更充分,也融合的更充分。

2.1.2 EDVR

  • 对齐操作

    (1)采用可形变卷积进行多帧对齐(1x1的可形变卷积可以等同于光流对齐操作);

    (2)为了解决对齐精度不高的问题,将对齐操作放到了特征空间,而不是像素空间,特征不仅可以保留更多的图像信息,而且对精度高低不敏感;

    (3)为了解决卷积核的大小限制了它能覆盖的运动范围的问题,采用由粗到细的金字塔式对齐策略,仿照了光流估计算法的做法,可以在多个尺度上捕获运动,进行对齐;

  • 融合操作

    提供了一种时空注意力融合机制,但是效果提升其实不是特别明显;

2.1.3 BasicVSR

除了对齐和融合外,提出了一个新的关键因素:信息传递;

  • 信息传递

    每一帧提取的特征都被传递到了下一帧,通过与下一帧的融合产生出新的特征,而这个特征也会被传递到下一帧,直到整个视频流结束。也就是说,每一帧都只需要提取一次特征,也只需要与相邻帧进行对齐,但却可以将这些信息传递到最远的帧。

    BasicVSR采用的是双向传播

  • 对齐操作

    SpyNet光流对齐

2.2 基于Transformer的方法

  • Transformer与CNN相比有什么不同?

    (1)卷积具有参数共享和平移不变的特性,在所有位置的权重都是一样的,而Transformer采用的是自注意力机制(self-attention),让输入的每一个样本点都与其他位置的样本点进行对比,然后根据相似性来配比权重,再融合所有样本点的信息来获得下一层的结果。模型的拟合能力更强;

    (2)卷积具有局部性,而Transformer具有全局性,能够解决远距离和长程的信息传递问题。

  • Transformer来做视频超分有什么优势?

    Transformer具有全局性,这正是视频超分中最重要的对齐操作所需要的;

  • 相比于经典的对齐操作,Transformer做对齐有什么优势?

    光流对齐受限于光流估计的精度,而可变形卷积对齐仍然受制于卷积核大小,不能与更远的像素产生关联。但Transformer就有可能突破这个限制,让对齐操作在自注意力机制中自动完成。

通过基于swin transformer的网络来做实验,发现Transformer有对齐相邻帧的能力,而且比光流估计做的更好,只要相对运动在自注意力的窗口范围内,就不需要进行额外的对齐操作。

对于运动较大的视频超分,可以对齐图像块,而不对齐像素,用patch alignment取代pixel alignment。

2.3 基于生成模型的方法

在生成模型之前,视频超分的目标是复原:通过多帧图像来复原隐藏的亚像素信息;而生成模型可以无中生有,弱化了复原的目标。

  • 生成式视频超分的最大问题:帧间不一致性

    细节闪烁、局部噪声、色彩失调、身份改变

  • 解决帧间不一致性的思路

    为了保持帧间一致性,就需要再次对齐多帧图像,让相邻帧之间可以通信,以此来统一生成的范式

生成式复原有两种类型:对抗生成网络(Generative Adversarial Networks)和扩散模型(Diffusion Model)两个主要范式。

  • 基于gan的视频超分

    将对抗生成网络引入视频超分是比较直接的,我们可以在原有的模型上加入对抗损失函数(GAN loss),并通过帧间的特征距离来约束一致性,就可以得到生成式视频超分模型,比如BasicVSR的升级版RealBasicVSR。这样的改进不需要更换模型结构,也不用增加模型规模,因此相对简单。但也因为简单,它能够得到的效果提升也很有限。

  • 基于diffusion的视频超分

    (1)模型结构必须要依赖基模型,不能完全从零开始训练,否则就会失去强大的先验知识;

    (2)多帧对齐和约束方案都要根据基模型进行调整,不能随意改动;

    (3)训练策略和损失函数会变得更加复杂,需要参数初始化、迭代优化、修改噪声采样策略等技巧的加入。

    (4)基模型的参数量都很大,往往在十亿级别以上,这就大幅提升了训练和测试成本;

  • 基于diffusion的视频超分目前存在的问题

    视频的连续性并没有完全解决,而多帧约束的加入也限制了基模型的发挥。同时,不同的基模型也有完全不同的特点,相同的方法未必适用于所有基模型。而且,生成式视频超分缺乏公开的大规模高清数据集和统一的评测标准,难以支持算法的训练和公平对比。我们前面所提到的各种发现也都还没有被沿用过来,因此生成式视频超分还有很大发展空间。

  • 展望

    文生视频是时空生成,而不是多帧图像生成。视频超分也不应该只在图像超分的基础上进行对齐、融合、约束的讨论。

    这对视频超分也是一样的,前面讲的再多,也都是在图像的基础上谈对齐、谈融合、谈约束,什么时候视频可以被当成一个整体被处理、被放大、被输出,那前面的很多问题就都不再是问题了,我想这一天并不遥远,让我们拭目以待。

相关推荐
Moliay2 分钟前
【资料分析】刷题日记2
笔记·公考·行测·常识·资料分析
小齿轮lsl40 分钟前
PFC理论基础与Matlab仿真模型学习笔记(1)--PFC电路概述
笔记·学习·matlab
天玑y2 小时前
算法设计与分析(背包问题
c++·经验分享·笔记·学习·算法·leetcode·蓝桥杯
RaidenQ2 小时前
2024.9.13 Python与图像处理新国大EE5731课程大作业,索贝尔算子计算边缘,高斯核模糊边缘,Haar小波计算边缘
图像处理·python·算法·课程设计
酱香编程,风雨兼程3 小时前
深度学习——基础知识
人工智能·深度学习
web_learning_3213 小时前
source insight学习笔记
笔记·学习
Trouvaille ~3 小时前
【Python篇】深度探索NumPy(下篇):从科学计算到机器学习的高效实战技巧
图像处理·python·机器学习·numpy·信号处理·时间序列分析·科学计算
无妄啊______3 小时前
mysql笔记9(子查询)
数据库·笔记·mysql
#include<菜鸡>4 小时前
动手学深度学习(pytorch土堆)-04torchvision中数据集的使用
人工智能·pytorch·深度学习
拓端研究室TRL4 小时前
TensorFlow深度学习框架改进K-means聚类、SOM自组织映射算法及上海招生政策影响分析研究...
深度学习·算法·tensorflow·kmeans·聚类