Детерминированно сгенерируйте случайно искаженную ограничивающую рамку для изображения.
Аннотации ограничивающего прямоугольника часто предоставляются в дополнение к основным меткам в задачах распознавания изображений или локализации объектов. Распространенным методом обучения такой системы является случайное искажение изображения с сохранением его содержания, т. е. увеличение данных . Эта операция, учитывая одно и то же начальное значение, детерминированно выводит случайно искаженную локализацию объекта, то есть ограничивающую рамку с учетом размера изображения, ограничивающих_боксов и ряда ограничений.
Результатом этой операции является единая ограничивающая рамка, которую можно использовать для обрезки исходного изображения. Выходные данные возвращаются в виде трех тензоров: «begin», «size» и «bboxes». Первые два тензора можно передать непосредственно в tf.slice
для обрезки изображения. Последний может быть передан в tf.image.draw_bounding_boxes
, чтобы визуализировать, как выглядит ограничивающий прямоугольник.
Ограничительные рамки предоставляются и возвращаются как `[y_min, x_min, y_max, x_max]`. Координаты ограничивающего прямоугольника представляют собой числа с плавающей запятой в `[0.0, 1.0]` относительно ширины и высоты основного изображения.
Выходные данные этой операции гарантированно будут одинаковыми при наличии одного и того же начального числа и не зависят от того, сколько раз вызывается функция, а также от глобальных настроек начального числа (например, 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]) >>> семя = (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(изображение, bbox_begin, bbox_size) Обратите внимание: если информация об ограничивающей рамке недоступна, установка `use_image_if_no_bounding_boxes = true` будет предполагать, что существует одна неявная ограничивающая рамка, охватывающая все изображение. Если `use_image_if_no_bounding_boxes` имеет значение false и ограничивающие рамки не указаны, возникает ошибка.
Вложенные классы
сорт | StatelessSampleDistortedBoundingBox.Options | Необязательные атрибуты для StatelessSampleDistortedBoundingBox |
Константы
Нить | OP_NAME | Название этой операции, известное основному движку TensorFlow. |
Публичные методы
статический StatelessSampleDistortedBoundingBox.Options | areaRange (Список<Float> areaRange) |
статический StatelessSampleDistortedBoundingBox.Options | аспектРатиоРанге (Список<Float> аспектРатиоРанге) |
Вывод <TFloat32> | ббоксы () Трехмерное изображение с формой `[1, 1, 4]`, содержащее искаженную ограничивающую рамку. |
Выход <Т> | начинать () 1-D, содержащий `[offset_height, offset_width, 0]`. |
static <T расширяет TNumber > StatelessSampleDistortedBoundingBox <T> | |
статический StatelessSampleDistortedBoundingBox.Options | maxAttempts (длинные maxAttempts) |
Выход <Т> | размер () 1-D, содержащий `[target_height, target_width, -1]`. |
статический StatelessSampleDistortedBoundingBox.Options | useImageIfNoBoundingBoxes (логическое значение useImageIfNoBoundingBoxes) |
Унаследованные методы
Константы
общедоступная статическая финальная строка OP_NAME
Название этой операции, известное основному движку TensorFlow.
Публичные методы
общедоступный статический StatelessSampleDistortedBoundingBox.Options areaRange (List<Float> areaRange)
Параметры
площадьДиапазон | Обрезанная область изображения должна содержать часть предоставленного изображения в пределах этого диапазона. |
---|
общедоступный статический StatelessSampleDistortedBoundingBox.Options аспектRatioRange (List<Float> аспектRatioRange)
Параметры
аспектRatioRange | Обрезанная область изображения должна иметь соотношение сторон = ширина/высота в пределах этого диапазона. |
---|
публичный вывод <TFloat32> bboxes ()
Трехмерное изображение с формой `[1, 1, 4]`, содержащее искаженную ограничивающую рамку. Предоставьте входные данные для tf.image.draw_bounding_boxes
.
публичный вывод <T> начать ()
1-D, содержащий `[offset_height, offset_width, 0]`. Предоставьте входные данные для tf.slice
.
public static StatelessSampleDistortedBoundingBox <T> create ( Область действия, Operand <T> imageSize, Operand < TFloat32 >boundingBoxes, Operand < TFloat32 > minObjectCovered, Operand <? расширяет TNumber > семя, параметры... параметры)
Фабричный метод для создания класса, обертывающего новую операцию StatelessSampleDistortedBoundingBox.
Параметры
объем | текущий объем |
---|---|
Размер изображения | 1-D, содержащий `[высоту, ширину, каналы]`. |
ограничивающие коробки | Трехмерное изображение с формой `[batch, N, 4]`, описывающее N ограничивающих рамок, связанных с изображением. |
minObjectCovered | Обрезанная область изображения должна содержать как минимум эту часть любой предоставленной ограничивающей рамки. Значение этого параметра должно быть неотрицательным. В случае 0 обрезанная область не обязательно должна перекрывать какую-либо из предоставленных ограничивающих рамок. |
семя | 1-D с формой `[2]`. Начальное значение для генератора случайных чисел. Должен иметь тип dtype `int32` или `int64`. (При использовании XLA допускается только `int32`.) |
параметры | содержит значения необязательных атрибутов |
Возврат
- новый экземпляр StatelessSampleDistortedBoundingBox
общедоступный статический StatelessSampleDistortedBoundingBox.Options maxAttempts (Long maxAttempts)
Параметры
МаксПопытки | Количество попыток создания обрезанной области изображения с указанными ограничениями. После сбоя max_attempts вернуть все изображение. |
---|
размер публичного вывода <T> ()
1-D, содержащий `[target_height, target_width, -1]`. Предоставьте входные данные для tf.slice
.
public static StatelessSampleDistortedBoundingBox.Options useImageIfNoBoundingBoxes (логическое значение useImageIfNoBoundingBoxes)
Параметры
использоватьImageIfNoBoundingBoxes | Управляет поведением, если ограничивающие рамки не указаны. Если это правда, предположим, что неявная ограничивающая рамка охватывает весь ввод. Если false, выдать ошибку. |
---|