¿Cómo funciona la precisión media media (mAP) en la detección de objetos?

Estás leyendo la publicación: ¿Cómo funciona la precisión media media (mAP) en la detección de objetos?

Los modelos de detección de objetos intentan detectar la existencia de cosas importantes en las imágenes y clasificar esos objetos. Se utiliza una estadística conocida como Precisión promedio (AP) para evaluar la eficacia del método de localización y reconocimiento de objetos (y la precisión promedio promedio). Los puntajes de precisión de todas las clases no se suman al puntaje de precisión promedio. Cuando los valores de recuperación oscilan entre 0 y 1, se calcula el valor de precisión promedio. Este artículo se centrará en explicar la precisión media media en el contexto de la detección de objetos. Los siguientes son los temas que se tratarán en este artículo.

Tabla de contenido

  1. ¿Qué es la curva de precisión-recuperación?
  2. ¿Qué es la precisión media (AP)?
  3. Uso de mAp como métrica de evaluación

Empecemos por lo básico de mAP, que es la curva de recuperación de precisión.

¿Qué es la curva de precisión-recuperación?

La curva ROC-AUC (curva característica operativa del receptor) representa los niveles de categorización general del rendimiento de un modelo de clasificación. De manera similar, en los umbrales de IoU, hay una curva de recuperación de precisión que representa el equilibrio entre precisión y recuperación.

La precisión es una medida de “¿con qué frecuencia su modelo predice correctamente cuando adivina?” El recuerdo es una métrica que pregunta: “¿Ha adivinado su modelo cada vez que debería haberlo hecho?” Considere la siguiente imagen, que contiene diez frutas. Un modelo con gran precisión pero pobre recuerdo descubre solo uno de estos 10 pero lo identifica correctamente como “fruta” (solo se ha encontrado uno de diez frutos).

Los modelos con un componente de confianza pueden cambiar la precisión por el recuerdo al alterar la cantidad de confianza requerida para hacer una predicción. En otras palabras, si el modelo se encuentra en una situación en la que evitar los falsos positivos (decir que la fruta está presente cuando era un vegetal) es más importante que evitar los falsos negativos, puede aumentar el umbral de confianza para alentar al modelo a producir solo predicciones de alta precisión. a expensas de reducir su monto de cobertura (recall).

La curva de recuperación de precisión es el proceso de visualización de la precisión y recuperación del modelo en función del umbral de confianza del modelo. Tiene una pendiente descendente porque a medida que cae la confianza, se producen más predicciones que ayudan a recordar y se hacen menos pronósticos exactos, lo que reduce la precisión.

🔥 Recomendado:  Cómo prosperar en el mundo posterior a las cookies [2023]
Revista de análisis de la India

La distinción principal entre las curvas ROC y las curvas de recuperación de precisión es que la cantidad de resultados negativos verdaderos no se considera para calcular un PRC.

Revista de análisis de la India

¿Está buscando un repositorio completo de bibliotecas de Python utilizadas en ciencia de datos, echa un vistazo aquí.

¿Qué es la precisión media (AP)?

El objetivo de la precisión promedio (AP) es evaluar la precisión del detector en todo el dominio de recuperación. Como resultado, prefiere enfoques con precisión en todo el dominio de recuperación sobre detectores con curvas de precisión de recuperación más cerca de la esquina superior derecha.

En otras palabras, AP compara el rendimiento general de los detectores en lugar de su mayor capacidad/rendimiento. Otros parámetros como IoU, matriz de confusión (Verdadero positivo, Falso positivo, Falso negativo), precisión y recuperación se utilizan para construir AP.

Si la etiqueta de clase del cuadro delimitador predicho y la etiqueta de clase del cuadro delimitador real son iguales y el IoU entre ellos es mayor que un valor de umbral, se dice que la predicción es precisa.

Calculamos las siguientes tres métricas en función de las etiquetas IoU, umbral y clase de los cuadros delimitadores reales y predichos.

  • Verdadero Positivo: El modelo predijo la existencia de un cuadro delimitador en un lugar específico (positivo) y acertó (verdadero)
  • Falso positivo: El modelo predijo la existencia de un cuadro delimitador en un lugar específico (positivo), pero fue incorrecto (falso)
  • Falso negativo: El modelo predijo un cuadro delimitador en un lugar determinado, pero fue incorrecto (falso), lo que indica que existía un cuadro delimitador de verdad en ese lugar.
  • verdadero negativo: El modelo predijo un cuadro delimitador pero fue incorrecto (verdadero). Esto se relaciona con el fondo, la región sin cuadros delimitadores, y no se utiliza en el cálculo de métrica final.

Matemáticas detrás de mAP

El área bajo la curva PR se usa para determinar el AP. La precisión promedio media (mAP) es una métrica común utilizada para evaluar la precisión de un modelo de detección de objetos. El mAp para la detección de objetos es el promedio de todos los AP calculados. La precisión promedio se expresa matemáticamente como:

🔥 Recomendado:  6 características ocultas de Apple Vision Pro que te dejarán boquiabierto

Dónde,

p = precisión

r = recordar

De manera similar, la fórmula para la precisión promedio promedio.

Uso de mAp como métrica de evaluación

Este artículo utiliza datos personalizados que contienen puntajes de predicción y valores reales de campo de dos clases predichas por un modelo de aprendizaje automático. Considere las dos clases como “positiva” y “negativa”. Se creará una curva personalizada de recuperación de precisión para visualizar la compensación de precisión y recuperación.

Importemos las bibliotecas necesarias.

importar numpy como np importar pandas como pd de sklearn.metrics importar precision_score,recall_score importar matplotlib.pyplot como plt

Creando los datos

Como se discutió, se crearon dos conjuntos de datos diferentes que contienen datos binarios.

y_true_class1 = [“positive”, “negative”, “positive”, “negative”, “positive”, “positive”, “positive”, “negative”, “positive”, “negative”,”positive”, “negative”, “positive”, “positive”]
pred_scores_class1 = [0.72, 0.38, 0.55, 0.64, 0.55, 0.91, 0.75, 0.28, 0.88, 0.35, 0.76, 0.8, 0.47, 0.68]

y_true_class2 = [“negative”, “positive”, “positive”, “negative”, “negative”, “positive”, “positive”, “positive”, “negative”, “positive”, “negative”, “positive”, “negative”, “negative”]
pred_scores_class2 = [0.32, 0.97, 0.45, 0.17, 0.25, 0.99, 0.55, 0.33, 0.35, 0.85, 0.62, 0.54, 0.39, 0.69]

Establezca un valor de umbral que oscile entre 0,2 y 0,9 con el paso de 0,05.

umbrales = np.arange(start=0.2, stop=0.9, step=0.05)

Definir la curva de recuperación de precisión

Debido a que la precisión y la recuperación son importantes, existe una curva de precisión-recuperación que muestra el equilibrio entre la precisión y los valores de recuperación para diferentes umbrales. Esta curva ayuda a determinar el umbral apropiado para optimizar ambas medidas.

La curva de recuperación de precisión requiere las siguientes entradas:

  • Las etiquetas de la verdad fundamental.
  • Las puntuaciones de predicción
  • El valor de umbral para convertir puntuaciones de predicción en etiquetas.

def precision_recall_curve(y_true, pred_scores, umbrales): precisiones = []
recuerda = []

para umbral en umbrales: y_pred = [“positive” if score >= threshold else “negative” for score in pred_scores]

precision = precision_score(y_true=y_true, y_pred=y_pred, pos_label=”positivo”) recordar =recall_score(y_true=y_true, y_pred=y_pred, pos_label=”positivo”) precisiones.append(precisión) recuerda.append(recordar) devuelve precisiones , recuerda

Calcule las puntuaciones de precisión promedio para los primeros conjuntos de datos.

precisiones, recuperaciones = precision_recall_curve(y_true=y_true_class1, pred_scores=pred_scores_class1, thresholds=thresholds) plt.plot(recalls, precisions, linewidth=2, color=”red”, zorder=0) plt.xlabel(“Recall”, fontsize= 12, fontweight=”negrita”) plt.ylabel(“Precisión”, fontsize=12, fontweight=”negrita”) plt.title(“Curva de recuperación de precisión”, fontsize=15, fontweight=”negrita”) plt.show () precisiones.append(1) recuerda.append(0) precisiones = np.array(precisiones) recuerda = np.array(recuerda) avg_precision_class1 = np.sum((recuerda[:-1] – recuerda[1:]) * precisiones[:-1]) imprimir(‘===========================================’) print(‘Puntaje de precisión promedio:’,np.round(avg_precision_class1,2))

🔥 Recomendado:  ¿Por qué todo el mundo tiene miedo a los falsos negativos?
Revista de análisis de la India
Revista de análisis de la India

Aquí obtuve un puntaje de precisión promedio de 0.86 que es bueno y en la curva de precisión-recuperación, se pudo observar que para los valores de umbral inicial, la recuperación fue baja y la precisión fue alta, lo cual es malo y para el resto de los umbrales la precisión no superó 0,86. Con esto, se pudo concluir que el tradeoff fue balanceado con una precisión de 0.86 y una recuperación de 0.68.

Calcule las puntuaciones de precisión promedio para los segundos conjuntos de datos

precisiones_2, recuperaciones_2 = precision_recall_curve(y_true=y_true_class2, pred_scores=pred_scores_class2, thresholds=thresholds) plt.plot(recalls_2, precisions_2, linewidth=2, color=”red”, zorder=0) plt.xlabel(“Recall”, fontsize= 12, fontweight=”negrita”) plt.ylabel(“Precisión”, fontsize=12, fontweight=”negrita”) plt.title(“Curva de recuperación de precisión”, fontsize=15, fontweight=”negrita”) plt.show () precisiones_2.append(1) recupera_2.agrega(0) precisiones_2 = np.array(precisiones_2) recupera_2 = np.array(recupera_2) avg_precision_class2 = np.sum((recupera_2[:-1] – recuerda_2[1:]) * precisiones_2[:-1]) imprimir(‘===========================================’) print(‘Puntaje de precisión promedio:’,np.round(avg_precision_class2,2))

Revista de análisis de la India
Revista de análisis de la India

Aquí obtuve un puntaje de precisión promedio de 0.83 que es bueno y en la curva de precisión-recuperación, se pudo observar que para los valores de umbral iniciales, la recuperación fue baja y la precisión fue alta, lo cual es malo y un aumento repentino en la recuperación pero la precisión fue estable.

Cálculo del mapa

num_labels= 2 mAP = (avg_precision_class2 + avg_precision_class1)/num_labels print(‘Puntuación media de precisión media:’,np.round(mAP,3))

Revista de análisis de la India

La puntuación media de precisión media para un conjunto de datos que contiene datos binarios es 0,836, que se obtiene tomando la media de la precisión media.

Conclusión

El umbral de Intersección de unión (IoU) influye en la métrica AP. Cuando se emplea AP como medida de evaluación para la detección de objetos, la selección del umbral IoU se convierte en un procedimiento arbitrario. Con este artículo, hemos entendido las métricas de evaluación de precisión promedio y precisión promedio promedio para la detección de objetos.

Referencias