在 RGB 图像的张量流中使用 SSIM 损失函数
Working with SSIM loss function in tensorflow for RGB images
我想使用 SSIM 指标 作为我在 tensorflow 中处理的模型的损失函数。 SSIM 应该测量我的去噪自动编码器的重建输出图像与输入未损坏图像 (RGB) 之间的相似性。
据我所知,为了在 tensorflow 中使用 SSIM 指标,图像应该 标准化 为 [0,1] 或 [0,255] 而不是 [-1, 1].在将我的张量转换为 [0,1] 并将 SSIM 作为我的损失函数后,重建的图像是黑白的,而不是彩色的 RGB 图像。
tf.reduce_mean(tf.image.ssim(reconstructed, truth, 1.0))
我的模型在 MSE(均方误差)下工作正常,重建的图像是彩色的 (RGB)。
使用 tf.losses.mean_squared_error(truth, reconstructed)
重建的图像将是 RGB 图像,而使用 SSIM 将给我一个一维图像。
为什么在 tensorflow 中使用 SSIM 作为损失函数得到的结果与 MSE(就重建图像通道而言)不同?
SSIM 旨在仅测量两个亮度信号之间的差异。 RGB 图像在测量相似性之前被转换为灰度。如果将其反馈到损失函数中,它就不知道图像是否正在失去色彩饱和度,因为它不会显示在误差指标中。那只是一个理论。
我能够通过将图像的动态范围更改为 2.0 来解决问题,因为我的图像在 [-1, 1] 之间缩放 来自:
loss_rec = tf.reduce_mean(tf.image.ssim(truth, reconstructed, 2.0))
并且由于更高的 SSIM 值显示更好的图像质量,我不得不 最小化损失函数的负数 ( SSIM)来优化我的模型:
optimizer = tf.train.AdamOptimizer(learning_rate).minimize(-1 * loss_rec)
TensorFlow 文档说没有应用色彩空间转换。
https://www.tensorflow.org/api_docs/python/tf/image/ssim
"Note: The true SSIM is only defined on grayscale. This function does not perform any colorspace transform. (If input is already YUV, then it will compute YUV SSIM average.)"
我想使用 SSIM 指标 作为我在 tensorflow 中处理的模型的损失函数。 SSIM 应该测量我的去噪自动编码器的重建输出图像与输入未损坏图像 (RGB) 之间的相似性。
据我所知,为了在 tensorflow 中使用 SSIM 指标,图像应该 标准化 为 [0,1] 或 [0,255] 而不是 [-1, 1].在将我的张量转换为 [0,1] 并将 SSIM 作为我的损失函数后,重建的图像是黑白的,而不是彩色的 RGB 图像。
tf.reduce_mean(tf.image.ssim(reconstructed, truth, 1.0))
我的模型在 MSE(均方误差)下工作正常,重建的图像是彩色的 (RGB)。
使用 tf.losses.mean_squared_error(truth, reconstructed)
重建的图像将是 RGB 图像,而使用 SSIM 将给我一个一维图像。
为什么在 tensorflow 中使用 SSIM 作为损失函数得到的结果与 MSE(就重建图像通道而言)不同?
SSIM 旨在仅测量两个亮度信号之间的差异。 RGB 图像在测量相似性之前被转换为灰度。如果将其反馈到损失函数中,它就不知道图像是否正在失去色彩饱和度,因为它不会显示在误差指标中。那只是一个理论。
我能够通过将图像的动态范围更改为 2.0 来解决问题,因为我的图像在 [-1, 1] 之间缩放 来自:
loss_rec = tf.reduce_mean(tf.image.ssim(truth, reconstructed, 2.0))
并且由于更高的 SSIM 值显示更好的图像质量,我不得不 最小化损失函数的负数 ( SSIM)来优化我的模型:
optimizer = tf.train.AdamOptimizer(learning_rate).minimize(-1 * loss_rec)
TensorFlow 文档说没有应用色彩空间转换。
https://www.tensorflow.org/api_docs/python/tf/image/ssim
"Note: The true SSIM is only defined on grayscale. This function does not perform any colorspace transform. (If input is already YUV, then it will compute YUV SSIM average.)"