Clasificación de detección de objetos

Detección de objetos

Bienvenido a nuestra última inmersión en el mundo de las tablas de clasificación y la evaluación de modelos. En una publicación anterior, navegamos por las aguas de la evaluación de los Modelos de Lenguaje Grandes. Hoy, nos embarcamos en un dominio diferente pero igualmente desafiante: la Detección de Objetos.

Recientemente, lanzamos nuestra Tabla de Clasificación de Detección de Objetos, clasificando los modelos de detección de objetos disponibles en el Hub según algunas métricas. En este blog, demostraremos cómo se evaluaron los modelos y desmitificaremos las métricas populares utilizadas en la Detección de Objetos, desde la Intersección sobre Unión (IoU) hasta la Precisión Promedio (AP) y la Recuperación Promedio (AR). Más importante aún, destacaremos las divergencias inherentes y los problemas que pueden surgir durante la evaluación, asegurándonos de que esté equipado con el conocimiento no solo para comprender, sino también para evaluar críticamente el rendimiento del modelo.

Cada desarrollador e investigador busca un modelo que pueda detectar y delinear con precisión los objetos. Nuestra Tabla de Clasificación de Detección de Objetos es el lugar adecuado para encontrar un modelo de código abierto que se adapte mejor a las necesidades de su aplicación. Pero, ¿qué significa “preciso” realmente en este contexto? ¿En qué métricas se debe confiar? ¿Cómo se calculan? Y, quizás más crucialmente, ¿por qué algunos modelos pueden presentar resultados divergentes en diferentes informes? Todas estas preguntas serán respondidas en este blog.

Entonces, ¡embarquémonos juntos en esta exploración y descubramos los secretos de la Tabla de Clasificación de Detección de Objetos! Si prefieres saltar la introducción y aprender cómo se calculan las métricas de detección de objetos, ve a la sección de Métricas. Si deseas saber cómo elegir los mejores modelos basados en la Tabla de Clasificación de Detección de Objetos, puedes consultar la sección de la Tabla de Clasificación de Detección de Objetos.

Tabla de Contenidos

  • Introducción
  • ¿Qué es la Detección de Objetos?
  • Métricas
    • ¿Qué es la Precisión Promedio y cómo se calcula?
    • ¿Qué es la Recuperación Promedio y cómo se calcula?
    • ¿Cuáles son las variantes de la Precisión Promedio y la Recuperación Promedio?
  • Tabla de Clasificación de Detección de Objetos
    • ¿Cómo elegir el mejor modelo basado en las métricas?
    • ¿Qué parámetros pueden afectar los resultados de la Precisión Promedio?
  • Conclusiones
  • Recursos Adicionales

¿Qué es la Detección de Objetos?

En el campo de la Visión por Computadora, la Detección de Objetos se refiere a la tarea de identificar y localizar objetos individuales dentro de una imagen. A diferencia de la clasificación de imágenes, donde la tarea es determinar el objeto o escena predominante en la imagen, la detección de objetos no solo categoriza las clases de objetos presentes, sino que también proporciona información espacial, dibujando cuadros delimitadores alrededor de cada objeto detectado. Un detector de objetos también puede generar una “puntuación” (o “confianza”) por detección. Representa la probabilidad, según el modelo, de que el objeto detectado pertenezca a la clase predicha para cada cuadro delimitador.

La siguiente imagen, por ejemplo, muestra cinco detecciones: una “pelota” con una confianza del 98% y cuatro “personas” con una confianza del 98%, 95%, 97% y 97%.

Los modelos de detección de objetos son versátiles y tienen una amplia gama de aplicaciones en diversos ámbitos. Algunos casos de uso incluyen la visión en vehículos autónomos, la detección de rostros, la vigilancia y la seguridad, la imágenes médicas, la realidad aumentada, el análisis deportivo, las ciudades inteligentes, el reconocimiento de gestos, etc.

El Hub de Hugging Face tiene cientos de modelos de detección de objetos preentrenados en diferentes conjuntos de datos, capaces de identificar y localizar diversas clases de objetos.

Un tipo específico de modelos de detección de objetos, llamados de cero disparo, pueden recibir consultas de texto adicionales para buscar objetos objetivo descritos en el texto. Estos modelos pueden detectar objetos que no han visto durante el entrenamiento, en lugar de estar limitados al conjunto de clases utilizadas durante el entrenamiento.

La diversidad de detectores va más allá del rango de clases de salida que pueden reconocer. Varían en términos de arquitecturas subyacentes, tamaños de modelo, velocidades de procesamiento y precisión de predicción.

Una métrica popular utilizada para evaluar la precisión de las predicciones realizadas por un modelo de detección de objetos es la Precisión Promedio (AP) y sus variantes, que se explicarán más adelante en este blog.

La evaluación de un modelo de detección de objetos abarca varios componentes, como un conjunto de datos con anotaciones de cuadros delimitadores de verdad, detecciones (predicciones de salida) y métricas. Este proceso se representa en el esquema proporcionado en la Figura 2:

Primero, se elige un conjunto de datos de referencia que contiene imágenes con anotaciones de cuadros delimitadores de verdad y se alimenta al modelo de detección de objetos. El modelo predice cuadros delimitadores para cada imagen, asignando etiquetas de clase asociadas y puntuaciones de confianza a cada cuadro. Durante la fase de evaluación, estos cuadros delimitadores predichos se comparan con los cuadros delimitadores de verdad en el conjunto de datos. La evaluación produce un conjunto de métricas, cada una con un rango entre [0, 1], que reflejan un criterio de evaluación específico. En la siguiente sección, profundizaremos en el cálculo de las métricas en detalle.

Métricas

Esta sección profundizará en la definición de la Precisión Promedio y la Recuperación Promedio, sus variaciones y las metodologías de cálculo asociadas.

¿Qué es la Precisión Promedio y cómo se calcula?

La Precisión Promedio (AP) es un número único que resume la curva de Precisión x Recuperación. Antes de explicar cómo calcularlo, primero debemos entender el concepto de Intersección sobre Unión (IoU) y cómo clasificar una detección como Verdadero Positivo o Falso Positivo.

IoU es una métrica representada por un número entre 0 y 1 que mide la superposición entre la caja delimitadora predicha y la caja delimitadora real (verdad absoluta). Se calcula dividiendo el área donde se superponen las dos cajas por el área cubierta por ambas cajas combinadas. La Figura 3 muestra visualmente el IoU utilizando un ejemplo de una caja predicha y su correspondiente caja de verdad absoluta.

Si la caja de verdad absoluta y la caja detectada comparten coordenadas idénticas, representando la misma región en la imagen, su valor de IoU es 1. Por el contrario, si las cajas no se superponen en ningún píxel, el IoU se considera 0.

En escenarios donde se espera una alta precisión en las detecciones (por ejemplo, un vehículo autónomo), las cajas delimitadoras predichas deben alinearse estrechamente con las cajas de verdad absoluta. Para ello, se prefiere un umbral de IoU (TIOU) que se acerque a 1. Por otro lado, para aplicaciones donde la posición exacta de las cajas delimitadoras detectadas con respecto al objeto objetivo no es crítica, se puede relajar el umbral, estableciendo TIOU más cercano a 0.

Cada caja predicha por el modelo se considera una detección “positiva”. El criterio de Intersección sobre Unión (IoU) clasifica cada predicción como un verdadero positivo (TP) o un falso positivo (FP), según el umbral de confianza que hayamos definido.

En base a un TIOU predefinido, podemos definir Verdaderos Positivos y Verdaderos Negativos:

  • Verdadero Positivo (TP): Una detección correcta donde IoU ≥ TIOU.
  • Falso Positivo (FP): Una detección incorrecta (objeto no detectado), donde IoU < TIOU.

Por el contrario, los negativos se evalúan en función de una caja delimitadora de verdad absoluta y se pueden definir como Falso Negativo (FN) o Verdadero Negativo (TN):

  • Falso Negativo (FN): Se refiere a un objeto de verdad absoluta que el modelo no pudo detectar.
  • Verdadero Negativo (TN): Denota una no detección correcta. Dentro del ámbito de la detección de objetos, innumerables cajas delimitadoras dentro de una imagen NO deben ser identificadas, ya que no representan el objeto objetivo. Considera todas las cajas posibles en una imagen que no representan el objeto objetivo, ¡es un número bastante grande, ¿no es así? 🙂 Es por eso que no consideramos TN para calcular las métricas de detección de objetos.

Ahora que podemos identificar nuestros TP, FP y FN, podemos definir Precisión y Recuperación:

  • Precisión es la capacidad de un modelo para identificar solo los objetos relevantes. Es el porcentaje de predicciones positivas correctas y se calcula mediante:

Precisión = TP / (TP + FP) = TP / todas las detecciones

lo que se traduce en la proporción de verdaderos positivos sobre todas las cajas detectadas.

  • Recuperación evalúa la competencia de un modelo para encontrar todos los casos relevantes (todas las cajas delimitadoras de verdad absoluta). Indica la proporción de TP detectados entre todas las verdades absolutas y se calcula mediante:

Recuperación = TP / (TP + FN) = TP / todas las verdades absolutas

Observa que TP, FP y FN dependen de un umbral de IoU predefinido, al igual que Precisión y Recuperación.

La Precisión Promedio captura la capacidad de un modelo para clasificar y localizar correctamente los objetos considerando diferentes valores de Precisión y Recuperación. Para ello, ilustraremos la relación entre Precisión y Recuperación trazando sus respectivas curvas para una clase objetivo específica, digamos “perro”. Adoptaremos un umbral de IoU moderado = 75% para delinear nuestros TP, FP y FN. Posteriormente, podemos calcular los valores de Precisión y Recuperación. Para ello, debemos variar las puntuaciones de confianza de nuestras detecciones.

La Figura 4 muestra un ejemplo de la curva de Precisión x Recall. Para una exploración más profunda sobre el cálculo de esta curva, los artículos “A Comparative Analysis of Object Detection Metrics with a Companion Open-Source Toolkit” (Padilla, et al) y “A Survey on Performance Metrics for Object-Detection Algorithms” (Padilla, et al) ofrecen ejemplos detallados adicionales que demuestran cómo calcular esta curva.

La curva de Precisión x Recall ilustra el equilibrio entre la Precisión y el Recall basado en diferentes niveles de confianza de las cajas del detector. Cada punto del gráfico se calcula utilizando un valor de confianza diferente.

Para demostrar cómo calcular la gráfica de Precisión Promedio, utilizaremos un ejemplo práctico de uno de los artículos mencionados anteriormente. Consideremos un conjunto de datos de 7 imágenes con 15 objetos de referencia del mismo tipo, como se muestra en la Figura 5. Supongamos que todas las cajas pertenecen al mismo tipo, “perro”, con el fin de simplificar.

Nuestro detector de objetos hipotético recuperó 24 objetos en nuestro conjunto de datos, ilustrados por las cajas rojas. Para calcular la Precisión y el Recall, utilizamos las ecuaciones de Precisión y Recall en todos los niveles de confianza para evaluar qué tan bien se desempeñó el detector para esta clase específica en nuestro conjunto de datos de referencia. Para eso, necesitamos establecer algunas reglas:

  • Regla 1: Para simplificar, consideremos que nuestras detecciones son Verdaderos Positivos (TP) si IOU ≥ 30%; de lo contrario, son Falsos Positivos (FP).
  • Regla 2: Para los casos en los que una detección se superpone con más de una referencia (como en las Imágenes 2 a 7), se considera TP a la caja predicha con el IoU más alto, y la otra como FP.

Basándonos en estas reglas, podemos clasificar cada detección como TP o FP, como se muestra en la Tabla 1:

Obsérvese que, según la regla 2, en la imagen 1, “E” es TP mientras que “D” es FP porque el IoU entre “E” y la referencia es mayor que el IoU entre “D” y la referencia.

Ahora, necesitamos calcular la Precisión y el Recall considerando el valor de confianza de cada detección. Una buena manera de hacerlo es ordenar las detecciones por sus valores de confianza, como se muestra en la Tabla 2. Luego, para cada valor de confianza en cada fila, calculamos la Precisión y el Recall considerando el TP acumulativo (acc TP) y el FP acumulativo (acc FP). El “acc TP” de cada fila aumenta en 1 cada vez que se registra un TP, y el “acc FP” aumenta en 1 cuando se registra un FP. Las columnas “acc TP” y “acc FP” básicamente nos indican los valores de TP y FP dados un nivel de confianza particular. El cálculo de cada valor de la Tabla 2 se puede ver en esta hoja de cálculo.

Por ejemplo, consideremos la fila 12 (detección “P”) de la Tabla 2. El valor “acc TP = 4” significa que si evaluamos nuestro modelo en este conjunto de datos particular con una confianza de 0.62, detectaríamos correctamente cuatro objetos de destino e incorrectamente detectaríamos ocho objetos de destino. Esto daría como resultado:

Precisión=acc TP(acc TP+acc FP)=4(4+8)=0.3333 \text{Precisión} = \frac{\text{acc TP}}{(\text{acc TP} + \text{acc FP})} = \frac{4}{(4+8)} = 0.3333 Precisión=(acc TP+acc FP)acc TP​=(4+8)4​=0.3333 y Recall=acc TPtodos los objetos de referencia=415=0.2667 \text{Recall} = \frac{\text{acc TP}}{\text{todos los objetos de referencia}} = \frac{4}{15} = 0.2667 Recall=todos los objetos de referenciaacc TP​=154​=0.2667 .

Ahora, podemos trazar la curva de Precisión x Recall con los valores, como se muestra en la Figura 6:

Al examinar la curva, uno puede inferir los posibles compromisos entre la Precisión y el Recall y encontrar el punto de operación óptimo de un modelo basado en un umbral de confianza seleccionado, incluso si este umbral no está representado explícitamente en la curva.

Si la confianza de un detector resulta en pocos falsos positivos (FP), es probable que tenga una alta Precisión. Sin embargo, esto puede llevar a perder muchos verdaderos positivos (TP), lo que provoca una alta tasa de falsos negativos (FN) y, posteriormente, un bajo Recall. Por otro lado, aceptar más detecciones positivas puede aumentar el Recall pero también puede aumentar el conteo de FP, reduciendo así la Precisión.

El área bajo la curva de Precisión x Recall (AUC) calculada para una clase objetivo representa el valor de Precisión Promedio para esa clase en particular. El enfoque de evaluación COCO se refiere a “AP” como el valor promedio de AUC entre todas las clases objetivo en el conjunto de datos de imágenes, también conocido como Precisión Promedio (mAP) en otros enfoques.

Para un conjunto de datos grande, el detector probablemente emitirá cajas con una amplia gama de niveles de confianza, lo que resultará en una línea de Precisión x Recall irregular, lo que dificulta el cálculo preciso de su AUC (Precisión Promedio). Diferentes métodos aproximan el área de la curva con enfoques diferentes. Un enfoque popular se llama N-interpolación, donde N representa cuántos puntos se muestrean de la línea azul de Precisión x Recall.

El enfoque COCO, por ejemplo, utiliza 101-interpolación, que calcula 101 puntos para valores de Recall espaciados equitativamente (0. , 0.01, 0.02, … 1.00), mientras que otros enfoques utilizan 11 puntos (11-interpolación). La Figura 7 ilustra una curva de Precisión x Recall (en azul) con 11 puntos de Recall igualmente espaciados.

Los puntos rojos se colocan de acuerdo con lo siguiente:

ρinterp(R) = max⁡r~:r~≥rρ(r~)

donde ρ(r~) es la Precisión medida en el Recall r~.

En esta definición, en lugar de usar el valor de Precisión ρ(R) observado en cada nivel de Recall R, se obtiene la Precisión ρinterp(R) considerando la máxima Precisión cuyo valor de Recall es mayor que R.

Para este tipo de enfoque, el AUC, que representa la Precisión Promedio, se aproxima mediante el promedio de todos los puntos y se calcula de la siguiente manera:

