本文是ICCV 2019年一篇oral,由先进院同商汤合作的超分辨作品。本论文的出发点是ECCV2018年的PIRM比赛,以往的超分辨比赛都是以PSNR和SSIM作为评价指标,所以loss上以mse即可,然而今年的PIRM采用NIQE,PI和Ma值作为指标,这些指标大多都是不可微的,并且与PSNR指标相关性较低,所以作者将这些不可微的图像评价指标作为排序参考融入到SR网络中,使得恢复出来的高分辨率图像更加符合人类感官。而且作者很聪明的光明正大的借鉴了其他表现优异的超分辨模型,使得最终结果更符合人类感官。
目前图像超分辨问题大概有两种思路,一种比较常见的就是基于图像重建,以mse作为loss,以提高psnr为目的,比如srcnn这一脉。但是PSNR这个指标本身也存在一定问题,mse的对应关系导致其求均值而产生模糊现象,仅考虑对应像素点的值忽略结构上的关系,所以同人类感官有一定的差异;第二种做法是将图像超分辨看为图像生成问题,利用GAN和感知损失完成,srgan一类,这种做法在PSNR指标上会低于第一种,但是对于人类主观感知来说效果更好,在图像纹理和细节部分表现也更佳优异。
利用感知来进行超分辨有一个很大的问题,就是PSNR和SSIM这种指标在这里会失效,就无法用硬性指标来进行评估,因此出现了很多无参考的图像质量评估标准(NR-IQA),比如NIQE(下一部分介绍),PI等,ECCV2018年等PIRM比赛就是采用PI作为指标(PI由NIQE和Ma‘score共同决定),但这些指标都是由手工特征或统计特征得来,是不可微的,无法作为loss使用,因此作者提出了一个可微分的模型“Ranker” 它可以模拟任何NR-IQA指标并提供明确的目标(作为损失函数)来优化感知质量。
做法:
stage1: 首先利用不同的超分辨方法在公开数据集上生成超分辨图像,而后在生成的各张图像上用NIQE或者PI指标进行排序,依据结果对超分辨图像进行排序,得到一组图像及排名信息;
stage2: 训练ranker。Ranker采用孪生网络结构来学习感知指标的行为,Ranker具有两个相同的网络分支,其中包含一系列的卷积、LeakyReLU、池化和全连接层。在特征提取器之后使用GAP,这样网络可以摆脱输入大小的限制。为了得到排序得分,使用一个全连接层作为回归器来量化排序结果。最后,两个分支的输出构成margin-ranking loss,这样我们可以计算梯度并应用反向传播来更新整个网络的参数。训练好的Ranker应该具有根据图像感知得分对图像进行排序的能力。
Stage3:训练重建网络RankSRGAN,判别器D的损失与SRGAN中的相同,生成器G的总损失包含三部分:感知损失、对抗损失和rank-content loss。其中rank-content
loss由阶段二用训练好的Ranker给出,是本文方法新引入的损失函数,能使标准SRGAN生成视觉逼真的图像。
以上各个阶段都比较容易理解,唯一问题在于train ranker时,如何将离散的排名信息作为label传给网络,在ranker过程中,将两张图片和对应排名信息分别输入到孪生网络的两个input处,网络可以映射得到图像的质量得分,而后将质量得分m与排名得分s制定规律:
loss采用排序问题中常用的margin-ranking loss,margin设置为0.5:
那么ranker网络便可以通过优化下式进行,并能够指导stage3中超分辨模型在给定的指标(NIQE)上进行优化:
实验:
在实验中,作者准备rank数据集时分别使用SR-ResNet,SRGAN和ESRGAN三种方法在DIV2K和Flickr2K数据集上生成成对图像:
以NIQE作为指标进行排序并输入ranker网络,训练好的ranker网络要保留权重作为rankloss加到srgan里,srgan的总loss为:
最终实验结果展示:
在NIQE和PI指标上结果是很好的,视觉看来也不错,作者还进行了ablation study,分别对rank数据集的来源(即得到hr图像的方法),排序指标,分类或者回归问题以及srgan中各个loss的意义进行了研究,具体不进行详述,总的来说就是目前作者选用的方法都是最好的。
这个通过rank把不可微的指标融进网络的方法很精妙,不止针对超分辨,去噪去模糊甚至图像分类分割问题都可以考虑这种做法。
网友评论