我正在使用 TensorFlow 处理图像超分辨率问题(2D 和 3D),并且正在使用 SSIM 作为eval_metrics.
我正在使用image.ssim来自 TF 和measure.comapre_ssim来自skimage. 它们都为 2D 提供了相同的结果,但 3D 体积的结果总是有所不同。
我已经查看了TF-implementation和skimage-implementation的源代码。在两种实现中如何考虑和处理输入图像似乎存在一些根本差异。
复制问题的代码:
import numpy as np
import tensorflow as tf
from skimage import measure
# For 2-D case
np.random.seed(12345)
a = np.random.random([32, 32, 64])
b = np.random.random([32, 32, 64])
a_ = tf.convert_to_tensor(a)
b_ = tf.convert_to_tensor(b)
ssim_2d_tf = tf.image.ssim(a_, b_, 1.0)
ssim_2d_sk = measure.compare_ssim(a, b, multichannel=True, gaussian_weights=True, data_range=1.0, use_sample_covariance=False)
print (tf.Session().run(ssim_2d_tf), ssim_2d_sk)
# For …Run Code Online (Sandbox Code Playgroud)