tensorflow::ops::StatelessSampleDistortedBoundingBox
#include <image_ops.h>
Генерирует случайную искажённую область для изображения детерминированным образом.
Summary
Аннотации границ часто предоставляются дополнительно к меткам фактических результатов в задачах распознавания изображений или локализации объектов. Общей техникой для обучения такой системы является случайное искажение изображения при сохранении его содержимого, т. е. усиление данных. Этот оператор, получив те же 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 ложно, а прямоугольники не указаны, возникает ошибка.
Аргументы:
- scope: Объект Scope
- image_size: 1-мерный массив, содержащий
[height, width, channels]. - bounding_boxes: 3-мерный массив с формой
[batch, N, 4], описывающий N прямоугольников, связанных с изображением. - min_object_covered: Область обрезки изображения должна содержать не менее этой доли любой из предоставленных прямоугольников. Значение этого параметра должно быть неотрицательным. В случае 0, область обрезки не должна перекрываться ни одним из предоставленных прямоугольников.
- seed: 1-мерный массив с формой
[2]. Семя генератора псевдослучайных чисел. Должен иметь типint32илиint64. (При использовании XLA разрешено толькоint32).
Необязательные атрибуты (см. Attrs):
- aspect_ratio_range: Область обрезки изображения должна иметь отношение сторон = ширина / высота в этом диапазоне.
- area_range: Область обрезки изображения должна содержать долю предоставленного изображения в этом диапазоне.
- max_attempts: Количество попыток сгенерировать область обрезки изображения с заданными ограничениями. После
max_attemptsнеудач возвращается всё изображение. - use_image_if_no_bounding_boxes: Управляет поведением, если прямоугольники не указаны. Если истинно, предполагается неявный прямоугольник, охватывающий весь вход. Если ложно, возникает ошибка.
Возвращаемое значение:
-
Outputbegin: 1-мерный массив, содержащий[offset_height, offset_width, 0]. Используйте в качестве входных данных дляtf.slice. -
Outputsize: 1-мерный массив, содержащий[target_height, target_width, -1]. Используйте в качестве входных данных дляtf.slice. -
Outputbboxes: 3-мерный массив с формой[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