Spec-Zone.ru › TensorFlow C++

tensorflow::ops::StatelessSampleDistortedBoundingBox

#include <image_ops.h>

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

Краткое описание

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

Создание одной искажённой ограничивающей рамки.

bbox_begin, bbox_size, bbox_draw = ( ... tf.image.stateless_sample_distorted_bounding_box( ... tf.shape(image), bounding_boxes=bbox, seed=seed))

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

tf.slice(image, bbox_begin, bbox_size)

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

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)

Обратите внимание: если сведения об ограничивающих рамках отсутствуют, параметр use_image_if_no_bounding_boxes = true предполагает наличие одной неявной ограничивающей рамки, охватывающей всё изображение. Если use_image_if_no_bounding_boxes имеет значение false и ограничивающие рамки не указаны, возникает ошибка.

Аргументы:

  • scope: объект Scope
  • image_size: 1-D, содержит [height, width, channels].
  • bounding_boxes: 3-D с формой [batch, N, 4], описывающий N ограничивающих рамок, связанных с изображением.
  • min_object_covered: Обрезанная область изображения должна содержать не менее этой доли любой указанной ограничивающей рамки. Значение этого параметра должно быть неотрицательным. Если значение равно 0, обрезанная область не обязана перекрывать ни одну из указанных ограничивающих рамок.
  • seed: 1-D с формой [2]. Начальное значение для генератора случайных чисел. Должно иметь тип данных int32 или int64. (При использовании XLA разрешён только тип int32.)

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

  • aspect_ratio_range: Соотношение сторон обрезанной области изображения (ширина / высота) должно находиться в этом диапазоне.
  • area_range: Доля исходного изображения, содержащаяся в обрезанной области, должна находиться в этом диапазоне.
  • max_attempts: Количество попыток создать обрезанную область изображения, соответствующую заданным ограничениям. После max_attempts неудачных попыток возвращается всё изображение.
  • use_image_if_no_bounding_boxes: Определяет поведение при отсутствии ограничивающих рамок. Если значение true, предполагается наличие неявной ограничивающей рамки, охватывающей всё исходное изображение. Если значение false, возникает ошибка.

Возвращает:

  • Output begin: 1-D, содержит [offset_height, offset_width, 0]. Передайте в качестве входных данных в tf.slice.
  • Output size: 1-D, содержит [target_height, target_width, -1]. Передайте в качестве входных данных в tf.slice.
  • Output bboxes: 3-D с формой [1, 1, 4], содержит искажённую ограничивающую рамку. Передайте в качестве входных данных в tf.image.draw_bounding_boxes.
Конструкторы и деструкторы
StatelessSampleDistortedBoundingBox(const ::tensorflow::Scope & scope, ::tensorflow::Input image_size, ::tensorflow::Input bounding_boxes, ::tensorflow::Input min_object_covered, ::tensorflow::Input seed)
StatelessSampleDistortedBoundingBox(const ::tensorflow::Scope & scope, ::tensorflow::Input image_size, ::tensorflow::Input bounding_boxes, ::tensorflow::Input min_object_covered, ::tensorflow::Input seed, const StatelessSampleDistortedBoundingBox::Attrs & attrs)
Открытые атрибуты
bboxes
::tensorflow::Output
begin
::tensorflow::Output
operation
Operation
size
::tensorflow::Output
Открытые статические функции
AreaRange(const gtl::ArraySlice< float > & x)
Attrs
AspectRatioRange(const gtl::ArraySlice< float > & x)
Attrs
MaxAttempts(int64 x)
Attrs
UseImageIfNoBoundingBoxes(bool x)
Attrs
Структуры
tensorflow::ops::StatelessSampleDistortedBoundingBox::Attrs

Методы настройки необязательных атрибутов для StatelessSampleDistortedBoundingBox.

Открытые атрибуты

bboxes

::tensorflow::Output bboxes

begin

::tensorflow::Output begin

operation

Operation operation

size

::tensorflow::Output size

Открытые функции

StatelessSampleDistortedBoundingBox

 StatelessSampleDistortedBoundingBox(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input image_size,
  ::tensorflow::Input bounding_boxes,
  ::tensorflow::Input min_object_covered,
  ::tensorflow::Input seed
)

StatelessSampleDistortedBoundingBox

 StatelessSampleDistortedBoundingBox(
  const ::tensorflow::Scope & scope,
  ::tensorflow::Input image_size,
  ::tensorflow::Input bounding_boxes,
  ::tensorflow::Input min_object_covered,
  ::tensorflow::Input seed,
  const StatelessSampleDistortedBoundingBox::Attrs & attrs
)

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

AreaRange

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

AspectRatioRange

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

MaxAttempts

Attrs MaxAttempts(
  int64 x
)

UseImageIfNoBoundingBoxes

Attrs UseImageIfNoBoundingBoxes(
  bool x
)

© 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/cc/class/tensorflow/ops/stateless-sample-distorted-bounding-box

Spec-Zone.ru

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