Darkflow: ¿Cómo evalúo la precisión del equipo de prueba?

Creado en 5 mar. 2018  ·  34Comentarios  ·  Fuente: thtrieu/darkflow

Una forma es calcular la "Precisión media media: mAP".
Pero no estoy al tanto de esta característica implementada en darkflow.
¿Tiene alguna sugerencia sobre qué repositorio de darknet o persona ha escrito un script para hacer esto?

Comentario más útil

¿No hay nadie que lo haya hecho antes?
¿Nadie prueba su precisión?
No sé por qué aún no se han implementado cosas tan importantes.
Si no hay ninguno, tal vez deba implementar esta función por mí mismo y comprometerla para siempre.

Todos 34 comentarios

https://github.com/thtrieu/darkflow/blob/master/darkflow/utils/box.py tiene una implementación básica necesaria para evaluar o calcular la superposición entre dos imágenes. Puede modificarlo según sus necesidades y calcular la precisión media media como una multiplicación de la probabilidad de clase y box_iou

¿No hay nadie que lo haya hecho antes?
¿Nadie prueba su precisión?
No sé por qué aún no se han implementado cosas tan importantes.
Si no hay ninguno, tal vez deba implementar esta función por mí mismo y comprometerla para siempre.

También me interesaría esta función.

@ off99555 , vi a este tipo trabajando en la puntuación de F1.

377

Hola @ off99555 , también estoy buscando calcular mAP a partir de mis propios datos de prueba.
Creo que @sandeeprepakula tiene una buena respuesta, ¿puedes explicar paso a paso cómo calcular mAP a partir de iou box? Soy muy novato en aprendizaje profundo y detección de objetos.

Gracias por tu ayuda

@andikira No lo he hecho todavía. Yo tampoco estoy seguro.

Hola @ off99555 , tienes que ver este repositorio https://github.com/Cartucho/mAP y luego ver la carpeta adicional, puedes convertir archivos .xml y .json, ese repositorio funciona perfectamente con darkflow.

@andikira @thtrieu Entrené la red yolo2-voc en PASCAL V0C 0712 trainval set y probé en PASCAL VOC 2007 test set, y el rendimiento de mAP es solo alrededor del 52% (después de bastantes épocas (200 ~) considerando que inicialicé con pesos previamente entrenados). Está bastante por debajo del rendimiento oficial (76,8% mAP). Quiero incluir resultados experimentales con mi idea usando YOLO v2 en mi papel. ¿Alguien podría saber la razón?

He visto ese problema antes, verifique otro problema @bareblackfoot

@andikira El mAP funciona de maravilla. También contribuí allí con un guión. ¡Gracias!

Puedes

@andikira El mAP funciona de maravilla. También contribuí allí con un guión. ¡Gracias!

¿Podría explicar de forma más específica? como funciona ? ¿Cómo obtuviste los resultados?

@srhtyldz Vaya al sitio web https://github.com/Cartucho/mAP y vaya a la sección de inicio rápido.
La idea es que necesitas clonar el repositorio, predecir tus imágenes usando darkflow y luego copiar los archivos de predicción en la carpeta mAP. También copie los archivos de la verdad sobre el terreno.
Y hace todo como sugiere el archivo README de mAP repo y debería ver mAP como una salida de un solo número.

También necesita convertir sus archivos de formato darkflow a su formato. Proporcionan el script para convertir el formato de flujo oscuro a su formato aquí: https://github.com/Cartucho/mAP/tree/master/extra
Lea el archivo README.

También necesita convertir sus archivos de formato darkflow a su formato. Proporcionan el script para convertir el formato de flujo oscuro a su formato aquí: https://github.com/Cartucho/mAP/tree/master/extra
Lea el archivo README.

Descubrí que darknet tiene propiedad de mapa. ¿Intentaste eso? ¿Hay alguna diferencia entre ellos o cuál es más preciso?

@srhtyldz Creo que el algoritmo es el mismo. Excepto que mAP es un algoritmo que tiene algunos parámetros que puede configurar. Por lo general, esto lo establece manualmente el escritor del algoritmo. Entonces, la única vez que ve que reportan números diferentes es cuando tienen parámetros diferentes.
Le sugiero que lea la explicación de cómo funciona mAP para que pueda comprender su parámetro oculto.
Probé los dos. Fui con darknet en mi tesis porque darkflow no tiene la opción de especificar la carpeta de salida. Es fundamental para mi proyecto senior porque ejecuto el código en FloydHub que es una nube de aprendizaje profundo que solo le permite usar ciertas carpetas.

Primero uso darkflow con mAP y luego descubro que no puedo especificar la ruta de salida, así que cambié a darknet y uso su cálculo interno mAP .

Y lo más importante, el propietario del repositorio darknet (la versión de bifurcación con AlexeyAB como propietario) es muy útil. Él responde a todos los problemas que publiqué y que me hicieron terminar antes de la fecha límite. Fue muy estresante en ese entonces. Le estoy muy agradecido, también escribí su nombre en la tesis.

Primero uso darkflow con mAP y luego descubro que no puedo especificar la ruta de salida, así que cambié a darknet y uso su cálculo interno mAP .

¿Qué variable quieres especificar?

Primero uso darkflow con mAP y luego descubro que no puedo especificar la ruta de salida, así que cambié a darknet y uso su cálculo interno mAP .

Mi opinión también es para darknet. ¿Creo que solo se puede cambiar con el umbral mediante el cálculo mAP? Derecha ?

¿Qué variable quieres especificar?

@srhtyldz In darkflow aproximadamente medio año, cuando comencé este hilo, no me permite especificar la ruta de la carpeta de salida. La ruta de la carpeta de salida es la ruta donde se escriben las imágenes de predicción.
Si mal no recuerdo, la carpeta de salida está configurada en out carpeta dentro de la carpeta de su conjunto de datos.
Por ejemplo, si tiene algunas imágenes dentro de img/ , las predicciones estarán dentro de img/out/ .
En FloydHub , no le permiten escribir la salida en la carpeta del conjunto de datos. Entonces, si la carpeta del conjunto de datos es img/ , no puede crear una nueva carpeta como img/out porque encontrará el permiso denegado.

Tal vez le permita especificar la ruta de salida ahora, pero debe verificar. No estoy seguro.

Mi opinión también es para darknet. ¿Creo que solo se puede cambiar con el umbral mediante el cálculo mAP? Derecha ?

Si mal no recuerdo, mAP tiene un parámetro que el escritor debe definir. Es el umbral de 0 a 1 que decide si una imagen se predice correctamente. Normalmente, se establece en 0,5. Entonces, si la relación de área supera 0.5, significa que la imagen es correcta.
Y después de eso también tienes que definir el Average Precision . Para multar el promedio, debe averiguar cuántas precisiones hay. Resulta que también puedes definir el número de precisiones. Por lo general, el número de precisiones se establece en 11 para que pueda alinearlas desde 0, 0.1, 0.2, ..., 0.9, 1.0.

Sin embargo, no estoy seguro de qué estoy hablando. Porque ya me he olvidado de la mayor parte. Tienes que aprenderlo para asegurarte de que estoy en lo cierto. Pero estoy bastante seguro del número 0.5 y 11 . Simplemente no sé cómo se llaman.

PD. Regresé para encontrar la diapositiva de mi tesis (cuando sé lo que significa mAP), así es como la describí en ese entonces:
image

image

¿Qué variable quieres especificar?

@srhtyldz In darkflow aproximadamente medio año, cuando comencé este hilo, no me permite especificar la ruta de la carpeta de salida. La ruta de la carpeta de salida es la ruta donde se escriben las imágenes de predicción.
Si mal no recuerdo, la carpeta de salida está configurada en out carpeta dentro de la carpeta de su conjunto de datos.
Por ejemplo, si tiene algunas imágenes dentro de img/ , las predicciones estarán dentro de img/out/ .
En FloydHub , no le permiten escribir la salida en la carpeta del conjunto de datos. Entonces, si la carpeta del conjunto de datos es img/ , no puede crear una nueva carpeta como img/out porque encontrará el permiso denegado.

Tal vez le permita especificar la ruta de salida ahora, pero debe verificar. No estoy seguro.

Mi opinión también es para darknet. ¿Creo que solo se puede cambiar con el umbral mediante el cálculo mAP? Derecha ?

Si mal no recuerdo, mAP tiene un parámetro que el escritor debe definir. Es el umbral de 0 a 1 que decide si una imagen se predice correctamente. Normalmente, se establece en 0,5. Entonces, si la relación de área supera 0.5, significa que la imagen es correcta.
Y después de eso también tienes que definir el Average Precision . Para multar el promedio, debe averiguar cuántas precisiones hay. Resulta que también puedes definir el número de precisiones. Por lo general, el número de precisiones se establece en 11 para que pueda alinearlas desde 0, 0.1, 0.2, ..., 0.9, 1.0.

Sin embargo, no estoy seguro de qué estoy hablando. Porque ya me he olvidado de la mayor parte. Tienes que aprenderlo para asegurarte de que estoy en lo cierto. Pero estoy bastante seguro del número 0.5 y 11 . Simplemente no sé cómo se llaman.

PD. Regresé para encontrar la diapositiva de mi tesis (cuando sé lo que significa mAP), así es como la describí en ese entonces:
image

Muchas gracias . Investigaré mAP e IoU. Obtuve el resultado pero no pude interpretarlos, ¿puedo hacer una pregunta más? ¿Usó la función 'recordar'? ¿La función de mapa y recuperación tiene la misma funcionalidad o no? Tienes alguna idea_?

