使用张量流

时间:2017-11-04 13:48:35

标签: image image-processing tensorflow

我试图在tf中读取图像。使用图像文件名,我执行以下简单操作。

image_string = tf.read_file(imagefilename)
image = tf.image.decode_image(image_string)

现在,当我在sess.run之后打印图像时,我得到张量中所有索引的值都相同而且是254.任何猜测我错了吗?

调试指针也有帮助。

批处理代码:

def _parse_image(self,imagefile,text,label):
    image_string = tf.read_file(imagefile)
    image = tf.image.decode_image(image_string)    
    image = tf.cast(image, tf.float32)
    return image, text, label   


def get_batch(self,typefile="train",batch_size = 64, num_workers = 40):
     train_dataset = tf.contrib.data.Dataset.from_tensor_slices((images, text, labels)) // This works fine. the filename, text and labels are correctly loaded
     train_dataset = train_dataset.map(self._parse_image,num_threads=num_workers, output_buffer_size= batch_size)
     batched_train_dataset = train_dataset.batch(batch_size)
     return batched_train_dataset


batch_train_dataset = get_batch("train")
init_op = tf.global_variables_initializer()
iterator = batch_train_dataset.make_initializable_iterator()
next_element = iterator.get_next()
with tf.Session() as sess:
    sess.run(init_op)
    sess.run(iterator.initializer)
out = sess.run(next_element)
tf.Print(out)

当我打印出来时,我得到的文字和标签都很好,但图像都具有相同的值。我做错了什么?

1 个答案:

答案 0 :(得分:1)

这段代码是正确的。尝试使用此代码段阅读this image

image_string = tf.read_file('friday.jpg')
image = tf.image.decode_image(image_string)

with tf.Session() as session:
  img_value = session.run(image)
  print(np.min(img_value), np.max(img_value), np.mean(img_value))

..你应该得到:

0 255 93.6996542494

...这是图像像素的合理分布。

  • 如果您仍然看到254的数组,这将非常奇怪,您可能需要重新安装tensorflow。
  • 如果上面的代码段适用于friday.jpg,但imagefilename失败,请尝试检查图片的格式。它被腐蚀了吗?
  • 如果两者都输出合理的像素分布,则图像被正确读取,这只是张量评估中的一个错误。