SRGAN的损失函数

    SRGAN是在SRResnet的基础上加上一个鉴别器。GAN的作用,是额外增加一个鉴别器网络和2个损失(g_loss和d_loss),用一种交替训练的方式训练两个网络。

    模型可以分为3部分:main(生成)模块,adversarial模块,和vgg模块。只在训练阶段会用到adversarial模块进行计算,而在推断阶段,仅仅使用G网络。

对任何一个问题,都可以让训练过程“对抗化”。“对抗化”的步骤是:先确定该问题的解决方法,把原始方法当成GAN中的G网络 ,再另外增加一个D网络(二分类网络),在原来更新main模块的loss中,增加“生成对抗损失”(要生成让判别器无法区分的数据分布),一起用来更新main模块(也就是GAN中的G网络),用判别损失更新GAN中的D网络。[1]


SRGAN损失包括两部分:内容损失和对抗损失,用一定的权重进行加权和。

SRGAN的损失函数_第1张图片

内容损失

1.G网络,产生y_fake,和y_real求得MSE loss,可以得到很高的信噪比,但是这样的方式产生的图像存在高频细节缺失的问题。 

SRGAN的损失函数_第2张图片

2.因此,作者定义了以预训练19层VGG网络的ReLU激活层为基础的VGG loss,求生成图像GθG(ILR)和参考图像IHR特征表示的欧氏距离。在已经训练好的vgg上提出某一层的feature map,将生成的图像的这一个feature map和真实图像这一个map比较。

SRGAN的损失函数_第3张图片

对抗损失

生成对抗损失:生成让判别器无法区分的数据分布。DθG(GθG(ILR))表示的是判别器将生成器生成的图像
GθG(ILR)判定为
为自然图像的概率



SRGAN的损失函数_第4张图片

辨别器对假数据的损失原理相同,最终达到的目标是对于所有的真实图片,输出为1;对于所有的假图片,输出为0。 
生成器的目标是愚弄辨别器蒙混过关,需要达到的目标是对于生成的图片,输出为1(正好和鉴别器相反).


代码实现:

SRGAN的损失函数_第5张图片

[1]https://blog.csdn.net/DuinoDu/article/details/78819344

你可能感兴趣的:(SRGAN的损失函数)