Класс Resizing
Класс Resizing применяется к изображениям для изменения их пространственных размеров. Первым параметром передается высота (height), вторым - ширина (width), третьим - метод интерполяции (interpolation). Класс поддерживает работу с батчами изображений и может использоваться как слой в моделях Keras.
Синтаксис
tf.keras.layers.Resizing(height, width, [interpolation], **kwargs)
Пример
Давайте создадим слой для изменения размера изображения до высоты 2 и ширины 3:
import tensorflow as tf
resizing_layer = tf.keras.layers.Resizing(2, 3)
image = tf.constant([[[1], [2], [3], [4]], [[5], [6], [7], [8]]])
res = resizing_layer(image)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[1. 1.5 2.]
[2.5 3. 3.5]
[4. 4.5 5.]]
[[5. 5.5 6.]
[6.5 7. 7.5]
[8. 8.5 9.]]], shape=(2, 3, 1), dtype=float32)
Пример
Давайте изменим размер трехканального изображения с методом интерполяции nearest:
import tensorflow as tf
resizing_layer = tf.keras.layers.Resizing(2, 2, interpolation='nearest')
image = tf.constant([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
res = resizing_layer(image)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[ 1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]], shape=(2, 2, 3), dtype=int32)
Пример
Давайте используем слой Resizing внутри модели Keras:
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.layers.Resizing(4, 4),
tf.keras.layers.Conv2D(1, (3, 3), activation='relu')
])
image = tf.constant([[[1, 2], [3, 4]]])
res = model(image)
print(res.shape)
Результат выполнения кода:
(1, 2, 2, 1)
Смотрите также
-
функцию
resize,
которая изменяет размер изображения до заданных размеров -
функцию
resize_with_pad,
которая изменяет размер с сохранением пропорций и добавлением отступов -
функцию
resize_with_crop_or_pad,
которая изменяет размер с обрезкой или добавлением отступов -
класс
Rescaling,
который масштабирует значения пикселей изображения