tf.image.combined_non_max_suppression
Жадно выбирает подмножество ограничивающих рамок в порядке убывания оценки.
tf.image.combined_non_max_suppression(
boxes,
scores,
max_output_size_per_class,
max_total_size,
iou_threshold=0.5,
score_threshold=float('-inf'),
pad_per_class=False,
clip_boxes=True,
name=None
)
Эта операция выполняет non_max_suppression для входных данных каждого элемента пакета сразу по всем классам. Она удаляет рамки, которые имеют большое перекрытие по метрике intersection-over-union (IOU) с ранее выбранными рамками. Ограничивающие рамки задаются в формате [y1, x1, y2, x2], где (y1, x1) и (y2, x2) — координаты любой пары диагонально противоположных углов рамки; координаты могут быть нормализованными (то есть находиться в интервале [0, 1]) или абсолютными. Обратите внимание, что алгоритм не зависит от расположения начала координат в системе координат. Также алгоритм инвариантен относительно ортогональных преобразований и переносов системы координат: поэтому переносы и отражения системы координат приводят к выбору алгоритмом одних и тех же рамок. Результатом этой операции являются тензоры итоговых рамок, оценок и классов, возвращаемые после выполнения non_max_suppression.
| Аргументы | |
|---|---|
boxes | 4-D float Tensor формы [batch_size, num_boxes, q, 4]. Если q равно 1, для всех классов используются одни и те же рамки; в противном случае, если q равно количеству классов, используются рамки, соответствующие конкретным классам. |
scores | 3-D float Tensor формы [batch_size, num_boxes, num_classes], представляющий одну оценку для каждой рамки (каждой строки рамок). |
max_output_size_per_class | Целочисленный скаляр Tensor, задающий максимальное количество рамок, выбираемых с помощью подавления немаксимумов для каждого класса. |
max_total_size | Скаляр типа int32, задающий максимальное количество рамок, сохраняемых для всех классов. Обратите внимание, что большое значение этого параметра может привести к ошибке OOM в зависимости от нагрузки на систему. |
iou_threshold | Значение типа float, задающее порог, при превышении которого рамки считаются слишком сильно перекрывающимися по метрике IOU. |
score_threshold | Значение типа float, задающее порог оценки, ниже которого рамки удаляются. |
pad_per_class | Если значение false, выходные рамки, оценки и классы после NMS дополняются нулями или обрезаются до max_total_size. Если значение true, выходные рамки, оценки и классы после NMS дополняются до длины max_size_per_class*num_classes, если только она не превышает max_total_size; в этом случае данные обрезаются до max_total_size. По умолчанию — false. |
clip_boxes | Если значение true, координаты выходных рамок после NMS обрезаются до диапазона [0, 1]. Если значение false, координаты рамок выводятся без изменений. По умолчанию — true. |
name | Имя операции (необязательно). |
| Возвращаемые значения | |
|---|---|
'nmsed_boxes' | Тензор float32 формы [batch_size, max_detections, 4], содержащий рамки, оставшиеся после подавления немаксимумов. |
'nmsed_scores' | Тензор float32 формы [batch_size, max_detections], содержащий оценки рамок. |
'nmsed_classes' | Тензор float32 формы [batch_size, max_detections], содержащий классы рамок. |
'valid_detections' | Тензор int32 формы [batch_size], указывающий количество допустимых обнаружений для каждого элемента пакета. Допустимы только первые valid_detections[i] элементов в nms_boxes[i], nms_scores[i] и nms_class[i]. Остальные элементы дополнены нулями. |
© 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/python/tf/image/combined_non_max_suppression