如何将随机图像几何变换同时应用于多个图像?

时间:2017-08-04 08:49:45

标签: python tensorflow

我使用tensorflow和完全卷积网络对图像进行回归。 我想通过随机翻转/旋转来增加数据,但是如何同时应用它们来输入和输出图像张量呢?

1 个答案:

答案 0 :(得分:2)

你是对的,只有在没有协变量的情况下才能使用像tf.random_flip_left_right这样的函数。如果有,例如,如果您的输出是标签图像,那么您需要对所有输出应用相同的随机操作。

我认为有两种方法可以做到:

  1. 您基本上会重写随机操作以使用多个张量。例如,要替换tf.random_flip_left_right,您可以使用

    coin = tf.less(tf.random_uniform((), 0., 1.), 0.5)
    im1 = tf.cond(coin, lambda: tf.flip_left_right(im1), lambda: im1)
    im2 = tf.cond(coin, lambda: tf.flip_left_right(im2), lambda: im2)
    ...
    
  2. 您可以在随机操作之前将所有张量堆叠在一起:

    all_im = tf.stack([im1, im2,...], axis=2)
    all_im = tf.random_flip_left_right(all_im)
    [im1, im2, ...] = tf.split(all_im, [im1.shape[2], im2.shape[2], ...], axis=2)
    

    仅当所有张量具有相同的空间范围时,此第二种解决方案才有效。