圖像生成模型的損失函數總結


現象:當細節幾乎一致時,采用MS-SSIM根本無法學習顏色!!!(實驗中紅色、黃色等都是不能恢復的),此時可以先用MS-SSIM學習結構恢復,然后采用L1+L2學習顏色恢復

實驗:
采用MS-SSIM無法完全學習顏色,而且一般MS-SSIM Loss只能下降到0.04左右
采用MS-SSIM+L1+L2 loss依然無法學習顏色,即MS-SSIM Loss和L1 + L2 Loss都不會降低
采用L1+L2 loss可以學習顏色,而且很神奇的是:在L1+L2 loss下降的同時,MS-SSIM loss也會下降。

結論:
因此,一般可以這樣做:
先采用MS-SSIM Loss 學習結構
再采用L2 Loss學習邊緣+顏色
最后采用L1 Loss學習小噪點去除

最終ms-ssim loss可以從0.04 下降到0.02,而L1 loss能降到0.10,L2 loss能降到0.01左右。Loss的代碼如下:

import tensorflow as tf
if tf.__version__ >= '1.10':
      pass
else:
      print('not supported')
norm_im = tf.minimum(tf.maximum(out_im, 0.0), 1.0)
ssim_loss = 1 - tf.image.ssim_multiscale(norm_im[0], gt_im[0], 1.0)
l1_loss = tf.reduce_mean(tf.reduce_sum(tf.abs(norm_im - gt_im), axis=-1))
l2_loss = tf.reduce_mean(tf.reduce_sum(tf.square(norm_im - gt_im), axis=-1))
G_loss = l1_loss + l2_loss
tf.summary.scalar('G_loss', G_loss)
tf.summary.scalar('MS-SSIM Loss', ssim_loss)
tf.summary.scalar('L1 Loss', l1_loss)
tf.summary.scalar('L2 Loss', l2_loss)

附圖:



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM