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_with_scores возвращает новые оценки каждого входного прямоугольника во втором выходе, selected_scores.
Для включения режима Soft-NMS установите параметр soft_nms_sigma больше нуля. Когда soft_nms_sigma равно 0, поведение tf.image.non_max_suppression_with_scores идентично поведению tf.image.non_max_suppression (кроме дополнительного вывода) как по функциональности, так и по времени выполнения.
Обратите внимание, что при soft_nms_sigma > 0 выполняется Soft-NMS и iou_threshold игнорируется. iou_threshold используется только для стандартного NMS.
| Аргументы | |
|---|---|
boxes | Матрица с плавающей точкой 2-D Tensor формы [num_boxes, 4]. |
scores | Вектор с плавающей точкой 1-D 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-D Tensor формы [M] представляющий выбранные индексы из тензора прямоугольников, где M <= max_output_size. |
selected_scores | Вектор с плавающей точкой 1-D формы [M] представляющий соответствующие оценки для каждого выбранного прямоугольника, где M <= max_output_size. Оценки отличаются от соответствующих входных оценок только при использовании Soft NMS (т.е. при soft_nms_sigma>0) |
© 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/versions/r2.9/api_docs/python/tf/image/non_max_suppression_with_scores