Mi proyecto del curso: Introducción a la IA con Python
por lkss @lkss
- 323
- 2
- 1
En mi proyecto hice un identificador de razas de perros y gatos, y también añadí como extra que diga si es perro o gato. Hay 37 razas diferentes en total, 12 de gatos y 25 de perros. Las imágenes las saque descargando un dataset de Kaggle llamado "Cats and Dogs Breeds Classification Oxford Dataset". Url: https://www.kaggle.com/datasets/zippyz/cats-and-dogs-breeds-classification-oxford-dataset/data
Tiene unas 200 imágenes por clase. Y las 37 razas de perros y gatos que puede clasificar son:
'Abyssian', 'American_Bulldog', 'American_Pit_Bull_Terrier', 'Basset_Hound', 'Beagle', 'Bengal', 'Birman', 'Bombay', 'Boxer', 'British_Shorthair', 'Chihuahua', 'Egyptian_Mau', 'English_Cocker_Spaniel', 'English_Setter', 'German_Shorthaired', 'Great_Purenees', 'Havanese', 'Japanese_Chin', 'Keeshond', 'Leonberger', 'Maine_Coon', 'Miniature_pinsch', 'Newfoundland', 'Persian', 'Pomeranian', 'Pug', 'Ragdoll', 'Russian_Blue', 'Saint_Bernard', 'Samoyed', 'Scottish_Terrier', 'Shiba_Inu', 'Siamese', 'Sphynx', 'Staffordshire_Bull_Terrier', 'Wheaten_Terrier', 'Yorkshire_Terrier'.
Empiezo importando ImageDataGenerator y numpy. Luego genero las imágenes rotadas, movidas, etc. con ImageDataGenerator, y después las separo en las que son para entrenamiento y las que son para pruebas, tanto como en las razas, como en la especie (perro o gato):


Luego importo tensorflow, tensorflow_hub, tf_keras, y el modelo preexistente de mobilenet_v2, especificando el input_shape:

Luego congelo las capas de mobilenet_v2 para que no se puedan modificar, creo los dos modelos que utilizare para diferenciar entre especies y razas de perros y gatos, especificando las 37 razas diferentes, y las 2 especies. Despues los compilo utilizando los parámetros que recomendaron en el curso para modelos de clasificación:
Luego entreno los modelos con sus datos correspondientes, pero nunca me pasa de epoca, solo dice X/Unknow y nunca termina por mas tiempo que lo deje (lo deje 1000 segundos en la segunda imagen y no paso a la segunda epoca), por lo que lo tengo que cancelar pasado cierto tiempo, pero igualmente se entrenan al menos la primera epoca durante el tiempo que les dejo. Puede ser que mi grafica no sea muy buena al procesar imagenes. Aunque tambien intente en colab iniciandolo con GPU y lo mismo.



Luego hago la función para procesar las imagenes, la cual toma la ruta de la imagen como unico parametro, luego la normaliza, hacer las predicciones, obtener los indices de la clase con mayor probabilidad, luego obtengo los nombres de las clases con esos indices, y por ultimo devuelvo una F-String con los nombres de la especie y de la raza de la imagen argumentada.

Y para finalizar, testeo si predice bien utilizando la funcion de categorize(), lo cual si hace en las imagenes que probe para este testeo, dejo aqui las imagenes y el codigo:



Bueno, ese fue mi proyecto, dejo también un link al colab que hice por si quieren testearlo.
URL: https://colab.research.google.com/drive/10Qt2rbxhMu9EnfVYDxp7bBjIzUHWScXf?usp=sharing
1 comentario
impresionante!
Entra o únete Gratis para comentar