tensorflow::ops::StatelessSampleDistortedBoundingBox
#include <image_ops.h>
Генерация случайной искажённой рамки для изображения с детерминированным результатом.
Краткое описание
Аннотации границ области часто предоставляются наряду с истинными метками в задачах распознавания изображений или локализации объектов. Распространённый метод обучения такой системы заключается в случайном искажении изображения при сохранении его содержимого, т. е. усиление данных. Данный оператор, при одинаковых seed, детерминированно выводит случайное искажение локализации объекта, т. е. рамки, заданной image_size, bounding_boxes и рядом ограничений.
Выходной результат данного оператора — одна рамка, которая может использоваться для обрезки исходного изображения. Результат возвращается как 3 тензора: begin, size и bboxes. Первые два тензора можно напрямую использовать в 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 ложно, а рамки не предоставлены, генерируется ошибка.
Аргументы:
- 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 )
© 2020 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/versions/r2.4/api_docs/cc/class/tensorflow/ops/stateless-sample-distorted-bounding-box