tf.image.crop_and_resize
| Просмотреть исходный код на GitHub |
Извлекает области из входного тензора изображения и изменяет их размер.
tf.image.crop_and_resize(
image, boxes, box_indices, crop_size, method='bilinear',
extrapolation_value=0, name=None
)
Извлекает области из входного тензора изображения и изменяет их размер с использованием билинейной или ближайшей-соседней выборки (возможно, с изменением соотношения сторон) до общего размера вывода, заданного значением crop_size. Это более общий случай, чем операция crop_to_bounding_box, которая извлекает фрагмент фиксированного размера из входного изображения и не допускает изменения размера или соотношения сторон.
Возвращает тензор с crops из входного image в позициях, определённых в местоположении области в boxes. Все обрезанные области изменяются размера (с билинейной или ближайшей-соседней интерполяцией) до фиксированного размера size = [crop_height, crop_width]. Результатом является 4-мерный тензор [num_boxes, crop_height, crop_width, depth]. Изменение размера производится по углам. В частности, если boxes = [[0, 0, 1, 1]], этот метод даст идентичные результаты применению tf.compat.v1.image.resize_bilinear() или tf.compat.v1.image.resize_nearest_neighbor() (в зависимости от аргумента method) с align_corners=True.
| Аргументы | |
|---|---|
image | 4-мерный тензор формы [batch, image_height, image_width, depth]. И image_height, и image_width должны быть положительными. |
boxes | 2-мерный тензор формы [num_boxes, 4]. Строка i-го тензора задаёт координаты области в изображении box_ind[i] и задаётся в нормализованных координатах [y1, x1, y2, x2]. Нормализованное значение координаты y отображается в координате изображения в y * (image_height - 1), таким образом, интервал [0, 1] нормализованной высоты изображения отображается в [0, image_height - 1] в координатах высоты изображения. Допускается y1 > y2, в этом случае взятая область является перевёрнутой вверх ногами версией исходного изображения. Размер ширины обрабатывается аналогично. Нормализованные координаты вне диапазона [0, 1] разрешены, в этом случае используется extrapolation_value для экстраполяции значений входного изображения. |
box_indices | 1-мерный тензор формы [num_boxes] со значениями типа int32 в [0, batch). Значение box_ind[i] задаёт изображение, к которому относится область i-го. |
crop_size | 1-мерный тензор из 2 элементов, size = [crop_height, crop_width]. Все обрезанные области изображения изменяются размера до этого размера. Соотношение сторон содержимого изображения не сохраняется. И crop_height, и crop_width должны быть положительными. |
method | Необязательная строка, задающая метод выборки для изменения размера. Может быть либо "bilinear", либо "nearest", по умолчанию "bilinear". В настоящее время поддерживаются два метода выборки: Билинейный и Ближайший сосед. |
extrapolation_value | Необязательное float. По умолчанию 0. Значение, используемое для экстраполяции, если необходимо. |
name | Имя операции (необязательно). |
| Возвращаемое значение | |
|---|---|
4-мерный тензор формы [num_boxes, crop_height, crop_width, depth]. |
Пример:
import tensorflow as tf BATCH_SIZE = 1 NUM_BOXES = 5 IMAGE_HEIGHT = 256 IMAGE_WIDTH = 256 CHANNELS = 3 CROP_SIZE = (24, 24) image = tf.random.normal(shape=(BATCH_SIZE, IMAGE_HEIGHT, IMAGE_WIDTH, CHANNELS) ) boxes = tf.random.uniform(shape=(NUM_BOXES, 4)) box_indices = tf.random.uniform(shape=(NUM_BOXES,), minval=0, maxval=BATCH_SIZE, dtype=tf.int32) output = tf.image.crop_and_resize(image, boxes, box_indices, CROP_SIZE) output.shape #=> (5, 24, 24, 3)
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/image/crop_and_resize