У меня проблема с потерей восприятия и суперразрешением в GAN: s.В настоящее время я нормализую (до) и денормализую (после) изображения следующим образом:
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)
По сути, отображение RGB-изображений с 3 каналами от [0-255] до [-1,1] и наоборот.Вот эта потеря контента, которую я использую
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) и среднеквадратическая потеря ошибки (нормальная сеть):
Как видно из изображений, что-то явно не так.Любые идеи, в чем может быть проблема здесь?У меня была идея, что это было что-то с нормализацией, но это должно повлиять на обе модели.