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 )