тензорный поток:: опс:: СэмплДистортедБаундингбокс

#include <image_ops.h>

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

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

Аннотации ограничивающего прямоугольника часто предоставляются в дополнение к основным меткам в задачах распознавания изображений или локализации объектов. Распространенным методом обучения такой системы является случайное искажение изображения с сохранением его содержания, т. е. увеличение данных . Эта операция выводит случайно искаженную локализацию объекта, т.е. ограничивающую рамку с учетом image_size , bounding_boxes и ряда ограничений.

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

Аргументы:

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

Необязательные атрибуты (см. Attrs ):

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

Возврат:

  • Начало Output : 1-D, содержащее [offset_height, offset_width, 0] . Предоставьте входные данные для tf.slice .
  • Размер Output : 1-D, содержащий [target_height, target_width, -1] . Предоставьте входные данные для tf.slice .
  • Output bbox: трехмерные с формой [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(
  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
)

Публичные статические функции

ПлощадьДиапазон

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

АспектСоотношениеДиапазон

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

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

Attrs MaxAttempts(
  int64 x
)

МинОбъектПокрытый

Attrs MinObjectCovered(
  float x
)

Семя

Attrs Seed(
  int64 x
)

Семя2

Attrs Seed2(
  int64 x
)

Усеимажелифнобаундингбоксес

Attrs UseImageIfNoBoundingBoxes(
  bool x
)