РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
562 of 824 menu

Функция image.non_max_suppression

Функция image.non_max_suppression применяется к набору ограничивающих рамок и удаляет перекрывающиеся рамки с низкими оценками. Первым параметром передается тензор с рамками, вторым - тензор с оценками. Третьим параметром можно передать максимальное количество рамок, которые нужно оставить. Четвертым параметром задается порог пересечения по объединению (IoU), выше которого рамки считаются дублирующими.

Синтаксис

tf.image.non_max_suppression( boxes, scores, max_output_size, iou_threshold=0.5, score_threshold=float('-inf') )

Пример

Давайте создадим набор из четырех ограничивающих рамок и применим к ним подавление немаксимумов:

import tensorflow as tf boxes = tf.constant([ [0.0, 0.0, 1.0, 1.0], [0.0, 0.0, 0.9, 0.9], [0.0, 0.0, 0.5, 0.5], [5.0, 5.0, 6.0, 6.0] ]) scores = tf.constant([0.9, 0.8, 0.7, 0.6]) selected = tf.image.non_max_suppression( boxes, scores, max_output_size=2 ) print(selected)

Результат выполнения кода:

tf.Tensor([0 3], shape=(2,), dtype=int32)

Пример

Давайте увеличим максимальное количество оставляемых рамок и понизим порог IoU, чтобы оставить больше перекрывающихся рамок:

import tensorflow as tf boxes = tf.constant([ [0.0, 0.0, 1.0, 1.0], [0.0, 0.0, 0.9, 0.9], [0.0, 0.0, 0.5, 0.5], [5.0, 5.0, 6.0, 6.0] ]) scores = tf.constant([0.9, 0.8, 0.7, 0.6]) selected = tf.image.non_max_suppression( boxes, scores, max_output_size=4, iou_threshold=0.9 ) print(selected)

Результат выполнения кода:

tf.Tensor([0 2 3], shape=(3,), dtype=int32)

Пример

Давайте зададим порог оценки, чтобы отбросить рамки с низкими значениями:

<+python+> import tensorflow as tf boxes = tf.constant([ [0.0, 0.0, 1.0, 1.0], [0.0, 0.0, 0.9, 0.9], [0.0, 0.0, 0.5, 0.5], [5.0, 5.0, 6.0, 6.0] ]) scores = tf.constant([0.9, 0.8, 0.7, 0.6]) selected = tf.image.non_max_suppression( boxes, scores, max_output_size=4, score_threshold=0.75 ) print(selected) <-python+>

Результат выполнения кода:

tf.Tensor([0 1], shape=(2,), dtype=int32)

Смотрите также

  • функцию combined_non_max_suppression,
    которая выполняет подавление немаксимумов для нескольких классов
  • функцию draw_bounding_boxes,
    которая рисует ограничивающие рамки на изображении
  • функцию crop_to_bounding_box,
    которая обрезает изображение по ограничивающей рамке
  • функцию pad_to_bounding_box,
    которая дополняет изображение до размеров ограничивающей рамки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить