Crear un clasificador de imágenes usando Custom Vision
Tags: customvision, machinelearning, cognitiveservices, azure
Published: 2020-04-15 23:20:05

En esta guía se mostrará como emplear [Custom Vision][1] para la creación de un clasificador de imágenes. 

[1]: https://www.customvision.ai/

##**Prerrequisitos**
•	Imágenes para entrenar y probar el clasificador. Puedes descargar las imágenes empleadas en este tutorial [aquí][2].
•	Cuenta en azure, sino tiene solicite una cuenta de acceso gratuito [aquí] [3].

[2]: https://github.com/Maritzag/devto/tree/master/contenido%20dev_to/1.customvision/imgs_recycling

[3]: https://azure.microsoft.com/es-es/free/?WT.mc_id=A261C142F

**Portal Custom Vision**
Inicie sesión en la página web de [Custom Vision][1] con su cuenta de Azure. 

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/ewzv7j969rhcmwu9vl3x.PNG)


#**Pasos**
##Crear Proyecto

1. Seleccione la opción **Nuevo Proyecto** en el área de trabajo que se muestra cuando inicia sesión. ![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/uhzif3gfqyeca48e157u.PNG)
2. Especifique el **nombre**, **descripción** y **recurso de custom vision** del proyecto. El **recurso** hace referencia a un elemento administrable que se gestiona a través de Azure Portal. 
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/zwiaxiw2o0qyiocsh480.PNG)
3. Si no tiene un recurso de custom vision creado, podrá crear uno nuevo desde la creación del proyecto. Para la creación del nuevo recurso se debe especificar el **nombre**, **suscripción**, **grupo de recursos**, **tipo**, entre otros.  La suscripción hace referencia al método de pago empleado para pagar los servicios de azure, el **grupo de recursos** corresponde a un contenedor que agrupa los recursos de una solución y el tipo representa en este caso, un servicio de entrenamiento y predicción.
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/fc3pvzv7d6wdy2zzyeqr.PNG)
4. Si no tiene grupos de recursos creados, podrá crearlos desde este panel o podría ir directamente a Azure Portal para hacerlo. Si crea el grupo desde este panel solo tendrá que especificar el nombre y la ubicación geográfica en dónde lo desplegará.
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/n38r6gmg1ckzjcxunv3k.PNG)
5. Una vez haya creado el grupo de recursos, podrá seleccionarlo en la creación del proyecto y podrá realizar la configuración del tipo de clasificador que desea.
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/qlirg9igh16fa23m3z8s.PNG)
6. Para la configuración del proyecto seleccione **Clasificación** en **Tipos de Proyecto**. En **Tipos de clasificación** seleccione **Multinivel** si cada imagen puede pertenecer a varias clases o etiquetas, en caso contrario, elija **Multiclase**, para este tipo se considera que cada imagen solo puede estar asociada a una clase. El tipo de clasificación puede ser modificado en cualquier momento.
7. El dominio es un parámetro empleado para optimizar el clasificador. Así, cada dominio ejecturá una versión optimizada para el tipo de imágenes que está procesando. Si no está seguro el domino al que pertenecen las imágenes, seleccione **General**. Los dominios compactos permiten exportar el modelo del entrenamiento.

##Selección de imágenes de entrenamiento.

La selección de imágenes para entrenamiento debe considerar una serie de requerimientos básicos para que el clasificador esté en la capacidad de identificar variaciones de la forma estandar del objeto u objetos contenidos en las imágenes. En este sentido, se recomienda tener el mayor número de imágenes disponibles de cada clase, de tal manera que representen diferentes características como ángulos de cámara, iluminación, fondo, tamaño, número de objetos o personas, entre otras. 

Adicionalmente, se debe garantizar que las imágenes tienen un tamaño menor a 6MB y corresponden a un formato .jpg, .png, .bmp o .gif

