NET Conf 2018
Presentando las novedades que nos dejó la .NET Conference 2018
6 noviembre, 2018

1. ¿Qué son los servicios cognitivos?

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:

  • Voz: Servicio que permite, entre otras cosas, convertir voz en texto y viceversa, así como agregar reconocimiento de voz a nuestras aplicaciones.
  • Conocimiento: Servicio que permite, entre otras cosas, dar recomendaciones inteligentes mediante la creación de mapas de información complejos.
  • Búsqueda: Servicio que agrega el motor Bing a nuestras aplicaciones (a través de Bing Search APIs) para dotarlas de capacidad de búsqueda en miles de millones de páginas web, imágenes, vídeos y noticias.
  • Lenguaje: Servicio que permite a las aplicaciones procesar lenguaje natural (a través de scripts precompilados) y evaluar así los sentimientos de los usuarios para aprender a reconocer lo que éstos desean.
  • Visión: Servicio que aplica algoritmos de procesamiento de imágenes a nuestras aplicaciones con el fin de que las mismas sean capaces de identificar y reconocer de forma inteligente los elementos de nuestro entorno. En el presente artículo nos centraremos en este servicio.

 

2. ¿Qué es Custom Vision? 

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.
 

3. ¿Qué es la visión artificial o visión computacional?

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.
 

4. ¿En qué consiste el procesamiento de una imagen?

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.

 

5. ¿Qué se necesita para entrenar un modelo?

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.
 

6. ¿Cuáles son los escenarios de uso de Custom Vision?

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

 

7. Aprendiendo a entrenar un modelo con Custom Vision

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:

  1. Hay que registrarse en https://www.customvision.ai/
  2. Una vez registrados, hay que hacer clic en “Nuevo proyecto”.

  3. Durante la creación del proyecto, hay que darle un nombre al mismo, una descripción si queremos y marcar o especificar la siguiente información:
    • Clasificador de objetos (Classification): Permite identificar el objeto que aparece en la imagen, teniendo que etiquetar previamente ese objeto para poder entrenar el modelo. Hay dos tipos de clasificación:
      1. Multilabel: Se pueden asignar una o más etiquetas a una imagen para identificar múltiples objetos que puedan aparecer. Un ejemplo es que aparezcan un gato y un perro en la misma fotografía, pudiendo etiquetar tanto al perro como al gato.
      2. Multiclass: Únicamente se puede asignar una etiqueta. Si volvemos al ejemplo anterior, si sólo etiquetásemos al gato en la fotografía el modelo no tendría en cuenta que en esa foto también hay un perro.
    • Detección de objetos (Object Detection): Permite especificar el objeto y nos da información de su posición en la imagen.
    • Dominios (Domains): Permite especificar un dominio de entre todas las opciones que nos da para que el clasificador sea más preciso a la hora de identificar objetos. Podemos encontrar, entre otros, los siguientes dominios:
      1. Comida (food): Dominio optimizado para platos de comida
      2. Lugares de interés (landmarks): Dominio optimizado para lugares de interés reconocibles
      3. Tiendas (retail): Dominio optimizado para catálogos de tiendas
      4. Adulto (adult): Dominio optimizado para separar contenido adulto del que no lo es.

      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.

  4. Una vez hecho, hacemos clic en “Create project”.
  5. Ya creado el proyecto que nos interesa, subiremos el grupo de imágenes dándole al botón “Add images” que se encuentra en la pestaña “Training Images”. Una vez seleccionadas dichas imágenes, tendremos que pulsar el botón “Upload”.
  6. Cuando se terminen de subir, habrá que hacer clic en el botón “Done” para volver a la ventana donde nos aparecerán todas las imágenes que hemos subido.
  7. A continuación, tendremos que etiquetar cada imagen. Para ello, habrá que seleccionar el objeto que queramos etiquetar en la imagen, tras lo cual se nos generará un tag en el que habrá que indicar a qué corresponde dicho objeto etiquetado. Puesto que nosotros hemos subido imágenes de gatos y en este ejemplo queremos etiquetar una imagen con un gato, indicaremos en el tag de la selección que dicho objeto se trata de un gato.
  8. Una vez etiquetadas todas las imágenes que hayamos subido, habrá que darle al botón “Train” para proceder a entrenar el modelo a partir de todas esas imágenes etiquetadas. Cada tag debe tener asociado por lo menos 15 imágenes para poder entrenar el modelo. Recordad que cuantas más imágenes subamos y etiquetemos más preciso será el modelo.
  9. Cuando se termine de entrenar el modelo, aparecerán unos gráficos que contienen información acerca los resultados obtenidos:
    • Precisión: Probabilidad de acierto de que el modelo asocie las imágenes con el objeto al cual deberían representar.
    • Recall: Porcentaje de imágenes subidas que son reconocidas correctamente por la plataforma.
    • A.P: Porcentaje de rendimiento medio general del detector.

    Cada entrenamiento efectuado es considerado una iteración (iteration), tal y como se puede apreciar en la siguiente imagen:

  10. Una vez hecho todo esto, se podrán subir imágenes a la plataforma de cara a poder medir el acierto del modelo identificando y reconociendo esos objetos deseados (en este caso los gatos). Para ello, deberemos darle al botón “Quick Test”, al lado del botón “Train”.

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:

  • TensorFlow para Android
  • CoreML para IOS11
  • ONNX para Windows ML

 

8. ¿Qué más podemos esperar de Custom Vision?

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.
 

Conclusiones

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.
 
 


Licencia de Creative Commons
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial 4.0
Internacional
.

Compártelo: Share on FacebookTweet about this on TwitterShare on LinkedInPin on Pinterest

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *