【问题标题】:TensorFlow "tf.image" functions on a 4D image batch [duplicate]4D图像批处理上的TensorFlow“tf.image”功能[重复]
【发布时间】:2017-01-27 06:01:43
【问题描述】:

我想在 TensorFlow 中使用这个函数,但是它在 3D 张量而不是 4D 张量上运行:我有一个 batch_size 的外部维度。

tf.image.random_flip_left_right(input_image_data)

也就是说,这个函数需要一个形状的张量(图像):

(width, height, channels)

但我有多个图像,例如:

(batch_size, width, height, channels)

如何将随机翻转函数映射到批量大小的每个图像,并获得一个与我已有的 4D 形状相同的张量作为输出?

我的猜测是,它需要在函数入口处进行整形,并在函数之后进行整形,但我不确定这是否会破坏数据结构并在应用镜像时将批处理中的图像混合在一起.此外,这种方法将对整个批次进行单一随机化,而不是基于每个图像。

任何建议表示赞赏!

【问题讨论】:

  • 我猜这些方法最初是为了与队列一起使用而开发的,就像 Tensorflow 网站中的 cifar10 示例一样。
  • 谢谢,事实上我已经看过了,但我想为我当前的项目使用更简单的管道。应该有一种方法可以确保从 4D 到 3D,然后在张量图/会话中再次组合到 4D。
  • 是的,在大型管道中管理队列可能会很痛苦,尽管 TF 使它们易于使用。如果你能找到可以不用的东西,我会很感兴趣。

标签: python image-processing machine-learning computer-vision tensorflow


【解决方案1】:

您必须使用 tf.pack 和 tf.unpack 或 tf.gather 和 tf.concatenate 之类的东西从 4D 数组转换为 3D 数组。

根据您加载数据的方式,您可以在 numpy.另一种选择是在将每个图像放入批处理之前对其进行处理。

如果您需要解释 tf.pack 或其他工具的工作原理,请告诉我。

【讨论】:

    猜你喜欢
    • 2018-01-12
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 2018-12-13
    相关资源
    最近更新 更多