tf.image.sample_distorted_bounding_box
| Просмотреть исходный код на GitHub |
Генерирует один случайно искаженный прямоугольник для изображения.
tf.image.sample_distorted_bounding_box(
image_size, bounding_boxes, seed=0, min_object_covered=0.1,
aspect_ratio_range=None, area_range=None, max_attempts=None,
use_image_if_no_bounding_boxes=None, name=None
)
Аннотации прямоугольников часто предоставляются дополнительно к меткам целевых значений в задачах распознавания изображений или локализации объектов. Распространенный метод обучения такой системы заключается в случайном искажении изображения при сохранении его содержимого, т. е. усилении данных. Этот оператор выводит случайно искаженную локализацию объекта, т. е. прямоугольник, учитывая image_size, bounding_boxes и ряд ограничений.
Выход этого оператора — один прямоугольник, который может использоваться для обрезки исходного изображения. Результат возвращается в виде 3 тензоров: begin, size и bboxes. Первые 2 тензора можно напрямую передать в tf.slice для обрезки изображения. Последний может быть передан в tf.image.draw_bounding_boxes для визуализации прямоугольника.
Прямоугольники предоставляются и возвращаются в виде [y_min, x_min, y_max, x_max]. Координаты прямоугольников — это числа с плавающей точкой в [0.0, 1.0] относительно ширины и высоты базового изображения.
Например,
# Generate a single distorted bounding box.
begin, size, bbox_for_draw = tf.image.sample_distorted_bounding_box(
tf.shape(image),
bounding_boxes=bounding_boxes,
min_object_covered=0.1)
# Draw the bounding box in an image summary.
image_with_box = tf.image.draw_bounding_boxes(tf.expand_dims(image, 0),
bbox_for_draw)
tf.compat.v1.summary.image('images_with_box', image_with_box)
# Employ the bounding box to distort the image.
distorted_image = tf.slice(image, begin, size)
Обратите внимание, что если информация о прямоугольнике недоступна, установка use_image_if_no_bounding_boxes = true предполагает, что существует один неявный прямоугольник, покрывающий всё изображение. Если use_image_if_no_bounding_boxes равно false, а прямоугольники не указаны, генерируется ошибка.
| Аргументы | |
|---|---|
image_size | Tensor. Должен быть одного из следующих типов: uint8, int8, int16, int32, int64. 1-мерный, содержащий [height, width, channels]. |
bounding_boxes | Tensor типа float32. 3-мерный с формой [batch, N, 4] описывающий N прямоугольников, связанных с изображением. |
seed | Необязательный int. По умолчанию 0. Если seed имеет значение, отличное от нуля, генератор случайных чисел инициализируется заданным seed. В противном случае — случайным значением. |
min_object_covered | Тензор типа float32. По умолчанию 0.1. Область обрезки изображения должна содержать по крайней мере эту долю любого предоставленного прямоугольника. Значение этого параметра должно быть неотрицательным. В случае 0, область обрезки не обязана перекрывать предоставленные прямоугольники. |
aspect_ratio_range | Необязательный список floats. По умолчанию [0.75, 1.33]. Область обрезки изображения должна иметь аспектное соотношение ratio = width / height в этом диапазоне. |
area_range | Необязательный список floats. По умолчанию [0.05, 1]. Область обрезки изображения должна содержать долю предоставленного изображения в этом диапазоне. |
max_attempts | Необязательный int. По умолчанию 100. Количество попыток генерации области обрезки изображения с заданными ограничениями. После max_attempts неудач возвращается всё изображение. |
use_image_if_no_bounding_boxes | Необязательный bool. По умолчанию False. Управляет поведением, если прямоугольники не предоставлены. Если true, предполагается неявный прямоугольник, покрывающий весь вход. Если false, генерируется ошибка. |
name | Имя операции (необязательно). |
| Возвращаемые значения | |
|---|---|
Кортеж Tensor объектов (начало, размер, прямоугольники). | |
begin | Tensor. Имеет тот же тип, что и image_size. 1-мерный, содержащий [offset_height, offset_width, 0]. Используйте в качестве входных данных для tf.slice. |
size | Tensor. Имеет тот же тип, что и image_size. 1-мерный, содержащий [target_height, target_width, -1]. Используйте в качестве входных данных для tf.slice. |
bboxes | Tensor типа float32. 3-мерный с формой [1, 1, 4] содержащий искаженный прямоугольник. Используйте в качестве входных данных для tf.image.draw_bounding_boxes. |
© 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/sample_distorted_bounding_box