Logo Studenta

Práctica_6_Perros_y_gatos

¡Este material tiene más páginas!

Vista previa del material en texto

Página 1 de 13 
 
INSTITUCIÓN: TECNOLÓGICO DE LA LAGUNA 
 
CARRERA: MECATRÓNICA 
 
MATERIA: INTELIGENCIA ARTIFICIAL 
 
DOCTOR: SERGIO LÓPEZ HERNÁNDEZ 
 
ALUMNO: RODRÍGUEZ GUERRA EDUARDO ANTONIO 
 
MATRICULA: 19131252 
 
PRÁCTICA 6: PERROS Y GATOS 
 
FECHA DE ENTREGA: 04 DE DICIEMBRE DE 2023
de 
Página 2 de 13 
 
 
 
La última práctica, justo cuando pensaba que ya le entendía muy bien y nada 
podría salir mal, que me encuentro que todo este tiempo estuve usando las 
librerías mas actualizadas, y como todas estaban en su última versión jamás me 
enfrente al problema de la incompatibilidad. Pero como los métodos vistos en los 
videos y en clase son de unas versiones antes, me vi en la necesidad de 
retroceder a fin de entender el funcionamiento de los comandos. 
Y fue una mala decisión jejeje, por buscar el camino fácil al instalar la 
librería de tensorflow o la de matploit terminaba actualizando otras que requería 
el programa, a esto adjunte que no toda la información de internet es real, que 
instalaba las versiones recomendadas de compatibilidad, pero que una de ellas no 
era cierta, Pero en fin las versiones usadas en esta práctica fueron: 
 
de 
Página 3 de 13 
 
 
 
 
 
 
 
 
 
 
 
de 
Página 4 de 13 
 
 Comenzando con la red neuronal superficial, lo primero que hay que tomar 
encuentra es que poseía un dataset de 25000 imágenes, pero como no quería demorar 
tanto las pruebas decidí filtrarlo y reducirlo un poco. 
 
El imagedatagenerator nos permite procesas imágenes y tratarlas como si fuese 
simples arreglos, básicamente transformaremos el formato de la imagen en uno que 
la red neuronal pueda reconocer y procesar. 
 
Estos dos comandos van destinados a optimizar las imágenes, básicamente la 
primera capa de nuestra red neuronal estará recibiendo la información de cada 
pixel de la imagen, se imaginan cuantas entradas tendríamos que tener para 
ingresar una imagen común de 720x720, ahora a esto agréguenle los colores ya que 
la escala rgb usa tres canales, ósea realmente tendríamos un total de 720x720x2, 
valla que quedaría demasiado grande. Y por si fuese poco cada pixel varia de 0-
255, como lo vimos en las practicas pasadas al tener limites tan grandes la red 
neuronal, tardar más en entrenar además de que perderá asertividad, por eso 
mapeamos o normalizamos ese valor 0-1. 
Por todo esto le iremos poniendo cierto formato. 
 
Traemos las imágenes, ingresando la dirección de su ubicación, el formato de este 
comando es entrada, salida, tamaño de imagen, grupos, y modo de clasificación 
La entrada y la salida son la imagen y la categoría a la que corresponde, ahora 
bien como sabe la red cual es la categoría, pues toma como categoría las 
de 
Página 5 de 13 
 
carpetas, por ejemplo si clasificáramos celulares tendríamos que acomodar el 
dataset en una carpeta y dentro de ella acomodar los celulares en cada carpeta, 
por ejemplo, una carpeta para motorola, otra para LG etc… el tamaño por lo antes 
mencionado, sabemos que tenemos que reducir la calidad de la imagen para asi 
ahorrar procesamiento, la verdad tome ese valor de 100 ya que en clase se 
comprobó que es el valor con menor perdida de información pero a la vez el que 
representa menor gasto computacional. 
El grupo, también en clase se comprobó que las redes neuronales presentan mejores 
resultados cuando se le someten en grupos las entradas. 
 
El modo de clasificación es binario por que el resultado esperado es perro o 
gato, en caso de ser uno diferente tendríamos que indicarlo aquí. 
 