AP11 = 111 = ∑R∈{0,0.1,…,1}ρinterp(R)

¿Qué es el Recall Promedio y cómo se calcula?

Recall Promedio (AR) es una métrica que se utiliza a menudo junto con AP para evaluar modelos de detección de objetos. Mientras que AP evalúa tanto la Precisión como el Recall en diferentes umbrales de confianza para proporcionar un resumen de rendimiento del modelo en un solo número, AR se centra únicamente en el aspecto de Recall, sin tener en cuenta las confianzas y considerando todas las detecciones como positivas.

El enfoque COCO calcula AR como el promedio del Recall máximo obtenido sobre IOUs > 0.5 y clases.

Al utilizar IOUs en el rango [0.5, 1] y promediar los valores de Recall en este intervalo, AR evalúa las predicciones del modelo en su localización de objetos. Por lo tanto, si tu objetivo es evaluar tu modelo tanto para un alto Recall como para una localización precisa de objetos, AR podría ser una valiosa métrica de evaluación a considerar.

¿Cuáles son las variantes de la Precisión Promedio y el Recall Promedio?

Basándose en umbrales de IoU predefinidos y las áreas asociadas con los objetos de verdad, se pueden obtener diferentes versiones de AP y AR:

  • [email protected]: establece el umbral de IoU en 0.5 y calcula el AUC de Precisión x Recall para cada clase objetivo en el conjunto de datos de imágenes. Luego, los resultados calculados para cada clase se suman y se dividen por el número de clases.
  • [email protected]: utiliza la misma metodología que [email protected], con un umbral de IoU de 0.75. Con este requisito de IoU más alto, [email protected] se considera más estricto que [email protected] y se debe utilizar para evaluar modelos que necesiten lograr un alto nivel de precisión de localización en sus detecciones.
  • AP@[.5:.05:.95]: también conocido como AP en las herramientas de cocoeval. Esta es una versión ampliada de [email protected] y [email protected], ya que calcula AP con diferentes umbrales de IoU (0.5, 0.55, 0.6,…,0.95) y promedia los resultados calculados según se muestra en la siguiente ecuación. En comparación con [email protected] y [email protected], esta métrica proporciona una evaluación holística, capturando el rendimiento del modelo en un rango más amplio de precisión de localización.

