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 и рядом ограничений.
Выходной результат этого оператора — одна рамка, которую можно использовать для обрезки исходного изображения. Результат возвращается в виде 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)
# 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 | A Tensor. Должен быть одним из следующих типов: uint8, int8, int16, int32, int64. 1-D, содержащий [height, width, channels]. |
bounding_boxes | A Tensor типа float32. 3-мерный с формой [batch, N, 4] , описывающий N рамок, связанных с изображением. |
min_object_covered | A 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 | A Tensor. Имеет тот же тип, что и image_size. |
size | A Tensor. Имеет тот же тип, что и image_size. |
bboxes | A Tensor типа float32. |
© 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.3/api_docs/python/tf/raw_ops/SampleDistortedBoundingBoxV2