Ultralytics YOLO27: Únete a la lista de espera.
Licencia YOLO
Volver al glosario de Ultralytics

Non-Maximum Suppression (NMS)

La supresión no máxima (NMS) elimina las cajas duplicadas que se solapan para que cada objeto conserve una sola detección. Descubre cómo funciona, cómo ajustarla y qué modelos no usan NMS.

La supresión no máxima (NMS) es el paso de posprocesamiento que convierte las predicciones sin procesar y solapadas de un detector en una caja por objeto. Un modelo denso de detección de objetos asigna puntuaciones a miles de cajas delimitadoras candidatas por imagen, y varias candidatas cercanas suelen activarse para el mismo objeto con posiciones y puntuaciones ligeramente distintas. La NMS conserva la caja con mayor confianza de cada grupo de cajas solapadas y suprime las demás, usando la intersección sobre la unión (IoU) para decidir qué cajas se solapan lo suficiente como para considerarse duplicadas.

Cómo funciona la supresión no máxima#

La NMS voraz, la versión estándar, primero descarta las candidatas por debajo de un umbral de confianza y ordena las restantes por puntuación. Después conserva la caja con mayor puntuación, elimina todas las cajas restantes cuya IoU con ella supere el umbral de IoU y repite el proceso con la mejor caja aún disponible hasta que no quede ninguna. Normalmente, los detectores la ejecutan una vez por clase, de modo que una caja de persona nunca suprime una caja de bicicleta superpuesta.

nms de torchvision implementa la NMS voraz para una clase y devuelve los índices de las cajas que conserva, ordenados por puntuación.

import torch
from torchvision.ops import nms

# Cajas candidatas como [x1, y1, x2, y2], con una puntuación de confianza para cada una
boxes = torch.tensor(
    [
        [100, 100, 200, 200],  # A
        [105, 105, 195, 195],  # B: casi duplicada de A (IoU 0.81)
        [300, 300, 400, 400],  # C: un objeto distinto
    ],
    dtype=torch.float32,
)
scores = torch.tensor([0.90, 0.80, 0.95])

# Suprime cualquier caja cuya IoU con una caja conservada de mayor puntuación supere 0.5
keep = nms(boxes, scores, iou_threshold=0.5)
print(keep.tolist())

La salida es [2, 0]: la caja C se conserva primero porque tiene la puntuación más alta, la caja A se conserva porque no se solapa con C y la caja B se elimina porque su IoU con A es 0.81.

Ajuste de los umbrales#

El umbral de confianza elimina las candidatas débiles antes de iniciar la supresión. El umbral de IoU determina cuánto solapamiento cuenta como duplicado. Si es demasiado bajo, dos objetos reales muy próximos, como personas en una multitud, se fusionan en una sola detección y disminuye la exhaustividad. Si es demasiado alto, sobreviven cajas duplicadas y disminuye la precisión. La NMS independiente de la clase permite que cualquier caja suprima a otra, sea cual sea su clase, lo que elimina las etiquetas dobles cuando un modelo asigna a un objeto dos clases similares, como «coche» y «camión».

Limitaciones de la NMS#

  • Escenas abarrotadas: un único umbral de IoU fijo no puede distinguir una caja duplicada de un segundo objeto que realmente se solapa con el primero, por lo que se suprimen los objetos muy ocluidos.
  • Heurística fija: el umbral se elige manualmente, está fuera de la red entrenada y no se aprende a partir de los datos.
  • Latencia y despliegue: el bucle voraz se ejecuta después de la red y su coste aumenta con el número de candidatas, lo que añade latencia de inferencia. Los formatos de exportación que no pueden incluir la NMS en el grafo del modelo generan candidatas sin procesar, y la aplicación debe ejecutar la NMS por su cuenta.

Variantes de NMS y detección sin NMS#

Soft-NMS reduce las puntuaciones de las cajas solapadas en función de cuánto se solapan, en lugar de eliminarlas, lo que permite recuperar más objetos en multitudes. DIoU-NMS, propuesta junto con la pérdida Distance-IoU, también tiene en cuenta la distancia entre los centros de las cajas, por lo que es menos probable que suprima dos cajas cuyos centros están muy separados.

Los detectores de extremo a extremo eliminan por completo este paso. DETR se entrena mediante emparejamiento húngaro uno a uno entre predicciones y etiquetas, por lo que cada objeto recibe exactamente una predicción; YOLOv10 incorporó un cabezal uno a uno a los modelos YOLO en tiempo real. YOLO26 entrena ambos tipos de cabezal y aplica NMS de forma predeterminada, porque su cabezal de uno a muchos obtiene una puntuación ligeramente superior: 40.9 frente a 40.1 mAP50-95 en COCO para YOLO26n. Al pasar nms=False se selecciona el cabezal uno a uno, que genera un máximo de 300 cajas finales por imagen sin una pasada de NMS, como muestra la guía de detección de extremo a extremo para la predicción y la exportación.

Explora las soluciones

Visión artificial en el deporte

Visión artificial en el deporte

Descubre cómo Ultralytics YOLO impulsa la visión artificial en el deporte con el seguimiento de jugadores y balones, analíticas de rendimiento, información útil para entrenadores y rehabilitación de deportistas.
Más información
Visión artificial para imágenes aéreas

Visión artificial para imágenes aéreas

Convierte imágenes aéreas y de drones en información útil en tiempo real para la agricultura, la acuicultura, la conservación y el análisis geoespacial con Ultralytics YOLO.
Más información
Visión artificial en el sector aeroespacial

Visión artificial en el sector aeroespacial

Aplica la visión artificial en el sector aeroespacial con Ultralytics YOLO para inspeccionar aeronaves, detectar objetos extraños en pistas, gestionar operaciones en tierra y detectar defectos en materiales compuestos.
Más información
Visión artificial en seguridad

Visión artificial en seguridad

Protege todas tus instalaciones con los modelos Ultralytics YOLO. La IA visual permite supervisar perímetros, detectar amenazas, reconocer matrículas y mejorar la seguridad laboral.
Más información
Visión artificial en robótica

Visión artificial en robótica

Potencia máquinas más inteligentes con los modelos Ultralytics YOLO. La IA visual en robótica impulsa la navegación autónoma, la percepción, el seguimiento de objetos y el control en tiempo real.
Más información
Visión artificial en logística

Visión artificial en logística

Agiliza la logística con modelos Ultralytics YOLO. La IA visual permite inspeccionar paquetes, clasificarlos, realizar el seguimiento de vehículos y supervisar la seguridad del almacén en tiempo real.
Más información
Visión artificial en el comercio minorista

Visión artificial en el comercio minorista

Reinventa el comercio minorista con modelos Ultralytics YOLO. La IA visual permite realizar el seguimiento del inventario, supervisar estanterías, gestionar colas y obtener información más útil sobre los clientes.
Más información
Visión artificial en el sector sanitario

Visión artificial en el sector sanitario

Desarrolla soluciones sanitarias con modelos Ultralytics YOLO. La IA visual en el sector sanitario permite acelerar el diagnóstico por imagen, mejorar los diagnósticos y supervisar a los pacientes.
Más información
Visión artificial en la fabricación

Visión artificial en la fabricación

Optimiza la fabricación con modelos Ultralytics YOLO. La IA visual mejora el control de calidad, la detección de defectos, el cumplimiento de las normas de uso de EPI y la automatización de las líneas de montaje.
Más información
Visión artificial en la automoción

Visión artificial en la automoción

Aplica la visión artificial al sector de la automoción con modelos Ultralytics YOLO. La IA visual mejora la seguridad vial, la asistencia al conductor y la automatización de vehículos para lograr carreteras más inteligentes.
Más información
Visión artificial en la agricultura

Visión artificial en la agricultura

Incorpora la IA de visión a la agricultura inteligente con modelos Ultralytics YOLO. Impulsa la monitorización de cultivos, el seguimiento del ganado y la agricultura de precisión para obtener cosechas más abundantes e inteligentes.
Más información

¡Construyamos juntos el futuro de la IA!

Inicia tu recorrido hacia el futuro del aprendizaje automático