Класс RandomRotation
Класс RandomRotation относится к слоям предобработки изображений
TensorFlow Keras. Он случайным образом поворачивает изображение
на угол в заданном диапазоне, заполняя освободившиеся области
выбранным значением. Первым параметром передается число или
диапазон углов поворота в градусах, вторым - режим заполнения
fill_mode, третьим - значение заполнения fill_value,
четвертым - зерно генератора случайных чисел seed.
Слой активен только при обучении и не изменяет изображение
во время инференса.
Синтаксис
tf.keras.layers.RandomRotation(
factor,
fill_mode="reflect",
fill_value=0.0,
interpolation="bilinear",
seed=None,
**kwargs
)
Пример
Давайте создадим слой случайного поворота на угол
до 90 градусов и применим его к изображению
из единиц:
import tensorflow as tf
tf.random.set_seed(0)
layer = tf.keras.layers.RandomRotation(0.25)
t = tf.ones((1, 4, 4, 1))
res = layer(t, training=True)
print(res.shape)
Результат выполнения кода:
(1, 4, 4, 1)
Пример
Давайте зададим диапазон углов поворота от
-45 до 45 градусов и посмотрим
на изменение значений пикселей:
import tensorflow as tf
tf.random.set_seed(0)
layer = tf.keras.layers.RandomRotation(
factor=(-0.125, 0.125),
fill_mode="constant",
fill_value=0.0
)
t = tf.constant([[[[1.0], [0.0], [0.0], [0.0]],
[[0.0], [1.0], [0.0], [0.0]],
[[0.0], [0.0], [1.0], [0.0]],
[[0.0], [0.0], [0.0], [1.0]]]])
res = layer(t, training=True)
print(res.shape)
Результат выполнения кода:
(1, 4, 4, 1)
Пример
Давайте применим слой к изображению с тремя каналами и выведем значения первого канала после поворота:
import tensorflow as tf
tf.random.set_seed(0)
layer = tf.keras.layers.RandomRotation(0.5)
t = tf.constant([[[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]],
[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]],
[[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]]]])
res = layer(t, training=True)
print(res.shape)
Результат выполнения кода:
(1, 3, 3, 3)
Смотрите также
-
класс
RandomFlip,
который случайным образом отражает изображения -
класс
RandomZoom,
который случайным образом масштабирует изображения -
класс
RandomTranslation,
который случайным образом сдвигает изображения -
функцию
rot90,
которая поворачивает тензор на 90 градусов