¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Inteligencia artificial fácil
  3. Clasificación de imágenes
Extrait - Inteligencia artificial fácil Machine Learning y Deep Learning prácticos
Extractos del libro
Inteligencia artificial fácil Machine Learning y Deep Learning prácticos
3 opiniones
Volver a la página de compra del libro

Clasificación de imágenes

Lo que vamos a descubrir y requisitos

En el capítulo anterior hemos visto el uso de una red neuronal para realizar predicciones y clasificaciones. Ahora vamos a ver cómo podemos enseñarle a nuestra máquina a clasificar imágenes con la ayuda de redes neuronales un poco particulares que se denominan «Redes neuronales convolucionales».

Requisitos necesarios para abordar este capítulo correctamente: haber leído los capítulos Los fundamentos del lenguaje Python, Estadísticas para comprender los datos, Principales algoritmos de Machine Learning, La predicción con neuronas y Usar varias capas de neuronas.

Diferencia entre detección y clasificación de imágenes

Es importante hacer la distinción entre una detección y una clasificación de imágenes. Saber detectar un círculo, un triángulo, una forma, ver un rostro no pertenece forzosamente al campo de la inteligencia artificial (aunque algunos algoritmos puedan hacerlo). En efecto, estas tareas se confían a algoritmos de tratamiento de imágenes, que tendremos ocasión de manejar en el capítulo siguiente. 

Sin embargo, poder diferenciar un coche de una bicicleta o hacer reconocimiento facial sí pertenece a la inteligencia artificial, donde los algoritmos de aprendizaje han sido entrenados para reconocer (clasificar) los elementos. No obstante, la detección de formas en una imagen puede ayudar al algoritmo de clasificación. La detección de formas puede extraer fácilmente un rostro de una foto o de un vídeo y proponérselo a un algoritmo de clasificación que entonces será capaz de realizar el reconocimiento facial.

Redes neuronales convolucionales para clasificar imágenes

Para clasificar imágenes vamos a utilizar una red neuronal un poco especial: la red neuronal convolucional, también llamada CNN (Convulational Neural Network o ConvNet).

Este algoritmo de aprendizaje es similar a un pastel milhojas porque está compuesto de muchas capas. Las últimas capas (parte superior del milhojas) están formadas por redes neuronales como las que hemos descubierto en los capítulos anteriores. Es decir, sus datos de entrada proceden de las capas anteriores, llamadas capas de convoluciones y cuyo principio vamos a descubrir a continuación.

1. Necesitamos muchos datos de aprendizaje

Para que la red de neuronas pueda realizar una buena clasificación de imágenes, hay que darle una base de aprendizaje. Pero cuando se trata de imágenes, su cantidad puede convertirse en ingente con mucha rapidez.

En efecto, nuestro cerebro humano puede realizar la clasificación entre un gato y un perro, ya sea negro, blanco, esté de cara, de perfil, de espalda, en pleno día, en penumbra y en distintos entornos y posiciones posibles. Así que podemos hacernos una idea de la cantidad de imágenes necesarias.

Si desea iniciarse en un proyecto personal de clasificación de imágenes, eso también le permitirá apreciar el trabajo de fotografía que se debe realizar. Por suerte para nosotros, hay conjuntos de observaciones disponibles en Internet para entrenarnos.

Para poder realizar su aprendizaje, la máquina tendrá que manipular la imagen. Entramos entonces en el campo del tratamiento de imágenes que, como seguramente ya sabe, consume recursos materiales. Por lo tanto, realizar la clasificación de imágenes necesita una cantidad de tiempo importante para la creación del conjunto de aprendizaje, así como inversión en el material para llevar a cabo el aprendizaje.

2. Una herramienta para ilustrar nuestras palabras

Las redes neuronales convolucionales están compuestas de varias capas de tratamientos que se pueden esquematizar con facilidad. Gracias a Adam W. Harley, podemos ir más lejos en la visualización del interior de las redes neuronales convolucionales, ayudados por una herramienta interactiva disponible en esta dirección: http://scs.ryerson.ca/~aharley/vis/conv/flat.html

images/Ch12_01.png

Una herramienta...

Caso práctico alrededor de la moda

1. Presentación de Kaggle

