Spec-Zone.ru › TensorFlow 1.15

tf.compat.v2.image.sample_distorted_bounding_box

Генерация одной случайно искажённой рамки для изображения.

tf.compat.v2.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 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 имеет ненулевое значение, генератор случайных чисел инициализируется заданным 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 A Tensor. Имеет тот же тип, что и image_size. 1-мерный, содержащий [offset_height, offset_width, 0]. Используется в качестве входных данных для tf.slice.
size A Tensor. Имеет тот же тип, что и image_size. 1-мерный, содержащий [target_height, target_width, -1]. Используется в качестве входных данных для tf.slice.
bboxes A 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/r1.15/api_docs/python/tf/compat/v2/image/sample_distorted_bounding_box

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API