请在此处参考我的原始答案。问题似乎在于空间维度缩减后的断言。在 中,图像_ssim_per_channel
的H
and被断言反对。而在 中,下采样是执行次数。W
filter_size
ssim_multiscale
len(power_factors)-1
这里有两个解决方法:
确保它filter_size
足够小,可以在下采样后计算所有四个空间尺度(不包括第一尺度)的 ssim 值ssim_multiscale
。相反,请确保您的图像H
和W
图像都足够大,这样H/(2**4) and W/(2**4) >= filter_size
.
由于下采样是len(power_factors)-1
多次执行的,因此您还可以使用_MSSSIM_WEIGHTS
比默认值更少的 of or power_factors,这意味着H/(2**(len(power_factors)-1)) and W/(2**(len(power_factors)-1)) >= filter_size
.
field1 = tf.random.uniform(shape=[8, 64, 64, 1], minval=0, maxval=1)
field2 = tf.random.uniform(shape=[8, 64, 64, 1], minval=0, maxval=1)
#Use smaller filter_size
ms_ssim_score = tf.image.ssim_multiscale(img1=field1, img2=field2, max_val=1.0,
filter_size=4)
#Or use lesser number of power_factors
ms_ssim_score = tf.image.ssim_multiscale(img1=field1, img2=field2, max_val=1.0,
power_factors=(0.0448, 0.2856, 0.3001),
filter_size=11)