Tuve la necesidad de intentar un modelo poderoso el cual fuese capaz de responder 
bien ante cualquier tipo de entrada, incluyendo aquellas con perturbaciones. 
Función de activación a la salida sigmoide por que el dato numérico es 0 o 1. 
Por último, en esta sección destacar el uso del flatten. 
La primera capa de esta red, tf.keras.layers.Flatten, transforma el formato de 
las imágenes de un arreglo bi-dimensional (de 28 por 28 pixeles) a un arreglo uni 
dimensional (de 28*28 pixeles = 784 pixeles). 
Y el numero 3 significa que le indicamos que esta en color, en caso de estar en 
escala de grises tendremos que colocar un 1. 
 
 
Preparamos el entrenamiento y configuramos los datos de entrenamiento. 
De hecho, en las primeras pruebas con un dataset de 300 imágenes termine con un 
asertividad de 80 en un numero de 150 épocas, pero apenas ponía una imagen 
diferente al resto y las respuestas perdían estabilidad. 
Entonces decidí mejorar el dataset, darle mas tiempo y una nueva capa oculta a 
fin de preservar ese asertividad y poder aplicarla a muchos más ejemplos. 
 
 
de 
Página 6 de 13 
 
 
 
El 0.23 es el umbral recomendado. 
 
Vemos 35 ejemplos en pantalla usando la librería de matploit, y la predicción que 
nuestra red les dé a cada una. 
Con esta la arquitectura y las configuraciones plasmadas en las imágenes pasadas 
llegamos a un resultado de: 
 
Pero si tardo como media hora en entrenar, en colap hubiese sido mucho más rápido 
pero a costo de no aprender el paso a paso ya que las facilidades que me brindan. 
 
Obvio apenas vi ese porcentaje y guarde los resultados, pesos y la arquitectura. 
 
 
 
 
 
 
 
 
 
 
 
de 
Página 7 de 13 
 
Ejemplo de resultados: 
 
Lo primero que me di cuenta es que hay gatos que los identifica como perros pero 
no perros identificados como gatos, entonces quizás necesite disminuir un poco el 
umbral. 
Con un umbral de 0.2 
de 
Página 8 de 13 
 
 
El resultado se mantiene igual 
 
 
 
 
 
 
 
 
 
 
 
 
de 
Página 9 de 13 
 
 Con umbral de 0.15 estos fueron los resultados: 
 
Solo dos errores, pero en defensa de la red uno de ellos es un gato blanco 
fotografiado con flash, ahí acepto mi responsabilidad de no haber depurado tan 
bien el dataset de pruebas. 
Vala para ser la red neuronal superficial, termine impresionado. 
 
 
 
 
 
 
 
 
de 
Página 10 de 13 
 
 A consejo del doctor decidí investigar alguna arquitectura convolucional, y 
después de intentar con varias, la que mejores resultados me arrojo fue la 
siguiente: 
 
De hecho, le tengo tanta confianza que la voy a entrenar solo 30 veces, si 10 
épocas menos que la anterior. 
Recordando un poco…. una red neuronal convolucional es aquella capaz de extraer 
características de una imagen por medio de la aplicación y el procesamiento con 
diferentes filtros, en otras clases ya había aplicado diferentes filtros, pero si 
era algo engorroso analizar la imagen para ver que filtro le convenia más, saber 
que tengo una herramienta capaz de hacer ese proceso de manera automática es un 
alivio. 
Resultados: 
 
Podemos ver que hay 
demasiados gatos 
identificados como perros 
quizás necesite elevar más 
el umbral. 
Antes de modificar dicho 
parámetro: 
de 
Página 11 de 13 
 
 
Sorprendentemente una red neuronal convolucional con un entrenamiento del solo 
20% en comparación a la superficial, logro superarla, además destacar que el 
tiempo de demora fue como 8 minutos en contraste con la media hora. 
 
Prueba 2 Umbral de 0.25 
 
Ahora si solo tenemos 2 errores en estas 33 muestras, pero veamos que sucede 
cuando lo subo a 0.3 
de 
Página 12 de 13 
 
 
 
Los errores siguen, ahora al 0,35 
de 
Página 13 de 13 
 
 
Solo un error con el 7% de margen de error por parte de la red neuronal creo que 
ese umbral es el necesario. 
 
Como conclusión me dejo la tarea de continuar investigando acerca de las redes 
neuronales convolucionales, así como logre desarrollar los principios para 
plantear arquitecturas para resolver problemas sencillos se que entrenando estas 
nuevas competencias seré capaz de resolver problemas más complejos, y aspirar a 
llevar esto más lejos, quizás automatización industrial y todo eso.

Continuar navegando