【问题标题】:tf.image.random_flip_left_right() for multiple images togethertf.image.random_flip_left_right() 将多个图像放在一起
【发布时间】:2018-10-15 14:58:14
【问题描述】:

我想在我的输入管道中随机翻转几个不同大小的输入图像。 对于不同的图像,翻转需要保持一致——要么全部翻转,要么不翻转。 由于使用 tf.image.random_flip_left_right() 不足以解决此问题,我改为这样做:

images = [img1, img2]
def fliplr(*args):
    return [tf.image.flip_left_right(t) for t in args]
def id(*args):
    return args
img1, img2 = tf.cond(tf.random_uniform([1]) > 0.5, fliplr(images), id(images), name='fliplr')

这是tf.Dataset.map() 使用我的输入数据集对象调用的函数的一部分。

但是我从flip_left_right 行收到此错误:

ValueError: 两个形状的维度 1 必须相等,但是是 3 和 1。 形状为 [240,320,3] 和 [240,320,1]。

从将形状 0 与其他形状合并。对于具有输入形状的“flip_left_right/image”(操作:“Pack”):[240,320,3]、[240,320,1]。

我认为这是因为我的图像尺寸不同(240x320,1 个或 3 个通道),但我不明白这有什么关系。

如何解决此错误?或者,是否有更好的方法来避免此错误?

我使用的是 TensorFlow-1.8(但如果需要可以升级)。

【问题讨论】:

标签: python tensorflow


【解决方案1】:

就这样?

do_flip = tf.random_uniform([]) > 0.5
img1 = tf.cond(do_flip, lambda: tf.image.flip_left_right(img1), lambda: img1)
img2 = tf.cond(do_flip, lambda: tf.image.flip_left_right(img2), lambda: img2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    相关资源
    最近更新 更多