以PP_MSVSR带起的视频超分论文小结 - yubo105139/paper GitHub Wiki
提升图像主观质量应用案例
画质修复
- 智能去噪
- 智能去划痕
- 智能去抖
- 智能上色
- Deoldify :自动为黑白图像上色,在图像的上色方面有着较好的效果
- DeepRemaster:根据输入的任意数量的参考帧对图片/视频进行上色
画质增强
-
细节纹理增强
-
色彩增强
-
饱和度增强
-
亮度增强
-
ROI增强
画质超分
- 智能升分
- 单帧超分 RealSR:有效降低噪声及大幅度提高视觉质量
- 视频超分 EDVR:有效利用帧间的信息,快速实现视频超分
- 智能插帧
- DAIN :合成视频中间流,实现视频补帧,提高播放流畅度
- SDR to HDR
基于视觉AI的多维修复和增强技术,大幅提升主观画质
- 利用多帧相关信息去除压缩引起的噪声、块效应、伪影、抖动等
- 利用周边质量较高的帧提升当前帧质量
- 调整画面色彩、饱和度、对比度、亮度,突出边缘纹理等细节部分
视频超分
视频相邻帧之间存在运动或场景偏移,直接使用相邻帧信息会导致超分效果差。
视频超分就包括帧间对齐和特征融合。
对齐模块
基于光流场的对齐 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)融合模块,该模块在时间和空间上同时应用注意力机制,以强调后续恢复的重要特征。
模型创新:
a) 设置PCD模块对齐
b) 设计TSA模块融合特征
模型思路:
a) 滑动窗口方法,多帧输入,恢复中间帧
b) 局部传播,让输入的多帧与中间帧对齐
c) 基于DCN,设计PCD模块用于对齐
d) 特征聚集模块,设计TSA模块加强特征融合
模块介绍:
PCD模块
如上图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
时序 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
模型不足
-
模型太大
-
难训练,训练太长 (四卡一周左右)
-
对齐模块DCN完全自监督,训练不稳定,不容易训练
-
没有完全利用序列信息
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相似的参数量,达到了更好的结果。
模型结构对比
模块介绍
传播模块
传播模块:二阶网络传播结构
对齐模块:传播过程中采用光流引导的可形变卷积对齐
特征聚集模块:Concate
上采样模块:Pixel-Shuffle
光流引导的可形变卷积对齐结构
第一步,使用光流场将前一帧与当前帧对齐,得到预对齐特征:
$\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视频讲解
模型创新
-
- 多阶段视频超分方法
-
- 设计局部融合模块
-
- 在第2阶段引入辅助Loss
-
- 新的对齐模块再对齐模块
模型思路
-
- 结合滑动窗口VSR方法和循环网络VSR方法,设计多阶段VSR方法
-
- 在3个阶段设计局部融合模块、辅助Loss、和再对齐模块用于融合和对齐特征
-
- 输入帧设定为20帧,PP-MSVSR模型为轻量模型,以最低的参数量在轻量模型中达到SOTA性能。
-
- 推出大模型PP-MSVSR-L,以相似的参数量,超过当前SOTA模型指标。
模型结构
整理网络是一个多阶段视频超分网络,在每个阶段输出的特征均可重构出超分视频。
- 1) 在stage-1设计局部特征融合模块使特征包含其相邻帧信息
- 2) 在Stage-2引入辅助Loss来让特征更接近真实高分辨率特征空间
- 3) 在Stage-3引入再对齐模块重复利用第二阶段对齐产生的mask和offset来进行特征的再对齐和加强传播
模块介绍
LFM局部融合
局部融合模块的目的:
让当前帧特征融合其相邻帧特征
局部融合模块的过程:
-
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光流法对齐
改变:
- 用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)模块,有点复杂
在大型运动视频恢复任务中,对齐的作用尤为明显;在使用双向递归神经网络的过程中,经常会出现多次相同的对齐操作,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)$
相关帧名词
-
帧率(FPS) 『帧率』,FPS,全称Frames Per Second。指每秒传输的帧数,或者每秒显示的帧数,一般来说,『帧率』影响画面流畅度,且成正比:帧率越大,画面越流畅;帧率越小,画面越有跳动感。一个较权威的说法: 当视频帧率不低于24fps时,人眼才会觉得视频时连贯的,称为“视觉暂留”现象。 因此,才有说法:尽管『帧率』越高越流畅,但在很多实际应用场景中24fps就可以了。
-
分辨率(Resolution) 『分辨率』,也常被俗称为『图像的尺寸』或者『图像的大小』。指一帧图像包含的像素的多少,常见有1280x720(720P),1920X1080(1080P)等规格。『分辨率』影响图像大小,且与之成正比:『分辨率』越高,图像越大;反之,图像越小。
-
码率(BPS)
『码率』,BPS,全称Bits Per Second。指每秒传送的数据位数,常见单位KBPS(千位每秒)和MBPS(兆位每秒)。
网上一说:“『码率』与体积成正比:码率越大,体积越大;码率越小,体积越小”;
另一说:“『码率』越大,说明单位时间内取样率越大,数据流精度就越高,这样表现出来的的效果就是:视频画面更清晰画质更高”;
还有说法是:”『码率』就是『失真度』“。