我对GAN中的感知损失和超分辨率存在问题。目前,我对图像进行标准化(之前)和非标准化(之后):
def Normalization_tanh(**kwargs):
return Lambda(lambda x: (x / 127.5) - 1, **kwargs)
def Denormalization_tanh(**kwargs):
return Lambda(lambda x: (x + 1) * 127.5, **kwargs)
从[0-255]到[-1,1]的3个通道基本映射RGB图像,反之亦然。我使用的内容丢失就是这个
def content_loss(hr, sr):
vgg = srgan.vgg_54() # vgg network at 5 conv layer and before 4 max pooling layer
sr = preprocess_input(sr) # (samples, width, height, channels)
hr = preprocess_input(hr) # (samples, width, height, channels)
sr_features = vgg(sr) # high level features from generated image
hr_features = vgg(hr) # high level features from high resolution image
mse_euclidan = mean_squared_error(hr_features, sr_features)
return mse_euclidan # euclidan distance in feature space
培训似乎进行得很好,并且网络网络趋同(缓慢)收敛。但是,与平均绝对误差或均方误差函数作为损失相比,视觉上仍然存在很大差异。参见此处的图片,感知损失(GAN)与均方差损失(正常网络):
从图像中可以看到,显然有些问题。有什么想法可能是这里的问题吗?我的一个想法是归一化,但是应该影响两个模型。