以PP_MSVSR带起的视频超分论文小结 - yubo105139/paper GitHub Wiki

提升图像主观质量应用案例

画质修复

  • 智能去噪
  • 智能去划痕
  • 智能去抖
  • 智能上色
    • Deoldify :自动为黑白图像上色,在图像的上色方面有着较好的效果
    • DeepRemaster:根据输入的任意数量的参考帧对图片/视频进行上色

画质增强

  • 细节纹理增强

  • 色彩增强

  • 饱和度增强

  • 亮度增强

  • ROI增强

画质超分

  • 智能升分
    • 单帧超分 RealSR:有效降低噪声及大幅度提高视觉质量
    • 视频超分 EDVR:有效利用帧间的信息,快速实现视频超分
  • 智能插帧
    • DAIN :合成视频中间流,实现视频补帧,提高播放流畅度
  • SDR to HDR

基于视觉AI的多维修复和增强技术,大幅提升主观画质

  • 利用多帧相关信息去除压缩引起的噪声、块效应、伪影、抖动等
  • 利用周边质量较高的帧提升当前帧质量
  • 调整画面色彩、饱和度、对比度、亮度,突出边缘纹理等细节部分

视频超分

视频相邻帧之间存在运动或场景偏移,直接使用相邻帧信息会导致超分效果差。

视频超分就包括帧间对齐和特征融合。

image-20220211094357528

对齐模块

基于光流场的对齐 SPyNet ---- ???

光流场描述的是视频相邻帧之前的物体运动偏移,具体记录了像素点的移动方向和位移。

光流场记录了xy轴的位移。

使用SPyNet输入来自同一视频的两帧,输出两帧之间的光流场。

输入待对齐帧和光流场,获得每个像素点的位移和方向,输出对齐后的视频帧。

基于可形变卷积的对齐 ---- 不好训练,不稳定

**目标:**让相邻帧对齐当前帧

可形变卷积(DCN):输入相邻帧、相邻帧和当前帧之间的偏差(offsets),输出对齐后的相邻帧。

  • 第一步:利用当前帧和相邻帧,通过几个卷积,获得相邻帧和参考帧之间的偏差(offsets)

offset为2N*W*H,表示每个像素点的N个偏移方向和位移(抽象)

$\text { offsets }\left{\Delta \mathbf{p}_{n} \mid n=1, \ldots, N\right}, \text { where } N=|\mathcal{R}|$

  • 第二步,利用偏差,通过可形变卷积,得到对齐后的相邻帧,特殊点:卷积响应区域由$P_0+P_n$变成$P_0+P_n+ΔP_n$

$\begin{aligned} &\mathbf{y}\left(\mathbf{p}{0}\right)=\sum{\mathbf{p}{n} \in \mathcal{R}} \mathbf{w}\left(\mathbf{p}{n}\right) \cdot \mathbf{x}\left(\mathbf{p}{0}+\mathbf{p}{n}+\Delta \mathbf{p}_{n}\right) \ &\mathcal{R}={(-1,-1),(-1,0), \ldots,(0,1),(1,1)} \end{aligned}$

看上方公式就是将点延伸到周围八个点一共九个点的关系

是无监督的模型训练

特征融合

特征融合分为传播模块和融合模块,而传播可以采用局部、单向和双向传播三种方式,特征融合采用的方式常为Concate

单向传播 ---- 待补充

双向传播 ---- 待补充

局部传播 ---- 待补充

视频超分相关论文介绍

EDVR ---- 采用局部传播方式,参数大,难训练,不稳定

EDVR模型在NTIRE19视频恢复和增强挑战赛的四个赛道中都赢得了冠军,并以巨大的优势超过了第二名。视频超分的主要难点在于

  • (1)如何在给定大运动的情况下对齐多个帧;

  • (2)如何有效地融合具有不同运动和模糊的不同帧。

    首先,为了处理大的运动,EDVR模型设计了一个金字塔级联的可变形(PCD)对齐模块,在该模块中,从粗到精的可变形卷积被使用来进行特征级的帧对齐。

    其次,EDVR使用了时空注意力(TSA)融合模块,该模块在时间和空间上同时应用注意力机制,以强调后续恢复的重要特征。

image-20220211101157689

模型创新:

a) 设置PCD模块对齐

b) 设计TSA模块融合特征

模型思路:

a) 滑动窗口方法,多帧输入,恢复中间帧

b) 局部传播,让输入的多帧与中间帧对齐

c) 基于DCN,设计PCD模块用于对齐

d) 特征聚集模块,设计TSA模块加强特征融合

模块介绍:

PCD模块

image-20220211102050540

如上图PCD模块采用三步走策略:

第一步:对输入的中间帧和相邻帧进行两次下采样,构成3层金字塔结构

$F_{t+i}^{l+1}=f_{\text {stride } 2 \text { conv }}\left(F_{t+i}^{l}\right), F_{t+1}^{1}=F_{t+i}$

第二步:在每一层中使用DCN(DConv)将相邻帧对齐中间帧,输出对齐后的相邻帧

$\begin{gathered} \Delta \mathbf{P}{t+i}^{l}=f\left(\left[F{t+i}, F_{t}\right],\left(\Delta \mathbf{P}{t+i}^{l+1}\right)^{\uparrow 2}\right) \ \left(F{t+i}^{a}\right)^{l}=g\left(\operatorname{DConv}\left(F_{t+i}^{l}, \Delta \mathbf{P}{t+i}^{l}\right),\left(\left(F{t+i}^{a}\right)^{l+1}\right)^{\uparrow 2}\right) \end{gathered}$

第三步:对金字塔结构输出的对齐的相邻帧再做一次DCN(DConv)对齐,输出最终对齐的相邻帧

$\begin{gathered} \Delta P_{t+i}^{0}=f\left(\left[\left(F_{t+i}^{a}\right)^{1}, F_{t}^{1}\right]\right) \ F_{t+i}^{a}=\operatorname{DConv}\left(\left(F_{t+i}^{a}\right)^{1}, \Delta P_{t+i}^{0}\right) \end{gathered}$

TSA模块 时空attention

image-20220211102938755

时序 attention

通过对相邻帧和参考帧的feature map做点乘得到该相邻帧的时序 attention map

$h\left(F_{t+i}^{a}, F_{t}^{a}\right)=\operatorname{sigmoid}\left(\theta\left(F_{t+i}^{a}\right)^{T} \phi\left(F_{t}^{a}\right)\right)$

这些相邻帧与其对应的时序 attention map 逐元素相乘得到 时序 attention 加权后的 feature map

空间 attention

通过金字塔结构获取空间 attention map

通过点乘和一个加法算子得到空间 attention加权后的feature map

模型不足

  1. 模型太大

  2. 难训练,训练太长 (四卡一周左右)

  3. 对齐模块DCN完全自监督,训练不稳定,不容易训练

  4. 没有完全利用序列信息

BasicVSR ---- 受限于帧数

BasicVSR在VSR的指导下重新考虑了四个基本模块(即传播、对齐、聚合和上采样)的一些最重要的组件。 通过添加一些小设计,重用一些现有组件,得到了简洁的 BasicVSR。与许多最先进的算法相比,BasicVSR在速度和恢复质量方面实现了有吸引力的改进。 同时,通过添加信息重新填充机制和耦合传播方案以促进信息聚合,BasicVSR 可以扩展为 IconVSR,IconVSR可以作为未来 VSR 方法的强大基线 .

模型思路

  • a) 仅使用basic模块构成的循环VSR模型

  • b) 采用双向传播和预训练的SPyNet做对齐

  • c) 输入帧扩大为15帧,获得更多的相邻帧信息

  • d) 仅使用basic模块,达到了SOTA性能

模型不足

  • 当输入帧数下降时,模型超分效果快速下降;即依赖输入帧数,输入帧数下降模型效果会降低

BasicVSR++ ---- 受限于帧数

BasicVSR++通过提出二阶网格传播和导流可变形对齐来重新设计BasicVSR。通过增强传播和对齐来增强循环框架,BasicVSR++可以更有效地利用未对齐视频帧的时空信息。 在类似的计算约束下,新组件可提高性能。特别是,BasicVSR++ 以相似的参数数量在 PSNR 方面比 BasicVSR 高0.82dB。BasicVSR++ 在NTIRE2021的视频超分辨率和压缩视频增强挑战赛中获得三名冠军和一名亚军。

