Clasificación de imágenes con SPAM gracias a Custom Vision de Microsoft Cognitive Services
La clasificación de datos probablemente es el tema más común en el análisis de una base de datos compleja o muy extensa. De forma general, la tarea consiste en clasificar un conjunto de datos en uno con categorías preestablecidas o basadas en un tema o asunto en común. Un enfoque inicial, es evitar la clasificación manual. El objetivo de este proceso es que un individuo pueda evaluar las características de cada dato, identificar el tipo de dato y clasificarlo en una o más categorías previamente existentes. En este caso se tratará un conjunto de imágenes cuya clasificación consistirá en determinar si una imagen es o no spam.
Para satisfacer esta necesidad, existen diversos servicios en la nube que nos permiten cumplir con este propósito, tal es el caso de la herramienta Custom Vision, uno de los servicios que provee Microsoft Congnitive Services para clasificar y procesar datos visuales.
Para la clasificación de imágenes en Vision, existen tres actividades: organización del dataset, el entrenamiento y la realización de los casos de prueba.
Para nuestro ejemplo de clasificación de imágenes con SPAM se empleará el siguiente dataset: http://bit.ly/DatasetSPAM.
El dataset está compuesto por 900 imágenes de spam obtenidas a través de un conjunto de muestras de correos electrónicos que incluyen imágenes con spam. El conjunto de imágenes normales (“Naturales”), incluye 810 imágenes descargadas al azar de Flickr.com junto con 20 documentos escaneados.
Para crear un proyecto nos dirigimos a la página https://customvision.ai, iniciamos sesión con nuestra cuenta de Azure y procedemos a crear un nuevo proyecto. Para esto es necesario especificar el nombre, la descripción del mismo y el grupo de recursos. Para el grupo de recursos tenemos dos opciones: utilizar la versión de prueba que tiene por defecto la plataforma o crear el recurso Vision en Microsoft Azure, cuando esto suceda, el recurso aparecerá en la lista desplegable de la opción Resource Group, tal como se visualiza en la siguiente imagen:
También es necesario especificar el tipo del proyecto, en este caso es de clasificación, el tipo de clasificación, que en esta práctica es Multiclass (Single tag per image), ya que una imagen va a ser considerada SPAM o NATURAL, pero no las dos a la vez, y también es necesario especificar el dominio de la aplicación.
Al crear el proyecto, lo que procede es cargar el dataset de imágenes al proyecto, para esto es necesario ingresar las imágenes por grupos, es decir, primero las imágenes de SPAM y luego las imágenes NATURALES. Al subir un grupo de imágenes es necesario especificar la clase a la que corresponde a través de etiquetas.
En la siguiente imagen se visualiza el proceso para el grupo de imágenes de SPAM:
Y el proceso de carga de las imágenes NATURALES:
Luego se procede a realizar el proceso de entrenamiento a través de la opción Train:
Una vez completado el entrenamiento, se muestran dos métricas para medir la efectividad del modelo: Precisión y recuperación, donde la precisión indica la fracción de clasificaciones identificadas que son correctas. Por ejemplo, si el modelo identificó 100 imágenes como SPAM, y 99 de ellas eran en realidad de SPAM, entonces la precisión sería del 99%. En cambio, la recuperación indica la fracción de clasificaciones reales que se identificaron correctamente. Por ejemplo, si hubiera realmente 100 imágenes “Naturales”, y el modelo identifica 80 como “Naturales”, el porcentaje sería del 80%.
A continuación, lo que resta por hacer es la realización de los casos de prueba, para esto nos dirigimos a la opción Quick Test:
y cargamos el archivo de una imagen o dirección web de la misma.
Caso de prueba para una imagen SPAM:
Caso de prueba para una imagen NATURAL: