tf.image.resize_images 与 PIL/scipy.misc.imresize 的不同

本文探讨了在深度学习预处理中,使用TensorFlow的`tf.image.resize_images`与Python图像处理库PIL的`resize`方法进行图像缩放时存在的差异。作者发现,即使设置`align_corners=True`,`tf.image.resize_images`仍然存在像素位移问题,而在2019年5月之后,该问题可能已被修复。通过实验,作者确认`align_corners=False`会导致明显位移,而`True`则几乎无位移。此外,尽管位移问题得到缓解,但两者之间的插值填充方式仍然不同,可能影响超分辨任务的性能。
摘要由CSDN通过智能技术生成

起因:我想将对图片的预处理步骤放到GPU里来做,这样可以一定程度上节省GPU从内存读数据的时间。

但是在查阅了一些资料后发现,截止至2018年10月,依然有人反映 tf.image.resize 对图片下采样的结果会有大约几个像素的位移。(无论align_corners=True 还是False)

对此我自己做了小实验,发现PIL的resize和tf的resize结果不同。(插值方法是BICUBIC)代码如下:

import Tensorflow as tf
from PIL import Image
import numpy as np

def pil_to_np(img_pil):
    ar = np.array(img_pil)
    return ar.astype(np.float32) / 255.

path = 'zebra_GT.png'

###PIL_resize_1/2###
img_pil = Image.open(path)
resized_pil = img_pil.resize((292,194),Image.BICUBIC)
resized_np = pil_to_np(resized_pil)

###tf_resize_1/2###
img_raw = tf.read_file(path)
img_tensor = tf.image.decode_png(img_raw)
img_tensor_4d = tf.expand_dims(img_tensor,0)
resized_tf = tf.squeeze(tf.image.resize_bicubic(img_tensor_4d,[194,292], align_coners=True))

with tf.Session() as sess:
    init_op = tf.global_v
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值