tf.raw_ops.SampleDistortedBoundingBoxV2
Создает одну случайно искаженную ограничивающую рамку для изображения.
tf.raw_ops.SampleDistortedBoundingBoxV2(
image_size,
bounding_boxes,
min_object_covered,
seed=0,
seed2=0,
aspect_ratio_range=[0.75, 1.33],
area_range=[0.05, 1],
max_attempts=100,
use_image_if_no_bounding_boxes=False,
name=None
)
Аннотации ограничивающих рамок часто предоставляются вместе с эталонными метками в задачах распознавания изображений или локализации объектов. Распространенный метод обучения такой системы — случайно искажать изображение, сохраняя его содержимое, то есть применять аугментацию данных. Эта операция возвращает случайно искаженную область расположения объекта, то есть ограничивающую рамку, с учетом image_size, bounding_boxes и ряда ограничений.
Эта операция возвращает одну ограничивающую рамку, которую можно использовать для обрезки исходного изображения. Результат возвращается в виде трех тензоров: begin, size и bboxes. Первые два тензора можно напрямую передать в 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)
# 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.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. Одномерный, содержит [height, width, channels]. |
bounding_boxes | Объект Tensor типа float32. Трехмерный тензор формы [batch, N, 4], описывающий N ограничивающих рамок, связанных с изображением. |
min_object_covered | Объект Tensor типа float32. Обрезанная область изображения должна содержать не менее этой доли любой переданной ограничивающей рамки. Значение этого параметра должно быть неотрицательным. Если оно равно 0, обрезанная область может не пересекаться ни с одной из переданных ограничивающих рамок. |
seed | Необязательный объект int. По умолчанию — 0. Если для seed или seed2 задано ненулевое значение, генератор случайных чисел инициализируется заданным значением seed. В противном случае используется случайное начальное значение. |
seed2 | Необязательный объект int. По умолчанию — 0. Второе начальное значение, предотвращающее совпадение начальных значений. |
aspect_ratio_range | Необязательный список объектов floats. По умолчанию — [0.75, 1.33]. Соотношение сторон обрезанной области изображения (ширина / высота) должно находиться в этом диапазоне. |
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, size, bboxes). | |
begin | Объект Tensor. Имеет тот же тип, что и image_size. |
size | Объект Tensor. Имеет тот же тип, что и image_size. |
bboxes | Объект Tensor типа float32. |
© 2022 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 4.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/api_docs/python/tf/raw_ops/SampleDistortedBoundingBoxV2