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, возникает ошибка.
Возвращает:
-
Outputbegin: 1-D, содержит[offset_height, offset_width, 0]. Передайте в качестве входных данных вtf.slice. -
Outputsize: 1-D, содержит[target_height, target_width, -1]. Передайте в качестве входных данных вtf.slice. -
Outputbboxes: 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 | |
begin | |
operation | |
size | |
| Открытые статические функции | |
|---|---|
AreaRange(const gtl::ArraySlice< float > & x) | |
AspectRatioRange(const gtl::ArraySlice< float > & x) | |
MaxAttempts(int64 x) | |
UseImageIfNoBoundingBoxes(bool x) | |
| Структуры | |
|---|---|
| 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