Spec-Zone.ru › TensorFlow

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 имеет значение false и рамки не предоставлены, генерируется ошибка.

Аргументы
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, size, bboxes).
begin A Tensor. Имеет тот же тип, что и image_size.
size A Tensor. Имеет тот же тип, что и image_size.
bboxes A Tensor типа float32.

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

Spec-Zone.ru

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