NTIRE2020感知极限超分竞赛PI指标冠军方案

编辑:Happy
首发:AIWalker公众号
链接:NTIRE2020感知极限超分竞赛PI指标冠军方案
日期:2020-06-26

NTIRE2020感知极限超分竞赛PI指标冠军方案_第1张图片

【Happy导语】这是今年CVPR2020中关于图像超分的文章,不同于其他方法在网络架构或者数据增广方面进行改进,该文另辟蹊径从“损失函数”入手,针对已有GAN系列的损失函数展开并未并提出了改进点。所提方法取得了NTIRE2020感知极限超分竞赛LPIPS指标亚军、PI指标冠军。所以Happy非常建议各位图像复原领域的小伙们仔细研究一下这篇文章。另,文末附论文与code下载方式。

Abstract

深度学习技术极大的提升图像超分的性能(无论是主观指标还是客观指标)。然而,已有方法最多进行x4超分问题,鲜少有进行x16超分问题研究。已有的x4超分往往采用GAN+VGG感知损失进行模型训练,然而,作者发现:这种训练机制在x16超分中会导致细节不对齐问题。

为解决上述问题,作者对损失函数问题进行了系统的分析并提出采用GAN+LPIPS进行感知极限超分训练。此外,作者还提出采用UNet架构的判别器同时考虑图像的全局与局部上下文信息。

最后,作者通过实验验证了所提方法的有效性,并取得了NTIRE2020感知极限超分LPIPS指标第二,PI指标第一的好成绩。

Method

对于x16超分而言,采用MSE几乎难以恢复图像的高频信息。因此,大多采用GAN框架进行高倍率图像超分模型训练,它包含一个生成器与一个判别器。而这篇文章则关注于模型训练过程中的损失函数设计问题。下面将从生成器、判别器以及损失函数三个方面对这篇论文进行简单的介绍。

Generator

其实对图像超分领域有所了解的朋友都应该知道:高倍率(x8,x16)超分的研究非常少,大多聚焦于(x2,x3,x4)低倍率超分研究。那么如何进行高倍率超分网络架构设计呢?

目前常用的方法是低倍率超分级联,比如要进行x16超分的话,那么采用两个x4超分级联达到x16超分的目的。而之前最知名的x4超分当属ESRGAN了,所以最近两年的超分竞赛中很多方法是在ESRGAN的基础上进行调整,比如AIM2019的几种超分方案,NTIRE2020的多种超分方案(可参考文末的推荐阅读中的其他冠军方案)。

NTIRE2020感知极限超分竞赛PI指标冠军方案_第2张图片

所以,这篇论文的网络架构则是采用了相同的思路:级联x4超分ESRGAN。如上图所示,先采用ESRGAN进行4倍超分,然后进行4倍超分,从而达到16倍超分的目的。关于ESRGAN的详细描述建议感兴趣的小伙伴去看一下ESRGAN原文,因其并非本文重点,故而略过。

Discriminator

之前大多基于GAN的超分方法中的判别器往往采用编码架构,这种源自判别器的紧致表达方式用来判别图像的真假(图像级的信息反馈)。

NTIRE2020感知极限超分竞赛PI指标冠军方案_第3张图片

近来,GAN领域有学者提出采用UNet的判别器架构用于提升生成器的性能。它在常规的编码架构 D e n c D_{enc} Denc的基础上添加解码架构 D d e c D_{dec} Ddec,它有助于提供像素级的信息反馈,同时保持全局上下文信息。新的判别器架构如上图所示,作者发现:这种编解码判别器架构可以使得最终的生成器生成更好的纹理细节。

在实际训练过程中,判别器的损失 L D \mathcal{L}_D LD包含两个部分:编码器部分损失 L D d e c \mathcal{L}_{D_{dec}} LDdec于解码器部分损失 L D d e c \mathcal{L}_{D_{dec}} LDdec。它们分别定义如下:
L D e n c = − E [ ∑ i , j m i n ( 0 , − 1 + [ D e n c ( I G T ) ] i , j ) ] − E [ ∑ i , j m i n ( 0 , − 1 − [ D e n c ( I G e n ) ] i , j ) ] L D d e c = − E [ ∑ i , j m i n ( 0 , − 1 + [ D d e c ( I G T ) ] i , j ) ] − E [ ∑ i , j m i n ( 0 , − 1 − [ D d e c ( I G e n ) ] i , j ) ] \mathcal{L}_{D_{enc}} = -E[\sum_{i,j}min(0,-1+[D_{enc}(I^{GT})]_{i,j})] -E[\sum_{i,j}min(0,-1-[D_{enc}(I^{Gen})]_{i,j})] \\ \mathcal{L}_{D_{dec}} = -E[\sum_{i,j}min(0,-1+[D_{dec}(I^{GT})]_{i,j})] -E[\sum_{i,j}min(0,-1-[D_{dec}(I^{Gen})]_{i,j})] LDenc=E[i,jmin(0,1+[Denc(IGT)]i,j)]E[i,jmin(0,1[Denc(IGen)]i,j)]LDdec=E[i,jmin(0,1+[Ddec(IGT)]i,j)]E[i,jmin(0,1[Ddec(IGen)]i,j)]
那么,对于生成器而言,其损失函数定义如下:
L a d v = − E [ ∑ i , j [ D e n c ( I G e n ) ] i , j + ∑ i , j [ D d e c ( I G e n ) ] i , j ] \mathcal{L}_{adv}=-E[\sum_{i,j} [D_{enc}(I^{Gen})]_{i,j} + \sum_{i,j} [D_{dec}(I^{Gen})]_{i,j}] Ladv=E[i,j[Denc(IGen)]i,j+i,j[Ddec(IGen)]i,j]
于此同时,为确保判别器聚焦于语义与结构信息,作者还额外添加了一种一致性正则项 L c o n s \mathcal{L}_{cons} Lcons。因此,总体判别器损失定义如下:
L D = L D e n c + L D d e c + L D c o n s \mathcal{L}_D = \mathcal{L}_{D_{enc}} + \mathcal{L}_{D_{dec}} + \mathcal{L}_{D_{cons}} LD=LDenc+LDdec+LDcons

Loss Functions

感知超分模型中损失函数的常见选择为:对抗损失 L a d v \mathcal{L}_{adv} Ladv与基于VGG的感知损失 L v g g \mathcal{L}_{vgg} Lvgg。这种损失组合对于x4超分表现较好,但是,作者发现:对于x16超分而言,它不能输出令人满意的结果(高频纹理细节信息较少,同时存在假性噪声)。可能这与VGG是在图像分类任务上训练的,对于超分任务并非最佳选择有关。

为解决上述问题,作者提出采用LPIPS作为感知损失,定义如下:
L l p i p s = ∑ k τ k ( ϕ k ( I G e n ) − ϕ k ( I G T ) ) \mathcal{L}_{lpips} = \sum_k \tau^k(\phi^k(I^{Gen}) - \phi^k(I^{GT})) Llpips=kτk(ϕk(IGen)ϕk(IGT))
其中, ϕ \phi ϕ表示特征提取函数, τ \tau τ用于将特征差异变换到LPIPS得分。该损失的计算过程如下图所示。

NTIRE2020感知极限超分竞赛PI指标冠军方案_第4张图片

除此之外,作者还采用判别器特征匹配损失 L f m \mathcal{L}_{fm} Lfm消除对抗损失引入的假性噪声问题,该损失定义如下:
L f m = ∑ l H ( D l ( I G e n ) , D l ( I G T ) ) \mathcal{L}_{fm} = \sum_l \mathcal{H}(D^l(I^{Gen}), D^l(I^{GT})) Lfm=lH(Dl(IGen),Dl(IGT))
其中 D l D^l Dl表示判别器D的第l层激活输出, H \mathcal{H} H表示Huber损失(即SmoothL1损失)。与此同时,作者还是会用与像素损失 L p i x \mathcal{L}_{pix} Lpix以避免色彩异常:
L p i x = H ( I G e n , I G T ) \mathcal{L}_{pix} = \mathcal{H}(I^{Gen}, I^{GT}) Lpix=H(IGen,IGT)
最终,得到了生成器的整体损失函数:
L G = λ a d v L a d v + λ f m L f m + λ l p i p s L l p i p s + L p i x \mathcal{L}_G = \lambda_{adv}\mathcal{L}_{adv} + \lambda_{fm}\mathcal{L}_{fm} + \lambda_{lpips}\mathcal{L}_{lpips} + \mathcal{L}_{pix} LG=λadvLadv+λfmLfm+λlpipsLlpips+Lpix