@srhtyldz mAP se calcula a partir de la precisión como una función de recuperación. Así que la precisión y la recuperación ya están incluidas. mAP es una métrica de evaluación popular y convencional para tareas de detección de objetos. Por lo tanto, no tiene que recordar ni precisar individualmente. Simplemente calcule mAP y si es alto, significa que su modelo funciona bien.

@srhtyldz mAP se calcula a partir de la precisión como una función de recuperación. Así que la precisión y la recuperación ya están incluidas. mAP es una métrica de evaluación popular y convencional para tareas de detección de objetos. Por lo tanto, no tiene que recordar ni precisar individualmente. Simplemente calcule mAP y si es alto, significa que su modelo funciona bien.

Obtuve un 90,4% de mAP. Creo que funciona bien.

@srhtyldz Eso es muy alto si tienes muchas clases. (Los modelos populares en grandes conjuntos de datos solo tienen alrededor del 50-60%) Pero incluso si solo tiene dos clases, sigue siendo bueno.
Asegúrese de verificar las imágenes predichas con ojos humanos para verificar si mAP es razonable.

@srhtyldz Eso es muy alto si tienes muchas clases. (Los modelos populares en grandes conjuntos de datos solo tienen alrededor del 50-60%) Pero incluso si solo tiene dos clases, sigue siendo bueno.
Asegúrese de verificar las imágenes predichas con ojos humanos para verificar si mAP es razonable.

Solo tengo una clase Además, guardé todas las imágenes con un cuadro delimitador.
¿Dibujaste el gráfico mAP? En el repositorio de Alex, hay un gráfico mAP y, mientras entrena su modelo, debe poner '-map' para obtener el gráfico. Yo no puse esta palabra. Incluso usted puso eso, ¿cómo podría obtener el gráfico mAP? ¿lo intentas? ¿También probaste la función 'válida'? ¿conoces las diferencias?
Sé que hice muchas preguntas, pero tus respuestas son muy importantes para mi tesis :).

Desde darknet , solo evalúo mAP usando solo su terminal y tomo una instantánea de la consola.
No sé sobre la función válida.
Para el gráfico mAP, es posible si usa darkflow y usa mAP repo arriba. Hay un script que genera la animación y los gráficos.
Creo que el repositorio de MAP también puede funcionar con darknet.

Desde darknet , solo evalúo mAP usando solo su terminal y tomo una instantánea de la consola.
No sé sobre la función válida.
Para el gráfico mAP, es posible si usa darkflow y usa mAP repo arriba. Hay un script que genera la animación y los gráficos.
Creo que el repositorio de MAP también puede funcionar con darknet.

El problema es que no sé cómo se ejecutará la animación. Traté de hacer eso mientras entrenaba pero no pude obtener la animación para el mapa. @alexeyAB tal vez ayude con esto.

Obtuve un mapa de los resultados de mi prueba. De 56 imágenes obtuve 48 imágenes correctas para mi prueba. Tengo cuatro clases. Cómo hacer una matriz de confusión a partir de eso. Alguien me puede ayudar .

@srhtyldz Usé la función / darknet detector map cfg / air.data cfg / test_tiny.cfg backup \ my_yolov3_tiny_final.weights pero no pude obtener ninguna puntuación o gráfico al final del entrenamiento. ¿Cómo obtuviste la puntuación mAP en darknet?

@mustafabuyuk Pasa el argumento -map a ./darknet (darknet.exe). Aparecerá en el gráfico en alrededor de 1000 iteraciones. No estoy seguro de si es necesario, pero también tengo un conjunto de imágenes de validación.

¿Alguien puede tener idea? YOLOv5 calcula mAP contra el conjunto de datos de validación durante el entrenamiento. Sin embargo, ¿qué comando podemos calcular contra el conjunto de datos de prueba no visto (mAP y Class sabio mAP)?

@ off99555 El hilo parece cerrado. ¿Obtienes la respuesta?
Tengo un conjunto de imágenes y archivos de anotaciones Yolo (en formato txt) para la validación.

¿Cómo usar el argumento -map para validar las imágenes para obtener la puntuación mAP? ¿Será posible derivar la matriz de confusión de esto?

@sandeeprepakula Lea mi respuesta directamente antes de cerrar el problema. Así es como se puede calcular mAP.
Pero sugeriría más, no use más este repositorio. No he trabajado con la detección de objetos durante algunos meses, así que no estoy seguro de qué repositorio es el mejor, pero de un vistazo rápido a la última confirmación de este repositorio, fue en febrero de 2020. ¿Crees que hay un repositorio que no se ha actualizado? durante un año vale la pena usarlo? Si te quedas atascado en algo, nadie te ayudará. Tenga en cuenta también la parte de la comunidad al elegir qué repositorio utilizar.

@ off99555 Gracias por la sugerencia

¿Fue útil esta página
0 / 5 - 0 calificaciones