Reconocimiento de imágenes con Python
Son muchas las cosas que los desarrolladores podemos hacer a día de hoy desde nuestras casas y con sólo un PC. Incluso cuando hablamos de Machine Learning y de Image Recognition (reconocimiento de imágenes). Parece imposible, ¿verdad?. Pues con unas pocas instrucciones puedes montarte tu propio modelo de Machine Learning de reconocimiento de imágenes.
Gracias a la gran comunidad que hay detrás del lenguaje Python, se han creado muchísimas librerías (frameworks al final) que nos facilitan mucho la vida a la hora de desarrollar proyectos, sobretodo, sobre estadística, IA y Machine Learning.
En el artículo de hoy aprenderás a utilizar la librería imageai para crear tu modelo ML. En el ejemplo, crearemos un modelo para reconocer imágenes de profesionales. El modelo está entrenado para reconocer 10 profesiones cuyas predicciones tienen un gran alto porcentaje de acierto.
Sin embargo, deberemos instalar previamente algunos paquetes para hacer posible nuestro desarrollo. Te lo explico todo y paso a paso a continuación.
Tabla de Contenido
Reconocimiento imágenes Tensorflow
Es muy importante ver el vídeo entero para entender el funcionamiento de todos los elementos y poder seguir el hilo a lo largo del artículo.
Dependencias
Tenemos algunos pre-requisitos antes de poder crear nuestro modelo en los que uno de ellos es el paquete Tensorflow. Nos permite conectarnos a la plataforma Tensorflow ya que nos ofrece la tecnología “masticada” para poder crear nuestro modelo de Machine Learning, en este caso de reconocimiento de imágenes.
OpenCv también es necesario para poder leer y analizar imágenes de forma rápida.
Y Keras que nos ofrece un algoritmo de red neuronal que funciona a la perfección con Tensorflow. Es decir, Keras es quien procesará las imágenes y algoritmos de red neuronal para crear nuestro modelo de Machine Learning en Tensorflow.
pip install tensorflow==1.14 # o tensorflow-gpu==1.14 si dispones de tarjeta gráfica dedicada
pip install opencv-python
pip install keras
Nota: si te va muy lento la instalación de Tensorflow, utiliza la instrucción “conda” en lugar de “pip”. La versión superior a 1.14 no funciona correctamente con imageai.
Finalmente, ya podemos descargarnos la librería “imageai” que es la que interactúa con estos 3 elementos únicamente con 5 líneas de código nuestras.
pip install imageai --upgrade
Reconocimiento de imágenes Machine Learning model
Ahora viene la mágia, únicamente con 5 líneas de código tendremos nuestro modelo de reconocimiento de imágenes en marcha:
from imageai.Prediction.Custom import ModelTraining
model_trainer = ModelTraining()
model_trainer.setModelTypeAsResNet()
model_trainer.setDataDirectory("idenprof")
model_trainer.trainModel(num_objects=10, num_experiments=100, enhance_data=True, batch_size=32, show_network_summary=True)
Para más información sobre qué es cada línea de código y los ficheros que se necesitan para realizar esta tarea, te recomiendo que mires el vídeo de arriba. Tanto te explico cómo lo tienes que hacer, como el por qué de las cosas.
Ya que crear tu propio modelo de ML en tu propia máquina es muy costoso, computacionalmente hablando, te dejo unos links para que te puedas descargar el modelo ya entrenado, el json, y de paso también te dejo las imágenes que utilizo en el vídeo:
¡Ya tienes tu propio modelo!
Predicción de reconocimiento de imágenes
Como última parte de la creación de nuestro proyecto, te dejo el programa que utiliza el modelo ML creado anteriormente para que le puedas introducir la imagen que más quieras.
from imageai.Prediction.Custom import CustomImagePrediction
prediction = CustomImagePrediction()
prediction.setModelTypeAsResNet()
prediction.setModelPath("idenprof/models/idenprof_061-0.7933.h5")
prediction.setJsonPath("idenprof/json/model_class.json")
prediction.loadModel(num_objects=10)
predictions, probabilities = prediction.predictImage("image.jpg", result_count=3)
for eachPrediction, eachProbability in zip(predictions, probabilities):
print(eachPrediction , " : " , eachProbability)
No te olvides de ver los increíbles resultados de este proyecto en mi vídeo de arriba.
Con estos simples pasos ya eres capaz de tener tu propio modelo de Machine Learning para reconocimiento de imágenes en tu PC.
¿Dónde está el fin del camino?
Para concluir este interesantísimo artículo, te propongo que hagas una reflexión para ver en qué punto estamos sobre computación. Si cualquier persona del mundo con sólo un PC puede ya entrenar modelos propios de reconocimiento de imágenes, ¿que pueden hacer las empresas como Microsoft, Google o la NASA?
Machine Learning es un ámbito que ha abierto enormes frentes y, si eres capaz de encontrar funcionalidades útiles, puedes hacer grandes cosas en el mercado a día de hoy. Has aprendido a montar tu propio modelo de imágenes, pero de la misma forma te puedes montar uno igual para vídeos, o para comportamiento humano, etc.
Si te ha gustado el artículo y lo encuentras interesante, anímate a compartirlo con tus compañeros y déjame un comentario o un mensaje en el apartado de Contacto.
No instala tensorflow.
Muy bueno el ejemplo. Es muy interesante!
marca este error ¨KeyError: ‘accuracy'” cual puede ser la solucion ??
Hola Ramon , como vas?
Podrias actualizar el codigo
model_trainer.setModelTypeAsResNet50
Y regalarme el modelo ya entrenado.
Te agrezco
Excelente!!
Dónde consigo información para mi proyecto de determinar la velocidad de asentamiento de partículas en una columna de líquido.
Saludos
uyyyyyyyyyyy mi hermano, de verdad que excelente, super claro, y al punto, Muchas gracias
No me funciono con imageai.Prediction.custom
Can you be more specific about the content of your article? After reading it, I still have some doubts. Hope you can help me.
marca error AttributeError: module ‘_pywrap_tensorflow_internal’ has no attribute ‘TF_ListPhysicalDevices’
Can you be more specific about the content of your article? After reading it, I still have some doubts. Hope you can help me.
Can you be more specific about the content of your article? After reading it, I still have some doubts. Hope you can help me.