Keras, Vision y CoreML para crear una app que identifica los números de serie de las bicicletas del servicio BiciMAD
La idea de este proyecto era la de desarrollar un modelo con Keras desde cero, empezando por generar los datos con los que entrenar y validar hasta exportarlo a un proyecto Xcode y comprobar que funciona sobre un iPhone.
El proyecto está dividio en dos partes, una dedicada a la parte de Deep Learning y otra que contiene el desarrollo de la app para iPhone que incluye el modelo.
Cada carpeta contiene su propio fichero readme.md con información específica a la parte del proyecto a la que pertenece.
El desarrollo se centra en el uso de Keras, el framework de Deep Learning para Python, y en mi caso como backend empleo TensorFlow.
Esta parte del proyecto se divide a su vez en tres partes.
- Cómo generar desde cero los datos de entrenamiento para el modelo
- Diseñar una Red Neuronal Convolucional y entrenarla con los datos del paso anterior
- Exportar el modelo a CoreML
Es necesario disponer de una instalación de Python en su versión 2.7 (por defecto en macOS) o 3.6 (para Windows)
Contiene el proyecto Xcode en su versión final. Incorpora el modelo Keras creado en la sección anterior y es totalmente funcional.
Para poder compilar el proyecto necesitarás...
En esta última versión he añadido las siguientes características
- Ahora se muestra un controlador que simula el alta de una incidencia en el servicio BiciMAD
- Una vista de Cámara personalizara para adjuntar imágenes a la inicidencia
- Mejoras en el sistema de localización geográfica.
Este último punto deja de ser relevante que ya la EMT, empresa operadora del servicio BiciMAD, ha mejorado el GPS que incorporan las bicicletas y ahora su localización es en tiempo real.
He grabado tres vídeos con explicaciones más detalladas de cada paso que incluyen información adicional y alguna que otra aclaración sobre el código
- Deep Learning Parte I. Generación de los datos de entrenamiento y validación a partir de sólo 30 imágenes.
- Deep Learning Parte II. Desarrollo de una Red Convolucional y explicación de cada uno de los filtros que empleo en ella. Exportación a CoreML.
- App para iPhone con Swift. Importamos el modelo y vemos cada uno de los pasos necesarios para poder llevar el númnero de una bicicleta con la cámara del iPhone al modelo y clasificarlo.
¿Alguna duda o comentario? No os cortéis y mandame lo que queráis a mi cuenta de twitter @fitomad
Juzgad por vosotros mismo ;-)