Spec-Zone.ru › TensorFlow 2.9

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. Управляет поведением, если области не указаны. Если истинно, предполагается неявная область, покрывающая весь вход. Если ложно, то возникает ошибка.
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/versions/r2.9/api_docs/python/tf/raw_ops/StatelessSampleDistortedBoundingBox

Spec-Zone.ru

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