Experiments

训练数据采用了DIV8K(包含1500张8K分辨率训练数据,场景内容丰富)。随机裁剪了 384 × 384 384\times384 384×384大小的图像块,并采用双三次下采样为 24 × 24 24\times24 24×24。训练过程中选择了随机镜像、随机旋转等增广策略。验证数据则是从训练数据集中均匀选择10张。

训练细节:生成器中的leaky-relu参数为0.2,判别器的为0.1。首先采用 L p i x \mathcal{L}_{pix} Lpix训练50K迭代,batch=3,大概花费12小时(此时所得模型称之为Pretrained)。然后再采用前述整体损失( λ a d v = 1 E − 3 , λ f m = 1 , λ l p i p s = 1 E − 6 \lambda_{adv}=1E-3,\lambda_{fm}=1,\lambda_{lpips}=1E-6 λadv=1E3,λfm=1,λlpips=1E6)进行微调60K迭代,batch=2,大概花费15小时(此时所得模型称之为Ours)。优化器选择Adam,初始学习率0.00001。生成器与判别器的参数量分别为33M和13M。

首先,来对比一下Bicubic、Pretrained、常规ESRGAN寻来呢结果以及本文所提方法效果,指标对比与视觉效果对比。可以看到:(1) 更高的PSNR与SSIM并不意味着更好的视觉感知效果;而LPIPS则更好的符合人类视觉感知系统,所提方法具有最佳的LPIPS指标。(2) Adv+VGG方式训练的模型明显优于Pretrained的视觉效果,但会存在颜色失真与假性噪声问题;而本文所提方法可以很大程度上缓解上述问题,具有更自然的视觉效果。

NTIRE2020感知极限超分竞赛PI指标冠军方案_第5张图片

NTIRE2020感知极限超分竞赛PI指标冠军方案_第6张图片

然后,给出常规验证集(Set5, Set14, BSD100, Urban100等)上的性能与效果对比。所提方法具有更好的锐利度、细节一致性,同时具有更低的LPIPS指标。

NTIRE2020感知极限超分竞赛PI指标冠军方案_第7张图片

NTIRE2020感知极限超分竞赛PI指标冠军方案_第8张图片

最后,给出了所提方法在DI8K验证集上的性能与效果对比。

NTIRE2020感知极限超分竞赛PI指标冠军方案_第9张图片

NTIRE2020感知极限超分竞赛PI指标冠军方案_第10张图片

Conclusion

总而言之,该文从损失函数角度对x16超分问题进行了研究与分析,并针对性的提出了损失函数改进方案(LPIPS损失比VGG感知损失更适合感知极限超分)。所提方法取得了NTIRE2020感知极限超分竞赛的亚军,作者通过调整损失函数的权值取得了更进一步的性能提升。作者最后还提到:所提损失函数组合方案配合更好的生成器架构可能会得到更好的性能。

推荐阅读

  1. CVPR2020 | 高低频分离超分方案
  2. NTIRE2020真实世界超分竞赛冠军方案
  3. 超越RCAN,图像超分又一峰:RFANet
  4. NTIRE2020冠军方案RFB-ESRGAN:带感受野模块的超分网络
  5. NTIRE2020图像去模糊冠军方案分享,首次解决跨设备部署问题

论文与代码下载方式

AIWalker公众号后台留言“CIPLab”,即可获得下载链接。

NTIRE2020感知极限超分竞赛PI指标冠军方案_第11张图片

你可能感兴趣的:(深度学习,深度学习,机器学习)