tensorflow::ops::SampleDistortedBoundingBox

#include <image_ops.h>

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

Краткое содержание

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

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

Аргументы:

  • scope: Объект Scope
  • image_size: 1-мерный, содержащий [height, width, channels] .
  • bounding_boxes: 3D-объект с формой [batch, N, 4] , описывающий N ограничивающих прямоугольников, связанных с изображением.

Дополнительные атрибуты (см. Attrs ):

  • seed: Если seed или seed2 заданы ненулевыми значениями, генератор случайных чисел инициализируется заданным значением seed . В противном случае он инициализируется случайным значением seed.
  • seed2: Второй начальный параметр для предотвращения конфликта начальных параметров.
  • min_object_covered: Обрезанная область изображения должна содержать как минимум эту долю любой предоставленной ограничивающей рамки. Значение этого параметра должно быть неотрицательным. В случае значения 0 обрезанная область не должна перекрывать ни одну из предоставленных ограничивающих рамок.
  • aspect_ratio_range: Обрезанная область изображения должна иметь соотношение сторон, равное ширине / высоте, в пределах указанного диапазона.
  • area_range: Обрезанная область изображения должна содержать часть предоставленного изображения, находящуюся в пределах этого диапазона.
  • max_attempts: Количество попыток генерации обрезанной области изображения с заданными ограничениями. После max_attempts неудачных попыток возвращает всё изображение целиком.
  • use_image_if_no_bounding_boxes: Управляет поведением, если ограничивающие рамки не указаны. Если true, предполагается наличие неявной ограничивающей рамки, покрывающей все входные данные. Если false, генерируется ошибка.

Возвращает:

  • Начало Output : 1-мерный массив, содержащий [offset_height, offset_width, 0] . Передайте в качестве входных данных для tf.slice .
  • Размер Output : 1-мерный, содержащий [target_height, target_width, -1] . Передайте в качестве входных данных для tf.slice .
  • Output ограничивающие рамки: 3D-объект формы [1, 1, 4] , содержащий искаженную ограничивающую рамку. Предоставьте в качестве входных данных для функции tf.image.draw_bounding_boxes .

Конструкторы и Деструкторы

SampleDistortedBoundingBox (const :: tensorflow::Scope & scope, :: tensorflow::Input image_size, :: tensorflow::Input bounding_boxes)
SampleDistortedBoundingBox (const :: tensorflow::Scope & scope, :: tensorflow::Input image_size, :: tensorflow::Input bounding_boxes, const SampleDistortedBoundingBox::Attrs & attrs)

Общедоступные атрибуты

bboxes
begin
operation
size

Открытые статические функции

AreaRange (const gtl::ArraySlice< float > & x)
AspectRatioRange (const gtl::ArraySlice< float > & x)
MaxAttempts (int64 x)
MinObjectCovered (float x)
Seed (int64 x)
Seed2 (int64 x)
UseImageIfNoBoundingBoxes (bool x)

Структуры

tensorflow::ops::SampleDistortedBoundingBox::Attrs

Дополнительные параметры установки атрибутов для SampleDistortedBoundingBox .

Общедоступные атрибуты

bboxes

::tensorflow::Output bboxes

начинать

::tensorflow::Output begin

операция

Operation operation

размер

::tensorflow::Output size

Общественные функции

SampleDistortedBoundingBox

 SampleDistortedBoundingBox(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input image_size,
  ::tensorflow::Input bounding_boxes
)

SampleDistortedBoundingBox

 SampleDistortedBoundingBox(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input image_size,
  ::tensorflow::Input bounding_boxes,
  const SampleDistortedBoundingBox::Attrs & attrs
)

Открытые статические функции

Диапазон площадей

Attrs AreaRange(
  const gtl::ArraySlice< float > & x
)

AspectRatioRange

Attrs AspectRatioRange(
  const gtl::ArraySlice< float > & x
)

Максимальное количество попыток

Attrs MaxAttempts(
  int64 x
)

MinObjectCovered

Attrs MinObjectCovered(
  float x
)

Семя

Attrs Seed(
  int64 x
)

Seed2

Attrs Seed2(
  int64 x
)

UseImageIfNoBoundingBoxes

Attrs UseImageIfNoBoundingBoxes(
  bool x
)