Kaggle (www.kaggle.com) es el sitio de referencia en términos de proposiciones de desafíos relacionados con Machine Learning. Este sitio está repleto de casos de estudio y de retos propuestos por grandes grupos, como McDonald’s o Netflix. Todos podemos intentar resolver los distintos desafíos proponiendo nuestros propios modelos de predicción. Este sitio también permite aprender mucho sobre las técnicas relacionadas con Machine Learning porque todas las propuestas de solución enviadas por los participantes a los distintos desafíos son visibles, comentadas y así se pueden estudiar. Este sitio es completamente gratuito, no hay motivos para no visitarlo.

Vamos a realizar nuestro caso práctico a partir de este sitio. Este caso nos permitirá ilustrar los principios de programación de una red neuronal convolucional.

2. Módulo Keras

En el capítulo anterior utilizamos la biblioteca TensorFlow. Hay un módulo complementario a esta biblioteca llamado Keras que, ante todo, es fácil de usar. Esta facilidad reside especialmente en la fase de creación y de parametrización de los distintos modelos de aprendizaje, sin olvidar que también es muy adecuado para el uso de redes neuronales convolucionales porque posee las funciones adecuadas para ello de manera nativa.

3. Clasificar vestidos, jerséis y zapatos

Uno de los casos de estudio más utilizados en la puesta en práctica de las redes neuronales convolucionales es la clasificación de cartas manuscritas con ayuda de la colección de observaciones MNIST (Mixed National Institute of Standards and Technology). Sin embargo, en 2018 Zalando publicó su propia colección de imágenes bajo el nombre Zalando-MNIST. El propósito de esta colección de imágenes era permitir a los algoritmos entrenarse en la clasificación de objetos de moda: jersey, vestido, bolso, etc. Ahora vamos a utilizar está colección para nuestro caso práctico.

Más allá del aspecto, muy concreto, del proyecto, la mayoría de los ordenadores pueden ejecutar la fase de aprendizaje de este caso de estudio. En efecto, como ya hemos mencionado al principio de este capítulo, la clasificación de las imágenes...

Uso del modelo con imágenes nuevas

Ahora vamos a utilizar el último modelo con imágenes nuevas.

Afortunadamente para usted, hemos guardado el modelo generado antes para evitarle tener que esperar el tiempo que dura la creación. Es libre de descargarlo y colocarlo dentro del directorio modelo del proyecto.

Le invitamos a crear un archivo de Python nuevo que se llamará clasificacion.py

La primera etapa será cargar el modelo como se describe a continuación:

#----------------------------  
# CARGA DEL MODELO  
#----------------------------  
  
  
#Carga de la descripción del modelo  
archivo_json = open('modelo/modelo_4convoluciones.json', 'r')  
modelo_json = archivo_json.read()  
archivo_json.close()  
  
#Carga de la descripción de los pesos del modelo  
from keras.models import model_from_json  
modelo = model_from_json(modelo_json)  
#Carga de los pesos  
modelo.load_weights("modelo/modelo_4convoluciones.h5") 

A continuación se definen las distintas categorías de clasificaciones:

#Definición de las categorías de clasificaciones  
clases = ["Una camiseta/top","Un pantalón","Un jersey",  
"Un vestido","Un abrigo","Sandalias","Una camisa","Zapatillas ",  
"Un bolso","Botines "] 

Después, usted es libre de elegir las imágenes de prendas de vestir en Internet y guardarlas en un directorio dentro de su proyecto, al que llamará imagenes.

Nosotros hemos elegido las siguientes imágenes:

images/Ch12_32.png

Camisa

images/Ch12_33.png

Jersey

images/Ch12_34.png

Zapatillas

images/Ch12_35.png

Vestido

images/Ch12_36.png

Pantalón

Hay que transformar la imagen para utilizarla en nuestro modelo: conversión...

Conclusión

En este capítulo hemos abordado las nociones de la clasificación de imágenes con la ayuda de las redes neuronales convolucionales. A primera vista su nombre puede parecer un poco extraño, pero, si se analiza, su funcionamiento es bastante sencillo de comprender.

Hemos observado, sin embargo, que el aprendizaje de este tipo de algoritmo necesita numerosas imágenes, tiempo y buenos recursos materiales.

Finalmente, también hemos visto cómo guardar un modelo y utilizarlo mediante un script nuevo con la finalidad de realizar predicciones sobre imágenes nuevas desconocidas para el modelo. Este enfoque es similar al uso del modelo en una aplicación nueva.

En el capítulo siguiente vamos a construir un proyecto completo que combina detección y reconocimiento de imagen.