tf.raw_ops.SampleDistortedBoundingBox
Генерация одной случайной искажённой рамки для изображения.
tf.raw_ops.SampleDistortedBoundingBox(
image_size, bounding_boxes, seed=0, seed2=0, min_object_covered=0.1,
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-мерный, содержащий [height, width, channels]. |
bounding_boxes | A Tensor типа float32. 3-мерный с формой [batch, N, 4] описывающий N рамок, связанных с изображением. |
seed | Необязательный int. По умолчанию 0. Если либо seed либо seed2 установлены не равными нулю, генератор случайных чисел инициализируется заданным seed. В противном случае, он инициализируется случайным значением. |
seed2 | Необязательный int. По умолчанию 0. Второй параметр для генератора случайных чисел, чтобы избежать конфликтов семян. |
min_object_covered | Необязательный float. По умолчанию 0.1. Область обрезки изображения должна содержать не менее этой доли любой заданной рамки. Значение этого параметра должно быть неотрицательным. В случае 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.4/api_docs/python/tf/raw_ops/SampleDistortedBoundingBox