Progreso marzo 2023 - RoboticsURJC/tfg-dcampoamor GitHub Wiki

Portada marzo 2023

SEMANA 13 (27/02/2023-5/03/2023)

SEMANA 14 (13/03/2023-19/03/2023)

SEMANA 15 (20/03/2023-26/03/2023)

Semana 13 (27/02/2023-5/03/2023)

  • Detección de objetos en imágenes con TensorFlow

    Tras obtener los resultados anteriores, se procedió a analizar algunos de los datos obtenidos, así como los de las imágenes utilizadas para el aprendizaje del modelo y su uso en la detección.

    Después del etiquetado de las imágenes y de la obtención de los archivos csv a partir de estos xml, se puede observar en los archivos entrenamiento.csv y test.csv que se siguió una distribución de los datos aproximadamente del 70:30 (70% datos de entrenamiento y 30% datos de prueba) a partir de los cuales se entrenó ese 70% con uno de los algoritmos y los respectivos parámetros escogidos y mediamos su rendimiento usando el 30% restante de los datos.

    Imágenes usadas en entrenamiento Imágenes usadas en test Número total de imágenes
    594 218 812

    Imagenes totales

    Entre las imágenes utilizadas para el entrenamiento del modelo podemos observar que se utilizan diversos tamaños de imagen, pero las que más se repiten son las imágenes de 500x333, 500x375, 500x500 y 500x334 píxeles.

    Imagenes entrenamiento

    Píxeles (width x height) Número de imágenes
    500x333 100
    500x375 91
    500x500 21
    500x334 21

    Para las imágenes utilizadas como dato de prueba, se utilizaron otras 218 imágenes diferentes a las utilizadas para el entrenamiento, siendo esta la distribución de las imágenes en función de sus píxeles:

    Imagenes test

    Píxeles (width x height) Número de imágenes
    500x375 36
    500x333 34
    500x334 16

    Una vez analizadas las imágenes utilizadas para el entrenamiento y el test del modelo, se volvió a entrenar este a partir del último checkpoint disponible para comprobar si gracias a un mayor número de pasos, su pérdida disminuía y el % de aciertos era mayor que en los primeros 1337 pasos.

    Primeros pasos del reentrenamiento

    Pasos finales reentrenamiento

    Se volvió a cortar el entrenamiento en el paso 2945, siendo el último checkpoint disponible el del paso 2877 con una pérdida de 0.222.

    Checkpoint

    Checkpoints disponibles

    Tal y como se hizo la primera vez, para poder congelar el modelo, se volvió a utilizar el comando correspondiente, siendo model.ckpt-2877 esta vez el último checkpoint disponible. Una vez congelado el modelo, se volvieron a utilizar las mismas imágenes de prueba que en la primera vez, obteniendo esta segunda un mejor resultado en cuanto a la detección y al % de acierto:

    tigre_1_v2 tigre_2_v2 tigre_3_v2 tigre_4_v2 tigre_5_v2

Semana 14 (13/02/2023-19/03/2023)

  • Detección de fresas en imágenes con TensorFlow

    Dado el éxito obtenido con el ejemplo de los tigres, se propuso comprobar si el modelo funcionaría también con el objeto final, en este caso, con las fresas. Para ello, se obtuvo a través de la página Kaggle un dataset de 262 frutas de las cuales únicamente se utilizó el archivo de las fresas, que contenía 1002 imágenes.

    Una vez descargado el archivo, se comenzó a etiquetar una a una las imágenes mediante la herramienta labelImg para obtener los archivos xml, tal y como se había hecho con el anterior ejemplo.

    Antes de terminar de etiquetar el dataset entero, se intentó probar este modelo. Para ello, en esta ocasión se siguió uma distribución de las primeras 405 imágenes del 80:20 (80% datos de entrenamiento y 20% datos de prueba).

    Proporción conjunto de imágenes

    Tras repetir los diferentes pasos explicados anteriormente para entrenar el modelo, cortándolo esta vez en el paso 3501, y usando el checkpoint guardado en el paso 3490 para congelar el modelo. Finalmente se utilizaron varias imágenes aún por etiquetar para probarlo, obteniendo un resultado satisfactorio:

Semana 15 (20/03/2023-26/03/2023)

  • Gráfica de la pérdida y la precisión del modelo en función de los pasos

    Para poder empezar a comparar este modelo con otros, se intentará graficar la pérdida (loss) y la precisión (accuracy) en función de los pasos (steps) tanto de este modelo como de otros. Para ello se realizó el archivo plotting.py que se llamará dentro del programa train.py.

    Se intentó entrenar una vez realizados los primeros cambios, obteniendo los siguientes problemas problemas a la hora de importar módulos: ImportError nets ImportError deployment

    Por esto, tras intentar buscar las posibles soluciones ante estos problemas en diferentes páginas web como stackoverflow o en la propia paǵina de errores en modelos de tensorflow de github se decidió crear un entorno nuevo de anaconda para que a la hora de correr el archivo de entrenamiento este funcionase.