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:
-
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.
- Ordenación: Ordena las cajas restantes en orden descendente según sus puntuaciones de confianza.
- Selección: Elija la casilla con la puntuación de confianza más alta como detección válida.
-
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.
-
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.
-
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.