tf.image.non_max_suppression_with_scores
| Просмотреть исходный код на GitHub |
Жадно выбирает подмножество прямоугольников в порядке убывания оценки.
tf.image.non_max_suppression_with_scores(
boxes, scores, max_output_size, iou_threshold=0.5,
score_threshold=float('-inf'), soft_nms_sigma=0.0, name=None
)
Удаляет прямоугольники, которые имеют высокое перекрытие (IOU) с ранее выбранными прямоугольниками. Прямоугольники задаются как [y1, x1, y2, x2], где (y1, x1) и (y2, x2) — координаты любой пары диагональных углов прямоугольника, и координаты могут быть заданы в нормированном виде (т. е., в интервале [0, 1]) или в абсолютном виде. Обратите внимание, что этот алгоритм не зависит от начала координат в системе координат. Обратите внимание, что этот алгоритм инвариантен к ортогональным преобразованиям и сдвигам системы координат; таким образом, перевод или отражение системы координат приводят к выбору одних и тех же прямоугольников алгоритмом. Результатом этой операции является набор целых чисел, индексирующих входную коллекцию прямоугольников, представляющих выбранные прямоугольники. Координаты прямоугольников, соответствующие выбранным индексам, можно получить с помощью операции tf.gather. Например:
selected_indices, selected_scores = tf.image.non_max_suppression_padded(
boxes, scores, max_output_size, iou_threshold=1.0, score_threshold=0.1,
soft_nms_sigma=0.5)
selected_boxes = tf.gather(boxes, selected_indices)
Эта функция обобщает операцию tf.image.non_max_suppression, также поддерживая режим Soft-NMS (с гауссовым взвешиванием) (см. Bodla и др., https://arxiv.org/abs/1704.04503), где прямоугольники уменьшают оценку других перекрывающихся прямоугольников вместо прямого удаления. Соответственно, в отличие от tf.image.non_max_suppression, tf.image.non_max_suppression_padded возвращает новые оценки каждого входного прямоугольника во втором выводе, selected_scores.
Чтобы включить этот режим Soft-NMS, необходимо установить параметр soft_nms_sigma больше нуля. Когда soft_nms_sigma равно 0, поведение tf.image.non_max_suppression_padded идентично поведению tf.image.non_max_suppression (за исключением дополнительного выхода) как по функции, так и по времени выполнения.
| Аргументы | |
|---|---|
boxes | 2-мерный float Tensor формы [num_boxes, 4]. |
scores | 1-мерный float Tensor формы [num_boxes] представляющий единственную оценку, соответствующую каждому прямоугольнику (каждая строка прямоугольников). |
max_output_size | Целочисленный скаляр Tensor представляющий максимальное количество прямоугольников, которые должны быть выбраны методом подавления не максимальных. |
iou_threshold | Вещественное число, представляющее порог для определения, слишком ли сильно перекрываются прямоугольники относительно IOU. |
score_threshold | Вещественное число, представляющее порог для определения, следует ли удалять прямоугольники на основе оценки. |
soft_nms_sigma | Скалярное вещественное число, представляющее параметр сигмы Soft NMS; см. Bodla и др., https://arxiv.org/abs/1704.04503). При значении soft_nms_sigma=0.0 (которое является значением по умолчанию), мы возвращаемся к стандартному (жесткому) NMS. |
name | Имя операции (необязательно). |
| Возвращаемые значения | |
|---|---|
selected_indices | 1-мерный целочисленный Tensor формы [M] представляющий выбранные индексы из тензора прямоугольников, где M <= max_output_size. |
selected_scores | 1-мерный тензор с плавающей запятой формы [M] представляющий соответствующие оценки для каждого выбранного прямоугольника, где M <= max_output_size. Оценки отличаются от соответствующих входных оценок только при использовании Soft NMS (т. е., когда soft_nms_sigma>0) |
© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.3/api_docs/python/tf/image/non_max_suppression_with_scores