Spec-Zone.ru › TensorFlow

tf.compat.v1.image.sample_distorted_bounding_box

Создает одну случайно искаженную ограничивающую рамку для изображения. (устарела)

tf.compat.v1.image.sample_distorted_bounding_box(
    image_size,
    bounding_boxes,
    seed=None,
    seed2=None,
    min_object_covered=0.1,
    aspect_ratio_range=None,
    area_range=None,
    max_attempts=None,
    use_image_if_no_bounding_boxes=None,
    name=None
)
Устарела: ЭТА ФУНКЦИЯ УСТАРЕЛА. Она будет удалена в будущей версии. Инструкции по обновлению: аргумент seed2 устарел. Вместо него используйте sample_distorted_bounding_box_v2.

Аннотации ограничивающих рамок часто предоставляются вместе с эталонными метками в задачах распознавания изображений или локализации объектов. Распространенный способ обучения такой системы — случайное искажение изображения с сохранением его содержимого, то есть аугментация данных. Эта операция выводит случайно искаженную область локализации объекта, то есть ограничивающую рамку, с учетом 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 Tensor. Допустимые типы: uint8, int8, int16, int32, int64. Одномерный, содержит [height, width, channels].
bounding_boxes Tensor типа float32. Трехмерный, форма [batch, N, 4]; описывает N ограничивающих рамок, связанных с изображением.
seed Необязательный int. По умолчанию — 0. Если для seed или seed2 задано ненулевое значение, генератор случайных чисел инициализируется указанным значением seed. В противном случае используется случайное начальное значение.
seed2 Необязательный int. По умолчанию — 0. Второе начальное значение, позволяющее избежать совпадения начальных значений.
min_object_covered Тензор типа float32. По умолчанию — 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, size, bboxes).
begin Tensor. Имеет тот же тип, что и image_size. Одномерный, содержит [offset_height, offset_width, 0]. Передайте в качестве входных данных в tf.slice.
size Tensor. Имеет тот же тип, что и image_size. Одномерный, содержит [target_height, target_width, -1]. Передайте в качестве входных данных в tf.slice.
bboxes Tensor типа float32. Трехмерный, форма [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/api_docs/python/tf/compat/v1/image/sample_distorted_bounding_box

Spec-Zone.ru

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