1. Carga de las imágenes con sus etiquetas.
A través del portal se podrá cargar y etiquetar manualemente las imágenes para el entrenamiento del clasificador. 
Para agregar las imágenes haga click en el botón **Adicionar imágenes** o **+** como se indica en la siguiente figura. 
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/4llvyzxtbcydcmsiadwy.PNG)
2. Vaya a la carpeta en dónde se encuentren las imágenes, seleccionelas y haga click en **abrir** para agregar las imágenes. 
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/59xwwfro9xyifec4nhve.PNG)
3. Especifique la o las etiquetas (clases) de las imágenes seleccionadas. Tenga en cuenta que, si en su problema de clasificación cada imagen solo puede tener una etiqueta, deberá realizar el proceso de agregar y etiquetar las imágenes por cada etiqueta. Para agregar una etiqueta escriba la descripción en la caja de texto marcada con el cuadro rojo y presione **enter**.  Cuando haya agregado todas las etiquetas, haga click en **Cargar archivos**
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/a8nc6f3jkpuo4fv6hgqn.PNG)
Una vez las imágenes se han cargado, tendrá la siguiente notificación
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/wi76uvx3y6frnjox0x7v.PNG)
Cuando haya cargado todas las imágenes, podrá usar las opciones marcadas con el cuadro rojo de la izquiera para conusltar las imágenes de cada etiqueta, agregar etiquetas o consultar las imágenes sin etiqueta. Con las opciones marcadas por el cuadro rojo superior, podrá agregar imágenes, borrar imágenes, etiquetar las imágenes seleccionadas o quitar la selección de las imágenes.
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/xefsd3gnyiylk9r83cw3.PNG) 

## Entrenamiento del Clasificador

1. Para entrenar el modelo de clasificación haga click en **Entrenar**
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/3b1m2whej3j3q96ow629.PNG)
2. En el cuadro de dialogo que aperece, seleccione entrenamiento rápido y haga click en **Entrenar** 
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/u56ihr4g4r5u1cpfkg9m.PNG)

## Evaluación del Clasificador

Los resultados del entrenamiento son presentados en términos de 3 métricas de clasificación de Aprendizaje de Máquina. Precisón, Recall y AP. Las tres métricas buscan evaluar la confiabilidad del modelo de clasificación. Adicionalmente, cada vez que se agreguen nuevas imágenes al clasificador, se podrá volver a evalular el modelo y el resultado será una nueva iteración. Cada iteración podrá ser publicada para que sea consultada como servicio por cualquier aplicación a través de la opción **Publicar** mostrada en el cuadro rojo superior.
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/b79efkepvz2ygdetnfk6.PNG)
1. Una vez seleccione la opción **Publicar**, se desplegará un cuadro de dialogo en el que se debe especificar el nombre de la iteración, el recurso de Azure en el que se desplegará y posteriormente debe dar click en la opción **Publicar**.
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/4fi7wsy8m8fpl2jzxvqi.PNG)
2. Para consultar la información del servicio, haga click en el icono de configuración y se desplegará la información de la configuración del proyecto y los datos de *Clave de Aplicación* y *Endpoint* que permiten consultar el servicio.
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/54hgp607oit55a7dcje8.PNG)

## Probar el servicio

1. Para probar el servicio, haga click en el botón **Test rápido**
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/5d2b1qo3yy73cnz105mh.PNG)
Se desplegará un cuadro de dialogo en el que podrá seleccionar una imagen para probar el clasificador por medio de una URL o un archivo local. 
2. Adicionalmente, podrá seleccionar la iteración que desea emplear para la consulta.
Una vez se consulta la imagen, el servicio se prueba y se despliegan los porcentajes de probabilidad de la imagen para cada clase o etiqueta. 
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/a6ecpy5j0e1jp7tfq3ug.PNG)

##**Siguiente paso**
Crea tu propio clasificador de imágenes. 

¡Gracias por leer!
Si tienes una duda, no dudes en contactarme.

Nos vemos en [Twitter] [4].
[4]: www.twitter.com/maritzag_123