Yolo Vision Shenzhen
Shenzhen
Únete ahora
Glosario

Supresión no máximaNMS)

Descubra cómo la supresión no máxima (NMS) elimina los cuadros delimitadores duplicados en la detección de objetos. Descubra cómo Ultralytics proporciona NMS nativa de extremo a extremo.

La supresión no máxima (NMS) es una técnica de posprocesamiento utilizada en la detección de objetos para refinar las predicciones brutas realizadas por un modelo. Cuando un modelo de detección de objetos analiza una imagen, a menudo genera múltiples cuadros delimitadores superpuestos para un solo objeto, cada uno con una puntuación de confianza asociada. Estas predicciones redundantes se producen porque el modelo puede detect misma característica en escalas o posiciones ligeramente diferentes. NMS esta salida manteniendo solo el cuadro delimitador más preciso para cada objeto y descartando los demás, lo que garantiza que la salida final sea limpia, precisa y libre de duplicados.

¿Cómo funciona la supresión no máxima?

El NMS opera sobre una lista de rectángulos delimitadores candidatos y sus puntuaciones de confianza correspondientes. El objetivo es seleccionar el mejor rectángulo para un objeto y suprimir (eliminar) cualquier otro rectángulo que se superponga significativamente con él, ya que es probable que se trate de detecciones duplicadas del mismo objeto. El proceso suele seguir estos pasos:

  1. Filtrado: elimina todos los recuadros delimitadores con puntuaciones de confianza por debajo de un umbral específico (por ejemplo, 0,25) para eliminar inmediatamente las predicciones débiles.
  2. Ordenación: Ordena las cajas restantes en orden descendente según sus puntuaciones de confianza.
  3. Selección: Elija la casilla con la puntuación de confianza más alta como detección válida.
  4. Comparación: compara este cuadro seleccionado con todos los demás cuadros restantes utilizando la intersección sobre la unión (IoU), una métrica que mide la superposición entre dos cuadros.
  5. Supresión: si la IoU el recuadro seleccionado y otro recuadro supera un umbral predefinido (por ejemplo, 0,45), el recuadro con la puntuación más baja se considera un duplicado y se elimina.
  6. Iteración: Repita el proceso con la siguiente casilla con la puntuación más alta que aún no haya sido suprimida o seleccionada, hasta que se hayan procesado todas las casillas.

Aplicaciones en el mundo real

NMS esencial en situaciones en las que la precisión es fundamental y las detecciones duplicadas pueden confundir a los sistemas posteriores.

  • Conducción autónoma: En los sistemas de conducción autónoma, las cámaras detect , otros vehículos y señales de tráfico. Un modelo podría predecir tres recuadros ligeramente diferentes para un solo peatón. NMS el sistema de planificación del vehículo reciba solo una coordenada para ese peatón, evitando frenadas erráticas o errores de planificación de la trayectoria causados por obstáculos «fantasma».
  • Gestión de inventario minorista: cuando se utiliza la visión por ordenador para contar productos en una estantería, los artículos suelen estar muy juntos. Sin NMS, una sola lata de refresco podría contarse dos veces debido a la superposición de predicciones, lo que daría lugar a niveles de stock inexactos. NMS estas detecciones para garantizar que el recuento de inventario coincida con la realidad.

NMS con PyTorch

Aunque muchos marcos modernos gestionan NMS , comprender la implementación ayuda a ajustar los parámetros. El siguiente ejemplo muestra cómo aplicar NMS la 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 a detección de extremo a extremo

Tradicionalmente, NMS sido un paso de «limpieza» obligatorio que se sitúa fuera de la red neuronal principal, lo que añade latencia a la inferencia. Sin embargo, el campo está evolucionando hacia arquitecturas de extremo a extremo.

  • NMS estándar: un proceso heurístico que requiere el ajuste manual del IoU . Si el umbral es demasiado bajo, es posible que se pierdan objetos válidos cercanos entre sí (baja recuperación). Si es demasiado alto, quedan duplicados (baja precisión).
  • Modelos de extremo a extremo: Los modelos de última generación, como YOLO26, están diseñados para ser nativamente de extremo a extremo. Aprenden a predecir exactamente un recuadro por objeto durante el entrenamiento, internalizando eficazmente el NMS . Esto elimina la necesidad de un posprocesamiento externo, lo que se traduce en velocidades de inferencia más rápidas y procesos de implementación más sencillos en la Ultralytics .

Conceptos Relacionados

  • NMS: Una variación en la que los recuadros superpuestos no se eliminan estrictamente, sino que se reduce su puntuación de confianza. Esto permite que los objetos algo superpuestos (como personas en una multitud) sigan detectándose si sus puntuaciones siguen siendo lo suficientemente altas después de la decadencia.
  • Cajas de anclaje: formas de caja predefinidas utilizadas por muchos detectores para estimar el tamaño de los objetos. NMS aplica NMS a las predicciones finales refinadas a partir de estos anclajes.
  • Intersección sobre unión (IoU): Fórmula matemática utilizada por NMS determinar cuánto se superponen dos recuadros, que actúa como umbral de decisión para la supresión.

Únase a la comunidad Ultralytics

Únete al futuro de la IA. Conecta, colabora y crece con innovadores de todo el mundo

Únete ahora