Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1
PRÁCTICA DE RECONOCIMIENTO DE IMÁGENES
A continuación, se van a dar unas recomendaciones previas para poder
realizar esta práctica, los principales requerimientos son:
1. Se necesita tener instalado Python 3.6 o posterior, instalar la
aplicación de Anaconda–Navigator la cual tiene implementada la
aplicación de Notebook-Jupyter para comenzar a implementar la
práctica.
2. Abrir la aplicación de Anaconda-Navigator como se muestra en la
siguiente imagen y escoger el entorno de desarrollo:
2
Nota: El siguiente banco de imágenes que nos proporciona Google fue
utilizado para realizar la práctica de reconocimiento de imágenes, a este
banco de imágenes se le realizaron unas modificaciones de tamaño en
dimensiones para poder ejecutar el laboratorio:
Previamente se tuvo que tener descargado el directorio de Imágenes para
poder continuar con la práctica.
NOTA:
Al ejecutar la aplicación de Jupyter tener presente lo siguiente:
1. Crear una nueva carpeta nueva la cual contendrá las practicas a
realizar, dentro de esta carpeta crear una nueva con la respectiva
descripción por cada practica mediante la siguiente forma:
3
Verificamos las carpetas creadas y su respectivo nombre.
Rename: Sirve para cambiar el nombre de la carpeta
4
Nos saldrá la siguiente ventana, y se le asigna el respectivo nombre:
NOTA: Siempre que haga falta instalar alguna librería o componente para la
práctica, se utiliza la siguiente instancia en el Jupyter-Notebook, para instalar
estas librerías simplemente se tiene que quitar el #, una vez ya instaladas la
librería se vuelve a colocar el # para que no se vuelva a ejecutar la línea de
comando:
5
Quedaría de la siguiente manera:
Esto se hace siempre y cuando se necesite instalar algún componente que
haga falta, el # al comienzo del ejemplo de cada línea de comando sirve para
comentar la línea de código y esta no afecte la ejecución.
6
COMIENZO DE LA PRÁCTICA
Para dar inicio a la práctica, se hará una secuencia de pasos que se deben
de realizar de forma ordenada como se muestra en el documento.
Dato para tener presente: Una vez se descarguen las imágenes, se deben
descomprimir en la carpeta de trabajo de la práctica, quedaría de la siguiente
manera:
Entorno de Jupyter:
7
A continuación, se muestra el código de la práctica para realizar la
implementación del reconocimiento de las imágenes.
NOTA: Tener presente los pasos para poder realizar la práctica.
import numpy as np
import os
import re
import sys
import shutil
from PIL import Image
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
import keras
from keras.utils import to_categorical
from keras.models import Sequential,Input,Model
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras.layers.normalization import BatchNormalization
from keras.layers.advanced_activations import LeakyReLU
8
PASO 2) Cargar las imágenes de directorio
“flower_photos_fix”.
9
Se debe ver de la siguiente manera:
Se debe tener presente que antes de cargar las imágenes, estas ya deben
de estar descomprimidas en el directorio, en este caso el directorio que
contiene las imágenes tiene como nombre “flower_photos_fix” que contiene 5
subdirectorios, cada uno con un tipo de flor diferente.
10
PASO 3) Creación de etiquetas y clases.
Se crean las etiquetas (labels) para cada tipo de flor, donde se le dan valores
del 0 al 4, que significa cada posición. Esto se realiza para poder usar el
algoritmo e indicar cuando se cargue una imagen de las flores en la red, con
base a esta información, se espera que la entrada y la salida correspondan a
labels=[]
indice=0
for cantidad in dircount:
for i in range(cantidad):
labels.append(indice)
indice=indice+1
print("Cantidad etiquetas creadas: ",len(labels))
deportes=[]
indice=0
for directorio in directories:
name = directorio.split(os.sep)
print(indice , name[len(name)-1])
deportes.append(name[len(name)-1])
indice=indice+1
y = np.array(labels)
X = np.array(images, dtype=np.uint8) #convierto de lista a numpy
11
Se debe de ver de la siguiente forma:
12
PASO 4) Creación de sets de entrenamiento y test, validación
y preprocesamiento.
La forma de las imágenes que se trabajan son de formato 21x28 por 3
(tamaño de la imagen), donde el 3 corresponde a RGB (red, green, blue)
esto significa a los canales de colores que tiene cada imagen:
train_X,test_X,train_Y,test_Y = train_test_split(X,y,test_size=0.2)
print('Training data shape : ', train_X.shape, train_Y.shape)
print('Testing data shape : ', test_X.shape, test_Y.shape)
train_X = train_X.astype('float32')
test_X = test_X.astype('float32')
train_X = train_X / 255.
test_X = test_X / 255.
print(train_X.shape,valid_X.shape,train_label.shape,valid_label.shape)
13
Se debe de ver de la siguiente forma:
Este sería el resultado de la ejecución:
INIT_LR = 1e-3
epochs = 6
batch_size = 64
sport_model = Sequential()
sport_model.add(Conv2D(32, kernel_size=(3,
3),activation='linear',padding='same',input_shape=(21,28,3)))
sport_model.add(LeakyReLU(alpha=0.1))
sport_model.add(MaxPooling2D((2, 2),padding='same'))
sport_model.add(Dropout(0.5))
sport_model.add(Flatten())
sport_model.add(Dense(32, activation='linear'))
sport_model.add(LeakyReLU(alpha=0.1))
sport_model.add(Dropout(0.5))
sport_model.add(Dense(nClasses, activation='softmax'))
sport_model.summary()
sport_model.compile(loss=keras.losses.categorical_crossentropy,
optimizer=keras.optimizers.Adagrad(lr=INIT_LR, decay=INIT_LR / 100),metrics=['accuracy'])
14
Se debe de ver de la siguiente forma:
15
PASO 6) Entrenamiento de la CNN
# guardamos la red, para reutilizarla en el futuro, sin tener que volver a entrenar
sport_model.save("sports_mnist.h5py")
16
PASO 7) Mostrar los resultados obtenidos del entrenamiento.
Conclusión:
Se creo una red Neuronal ‘Novedosa’, que aplica filtros a las imágenes y es
capaz de distinguir distinto tipo de flores con un tamaño de 21x28 píxeles a
color, con un tiempo determinado de entrenamiento.
17
Bibliografía
https://www.definicionabc.com/tecnologia/imagen.php#:~:text=Cuando
%20hablamos%20de%20Inform%C3%A1tica%2C%20el,general
%20llamado%20%22imagen%20ISO%22.F
https://es.wikipedia.org/wiki/Red_neuronal_convolucional
18