Spec-Zone.ru › TensorFlow 2.9

tf.image.sample_distorted_bounding_box

Просмотреть исходный код на GitHub

Генерирует один случайный искаженный прямоугольник для изображения.

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_* гарантируют одинаковые результаты при одинаковом зерне независимо от того, сколько раз функция вызывается, и независимо от настроек глобального зерна (например, tf.random.set_seed).

Аргументы
image_size A Tensor. Должен быть одним из следующих типов: uint8, int8, int16, int32, int64. 1-D, содержащий [height, width, channels].
bounding_boxes A Tensor типа float32. 3-D с формой [batch, N, 4] описывает N прямоугольников, связанных с изображением.
seed Необязательное int. По умолчанию 0. Если seed установлено отличным от нуля, генератор случайных чисел используется с заданным seed. В противном случае используется случайное зерно.
min_object_covered Tensor типа 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-D, содержащий [offset_height, offset_width, 0]. Предложить в качестве входных данных для tf.slice.
size A Tensor. Имеет тот же тип, что и image_size. 1-D, содержащий [target_height, target_width, -1]. Предложить в качестве входных данных для tf.slice.
bboxes A Tensor типа float32. 3-D с формой [1, 1, 4] содержащий искажённый прямоугольник. Предложить в качестве входных данных для tf.image.draw_bounding_boxes.
Исключения
ValueError Если зерно не указано и включена детерминированность оператора.

© 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/versions/r2.9/api_docs/python/tf/image/sample_distorted_bounding_box

Spec-Zone.ru

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