我正在将Keras与Tensorflow后端一起使用,并希望评估两个图像之间的PSNR。我可以在所有三个RGB通道上进行评估,如下所示:
def psnr(hr, sr):
return tf.image.psnr(hr, sr, max_val=255)
使用tensorflow(you don't compare strings with ==
但是我该怎么做才能仅在第一个渠道上进行评估?我假设我需要以某种方式从张量中提取这些值。在python中,通常可以执行类似hr [:, 0,0]的操作,但这显然在这里不起作用。
答案 0 :(得分:0)
im1 = tf.image.convert_image_dtype(np.random.randn(64,64,3), tf.float32)
im2 = tf.image.convert_image_dtype(np.random.randn(64,64,3), tf.float32)
psnr = tf.image.psnr(tf.expand_dims(im1[:,:,0], 2),
tf.expand_dims(im2[:,:,0], 2), max_val=255)
with tf.Session() as sess:
print (sess.run(psnr))
使用im1[:,:,0]
获取第一个频道,并使用h x w x 1
添加一个频道,将其重塑为expand_dims