如何读取具有不同分辨率的图像以在TensorFlow

时间:2018-05-17 11:53:56

标签: python tensorflow image-resizing

我正在努力学习如何建立一个神经网络来检测图像中的行人。我下载了PETA数据集,我想将图像读入Tensorflow数据集。我实际上通过使用此代码成功了它:

filenames = glob.glob("C://PETA/3DPeS/archive/*.bmp")

dataset = tf.data.Dataset.from_tensor_slices((filenames))

def _parsefunc(filename):
    img_st = tf.read_file(filename)
    img_dec = tf.image.decode_bmp(img_st,channels=3)
    img = tf.cast(img_dec,tf.float32)

return img

dataset = dataset.map(_parsefunc)

iterator = dataset.make_one_shot_iterator()

但并非所有图像都具有相同的分辨率,只要我能看到我们需要指定一定的尺寸来定义我们的神经网络层。

那么如何调整图像大小以获得干净的TensorFlow数据集?

感谢。

3 个答案:

答案 0 :(得分:2)

_parsefunc中,您可以使用tf.image.resize_images()将输入图像的大小调整为输入神经网络图层的大小。

def _parsefunc(filename):
   img_st = tf.read_file(filename)
   img_dec = tf.image.decode_bmp(img_st,channels=3)
   img = tf.cast(img_dec,tf.float32)
   img = tf.image.resize_images(img, [width, height])

答案 1 :(得分:1)

嗯,在图像尺寸相同的任何地方都不会强制执行,但以这种方式更好。如果您将来尝试对模型进行微调,那么这并不重要。试着看看如何创建Tfrecords for a new database,这将是最优选的方式。

答案 2 :(得分:0)

尝试在StackOverFlow上搜索旧答案。已经发布了一些很好的类似问题。

以前主题有关主题的信息:Downsample array in Python