Documentos de Académico
Documentos de Profesional
Documentos de Cultura
FACILITADORES
PROBLEMA
Se tiene una serie de imágenes de animales y se desea construir una herramienta para realizar el
reconocimiento por imagen de esta
OBJETIVO
HERRAMIENTAS
INSTRUCCIONES
Page 1 of 10
Reconocimiento de imagen y CNNs
El reconocimiento de imagen es el problema de identificar y clasificar objetos en una imagen.
Posiblemente, una de sus aplicaciones más comunes en la actualidad es el etiquetado automático
de imágenes, usado para la gestión y organización de contenido web.
Gracias a un tipo de modelos conocidos como Convolutional Neural Networks (CNNs), redes
neuronales convolucionales, el reconocimiento de imagen ha experimentado enormes progresos.
Estos modelos están inspirados por los procesos biológicos que tienen lugar en el cortex visual,
donde las neuronas individuales responden a estímulos en un área restringida del campo visual.
Esta área se superpone parcialmente con el de las neuronas más próximas, cubriendo de forma
colectiva el campo visual completo.
Como resultado, las CNNs aprenden a responder a diferentes caracterices de la imagen (bordes,
formas, etc), como los bancos de filtros utilizados en los algoritmos tradicionales y definidos de
forma manual. De hecho, la capacidad de aprender dichos filtros supone una ventaja única de las
CNNs, que elimina el esfuerzo manual requerido en el diseño de características.
Page 2 of 10
En la actualidad, existen multitud de arquitecturas de CNN disponibles de forma gratuita y sin
restricciones de uso que pueden alcanzar un rendimiento razonable en tareas de reconocimiento
visual. Por ejemplo, Keras — una librería de alto nivel que sirve como capa de abstracción sobre
Tensorflow — proporciona acceso a alguno de los ganadores de la competición ImageNet ILSVRC.
CNNs como ResNet50 (desarrollada por Microsoft Research) o InceptionV3 (desarrollada por
Google Research) se ofrecen listas para reconocer 1000 objectos comunes (lista de objectos
ILSVRC).
Para empezar, sólo necesitamos acceder a Colaboratory, crear un nuevo notebook desde New
Notebook > New Python 3 Notebook, e instalar Keras.
Precedido con “!”, Colaboratory permite escribir comandos de sistema, lo que nos da control
sobre la máquina virtual para instalar paquetes no disponibles por defecto.
Page 3 of 10
Función de predicción
Para empezar a hacer predicciones sólo necesitamos preparar la imagen de entrada y decodificar
el vector de predicción de salida. Para esto, vamos a escribir la función auxiliar predict.
En primer lugar, la imagen tiene que ser redimensionada para adaptarse al tamaño de entrada de
la red Inception-v3, en este caso target_size=(299, 299), otras redes como la VGG16 o la
ResNet50 deben establecer un tamaño igual a (224, 224). La función image.load_img del
módulo keras.preprocessing carga directamente la imagen desde su ubicación img_path
y redimensiona la imagen al tamaño especificado target_size.
El último paso antes de la predicción es la normalización de los datos, que usa la función
preprocess_input para centrarlos en cero usando la media de los valores de los canales de
las imágenes del conjunto de entrenamiento. Este paso es extremadamente importante porque si
no se realiza provocará que las probabilidades de las predicciones sean incorrectas.
Page 4 of 10
#Funciones de ayuda para trazar resultados
import matplotlib.pyplot as plt
def plot_image(img_path):
img = image.load_img(fn, target_size=(299, 299))
plt.figure(figsize=(8, 8))
plt.imshow(img, interpolation='nearest')
plt.axis('off')
def plot_pred(pred):
plt.figure(figsize=(8, 2))
classes = [c[1] for c in pred]
probas = [c[2] for c in pred]
y_pos = np.arange(len(classes))
plt.barh(y_pos, probas, align='center')
plt.yticks(y_pos, classes)
plt.gca().invert_yaxis()
plt.xlabel('Probability')
plt.xlim(0, 1)
Carga de la imagen
Definido nuestro sistema de reconocimiento, solo necesitamos cargar nuestras propias imágenes
para probar su funcionamiento. Para ello, podemos usar directamente el código que podemos
encontrar al hacer click en el botón negro que se encuentra en lo alto a la izquierda, justo debajo
del menú.
Predicción
Cargada la imagen, obtendremos una predicción que se mostrará como a continuación.
Page 5 of 10
La cual, usa la librería matplotlib para mostrar la imagen y el resultado predicho en un gráfico
de barras horizontal.
Conclusiones
Este artículo da un vistazo rápido de cómo empezar con la predicción de objectos presentes en
una imagen empleando redes neuronales convolucionales (CNNs). Pero esto no es más que una
introducción, dado que dichas redes pueden ser adaptadas a medida para predecir con gran
precisión nuestras propias clases de objectos usando “transfer learning”.
Actividad Final
- Realice la carga de mínimo tres imágenes de animales descargadas de internet para verificar el
funcionamiento del reconocimiento de imágenes (adjunte las imágenes con el resultado al
documento de entrega).
Page 6 of 10
Resultado: Exitoso
Page 7 of 10
Imagen Subida: Japanese spaniel
Resultado: No Exitoso
Page 8 of 10
Resultado: Exitoso
Page 9 of 10
Deep Learning, extrae las características directamente de las imágenes. Además realiza un
“aprendizaje completo”, se proporcionan datos sin procesar, se realiza una clasificación, la cual
aprende cómo hacerlo automáticamente.
Page 10 of 10