Для стандартного изображения в каталоге примеров skimage , я использовал встроенный метод SSIM в TF (версия 1.13.1) и обнаружил небольшие расхождения.Вот код:
#####################################
import tensorflow as tf
# Read images from file.
tf.enable_eager_execution()
im1 = tf.image.convert_image_dtype(tf.image.grayscale_to_rgb(img.reshape(512,512,1)), tf.float32)
im2 = tf.image.convert_image_dtype(tf.image.grayscale_to_rgb(img_noise.reshape(512,512,1)), tf.float32)
im3 = tf.image.convert_image_dtype(tf.image.grayscale_to_rgb(img_const.reshape(512,512,1)), tf.float32)
ssim_noise_tf = tf.image.ssim(im1, im2, max_val=img_noise.max() - img_noise.min())
ssim_const_tf = tf.image.ssim(im1, im3, max_val=img_const.max() - img_const.min())
print('The TF computed values are:')
ssim_noise_tf.numpy(),ssim_const_tf.numpy()
Вывод:
The skimage computed values are:
0.14038526562173645 0.841719943377482
The TF computed values are:
(0.12293128, 0.8365968)
Есть какие-нибудь подсказки?Возможные источники дельты могут быть: - tf.image.grayscale_to_rgb
- Различные варианты алгоритма?