Функция image.random_crop
Функция image.random_crop применяется к
изображению и случайным образом вырезает из него
фрагмент заданного размера. Первым параметром
функция принимает тензор изображения, вторым -
размер вырезаемой области. Функция возвращает
тензор с обрезанным изображением.
Случайная позиция обрезки выбирается внутри исходного изображения. Если размер запрашиваемой области превышает размер изображения, функция вызывает ошибку.
Синтаксис
tf.image.random_crop(value, size, [seed])
Пример
Давайте создадим изображение и вырежем из него
случайный фрагмент размером 2 на 2:
import tensorflow as tf
tf.random.set_seed(0)
t = tf.constant([
[[1], [2], [3], [4]],
[[5], [6], [7], [8]],
[[9], [10], [11], [12]],
[[13], [14], [15], [16]]
])
res = tf.image.random_crop(t, size=[2, 2, 1])
print(res)
Результат выполнения кода:
tf.Tensor(
[[[ 1]
[ 2]]
[[ 5]
[ 6]]], shape=(2, 2, 1), dtype=int32)
Пример
Давайте применим функцию к цветному изображению
с тремя каналами и вырежем фрагмент размером
2 на 2:
import tensorflow as tf
tf.random.set_seed(0)
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]]
])
res = tf.image.random_crop(t, size=[2, 2, 3])
print(res)
Результат выполнения кода:
tf.Tensor(
[[[ 1 2 3]
[ 4 5 6]]
[[10 11 12]
[13 14 15]]], shape=(2, 2, 3), dtype=int32)
Пример
Давайте передадим параметр seed для
воспроизводимости результата:
import tensorflow as tf
t = tf.constant([
[[1], [2], [3], [4]],
[[5], [6], [7], [8]],
[[9], [10], [11], [12]],
[[13], [14], [15], [16]]
])
res1 = tf.image.random_crop(t, size=[2, 2, 1], seed=1)
res2 = tf.image.random_crop(t, size=[2, 2, 1], seed=1)
print(res1)
print(res2)
Результат выполнения кода:
tf.Tensor(
[[[ 1]
[ 2]]
[[ 5]
[ 6]]], shape=(2, 2, 1), dtype=int32)
tf.Tensor(
[[[ 1]
[ 2]]
[[ 5]
[ 6]]], shape=(2, 2, 1), dtype=int32)
Смотрите также
-
функцию
central_crop,
которая вырезает центральную часть изображения -
функцию
crop_to_bounding_box,
которая обрезает изображение по заданным координатам -
функцию
resize_with_crop_or_pad,
которая изменяет размер изображения обрезкой или дополнением -
функцию
RandomCrop,
которая выполняет случайную обрезку как слой Keras