Spec-Zone.ru › TensorFlow 2.4

tf.image.stateless_sample_distorted_bounding_box

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

tf.image.stateless_sample_distorted_bounding_box(
    image_size, bounding_boxes, seed, min_object_covered=0.1,
    aspect_ratio_range=None, area_range=None, max_attempts=None,
    use_image_if_no_bounding_boxes=None, name=None
)

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

Гарантируется, что выходной результат этого оператора будет таким же при одинаковых seed и не зависит от количества вызовов функции и от глобальных настроек семян (например, tf.random.set_seed).

Пример использования:

image = np.array([[[1], [2], [3]], [[4], [5], [6]], [[7], [8], [9]]])
bbox = tf.constant(
  [0.0, 0.0, 1.0, 1.0], dtype=tf.float32, shape=[1, 1, 4])
seed = (1, 2)
# Generate a single distorted bounding box.
bbox_begin, bbox_size, bbox_draw = (
  tf.image.stateless_sample_distorted_bounding_box(
    tf.shape(image), bounding_boxes=bbox, seed=seed))
# Employ the bounding box to distort the image.
tf.slice(image, bbox_begin, bbox_size)
<tf.Tensor: shape=(2, 2, 1), dtype=int64, numpy=
array([[[1],
        [2]],
       [[4],
        [5]]])>
# Draw the bounding box in an image summary.
colors = np.array([[1.0, 0.0, 0.0], [0.0, 0.0, 1.0]])
tf.image.draw_bounding_boxes(
  tf.expand_dims(tf.cast(image, tf.float32),0), bbox_draw, colors)
<tf.Tensor: shape=(1, 3, 3, 1), dtype=float32, numpy=
array([[[[1.],
         [1.],
         [3.]],
        [[1.],
         [1.],
         [6.]],
        [[7.],
         [8.],
         [9.]]]], dtype=float32)>

Обратите внимание, что если информация о прямоугольнике отсутствует, установка use_image_if_no_bounding_boxes = true предполагает существование одного неявного прямоугольника, охватывающего всё изображение. Если use_image_if_no_bounding_boxes ложно и прямоугольники не предоставлены, возникает ошибка.

Аргументы
image_size A Tensor. Должен быть одного из следующих типов: uint8, int8, int16, int32, int64. 1-мерный, содержащий [height, width, channels].
bounding_boxes A Tensor типа float32. 3-мерный с формой [batch, N, 4] описывает N прямоугольников, связанных с изображением.
seed Tensor формы [2], семя генератора случайных чисел. Должен иметь тип int32 или int64. (При использовании XLA, разрешен только int32.
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. Управляет поведением, если прямоугольники не предоставлены. Если истина, предполагает неявный прямоугольник, охватывающий весь вход. Если ложь, вызывает ошибку.
name Имя операции (необязательно).
Возвращаемые значения
Кортеж Tensor объектов (begin, size, bboxes).
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/r2.4/api_docs/python/tf/image/stateless_sample_distorted_bounding_box

Spec-Zone.ru

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