La incursión de la inteligencia artificial en el desarrollo de soluciones se ha ido incrementando en los últimos años y a día de hoy representa un valor añadido que muchas compañías están incluyendo en sus procesos de negocio. Este aumento del uso de esta tecnología viene determinado en parte por la madurez de la tecnología utilizada para construir y ejecutar modelo de inteligencia artificial y, por otra parte, por la capacidad que ofrece el cloud para disponer de infraestructuras a medida, de gran potencia de computación y con una eficiencia en costes alta. Esto sumado a que los principales proveedores cloud ofrecen soluciones gestionadas que facilitan la construcción de estos modelos ha permitido que esta tecnología sea una parte muy importante de las nuevas soluciones que muchas compañías están poniendo en marcha.
Uno de estos servicios de inteligencia artificial es AutoML. AutoML es un conjunto de herramientas ofrecidas como servicio en la cloud pública de Google (Google Cloud Platform). Este servicio abarca diferentes capacidades relacionadas con la Inteligencia Artificial.
El objetivo de este artículo es probar una de las capacidades que ofrece este servicio denominado AutoML Vision que permite al usuario de una manera sencilla entrenar un modelo de reconocimiento de imágenes personalizado y sin requerir de unos conocimientos avanzados en esta tecnología. Para realizar este piloto, quien redacta esta líneas ha unido dos de sus hobbies la tecnología y la numismática, se intentará implementar un sistema de reconocimiento de monedas antiguas a partir de imágenes obtenidas de fuentes opensource.
En líneas generales este servicio AutoML Vision permite mediante la aportación de imágenes de ejemplo entrenar un modelo de reconocimiento que puede ser refinado en sucesivas iteraciones. Estas imágenes suministradas deberán ser clasificadas por un humano identificando etiquetas que las definan. Una vez entrenado este modelo se dispone de una API REST que permite obtener la clasificación que realiza el modelo a partir de una imagen. Esta clasificación se traduce en que el modelo entrenado devolverá las etiquetas en las cuales se ha clasificado la imagen suministrada.
Para poder realizar este proceso de entrenamiento el primer paso es disponer de un conjunto de datos suficientemente amplio y variado para poder entrenar el modelo.
Para conseguir este parte del proceso se identificó una fuente de imágenes basada en los datos opendata publicados en la web especializada http://nomisma.org que contiene diversos datasets de información de monedas de todos los periodos históricos obtenidos de museos y universidades de todo el mundo.
Estos datasets están publicados en el formato de intercambio RDF que permite la publicación de LinkedData. A los propósitos de esta prueba de concepto y para limitar los datos iniciales se seleccionó un único dataset: http://numismatics.org/rdf/freiburg.rdf.
Para poder extraer la información en un formato que fuera utilizable se creó un sencillo proyecto Java basado en el framework Opensource Apache Jena. Este framework, entre otras funcionalidades, permite navegar y extraer la información de un modelo semántico en formato RDF.
El resultado de la ejecución de este simple software de extracción fue un CSV con la información de diferentes piezas existentes de la época romana. Concretamente se extrajo información detallada de 7121 monedas distintas de esta época. Entre la información extraída cabe destacar que se pudo obtener el nombre técnico de la moneda, la características de la misma así como una imagen del anverso y del reverso de cada pieza.
Este software permitía también la descarga de las imágenes del anverso y reverso de cada pieza que serán utilizadas para el entrenamiento posterior del modelo de clasificación.
Una vez se dispone de la información se puede empezar a entrenar el modelo. Para ello, AutoML dispone de una interfaz que permite suministrar la imágenes y sus etiquetas de dos manera posibles:
Dado el volumen de imágenes disponibles no era factible realizar la incorporación de manera individual por lo que se optó por generar el fichero CSV con la información.
Para ello, el primer paso necesario era poder realizar un primer análisis del dataset que había sido obtenido para lo que se utilizó Big Query como almacén de todas la información obtenida. Big Query es un producto de Google ofrecido como servicio en su cloud pública que tiene como principal característica que puede manejar volúmenes de información muy altos y responder a consultas complejas en pocos segundos.
Tras la importación del CSV generado por el software de extracción se pudo obtener un primer análisis viendo el número de imágenes que se disponía por cada tipo de pieza.
Con esta información se generó una sencilla consulta que devolvía como resultado la imagen previamente cargada en Google Storage y el tipo de moneda. Para limitar el número de imágenes se seleccionaron solo algunos tipos de moneda.
Esta consulta permitió obtener el fichero de carga necesario para crear un dataset en AutoML con las etiquetas y las imágenes cargadas.
Como se puede observar este dataset de AutoML dispone de todas las imágenes seleccionadas etiquetadas con el tipo de moneda: Antonianus, As, Denarius, etc.
Para una primera prueba y dado que se pretende una prueba de concepto este conjunto podía ser suficiente por lo que el siguiente paso es el entrenamiento del modelo. Son un simple clic AutoML muestra una ventana de análisis del dataset donde se indica si el conjunto es suficiente para entrenar el modelo y permite el inicio del entrenamiento.
Este proceso se puede demorar desde unos minutos a varias horas dependiendo del número y características de las imágenes proporcionadas. Como resultado del entrenamiento de este modelo se obtuvo un modelo de clasificación que efectivamente era capaz de reconocer algunas de las imágenes suministradas.
AutoML proporciona información acerca de la efectividad del modelo entrenado, para ello, de las imágenes suministradas las separa y utiliza un porcentaje de estas para entrenar el modelo, testearlo y validarlo. Con estas pruebas se muestra un resumen que indica los porcentajes de efectividad y la matriz de confusión que permite obtener información acerca de en cuantas pruebas no se clasificó correctamente una prueba.
Tras realizar distintas pruebas con este modelo se observó que en muchos casos no era capaz de identificar correctamente una moneda y el problema identificado fue un error en cómo se habían etiquetado las imágenes. Concretamente el problema viene de que una moneda dispone de dos caras, anverso y reverso, cada una de ellas con motivos totalmente diferenciados. De hecho habitualmente este tipo de monedas dispone en una de sus caras de una imagen del gobernante de la época por lo que en ocasiones imágenes muy parecidas pueden verse en distintos tipos de moneda.
Como segunda aproximación se reentreno el modelo identificando para cada imagen dos etiquetas una indicando el tipo de moneda y si era anverso o reverso y los resultados de eficacia se mejoraron considerablemente.
Como conclusión de esta prueba de concepto puede extraerse dos puntos importantes. El primero es que AutoML es sin duda una herramienta muy potente para la construcción y utilización de modelos de inteligencia artificial que pueda ser utilizados por muchas compañías para mejorar sus productos y servicios. El segundo es que la construcción de este tipo de modelo es un proceso iterativo y en muchos casos de prueba y error, se debe seleccionar un conjunto de imágenes y unas etiquetas y poner a prueba el modelo. Posteriormente, analizan los resultados y se revisita la clasificación elegida con el objetivo de mejorarla. También conforme se incorporan nuevas imágenes al modelo éste será capaz de clasificar de manera más eficiente.
David Figueroa Alejandro
Manager Especialista en DXD
David inició su carrera profesional en 2004 y durante este tiempo ha participado en distintos proyecto en gran variedad de tecnologías (Java, .Net, SAP, Cloud, etc.). Actualmente es arquitecto de soluciones tanto en ecosistemas Java como en entorno cloud. En particular, dispone de la certificación de arquitecto profesional en Google Cloud Platform y dispone de conocimientos en otras cloud.