模型创新

  • a)在传播模块设计二阶网格传播结构

  • b)在对齐模块设计光流引导的可形变卷积

模型思路

  • a) 基于BasicVSR改进的循环VSR模型
  • b) 改进了BasicVSR的传播模块和对齐模块
  • c) 输入帧进一步扩大为30帧
  • d) 新设计的结构以与BasicVSR相似的参数量,达到了更好的结果。

模型结构对比

image-20220211104231039

模块介绍

传播模块

image-20220211104535079

传播模块:二阶网络传播结构

对齐模块:传播过程中采用光流引导的可形变卷积对齐

特征聚集模块:Concate

上采样模块:Pixel-Shuffle

光流引导的可形变卷积对齐结构

image-20220211105145185

第一步,使用光流场将前一帧与当前帧对齐,得到预对齐特征:

$\bar{f}{i-1}=\mathcal{W}\left(f{i-1}, s_{i \rightarrow i-1}\right)$

第二步,将预对齐特征与当前帧concate并通过几个卷积得到offsets和masks,将光流与offsets逐元素相加得到新的offsets:

$\begin{aligned} &o_{i \rightarrow i-1}=s_{i \rightarrow i-1}+\mathcal{C}^{o}\left(c\left(g_{i}, \bar{f}{i-1}\right)\right) \ &m{i \rightarrow i-1}=\sigma\left(\mathcal{C}^{m}\left(c\left(g_{i}, \bar{f}_{i-1}\right)\right)\right) \end{aligned}$

第三步,用得到offsets和masks,使用DCN将前一帧与当前帧对齐,得到对齐后的前一帧特征:

$\hat{f}{i}=\mathcal{D}\left(f{i-1} ; o_{i \rightarrow i-1}, m_{i \rightarrow i-1}\right)$

效果较好,不是无监督的,便于训练

模型不足

  • 当输入帧数下降时,模型超分效果快速下降;即依赖输入帧数,输入帧数下降模型效果会降低

PP_MSVSR

百度自研的PP-MSVSR是一种多阶段视频超分深度架构,具有局部融合模块、辅助损失和细化对齐模块,以逐步细化增强结果。具体来说,在第一阶段设计了局部融合模块,在特征传播之前进行局部特征融合, 以加强特征传播中跨帧特征的融合。在第二阶段中引入了一个辅助损失,使传播模块获得的特征保留了更多与HR空间相关的信息。在第三阶段中引入了一个细化的对齐模块,以充分利用前一阶段传播模块的特征信息。大量实验证实,PP-MSVSR在Vid4数据集性能优异,仅使用 1.45M 参数PSNR指标即可达到28.13dB。

代码见地址,附带PaddleGAN对PP_MSVSR视频讲解

模型创新

    1. 多阶段视频超分方法
    1. 设计局部融合模块
    1. 在第2阶段引入辅助Loss
    1. 新的对齐模块再对齐模块

模型思路

    1. 结合滑动窗口VSR方法和循环网络VSR方法,设计多阶段VSR方法
    1. 在3个阶段设计局部融合模块、辅助Loss、和再对齐模块用于融合和对齐特征
    1. 输入帧设定为20帧,PP-MSVSR模型为轻量模型,以最低的参数量在轻量模型中达到SOTA性能。
    1. 推出大模型PP-MSVSR-L,以相似的参数量,超过当前SOTA模型指标。

模型结构

image-20220211133026517

整理网络是一个多阶段视频超分网络,在每个阶段输出的特征均可重构出超分视频。

  • 1) 在stage-1设计局部特征融合模块使特征包含其相邻帧信息
  • 2) 在Stage-2引入辅助Loss来让特征更接近真实高分辨率特征空间
  • 3) 在Stage-3引入再对齐模块重复利用第二阶段对齐产生的mask和offset来进行特征的再对齐和加强传播

模块介绍

LFM局部融合

image-20220211134143613

局部融合模块的目的:

让当前帧特征融合其相邻帧特征

