Пакетное увеличение изображения в тензорном потоке

Я хочу сделать увеличение изображения, например, повернуть случайный угол в тензорном потоке. В каждой партии я хочу вращать разные случайные углы для каждого изображения. Я могу сделать это с помощью 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)
Другие вопросы по тегам