论文地址:https://openaccess.thecvf.com/content/ICCV2021/papers/Deng_Multi-Scale_Separable_Network_for_Ultra-High-Definition_Video_Deblurring_ICCV_2021_paper.pdf
代码地址:https://github.com/eezhang123/UHDVD
论文小结
本文提及,前面的视频去模糊任务大多受限于推理效率和视觉模拟质量的平衡中,尤其是在极其高清(ultra-high-definition,UHD)视频,比如4K分辨率。所以,本文提出一个快速推理且正确的视频去模糊模型(UHD Video Deblurring,UHDVD)。
本文所提出的 UHDVD 是通过可分离补丁架构实现的,该架构与多尺度集成方案协作以实现大感受野,而无需增加通用卷积层和内核的数量。此外,设计了一个残差Channel-Spatial Attention(RCSA)模块来提高准确性,同时达到减少网络深度的作用。
最后的速度为,UHDVD在4K视频上达到35fps的实时去模糊。通过下图可以看出本文的方法对于不同分辨率上的运行速度不是与分辨率呈类线性关系的。(本文的实验环境是在NVIDIA Tesla V100 GPU上,32GB RAM上进行)
论文简介
本文训练数据集的来源于使用三款不同的智能手机。三款手机拍摄构建了一个由4K模糊视频和相应清晰帧的新数据集。
现在的智能设备很多都配备了超高清视频的配置及对应的DSLR相机。但不幸的是,不规则的相机抖动和和高速移动经常会对超高清视频产生意想不到的模糊。模糊的视频导致视觉质量低下并阻碍高级视觉任务 [27]。
与大多数的多patch方法不同,他们的方法在不同层次上使用相同的空间分辨率,且速度较慢。作者发现,低分辨率图像比高分辨率图像更容易恢复,因为低分辨率图像类信息和模式(比如边缘和纹理)更少。所以本文提出的多patch架构结合方案使用了多尺度结合的方式。
本文自己建立了一个数据集,且所提议的方法在提出的基准和公开数据集上均优于最先进的方法。
网络结构
本文提出的网络结构如上图所示,总体思路为恰当地集成了多尺度和多patch方法。然后作者进一步提出了可分离补丁策略以显着加速参考实现。
受《Deep video deblurring for hand-held cameras.》启发:即使没经过任何对齐方式,简单地堆叠邻居帧的方法要比只使用单独一帧的方法要好。在本文的网络中,模糊视频
B
B
B,上一帧的去模糊帧
D
(
i
−
1
)
D_{(i-1)}
D(i−1)与当前的模糊帧
B
(
i
)
B_{(i)}
B(i)在channel维度上进行concat,作为本文所提网络的输入。因此,本文网络的输入从
3
3
3通道变成了
6
6
6通道。
上面网络结构中,输入一般处理成四个不同的尺度(
B
1
,
B
2
,
B
3
,
B
4
B1,B2,B3,B4
B1,B2,B3,B4),恢复成了对应的清晰图像(
D
1
,
D
2
,
D
3
,
D
4
D1,D2,D3,D4
D1,D2,D3,D4),其中清晰图像
D
1
D1
D1是最终的输出结果。
每个尺度的输入由原来的图像输入(
B
i
,
i
=
1
,
2
,
3
,
4
B_{i,i=1,2,3,4}
Bi,i=1,2,3,4)划分成多个没有叠加的patch。每个尺度上的patch数目
B
i
,
j
B_{i,j}
Bi,j分别为
J
=
[
1
,
2
,
4
,
8
]
J=[1,2,4,8]
J=[1,2,4,8]。网络的处理过程如下列公式所示:
D
i
,
j
s
,
F
i
,
j
s
=
N
e
t
s
(
B
i
,
j
s
,
D
i
−
1
,
j
s
,
D
i
,
j
s
+
1
,
F
i
,
j
s
+
1
;
θ
p
s
)
(1)
D^s_{i,j},F^s_{i,j}=Net^s(B_{i,j}^s,D_{i-1,j}^s,D_{i,j}^{s+1},F_{i,j}^{s+1};\theta^{p_s}) \tag{1}
Di,js,Fi,js=Nets(Bi,js,Di−1,js,Di,js+1,Fi,js+1;θps)(1) 其中,
s
s
s是尺度下标,
s
=
1
s=1
s=1即最终的输出尺度;
j
j
j 和
i
i
i 分别是patch 下标和视频帧下标;
D
i
,
j
s
D^s_{i,j}
Di,js 和
B
i
,
j
s
B^s_{i,j}
Bi,js 是第
i
i
i 帧
j
j
j-patch 在网络
s
s
s 尺度上的输出和输入;
D
i
,
j
s
+
1
D^{s+1}_{i,j}
Di,js+1 表示上一个尺度的去噪输出在第
i
i
i 帧的
j
j
j-patch 的结果;
N
e
t
s
Net^s
Nets 带着可训练参数
θ
p
s
\theta^{p_s}
θps 表示着所提出的 4K 视频去模糊网络。由于网络也是循环的,中间状态帧
F
i
,
j
s
F^s_{i,j}
Fi,js流是从
s
+
1
s+1
s+1到
s
s
s的。
如上图2所示,本文所提出的实时4K视频去模糊网络,是在四个尺度上,由
4
4
4 个相似的编解码结构组成。
每个编码器分支包含
3
3
3个 stride为
1
1
1 的
3
3
3x
3
3
3 卷积,每个卷积后都接着一个 RCSA 模块。
同时,在每个解码器分支中,残差模块位于每个反卷积层的前面。第一个转置卷积为stride为
2
2
2 的
4
4
4x
4
4
4 kennel,第二个转置卷积为stride为
4
4
4的
4
4
4x
4
4
4 kennel。除了Sacle
1
1
1,两个上采样,使网络的输出大小为上一层的输入,即分辨率都放大了一倍。解码器第三层的常规卷积的输出 channel 为
3
3
3 。红色箭头表示公式
(
1
)
(1)
(1)中的中间特征
F
i
,
j
s
F^s_{i,j}
Fi,js,是
F
i
,
j
s
+
1
F^{s+1}_{i,j}
Fi,js+1两倍上采样的结果。
Asymmetrical Encoder-decoder Architecture
在解码器分支中,在每个标准转置卷积后使用三个常规的轻量级残差模块,以减少参数量,导致速度快速改善,如下图4(a)所示。
三个残差模块的每一个都包含
1
1
1 个 stride 为
1
1
1 的Conv
3
3
3x
3
3
3,然后接着一个 ReLU 激活函数,以及另一个相同的卷积层。
在编码器分支中,使用 RCSA 模块代替残差模块。
编码器的卷积和解码器中的转置卷积在 channel 维度上是对称的。
Separable-Patch Acceleration Architecture
本文设计了一种可分离patch加速架构来同时处理多patch或者多feature maps,如下图3所示:这个架构的处理管道像是一个线性的流水线。
简单地来说,就是将各个 patch 在 channel 维度上进行 concat
[
b
a
t
c
h
,
n
∗
C
i
n
,
h
,
w
]
[batch, n*C_{in}, h, w]
[batch,n∗Cin,h,w],然后使用 group 为 patch 数量的卷积,计算量和原先分离计算是一致的,但由于并行计算的原因,可以减少总体的运算时间。
然后将 tensor 进行 reshape
[
b
a
t
c
h
∗
n
,
C
o
u
t
,
h
,
w
]
[batch*n, C_{out}, h, w]
[batch∗n,Cout,h,w],从而可以在通道上和空间上进行 attention 计算。
RCSA Module
RCSA模块的架构如下图 4 4 4(b)所示。
Channel Attention 模块(CAM)由两个自适应池化层计算组成:平均池化层和最大池化层。每个池化层之后接着一个标准的卷积层,这个(池化层后的第一个)卷积层的输入 channel 与上一层卷积的输出 channel 一致(就是池化层的输出 channel),输出 channel 为输入 channel 的
1
8
\frac 1 8
81,即压缩了
8
8
8 倍的 channel。然后紧接着一个 ReLU 激活函数,再用一个Conv
1
1
1x
1
1
1将channel恢复。两个卷积层都是没有 bias 的Conv
1
1
1x
1
1
1。avg pooling 分支和 max pooling 分支分别处理后,进行 element-wise add ,再经过 sigmoid 激活函数的处理。
C
(
x
)
=
s
i
g
m
o
i
d
(
M
C
(
P
a
v
g
(
x
)
)
+
M
C
(
P
m
a
x
(
x
)
)
)
(2)
C(x)=\mathcal{sigmoid}(M_C(P_{avg}(x))+M_C(P_{max}(x))) \tag{2}
C(x)=sigmoid(MC(Pavg(x))+MC(Pmax(x)))(2)
Spatial Attention (SAM)只有一个卷积层,其输入 channel 为2,输出 channel 为1, Kernel Size 为 3 3 3,没有 bias 。卷积层的输入也是平均池化层和最大池化层处理后的结果,但池化层作用的维度为 channel 维度。 S ( x ) = s i g m o i d ( M S ( A v g ( x , 1 ) , M a x ( x , 1 ) ) ) S(x)=\mathcal{sigmoid}(M_S(\mathcal{Avg}(x, 1), \mathcal{Max}(x, 1))) S(x)=sigmoid(MS(Avg(x,1),Max(x,1))) O C = C ( x ) ∗ x O_C=C(x)*x OC=C(x)∗x O R C S A = S ( O C ) ∗ O C + x O_{RCSA}=S(O_C)*O_C+x ORCSA=S(OC)∗OC+x
作者认为,RCSA模块是简单的,深度也是轻量级的,不会显着影响计算速度,但会在一定程度上提高去模糊效果。
损失函数
本文由于没使用对齐等手段,所以不需要计算光流及其损失。
本文使用由粗到细的学习方式,在每个尺度上都有对应预测。本文提出网络的损失在每个尺度上均使用MSE loss进行计算。
L
i
_
M
S
E
=
∑
s
=
1
S
K
s
C
i
s
H
i
s
W
i
s
∥
D
i
s
−
G
i
s
∥
2
2
(5)
\mathcal{L}_{i\_{MSE}}=\sum_{s=1}^S\frac{\mathcal{K}_s}{C_i^sH_i^sW_i^s}\|D_i^s-G_i^s\|_2^2\tag{5}
Li_MSE=s=1∑SCisHisWisKs∥Dis−Gis∥22(5) 其中
D
i
s
D_i^s
Dis和
S
i
s
S_i^s
Sis是第
i
i
i 帧的在尺度
s
s
s -scale 去模糊图片和 ground truth;
C
i
s
,
H
i
s
,
W
i
s
C_i^s,H_i^s,W_i^s
Cis,His,Wis在每个尺度图片上的维度;
K
s
\mathcal{K}_s
Ks是每个尺度上的权重。经验性地,将
K
1
,
2
,
3
,
4
=
[
0.7
,
0.15
,
0.1
,
0.05
]
\mathcal{K}_{1,2,3,4}=[0.7,0.15,0.1,0.05]
K1,2,3,4=[0.7,0.15,0.1,0.05]。
S
S
S是尺度的个数,在本文网络中设为
4
4
4。
此外,本文使用了Total Variation(TV) loss 以避免恢复图像中的条纹伪影。所以总的损失为 L t o t a l = L i _ M S E + β L i _ T V (6) \mathcal{L}_{total}=\mathcal{L}_{i\_{MSE}}+\beta \mathcal{L}_{i\_{TV}} \tag{6} Ltotal=Li_MSE+βLi_TV(6) 其中 β \beta β设为 1 e − 7 1e^{-7} 1e−7
论文实验
实验参数
本文的实验环境是在NVIDIA Tesla V100 GPU上, 32 32 32GB RAM上进行的。训练时候的batchSize设为 1 1 1,因为每帧都需要前一帧的去污染帧作为额外的特征。Adam优化器,patchSize设为 512 512 512;初始学习率为 0.0001 0.0001 0.0001,衰减率为 0.1 0.1 0.1 。处理数据流程是将帧正则化到 [ 0 , 1 ] [0,1] [0,1],然后减去 0.5 0.5 0.5。
数据集制作
由于没有可用的公开4K视频数据集,所以本文采用《Ntire 2019 challenge on video deblurring: Methods and results.》里的方法制作4K分辨率去模糊(4KRD,Resolution Deblurring)数据集。提出的数据集涵盖了各种人物、人物、人造或自然物体、室内场景、室外景观和城市街景等。
生成的流程由两部分组成:帧插入和数据生成。视频拍摄设备为当时主流的旗舰手机,如iPhone 11 Pro Max、三星S20 Ultra、华为Mate 30 Pro。而且使用了大疆Osmo Mobile 3来稳定手机,让拍摄的视频尽可能清晰。
后续的多帧融合需要高帧率,以确保合成数据集中帧的连续性。然而,由于硬件配置的限制,无法用智能手机直接拍摄高帧率的 4K 视频。 因此,作者使用帧插值方法 [29] 将录制的 4K 视频从 30/60 fps 插值到 480 fps,就像 [27] 的方案一样。 然后作者通过对一系列连续的清晰帧进行平均来生成模糊帧。 除了作者自己制作 4K 分辨率数据集外,作者还使用 Go-Pro [26]、DVD [36] 和 REDS [25] 三个公共去模糊数据集来测试 UHDVD 模型。
数据对比
与各种当时最先进方法的对比如下表所示,其中黑体是最优解,下划线是次优。
下图展示了几个模型在几个数据集来源的3个视觉样本结果。
下图展示了几种不同模型在4KRD上的样例效果。
几种不同模型在4KRD数据样例的表现效果。
本文模型的两种配置在真实4K视频上的真实模糊帧上的泛化效果表现如下图所示。
本文所提出的UHDVD模型,使用可分离patch加速框架(SPAA)与否的运行速度对比如下。这个结果提升还是很大的!
RCSA模块的有效性验证结果如下表所示。对比模型为在 4KRD 数据集上训练了一个没有 RCSA 模块的新模型。 基线模型只使用两层残差块,没有任何 CAM 和 SAM。结果验证,UHDVD模型使用RCSA模块后在PSNR方面增加了
0.5
d
B
0.5dB
0.5dB的增益。在使用了SPAA之后,两个模型的计算速度几乎相同。一些视觉效果如下图
8
8
8所示,也验证了RCSA的效果。