Spec-Zone.ru › TensorFlow 2.4

tf.raw_ops.StatelessSampleDistortedBoundingBox

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

Просмотр псевдонимов

Совместимые псевдонимы для миграции

См. Руководство по миграции для получения дополнительных сведений.

tf.compat.v1.raw_ops.StatelessSampleDistortedBoundingBox

tf.raw_ops.StatelessSampleDistortedBoundingBox(
    image_size, bounding_boxes, min_object_covered, seed, aspect_ratio_range=[0.75,
    1.33], area_range=[0.05, 1], max_attempts=100,
    use_image_if_no_bounding_boxes=False, 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-D, содержащий [height, width, channels].
bounding_boxes A Tensor типа float32. 3-D с формой [batch, N, 4] описывает N рамок, связанных с изображением.
min_object_covered A Tensor типа float32. Область обрезки изображения должна содержать не менее этой доли любой предоставленной рамки. Значение этого параметра должно быть неотрицательным. В случае 0, область обрезки не обязана пересекаться ни с одной из предоставленных рамок.
seed A Tensor. Должен быть одного из следующих типов: int32, int64. 1-D с формой [2]. Семя генератора случайных чисел. Должен иметь тип int32 или int64. (При использовании XLA, разрешён только int32).
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 A Tensor. Имеет тот же тип, что и image_size.
size A Tensor. Имеет тот же тип, что и image_size.
bboxes A Tensor типа float32.

© 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/raw_ops/StatelessSampleDistortedBoundingBox

Spec-Zone.ru

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