作者单位:香港理工大学、阿里巴巴达摩院
论文链接:https://www4.comp.polyu.edu.hk/~cslzhang/paper/ICCV21_RealVSR.pdf
代码链接:https://github.com/IanYeung/RealVSR
编者言: 这篇是19年ICCV的Toward real-world SISR一文的VSR版本。相比之前VSR方法中较为单一的损失,该文作者对于Y通道和CbCr通道的理解和附加的损失处理让人眼前一亮。
看点
人工退化模型并不能很好地描述真实视频中复杂的退化过程,从而导致训练后的VSR模型在实际应用中失效。本文使用iPhone 11 Pro Max的多摄像头系统,通过捕捉配对的LR-HR视频序列,构建了一个真实世界的视频超分辨率(RealVSR)数据集。由于LR-HR视频对是由两个独立的摄像机拍摄的,它们之间不可避免地存在一定的错位和亮度/颜色差异,为此,本文提出了一个具体的RealVSR训练策略,将LR-HR视频转换为YCbCr空间,并将亮度通道分解为拉普拉斯金字塔,然后对不同分量应用不同的损失函数。实验证明,在RealVSR数据集上训练的VSR模型比在合成数据集上训练的模型具有更好的视觉质量。在跨摄像机测试中也表现出良好的泛化能力。
方法
RealVSR数据集
RealVSR数据集是使用带有DoubleTake app的双摄像头功能的iPhone 11 Pro Max手机构建的,如下图所示。
DoubleTake app可以通过两个不同焦距的摄像头,在不同比例下捕捉到两个近似同步的高清视频序列。iPhone 11 Pro Max有三个后置摄像头:一个镜头相当于13mm的超广角摄像头,一个镜头相当于26mm的广角摄像头,还有一个镜头相当于52mm的长焦摄像头。三个摄像头都能拍摄1200万像素的照片。较大焦距的相机可以捕捉到更精细的细节,比例系数等于焦距的比值。考虑到超广角镜头失真严重,裁剪后的图像质量较差,本文以52mm镜头相机捕获的序列作为HR序列,以26mm镜头相机捕获的序列生成相应的LR序列,得到×2VSR的数据集。值得一提的是×2缩放是目前实际VSR的主要需求。
RealVSR共有700多对序列。每对由两个同步序列组成,帧率为30fps,分辨率为1080P。为了保证数据集的多样性,采集的序列覆盖了各种场景,包括室外和室内场景、白天和夜间场景、静止场景和有移动物体的场景等。数据集中的序列拥有各种运动,包括摄像机运动和物体运动。在收集数据后,手动选择并排除了大约200个质量较差的序列,如严重模糊、噪声、过度曝光或曝光不足的视频等。考虑到LR-HR序列之间不完全同步,排除了有严重错位问题的序列对。经过仔细的选择,数据集中保留了500个序列对。最后,每个序列对中的LR帧和HR帧需要进行对齐,以便更容易地执行有监督的VSR模型训练。采用RealSR中的图像配准算法,逐帧对齐LR-HR视频。考虑到相邻帧之间可能存在一些小的配准漂移,本文使用5个相邻帧作为输入来计算中心帧的配准矩阵。对齐后,裁剪大小为1024×512的对齐序列的中心区域,消除边界周围的对齐伪影。为了进一步标准化数据集,切割了所有序列使其均为50帧。
动机分析
视频采集过程中图像退化的原因有:各向异性模糊、信号相关噪声、图像信号处理(ISP)管道中的非线性映射和视频压缩算法等。具体来说,两台相机拍摄的LR-HR视频采用了不同的镜头、传感器和ISP管道,因此呈现出不同的失真。配准算法可以缓解这一问题,然而在LR-HR序列之间仍然存在微小的错位和亮度/颜色差异,下图可以观察到LR和HR帧之间的轻微整体亮度和颜色差异,这是由于两个相机之间的照明,曝光时间和相机ISP的变化造成的。
分解损失
超分的目标是恢复LR帧中的图像细节(边缘、纹理等),而不是全局亮度和颜色。为此,本文提出了一套分解损失,如下图所示。将SR和HR视频转换到YCbCr空间中,以分解亮度和颜色,并对不同的组件应用不同的损失函数。在Y通道上设计了一个基于拉普拉斯金字塔的损失,以帮助网络更好地重建较小亮度差异下的细节。在颜色通道Cb和Cr上,采用梯度加权内容损失聚焦于颜色边缘。为了进一步提高重构HR视频的视觉质量,使用基于多尺度边缘的GAN损失来指导纹理生成。
亮度通道上基于拉普拉斯金字塔的损失
Y通道包含了视频帧的大部分纹理信息,它是VSR中重建图像细节的关键。VSR研究中常用的损耗对全局亮度差异非常敏感,因此使可能会在学习图像结构和细节时受到干扰。为了解决这个问题,我们将Y通道分解成一个拉普拉斯金字塔。低频分量捕捉原始图像的整体亮度和总体结构,高频分量包含原始图像的多尺度细节。通过在低频和高频分量上施加不同的损失可以实现更好的细节重构,同时允许整体亮度有一定的差异。分别用
Y
Y
Y和
Y
^
\hat Y
Y^表示HR和SR的亮度通道,把它们分解成三层拉普拉斯金字塔
{
S
0
,
S
1
,
S
2
}
\{S_0,S_1,S_2\}
{S0,S1,S2}和
{
S
^
0
,
S
^
1
,
S
^
2
}
\{\hat S_0,\hat S_1,\hat S_2\}
{S^0,S^1,S^2},其中
S
0
S_0
S0和
S
^
0
\hat S_0
S^0表示低频分量,其余为高频分量。全局亮度差异主要体现在低频分量上,与其他损失相比,SSIM更关注图像结构,对亮度变化不敏感,故结构损失定义为:
L
s
=
L
S
S
I
M
(
S
0
,
S
^
0
)
=
1
−
S
S
I
M
(
S
0
,
S
^
0
)
\mathcal L_s=\mathcal L_{SSIM}(S_0,\hat S_0)=1-SSIM(S_0,\hat S_0)
Ls=LSSIM(S0,S^0)=1−SSIM(S0,S^0)由于高频分量基本没有全局亮度差异,采用Charbonnier来定义细节损失:
L
d
=
∥
S
^
2
−
S
2
∥
2
+
ϵ
2
+
∥
S
^
1
−
S
1
∥
2
+
ϵ
2
\mathcal L_d=\sqrt{\Vert \hat S_2-S_2\Vert^2+\epsilon^2}+\sqrt{\Vert \hat S_1-S_1\Vert^2+\epsilon^2}
Ld=∥S^2−S2∥2+ϵ2+∥S^1−S1∥2+ϵ2
色度通道的梯度加权损失
与亮度通道相比,色度通道CbCr更加平滑。因此,我们着重于重建显色边缘,故在这里采用梯度加权损失。分别用
C
C
C和
C
^
\hat C
C^表示HR和SR的色度通道,梯度加权损失如下:
L
c
=
∥
Δ
g
w
∗
C
^
−
Δ
g
w
∗
C
∥
2
+
ϵ
2
\mathcal L_c=\sqrt{\Vert \Delta_{gw}*\hat C-\Delta_{gw}*C\Vert^2+\epsilon^2}
Lc=∥Δgw∗C^−Δgw∗C∥2+ϵ2其中,
Δ
g
w
=
(
1
+
w
Δ
x
)
(
1
+
w
Δ
y
)
\Delta_{gw}=(1+w\Delta_x)(1+w\Delta_y)
Δgw=(1+wΔx)(1+wΔy),
Δ
x
\Delta_x
Δx和
Δ
y
\Delta_y
Δy为
C
C
C和
C
^
\hat C
C^在水平和垂直方向梯度的绝对值差图。
多尺度边缘GAN损失
生成对抗网络已经被用于一些SISR方法,以改善估计的HR图像的感知质量。然而,这些方法通常直接将GAN损失应用于全彩图像,这可能不足以有效地生成纹理。本文根据PatchGAN和相对论平均鉴别器,将GAN损失应用于拉普拉斯金字塔的高频成分,生成器的损失为:
L
G
=
∑
i
{
−
E
S
i
[
log
(
1
−
D
i
(
S
i
,
S
^
i
)
)
]
−
E
S
^
i
[
log
(
D
i
(
S
^
i
,
S
i
)
)
]
}
\mathcal{L}_{G}=\sum_{i}\left\{-\mathbb{E}_{S_{i}}\left[\log \left(1-D_{i}\left(S_{i}, \hat{S}_{i}\right)\right)\right]-\mathbb{E}_{\hat{S}_{i}}\left[\log \left(D_{i}\left(\hat{S}_{i}, S_{i}\right)\right)\right]\right\}
LG=i∑{−ESi[log(1−Di(Si,S^i))]−ES^i[log(Di(S^i,Si))]}鉴别器的损失为:
L
D
=
∑
i
{
−
E
S
i
[
log
(
D
i
(
S
i
,
S
^
i
)
)
]
−
E
S
^
i
[
log
(
1
−
D
i
(
S
^
i
,
S
i
)
)
]
}
\mathcal{L}_{D}=\sum_{i}\left\{-\mathbb{E}_{S_{i}}\left[\log \left(D_{i}\left(S_{i}, \hat{S}_{i}\right)\right)\right]-\mathbb{E}_{\hat{S}_{i}}\left[\log \left(1-D_{i}\left(\hat{S}_{i}, S_{i}\right)\right)\right]\right\}
LD=i∑{−ESi[log(Di(Si,S^i))]−ES^i[log(1−Di(S^i,Si))]}其中
D
i
D_i
Di是拉普拉斯金字塔的第i个高频分量的相对论平均鉴别器。
Final损失
作者建议两种损失,
L
v
1
\mathcal L_{v1}
Lv1着重于精细细节的重构如下:
L
v
1
=
L
s
+
L
d
+
L
c
\mathcal L_{v1}=\mathcal L_s+\mathcal L_d+\mathcal L_c
Lv1=Ls+Ld+Lc
L
v
2
\mathcal L_{v2}
Lv2通过生成一些细节进一步增强视觉质量,定义为:
L
v
2
=
L
v
1
+
λ
L
a
d
v
\mathcal L_{v2}=\mathcal L_{v1}+λ\mathcal L_{adv}
Lv2=Lv1+λLadv
实验
损失的消融实验
对于含有GAN损失的部分对比LPIPS和DISTS而不是PSNR
定量评估
其实应该添加一个都在Vimeo-90K数据集上的定量评估,这样才是完整的实验
定性评估
在RealVSR上的定性评估
在真实世界数据上的定性评估