AP@[.5:.05:0.95=AP0.5+AP0.55+…+AP0.9510 \text{AP@[.5:.05:0.95} = \frac{\text{AP}_{0.5} + \text{AP}_{0.55} + … + \text{AP}_{0.95}}{10} AP@[.5:.05:0.95=10AP0.5​+AP0.55​+…+AP0.95​​

  • AP-S: Aplica AP@[.5:.05:.95] considerando objetos (pequeños) de verdad con área<322 \text{área} < 32^2 área<322 píxeles.
  • AP-M: Aplica AP@[.5:.05:.95] considerando objetos (del tamaño de VoAGI) de verdad con 322<área<962 32^2 < \text{área} < 96^2 322<área<962 píxeles.
  • AP-L: Aplica AP@[.5:.05:.95] considerando objetos (grandes) de verdad con 322<área<962 32^2 < \text{área} < 96^2322<área<962 píxeles.

Para el Promedio de Recuperación (AR), se utilizan 10 umbrales de IoU (0.5, 0.55, 0.6,…,0.95) para calcular los valores de Recuperación. AR se calcula limitando el número de detecciones por imagen o limitando las detecciones según el área del objeto.

  • AR-1: considera hasta 1 detección por imagen.
  • AR-10: considera hasta 10 detecciones por imagen.
  • AR-100: considera hasta 100 detecciones por imagen.
  • AR-S: considera objetos (pequeños) con área<322 \text{área} < 32^2 área<322 píxeles.
  • AR-M: considera objetos (del tamaño de VoAGI) con 322<área<962 32^2 < \text{área} < 96^2 322<área<962 píxeles.
  • AR-L: considera objetos (grandes) con área>962 \text{área} > 96^2 área>962 píxeles.

Tabla de Liderazgo en Detección de Objetos

Recientemente lanzamos la Tabla de Liderazgo en Detección de Objetos para comparar la precisión y eficiencia de modelos de código abierto de nuestro Hub.

Para medir la precisión, utilizamos 12 métricas que involucran Precisión Promedio y Recuperación Promedio utilizando el estilo COCO, evaluando sobre el conjunto de datos COCO val 2017.

Como se discutió anteriormente, diferentes herramientas pueden adoptar diferentes particularidades durante la evaluación. Para evitar discrepancias en los resultados, preferimos no implementar nuestra versión de las métricas. En su lugar, optamos por utilizar el código oficial de evaluación de COCO, también conocido como PyCOCOtools, código disponible aquí.

En términos de eficiencia, calculamos los cuadros por segundo (FPS) para cada modelo utilizando el tiempo promedio de evaluación en todo el conjunto de datos, considerando los pasos de pre y post-procesamiento. Dada la variabilidad en los requisitos de memoria de la GPU para cada modelo, elegimos evaluar con un tamaño de lote de 1 (esta elección también está influenciada por nuestro paso de pre-procesamiento, del cual profundizaremos más adelante). Sin embargo, vale la pena señalar que este enfoque puede no coincidir perfectamente con el rendimiento en el mundo real, ya que a menudo se utilizan tamaños de lote más grandes (que contienen varias imágenes) para una mejor eficiencia.

A continuación, proporcionaremos consejos sobre cómo elegir el mejor modelo basado en las métricas y señalaremos qué parámetros pueden interferir con los resultados. Comprender estas sutilezas es crucial, ya que esto puede generar dudas y discusiones dentro de la comunidad.

Cómo elegir el mejor modelo basado en las métricas?

Seleccionar una métrica adecuada para evaluar y comparar detectores de objetos considera varios factores. Las consideraciones principales incluyen el propósito de la aplicación y las características del conjunto de datos utilizadas para entrenar y evaluar los modelos.

Para un rendimiento general, AP (AP@[.5:.05:.95]) es una buena opción si desea un rendimiento del modelo completo en diferentes umbrales de IoU, sin un requisito estricto sobre la localización de los objetos detectados.

Si deseas un modelo con buena capacidad de reconocimiento de objetos y que los objetos estén generalmente en el lugar correcto, puedes considerar el [email protected]. Si prefieres un modelo más preciso para ubicar las cajas delimitadoras, el [email protected] es más adecuado.

Si tienes restricciones en cuanto al tamaño de los objetos, entran en juego el AP-S, el AP-M y el AP-L. Por ejemplo, si tu conjunto de datos o aplicación presenta predominantemente objetos pequeños, el AP-S proporciona información sobre la eficacia del detector en el reconocimiento de esos pequeños objetivos. Esto se vuelve crucial en escenarios como la detección de vehículos distantes o artefactos pequeños en imágenes médicas.

¿Qué parámetros pueden afectar los resultados de la Precisión Promedio?

Después de seleccionar un modelo de detección de objetos en el Hub, podemos variar las cajas de salida si utilizamos diferentes parámetros en los pasos de preprocesamiento y postprocesamiento del modelo. Estos pueden influir en las métricas de evaluación. Hemos identificado algunos de los factores más comunes que pueden llevar a variaciones en los resultados:

  • Ignorar detecciones que tengan una puntuación por debajo de un umbral determinado.
  • Utilizar batch_sizes > 1 para la inferencia.
  • Los modelos adaptados no producen los mismos logits que los modelos originales.
  • Algunos objetos de referencia pueden ser ignorados por el evaluador.
  • El cálculo de la intersección sobre unión (IoU) puede ser complicado.
  • Los modelos condicionados por texto requieren indicaciones precisas.

Tomemos el modelo DEtection TRansformer (DETR) (facebook/detr-resnet-50) como ejemplo. Mostraremos cómo estos factores pueden afectar los resultados de salida.

Umbralización de las detecciones antes de la evaluación

Nuestro modelo de muestra utiliza la clase DetrImageProcessor para procesar las cajas delimitadoras y los logits, como se muestra en el fragmento de código a continuación:

from transformers import DetrImageProcessor, DetrForObjectDetection
import torch
from PIL import Image
import requests

url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)

processor = DetrImageProcessor.from_pretrained("facebook/detr-resnet-50")
model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50")

inputs = processor(images=image, return_tensors="pt")
outputs = model(**inputs)

# Las imágenes PIL tienen su tamaño en formato (w, h)
target_sizes = torch.tensor([image.size[::-1]])
results = processor.post_process_object_detection(outputs, target_sizes=target_sizes, threshold=0.5)

El parámetro threshold en la función post_process_object_detection se utiliza para filtrar las cajas delimitadoras detectadas en función de sus puntuaciones de confianza.

Como se discutió anteriormente, la curva de Precisión x Recall se construye midiendo la Precisión y el Recall en todo el rango de valores de confianza [0,1]. Por lo tanto, limitar las detecciones antes de la evaluación producirá resultados sesgados, ya que dejaremos algunas detecciones fuera.

Variación del tamaño de lote

El tamaño de lote no solo afecta el tiempo de procesamiento, sino que también puede dar lugar a diferentes cajas detectadas. El paso de preprocesamiento de imágenes puede cambiar la resolución de las imágenes de entrada según su tamaño.

Como se menciona en la documentación de DETR, de forma predeterminada, DetrImageProcessor redimensiona las imágenes de entrada de manera que el lado más corto tenga 800 píxeles y las redimensiona nuevamente para que el lado más largo tenga como máximo 1333 píxeles. Debido a esto, las imágenes en un lote pueden tener tamaños diferentes. DETR resuelve esto rellenando las imágenes hasta el tamaño más grande en un lote y creando una máscara de píxeles que indica qué píxeles son reales y cuáles son de relleno.

Para ilustrar este proceso, consideremos los ejemplos en la Figura 9 y la Figura 10. En la Figura 9, consideramos un tamaño de lote = 1, por lo que ambas imágenes se procesan de forma independiente con DetrImageProcessor. La primera imagen se redimensiona a (800, 1201), lo que hace que el detector prediga 28 cajas con la clase jarrón, 22 cajas con la clase silla, diez cajas con la clase botella, etc.

La Figura 10 muestra el proceso con un tamaño de lote = 2, donde las mismas dos imágenes se procesan con DetrImageProcessor en el mismo lote. Ambas imágenes se redimensionan para tener la misma forma (873, 1201) y se aplica relleno, de modo que la parte de las imágenes con el contenido se mantiene con sus relaciones de aspecto originales. Sin embargo, la primera imagen, por ejemplo, produce un número diferente de objetos: 31 cajas con la clase jarrón, 20 cajas con la clase silla, ocho cajas con la clase botella, etc. Observa que para la segunda imagen, con un tamaño de lote = 2, se detecta una nueva clase perro. Esto se debe a la capacidad del modelo de detectar objetos de diferentes tamaños según la resolución de la imagen.

Los modelos portados deben producir los mismos logits que los modelos originales

En Hugging Face, somos muy cuidadosos al portar modelos a nuestro código base. No solo en cuanto a la arquitectura, documentación clara y estructura de codificación, sino que también debemos garantizar que los modelos portados sean capaces de producir los mismos logits que los modelos originales dados los mismos inputs.

Los logits producidos por un modelo se postprocesan para generar los puntajes de confianza, IDs de etiquetas y coordenadas de cuadros delimitadores. Por lo tanto, cambios menores en los logits pueden influir en los resultados de las métricas. Puede recordar el ejemplo anterior, donde discutimos el proceso de cálculo de la Precisión Promedio. Mostramos que los niveles de confianza ordenan las detecciones y pequeñas variaciones pueden llevar a un orden y, por lo tanto, a resultados diferentes.

Es importante reconocer que los modelos pueden producir cuadros delimitadores en varios formatos, y eso también debe tenerse en cuenta, realizando conversiones adecuadas requeridas por el evaluador.

  • (x, y, ancho, alto): esto representa las coordenadas de la esquina superior izquierda seguidas de las dimensiones absolutas (ancho y alto).
  • (x, y, x2, y2): este formato indica las coordenadas de la esquina superior izquierda y la esquina inferior derecha.
  • (rel_x_centro, rel_y_centro, rel_ancho, rel_alto): los valores representan las coordenadas relativas del centro y las dimensiones relativas del cuadro delimitador.

Algunas verdades fundamentales se ignoran en algunos conjuntos de datos de evaluación

Algunos conjuntos de datos a veces usan etiquetas especiales que se ignoran durante el proceso de evaluación.

Por ejemplo, COCO utiliza la etiqueta iscrowd para etiquetar grupos grandes de objetos (por ejemplo, muchas manzanas en una canasta). Durante la evaluación, los objetos etiquetados como iscrowd=1 se ignoran. Si esto no se tiene en cuenta, se pueden obtener resultados diferentes.

Calcular el IoU requiere una consideración cuidadosa

El IoU puede parecer sencillo de calcular según su definición. Sin embargo, hay un detalle crucial del que hay que tener en cuenta: si el objeto real y la detección no se superponen en absoluto, ni siquiera por un píxel, el IoU debería ser 0. Para evitar dividir entre cero al calcular la unión, se puede agregar un valor pequeño (llamado épsilon) al denominador. Sin embargo, es esencial elegir épsilon cuidadosamente: un valor mayor que 1e-4 podría no ser lo suficientemente neutral como para dar un resultado preciso.

Los modelos condicionados por texto requieren los indicadores adecuados

Puede haber casos en los que queramos evaluar modelos condicionados por texto como OWL-ViT, que pueden recibir un indicador de texto y proporcionar la ubicación del objeto deseado.

Para dichos modelos, diferentes indicadores (por ejemplo, “Encuentra el perro” y “¿Dónde está el bulldog?”) pueden dar como resultado los mismos resultados. Sin embargo, decidimos seguir el procedimiento descrito en cada artículo. Para OWL-ViT, por ejemplo, predecimos los objetos utilizando el indicador “una imagen de un {}” donde {} se reemplaza por las clases del conjunto de datos de evaluación.

Conclusiones

En esta publicación, presentamos el problema de la Detección de Objetos y describimos las principales métricas utilizadas para evaluarlos.

Como se señaló, evaluar modelos de detección de objetos puede requerir más trabajo de lo que parece. Las particularidades de cada modelo deben tenerse en cuenta cuidadosamente para evitar resultados sesgados. Además, cada métrica representa un punto de vista diferente del mismo modelo y elegir “la mejor” métrica depende de la aplicación del modelo y las características del conjunto de datos de evaluación elegido.

A continuación se muestra una tabla que ilustra las métricas recomendadas para casos de uso específicos y proporciona ejemplos de escenarios del mundo real. Sin embargo, es importante tener en cuenta que estas son solo sugerencias y la métrica ideal puede variar según las distintas particularidades de cada aplicación.

Los resultados mostrados en nuestro 🤗 Tabla de clasificación de Detección de Objetos se calculan utilizando una herramienta independiente llamada PyCOCOtools ampliamente utilizada por la comunidad para la evaluación de modelos. Estamos buscando recopilar conjuntos de datos de diferentes dominios (por ejemplo, imágenes médicas, deportes, vehículos autónomos, etc.). Puede utilizar la página de discusión para solicitar conjuntos de datos, modelos y características. ¿Estás ansioso por ver tu modelo o conjunto de datos destacado en nuestra tabla de clasificación? ¡No te detengas! ¡Presenta tu modelo y conjunto de datos, ajústalos y obtén una posición en el ranking! 🥇

Recursos Adicionales

  • Guía de Detección de Objetos
  • Tarea de Detección de Objetos
  • Artículo: Qué hace que las propuestas de detección sean efectivas
  • Artículo: Un análisis comparativo de las métricas de detección de objetos con una herramienta de código abierto complementaria
  • Artículo: Una encuesta sobre las métricas de rendimiento para algoritmos de detección de objetos

Agradecimientos especiales 🙌 a @merve, @osanseviero y @pcuenq por sus comentarios y sugerencias excelentes. 🤗