Yolo Vision Shenzhen
Шэньчжэнь
Присоединиться сейчас
Глоссарий

Немаксимальное подавлениеNMS)

Узнайте, как Non-Maximum Suppression (NMS) устраняет дублирующиеся ограничительные рамки при обнаружении объектов. Узнайте, как Ultralytics обеспечивает нативную сквозную NMS.

Немаксимальное подавление (NMS) — это метод постобработки, используемый в обнаружении объектов для уточнения исходных прогнозов, сделанных моделью. Когда модель обнаружения объектов анализирует изображение, она часто генерирует несколько перекрывающихся ограничительных рамок для одного объекта, каждая из которых имеет связанный с ней показатель достоверности. Эти избыточные прогнозы возникают из-за того, что модель может detect в слегка разных масштабах или положениях. NMS этот результат, сохраняя только самую точную ограничительную рамку для каждого объекта и отбрасывая остальные, обеспечивая чистоту, точность и отсутствие дубликатов в окончательном результате.

Как работает немаксимальное подавление

NMS работает со списком кандидатов в ограничивающие прямоугольники и соответствующими им оценками достоверности. Цель заключается в выборе лучшего прямоугольника для объекта и подавлении (удалении) любых других прямоугольников, которые значительно перекрываются с ним, так как они, вероятно, являются дубликатами обнаружений одного и того же объекта. Процесс обычно состоит из следующих шагов:

  1. Фильтрация: удалите все ограничительные рамки с показателями достоверности ниже определенного порога (например, 0,25), чтобы сразу удалить слабые прогнозы.
  2. Сортировка: отсортируйте оставшиеся ящики в порядке убывания по их показателям достоверности.
  3. Выбор: выберите ячейку с наивысшим показателем достоверности в качестве действительного обнаружения.
  4. Сравнение: сравните выбранную рамку со всеми остальными рамками с помощью Intersection over Union (IoU) — метрики, которая измеряет пересечение между двумя рамками.
  5. Подавление: если IoU выбранным прямоугольником и другим прямоугольником превышает заранее заданный порог (например, 0,45), прямоугольник с более низким баллом считается дубликатом и удаляется.
  6. Итерация: Повторите процесс со следующим ящиком с наибольшим количеством баллов, который еще не был подавлен или выбран, пока все ящики не будут обработаны.

Применение в реальном мире

NMS в ситуациях, когда точность имеет первостепенное значение, а дублирующиеся обнаружения могут сбить с толку последующие системы.

  • Автономное вождение: в системах самоуправляемых автомобилей камеры detect , другие транспортные средства и дорожные знаки. Модель может предсказать три слегка отличающихся друг от друга прямоугольника для одного пешехода. NMS , что система планирования автомобиля получает только одну координату для этого пешехода, предотвращая непредсказуемое торможение или ошибки планирования траектории, вызванные «фантомными» препятствиями.
  • Управление запасами в розничной торговле: при использовании компьютерного зрения для подсчета продуктов на полке товары часто упакованы плотно друг к другу. Без NMS одна банка газировки может быть подсчитана дважды из-за перекрывающихся прогнозов, что приводит к неточным данным об уровне запасов. NMS эти обнаружения, чтобы обеспечить соответствие подсчета запасов реальности.

NMS с помощью PyTorch

Хотя многие современные фреймворки обрабатывают NMS , понимание реализации помогает в настройке параметров. Следующий пример демонстрирует, как применить NMS PyTorch :

import torch
import torchvision.ops as ops

# Example bounding boxes: [x1, y1, x2, y2]
boxes = torch.tensor(
    [
        [100, 100, 200, 200],  # Box A
        [105, 105, 195, 195],  # Box B (High overlap with A)
        [300, 300, 400, 400],  # Box C (Distinct object)
    ],
    dtype=torch.float32,
)

# Confidence scores for each box
scores = torch.tensor([0.9, 0.8, 0.95], dtype=torch.float32)

# Apply NMS with an IoU threshold of 0.5
# Boxes with IoU > 0.5 relative to the highest scoring box are suppressed
keep_indices = ops.nms(boxes, scores, iou_threshold=0.5)

print(f"Indices to keep: {keep_indices.tolist()}")
# Output will likely be [2, 0] corresponding to Box C (0.95) and Box A (0.9),
# while Box B (0.8) is suppressed due to overlap with A.

NMS сквозного обнаружения

Традиционно NMS обязательным этапом «очистки», который находится вне основной нейронной сети, увеличивая задержку вывода. Однако эта область развивается в сторону сквозных архитектур.

  • Стандартный NMS: эвристический процесс, требующий ручной настройки IoU . Если порог слишком низкий, могут быть пропущены действительные объекты, расположенные близко друг к другу (низкая точность). Если слишком высокий, остаются дубликаты ( низкая точность).
  • Модели «от начала до конца»: Модели нового поколения, такие как YOLO26, разработаны как модели «от начала до конца». Они учатся предсказывать точно одно поле на объект во время обучения, эффективно интернализируя NMS . Это устраняет необходимость во внешней постобработке, что приводит к более быстрой скорости вывода и более простым конвейерам развертывания на Ultralytics .

Связанные понятия

  • NMS: вариант, при котором перекрывающиеся прямоугольники не удаляются полностью, а их оценки достоверности снижаются. Это позволяет обнаруживать объекты, которые частично перекрываются (например, людей в толпе), если их оценки остаются достаточно высокими после снижения.
  • Ячейки-якоря: заранее определенные формы ячеек, используемые многими детекторами для оценки размера объекта. NMS к окончательным прогнозам, уточненным на основе этих якорей.
  • Пересечение над объединением (IoU): Математическая формула, используемая NMS определения степени пересечения двух прямоугольников, выступающая в качестве порогового значения для подавления.

Присоединяйтесь к сообществу Ultralytics

Присоединяйтесь к будущему ИИ. Общайтесь, сотрудничайте и развивайтесь вместе с мировыми новаторами

Присоединиться сейчас