Para poder hablar de Custom Vision hay que entender primero qué son los servicios cognitivos de Azure, ya que Custom Vision es uno de ellos.
Los servicios cognitivos son una serie de servicios en forma de API REST creadas y proporcionadas por Microsoft para que podamos hacer un uso sencillo de la inteligencia artificial. Gracias a los servicios cognitivos, podremos incorporar a nuestras aplicaciones, sitios web y bots algoritmos inteligentes que permiten ver, oír, hablar, comprender e interpretar las necesidades de los usuarios.
Los servicios cognitivos se dividen en 5 grupos o servicios:
Custom Vision Service es un servicio de Azure Cognitive Services que permite personalizar modelos de visión artificial para adaptarlos a nuestro caso particular.
Con este servicio nos resultará muy fácil y rápido crear, implementar y mejorar un clasificador de imágenes. Custom Vision Service cuenta con una API REST y una interfaz web que permite cargar imágenes y entrenar el clasificador.
Tal y como los humanos usamos nuestros ojos y cerebro para comprender el mundo que nos rodea, la visión artificial trata de producir el mismo efecto para que los ordenadores puedan percibir y comprender una imagen o secuencia de imágenes y actuar según convenga. En resumidas cuentas, la visión computacional es la disciplina de la inteligencia artificial que se encarga de ello, ya que incluye métodos para analizar y procesar fotografías e imágenes, convirtiendo la información obtenida en datos que puedan ser interpretados por una máquina.
Procesar una imagen implica tratar una imagen para mejorar la detección del objeto que se quiere identificar, empleando para ello programas de edición fotográfica como Gimp o Photoshop. Un ejemplo sería pasar a escala de grises una imagen que está a color.
Para entrenar un modelo de visión computacional es necesario disponer de un grupo de imágenes del mismo objeto variando la posición, el tamaño, la distancia, etc. Dependiendo del servicio o la tecnología que se utilice, se necesitará un número mínimo de imágenes, aunque cuanto mayor sea el número de imágenes mayor será la probabilidad de que el modelo detecte e identifique el objeto deseado.
Custom Vision puede aplicarse para la detección y reconocimiento de todo tipo de objetos y seres vivos: desde rostros humanos, plantas y animales hasta matrículas, textos y productos varios.
En Kabel hemos hecho uso de este servicio cognitivo para varios fines, entre ellos la creación de una herramienta llamada Sketch2Code que traduce a código HTML esbozos hechos en una pizarra u otro soporte, permitiendo así reducir el tiempo de desarrollo de una página web de forma significativa al no tener que trasladar manualmente todas las ideas que los diseñadores dibujan en la fase de ideación o planificación de la misma.
Miguel A. Castejón y Tara Shankar Jana nos muestran cómo funciona Sketch2Code
También hemos empleado este servicio cognitivo en aplicaciones que hemos desarrollado para las Hololens, el headset de realidad mixta de Microsoft. Sin ir más lejos, una de dichas aplicaciones, llamada HoloVision, es capaz de identificar determinados objetos en el entorno circundante. Esta aplicación tiene usos industriales, de salud y, en general, sirve para cualquier escenario que requiera clasificar objetos o identificar patrones o anomalías.
Kabel presenta HoloVision para las Microsoft HoloLens
En este apartado vamos a mostraros un ejemplo práctico y muy básico de modelo entrenado con Custom Vision.
Antes que nada, debemos tener fotografías del objeto que queremos reconocer tomadas desde diversas perspectivas y en lugares diferentes.
Una vez que se tenga el grupo de imágenes ya listo, hay que seguir los siguientes pasos:
También os aparecerán los denominados dominios compactos, que son aquellos cuyo modelo de entrenamiento se puede exportar.
Para nuestro ejemplo, vamos a seleccionar Object Detection como tipo de proyecto.
Cada entrenamiento efectuado es considerado una iteración (iteration), tal y como se puede apreciar en la siguiente imagen:
Como veis, se trata de un modelo muy básico realizado desde la plataforma web. No obstante, esto se puede hacer a través de código. Además, podemos exportar los modelos de entrenamiento para usarlos en dispositivos móviles (ejecutándolos localmente). Algunos formatos con los que se pueden exportar dichos modelos son:
Actualmente se está trabajando para que el modelo requiera del menor número de imágenes posible para su entrenamiento, ya que un ser humano no necesita tantas imágenes para aprender a reconocer objetos.
Por otro lado, la detección de objetos de Custom Vision está en preview y, por lo tanto, está limitada en algunos aspectos, como por ejemplo en la descarga de los modelos de entrenamiento. Esto es algo que se está mejorando a día de hoy.
Pese a que aún le queda mucho margen de evolución, Custom Vision supone un gran paso en la misión que tiene Microsoft de hacer llegar la inteligencia artificial (en este caso la visión artificial) a todo el mundo.
Además, es muy útil poder crear aplicaciones personalizadas mediante API REST porque ello hace que el servicio pueda implementarse en cualquier máquina o dispositivo que se desee.
Recomiendo a todos aquellos a los que les apasione el mundo de la IA que experimenten con las posibilidades que ofrece Custom Vision, ya que se trata de un servicio que puede emplearse para cubrir necesidades específicas en todo tipo de sectores y al que le espera un futuro prometedor viendo lo mucho que se está desarrollando la tecnología y la importancia que ésta adquirirá en un futuro no tan lejano.
¡Acceded ya a nuestra sección de videos para conocer mejor nuestros proyectos!
Si queréis comentarnos lo que sea podéis hacerlo en info@kabel.es.
También podéis seguirnos en Twitter, LinkedIn y Facebook.
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial 4.0
Internacional.