Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Supresión No Máxima (NMS) | Detección de Objetos
Fundamentos de Visión por Computadora

bookSupresión No Máxima (NMS)

Los modelos de detección de objetos suelen predecir múltiples cajas delimitadoras superpuestas para el mismo objeto. Esto ocurre porque los modelos examinan una imagen en diferentes escalas y posiciones, lo que genera predicciones redundantes. La Supresión No Máxima (NMS) es un paso crucial de post-procesamiento que refina estas detecciones seleccionando las cajas delimitadoras más relevantes y descartando las innecesarias.

nms

Por qué ocurren múltiples cajas superpuestas

Los detectores de objetos predicen múltiples cajas delimitadoras para un solo objeto debido a:

  • Cajas ancla: algunos modelos, como Faster R-CNN y YOLO, utilizan cajas ancla predefinidas de diferentes tamaños, lo que genera múltiples detecciones del mismo objeto;
  • Enfoques de ventana deslizante: algunos métodos de detección examinan una imagen en pequeñas regiones, provocando detecciones repetidas de un objeto en áreas superpuestas;
  • Altas puntuaciones de confianza: el modelo asigna puntuaciones de confianza a cada predicción, y las predicciones similares con alta confianza pueden superponerse significativamente.

Si estas cajas redundantes no se filtran, pueden afectar negativamente el rendimiento de la detección de objetos al aumentar la complejidad computacional y hacer que el recuento de objetos sea poco fiable.

Cómo funciona la Supresión de No Máximos (NMS)

NMS se aplica para eliminar detecciones duplicadas mientras se conserva la caja delimitadora con mayor confianza. Sigue estos pasos:

  • Ordenar por puntuación: organizar todas las cajas delimitadoras predichas en orden descendente según sus puntuaciones de confianza;
  • Seleccionar la mejor caja: elegir la caja con mayor puntuación y añadirla a la lista final de detecciones;
  • Cálculo de IoU: calcular la Intersección sobre Unión (IoU) entre la caja seleccionada y todas las cajas restantes;
  • Umbral: suprimir (eliminar) las cajas que tengan un IoU por encima de un umbral establecido (por ejemplo, 0.5), ya que probablemente representan el mismo objeto;
  • Repetir: continuar este proceso con la siguiente caja de mayor puntuación hasta procesar todas las cajas.
import numpy as np

def non_max_suppression(boxes, scores, iou_threshold=0.5):
    # Sort boxes by confidence scores in descending order
    sorted_indices = np.argsort(scores)[::-1]
    selected_boxes = []
    
    while len(sorted_indices) > 0:
        # Pick the highest confidence box
        best_idx = sorted_indices[0]  
        selected_boxes.append(boxes[best_idx])
        
        # Compute IoU with the remaining boxes
        remaining_boxes = boxes[sorted_indices[1:]]
        ious = np.array([compute_iou(boxes[best_idx], box) for box in remaining_boxes])
        
        # Suppress boxes with IoU above threshold
        sorted_indices = sorted_indices[1:][ious < iou_threshold]
    
    return selected_boxes

Soft-NMS: Una Alternativa Más Inteligente

NMS estándar elimina todas las cajas superpuestas por encima de un cierto umbral de IoU, lo que a veces puede descartar detecciones útiles. Soft-NMS mejora este proceso reduciendo las puntuaciones de confianza de las cajas superpuestas en lugar de eliminarlas por completo. Este método permite una supresión más suave y puede mejorar el rendimiento de detección en escenarios con objetos densos.

Diferencias clave entre NMS estándar y Soft-NMS:

  • NMS estándar: elimina las cajas superpuestas por encima del umbral de IoU;
  • Soft-NMS: reduce las puntuaciones de confianza de las cajas superpuestas en lugar de eliminarlas, lo que lo hace más flexible para detectar objetos parcialmente ocultos.

Equilibrio entre Precisión y Velocidad en NMS

Elegir el umbral de IoU adecuado es fundamental:

  • Umbrales más altos (por ejemplo, 0.6 - 0.7): filtrado más agresivo, conservando solo las cajas más confiables pero posiblemente omitiendo algunas detecciones válidas;
  • Umbrales más bajos (por ejemplo, 0.3 - 0.4): conserva más cajas superpuestas, lo que puede ser útil en escenas concurridas pero puede aumentar los falsos positivos.

Utilizar implementaciones optimizadas, como las funciones NMS integradas en TensorFlow u OpenCV, puede ayudar a acelerar el procesamiento para aplicaciones en tiempo real.

La Supresión de No Máximos (NMS) es una técnica fundamental en la detección de objetos para eliminar cajas delimitadoras redundantes y mejorar la precisión del modelo. La NMS estándar elimina de manera eficiente las detecciones duplicadas, mientras que la Soft-NMS refina el proceso ajustando las puntuaciones de confianza en lugar de eliminarlas directamente. Al ajustar los umbrales de IoU, se puede lograr el equilibrio adecuado entre precisión de detección y eficiencia computacional.

1. ¿Cuál es el propósito principal de la Supresión de No Máximos (NMS) en la detección de objetos?

2. ¿Cómo determina la NMS estándar qué cajas delimitadoras suprimir?

3. ¿Cuál es la diferencia clave entre NMS estándar y Soft-NMS?

question mark

¿Cuál es el propósito principal de la Supresión de No Máximos (NMS) en la detección de objetos?

Select the correct answer

question mark

¿Cómo determina la NMS estándar qué cajas delimitadoras suprimir?

Select the correct answer

question mark

¿Cuál es la diferencia clave entre NMS estándar y Soft-NMS?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 5

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Awesome!

