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
)
Аннотации ограничивающих рамок часто предоставляются вместе с эталонными метками в задачах распознавания изображений или локализации объектов. Распространенный способ обучения такой системы — случайное искажение изображения с сохранением его содержимого, то есть аугментация данных. Эта операция выводит случайно искаженную область локализации объекта, то есть ограничивающую рамку, с учетом 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