局部融合模块的过程:

  • 1)让相邻帧特征与当前帧对齐

  • 2)将对齐的相邻帧特征与当前帧通过concate和几个卷积进行融合

$f_{L F M}^{i}=\mathcal{C}\left(\mathcal{A}{F G D}\left(g{i-1}, g_{i}\right), g_{i}, \mathcal{A}{F G D}\left(g{i+1}, g_{i}\right)\right)$

SPyNet光流法对齐

image-20220211135010710

改变:

  • 用kernel_size为3的卷积替换kernel_size为7的卷积
  • 减少基础模块数量

结果:

  • SPyNet精度几乎不变(下降0.3%)
  • 模型大小5.5M->0.56M,降低90%参数量

Auxiliary loss

使得特征更加接近于HR图,作为第二阶段的特征图上采样和HR图之间做的loss

$A u x L o s s=\frac{1}{N} \sum_{i=0}^{N} \sqrt{\left|U p\left(f_{\text {stage } 2}^{i}\right)-Y_{g t}^{i}\right|^{2}+\varepsilon}$

$\varepsilon$ 论文中未指明是什么

RAM再对齐(Re-Align Module)模块,有点复杂

image-20220211134211449

在大型运动视频恢复任务中,对齐的作用尤为明显;在使用双向递归神经网络的过程中,经常会出现多次相同的对齐操作,RAM模块可以利用之前对齐的参数,获得更好的对齐效果。

分为三步:

第一步,使用Stage-2中特征对齐产生的mask和offset对Stage-3中的输入特征进行预对齐:

 $\hat{f}{2}^{i+1}=\mathcal{D}\left(f{2}^{i+1}, o_{2}^{i+1 \rightarrow i}, m_{2}^{i+1 \rightarrow i}\right)$

 其中$\hat{f}{2}^{i+1}$表示预先对齐的特征,D表示可变形卷积,$o{2}^{i+1 \rightarrow i}$表示偏移量,$m_{2}^{i+1 \rightarrow i}$表示掩膜。

第二步,使用用预对齐特征和当前帧特征生成offset和mask:

 $\hat{o}{3}^{i+1 \rightarrow i}, \hat{m}{3}^{i+1 \rightarrow i}=\operatorname{Conv}\left(\operatorname{concat}\left(\hat{f}{2}^{i+1}, f{2}^{i}\right)\right.$

 concat连接对齐的特征和残差生成DCN偏移;

第三步,对两对mask和offset逐项相加得到最终的mask和offset ,用来做最终的对齐 :

 $\hat{f}{\text {aligned }}^{i+1}=\mathcal{D}\left(f{2}^{i+1}, o_{2}^{i+1 \rightarrow i}+\hat{o}{3}^{i+1 \rightarrow i}, m{2}^{i+1 \rightarrow i}+\hat{m}_{3}^{i+1 \rightarrow i}\right)$

相关帧名词

  1. 帧率(FPS) 『帧率』,FPS,全称Frames Per Second。指每秒传输的帧数,或者每秒显示的帧数,一般来说,『帧率』影响画面流畅度,且成正比:帧率越大,画面越流畅;帧率越小,画面越有跳动感。一个较权威的说法: 当视频帧率不低于24fps时,人眼才会觉得视频时连贯的,称为“视觉暂留”现象。 因此,才有说法:尽管『帧率』越高越流畅,但在很多实际应用场景中24fps就可以了。

  2. 分辨率(Resolution) 『分辨率』,也常被俗称为『图像的尺寸』或者『图像的大小』。指一帧图像包含的像素的多少,常见有1280x720(720P),1920X1080(1080P)等规格。『分辨率』影响图像大小,且与之成正比:『分辨率』越高,图像越大;反之,图像越小。

  3. 码率(BPS)

    『码率』,BPS,全称Bits Per Second。指每秒传送的数据位数,常见单位KBPS(千位每秒)和MBPS(兆位每秒)。

    网上一说:“『码率』与体积成正比:码率越大,体积越大;码率越小,体积越小”;

    另一说:“『码率』越大,说明单位时间内取样率越大,数据流精度就越高,这样表现出来的的效果就是:视频画面更清晰画质更高”;

    还有说法是:”『码率』就是『失真度』“。