Completion rate improved to 3.45

bookSupresión No Máxima (NMS)

Desliza para mostrar el menú

Los modelos de detección de objetos suelen predecir múltiples cajas delimitadoras superpuestas para el mismo objeto. Esto ocurre porque los modelos examinan una imagen en diferentes escalas y posiciones, lo que genera predicciones redundantes. La Supresión No Máxima (NMS) es un paso crucial de post-procesamiento que refina estas detecciones seleccionando las cajas delimitadoras más relevantes y descartando las innecesarias.

nms

Por qué ocurren múltiples cajas superpuestas

Los detectores de objetos predicen múltiples cajas delimitadoras para un solo objeto debido a:

  • Cajas ancla: algunos modelos, como Faster R-CNN y YOLO, utilizan cajas ancla predefinidas de diferentes tamaños, lo que genera múltiples detecciones del mismo objeto;
  • Enfoques de ventana deslizante: algunos métodos de detección examinan una imagen en pequeñas regiones, provocando detecciones repetidas de un objeto en áreas superpuestas;
  • Altas puntuaciones de confianza: el modelo asigna puntuaciones de confianza a cada predicción, y las predicciones similares con alta confianza pueden superponerse significativamente.

Si estas cajas redundantes no se filtran, pueden afectar negativamente el rendimiento de la detección de objetos al aumentar la complejidad computacional y hacer que el recuento de objetos sea poco fiable.

Cómo funciona la Supresión de No Máximos (NMS)

NMS se aplica para eliminar detecciones duplicadas mientras se conserva la caja delimitadora con mayor confianza. Sigue estos pasos:

  • Ordenar por puntuación: organizar todas las cajas delimitadoras predichas en orden descendente según sus puntuaciones de confianza;
  • Seleccionar la mejor caja: elegir la caja con mayor puntuación y añadirla a la lista final de detecciones;
  • Cálculo de IoU: calcular la Intersección sobre Unión (IoU) entre la caja seleccionada y todas las cajas restantes;
  • Umbral: suprimir (eliminar) las cajas que tengan un IoU por encima de un umbral establecido (por ejemplo, 0.5), ya que probablemente representan el mismo objeto;
  • Repetir: continuar este proceso con la siguiente caja de mayor puntuación hasta procesar todas las cajas.
import numpy as np

def non_max_suppression(boxes, scores, iou_threshold=0.5):
    # Sort boxes by confidence scores in descending order
    sorted_indices = np.argsort(scores)[::-1]
    selected_boxes = []
    
    while len(sorted_indices) > 0:
        # Pick the highest confidence box
        best_idx = sorted_indices[0]  
        selected_boxes.append(boxes[best_idx])
        
        # Compute IoU with the remaining boxes
        remaining_boxes = boxes[sorted_indices[1:]]
        ious = np.array([compute_iou(boxes[best_idx], box) for box in remaining_boxes])
        
        # Suppress boxes with IoU above threshold
        sorted_indices = sorted_indices[1:][ious < iou_threshold]
    
    return selected_boxes

Soft-NMS: Una Alternativa Más Inteligente

NMS estándar elimina todas las cajas superpuestas por encima de un cierto umbral de IoU, lo que a veces puede descartar detecciones útiles. Soft-NMS mejora este proceso reduciendo las puntuaciones de confianza de las cajas superpuestas en lugar de eliminarlas por completo. Este método permite una supresión más suave y puede mejorar el rendimiento de detección en escenarios con objetos densos.

Diferencias clave entre NMS estándar y Soft-NMS:

  • NMS estándar: elimina las cajas superpuestas por encima del umbral de IoU;
  • Soft-NMS: reduce las puntuaciones de confianza de las cajas superpuestas en lugar de eliminarlas, lo que lo hace más flexible para detectar objetos parcialmente ocultos.

Equilibrio entre Precisión y Velocidad en NMS

Elegir el umbral de IoU adecuado es fundamental:

  • Umbrales más altos (por ejemplo, 0.6 - 0.7): filtrado más agresivo, conservando solo las cajas más confiables pero posiblemente omitiendo algunas detecciones válidas;
  • Umbrales más bajos (por ejemplo, 0.3 - 0.4): conserva más cajas superpuestas, lo que puede ser útil en escenas concurridas pero puede aumentar los falsos positivos.

Utilizar implementaciones optimizadas, como las funciones NMS integradas en TensorFlow u OpenCV, puede ayudar a acelerar el procesamiento para aplicaciones en tiempo real.

La Supresión de No Máximos (NMS) es una técnica fundamental en la detección de objetos para eliminar cajas delimitadoras redundantes y mejorar la precisión del modelo. La NMS estándar elimina de manera eficiente las detecciones duplicadas, mientras que la Soft-NMS refina el proceso ajustando las puntuaciones de confianza en lugar de eliminarlas directamente. Al ajustar los umbrales de IoU, se puede lograr el equilibrio adecuado entre precisión de detección y eficiencia computacional.

1. ¿Cuál es el propósito principal de la Supresión de No Máximos (NMS) en la detección de objetos?

2. ¿Cómo determina la NMS estándar qué cajas delimitadoras suprimir?

3. ¿Cuál es la diferencia clave entre NMS estándar y Soft-NMS?

question mark

¿Cuál es el propósito principal de la Supresión de No Máximos (NMS) en la detección de objetos?

Select the correct answer

question mark

¿Cómo determina la NMS estándar qué cajas delimitadoras suprimir?

Select the correct answer

question mark

¿Cuál es la diferencia clave entre NMS estándar y Soft-NMS?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 5
some-alt