Пакетное увеличение изображения в тензорном потоке
Я хочу сделать увеличение изображения, например, повернуть случайный угол в тензорном потоке. В каждой партии я хочу вращать разные случайные углы для каждого изображения. Я могу сделать это с помощью tf.contrib.image.rotate
в image_batch
со случайно сгенерированным угловым тензором:
radian = tf.random_uniform(
(batch_size),
minval=-ROT_TH,
maxval=ROT_TH,
dtype=tf.float32,
seed=None,
name=None
)
rotated_batch = tf.contrib.image.rotate(image_batch, radian)
Тем не менее, если я собираю пакет с allow_smaller_final_batch=True
, batch_size
бесполезно, потому что image_batch
не будет иметь фиксированный размер партии. И вращение не удастся, потому что размерность радиана и image_batch не одно и то же.
Как я могу это исправить?
1 ответ
Вместо того, чтобы вращать изображения в пакетном режиме, я применил то же вращение к изображениям из image_queue.deque()
:
images = load_images(filenames, options)
radian = tf.random_uniform([len(images)], ...)
images = tf.contrib.image.rotate(images, radian)
image_batch = tf.train.batch_join([images, filenames],
enqueue_many=True, allow_smaller_final_batch=True,
batch_size=WHATEVER)