Spec-Zone.ru › TensorFlow

tf.image.sample_distorted_bounding_box

Генерация одного случайного искажённого ограничивающего прямоугольника для изображения.

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 и ограничивающие прямоугольники не заданы, возникает ошибка.

Для получения детерминированных результатов с заданным значением seed используйте tf.image.stateless_sample_distorted_bounding_box. В отличие от использования параметра seed с операторами tf.image.random_*, операторы tf.image.stateless_random_* гарантируют одинаковые результаты при одинаковом значении seed независимо от того, сколько раз вызывается функция, и независимо от настроек глобального seed (например, tf.random.set_seed).

Аргументы
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. В противном случае инициализируется случайным 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.
Исключения
ValueError Если seed не задан и детерминизм операций включен.

© 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/image/sample_distorted_bounding_box

Spec-Zone.ru

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