Класс CenterCrop
Класс CenterCrop применяется к данным изображения
и выполняет центральную обрезку. Первым параметром
передаётся высота обрезки, вторым - ширина обрезки.
Класс принимает тензоры формы (batch, height, width, channels)
или (height, width, channels) и возвращает тензор
с обрезанными по центру размерами.
Синтаксис
tf.keras.layers.CenterCrop(height, width, **kwargs)
Пример
Давайте создадим слой CenterCrop и применим его
к тензору изображения:
import tensorflow as tf
t = tf.constant([[[[1], [2], [3], [4]],
[[5], [6], [7], [8]],
[[9], [10], [11], [12]],
[[13], [14], [15], [16]]]])
crop = tf.keras.layers.CenterCrop(2, 2)
res = crop(t)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[[ 6]
[ 7]]
[[10]
[11]]]], shape=(1, 2, 2, 1), dtype=int32)
Пример
Давайте применим слой CenterCrop к тензору
с тремя каналами:
import tensorflow as tf
t = tf.constant([[[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]],
[[13, 14, 15], [16, 17, 18], [19, 20, 21], [22, 23, 24]],
[[25, 26, 27], [28, 29, 30], [31, 32, 33], [34, 35, 36]],
[[37, 38, 39], [40, 41, 42], [43, 44, 45], [46, 47, 48]]]])
crop = tf.keras.layers.CenterCrop(2, 2)
res = crop(t)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[[16 17 18]
[19 20 21]]
[[28 29 30]
[31 32 33]]]], shape=(1, 2, 2, 3), dtype=int32)
Пример
Давайте используем слой CenterCrop внутри
модели Keras:
import tensorflow as tf
model = tf.keras.Sequential([
tf.keras.layers.CenterCrop(2, 2)
])
t = tf.constant([[[[1], [2], [3], [4]],
[[5], [6], [7], [8]],
[[9], [10], [11], [12]],
[[13], [14], [15], [16]]]])
res = model(t)
print(res)
Результат выполнения кода:
tf.Tensor(
[[[[ 6]
[ 7]]
[[10]
[11]]]], shape=(1, 2, 2, 1), dtype=int32)
Смотрите также
-
функцию
central_crop,
которая выполняет центральную обрезку изображения -
функцию
crop_to_bounding_box,
которая обрезает изображение до заданной рамки -
функцию
resize_with_crop_or_pad,
которая изменяет размер с обрезкой или дополнением -
класс
RandomCrop,
который выполняет случайную обрезку изображения