0
我使用張量流和完全卷積網絡對圖像進行迴歸。 我想通過隨機翻轉/旋轉來增加數據,但我怎樣才能將它們同時應用於輸入和輸出圖像張量?如何將隨機圖像幾何變換同時應用於輸入和輸出
我使用張量流和完全卷積網絡對圖像進行迴歸。 我想通過隨機翻轉/旋轉來增加數據,但我怎樣才能將它們同時應用於輸入和輸出圖像張量?如何將隨機圖像幾何變換同時應用於輸入和輸出
你說得對,像tf.random_flip_left_right
這樣的函數只有在沒有協變變量時才能使用。例如,如果您的輸出是標籤圖像,那麼您需要對它們應用相同的隨機操作。
我看到兩種方法可以做到這一點:
你基本上重寫隨機操作與幾個張量工作。例如,更換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)
...
您隨機運前,所有的張量疊加在一起:
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)
第二個解決方案只能如果所有的張量具有相同的空間範圍。
謝謝,它的工作原理。 – fuzhi