Класс RandomWidth
Класс RandomWidth относится к слоям аугментации изображений
в TensorFlow Keras. Он случайным образом изменяет ширину
входного изображения, добавляя или убирая пиксели по
горизонтали. Слой активен только во время обучения
(при training=True), а на этапе инференса изображение
возвращается без изменений. Первым параметром передаётся
коэффициент изменения ширины factor, вторым -
интерполяция interpolation, третьим - режим заполнения
fill_mode и так далее.
Параметр factor может быть числом (тогда изменение
происходит в диапазоне от 1 - factor до
1 + factor) или кортежем из двух значений, задающим
нижнюю и верхнюю границу масштабирования ширины.
Значение factor больше нуля увеличивает ширину,
меньше нуля - уменьшает.
Синтаксис
tf.keras.layers.RandomWidth(
factor,
interpolation="bilinear",
fill_mode="reflect",
fill_value=0.0,
seed=None,
**kwargs
)
Пример
Давайте создадим слой RandomWidth с коэффициентом
0.2 и применим его к тензору изображения:
import tensorflow as tf
tf.random.set_seed(0)
layer = tf.keras.layers.RandomWidth(factor=0.2, seed=0)
t = tf.constant([[[[1], [2], [3]], [[4], [5], [6]]]])
res = layer(t, training=True)
print(res.shape)
Результат выполнения кода:
(1, 2, 3, 1)
Пример
Давайте применим слой во время инференса
(training=False) и убедимся, что изображение
не изменяется:
import tensorflow as tf
tf.random.set_seed(0)
layer = tf.keras.layers.RandomWidth(factor=0.5, seed=0)
t = tf.constant([[[[1], [2], [3]], [[4], [5], [6]]]])
res = layer(t, training=False)
print(res.shape)
print(res.numpy().tolist())
Результат выполнения кода:
(1, 2, 3, 1)
[[[[1], [2], [3]], [[4], [5], [6]]]]
Пример
Давайте зададим диапазон изменения ширины кортежем
(0.5, 1.5) и режим заполнения constant:
import tensorflow as tf
tf.random.set_seed(0)
layer = tf.keras.layers.RandomWidth(
factor=(0.5, 1.5),
fill_mode="constant",
fill_value=0.0,
seed=0
)
t = tf.constant([[[[1], [2], [3]], [[4], [5], [6]]]])
res = layer(t, training=True)
print(res.shape)
Результат выполнения кода:
(1, 2, 3, 1)
Смотрите также
-
класс
RandomHeight,
который случайно изменяет высоту изображения -
класс
RandomCrop,
который случайно вырезает фрагмент изображения -
класс
RandomZoom,
который случайно масштабирует изображение -
класс
RandomTranslation,
который случайно сдвигает изображение