如何读取不同分辨率的图像以在 TensorFlow 中创建数据集
How to read images with varying resolutions to create a Dataset in TensorFlow
我正在尝试学习如何构建神经网络来检测图像中的行人。我下载了 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 数据集?
谢谢。
嗯,在任何地方都没有强制要求您的图片大小相同,但最好以这种方式使用。如果您打算在将来对模型进行微调,那也没关系。试着看看如何创建 Tfrecords for a new database ,这将是最优选的方式。
在您的 _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])
我正在尝试学习如何构建神经网络来检测图像中的行人。我下载了 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 数据集?
谢谢。
嗯,在任何地方都没有强制要求您的图片大小相同,但最好以这种方式使用。如果您打算在将来对模型进行微调,那也没关系。试着看看如何创建 Tfrecords for a new database ,这将是最优选的方式。
在您的 _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])