Clasificación de imágenes con ML.NET y Windows Machine Learning

Image classification flow

En esta guía se muestra cómo entrenar un modelo de red neuronal para clasificar imágenes de alimentos con ML.NET Model Builder, exportar el modelo al formato ONNX e implementarlo en una aplicación de Windows Machine Learning que se ejecuta localmente en un dispositivo Windows. No se requiere ninguna experiencia previa en el aprendizaje automático. Le guiaremos paso a paso por el proceso.

Si desea obtener información sobre cómo compilar y entrenar un modelo con ML.NET Model Builder, puede continuar en Entrenamiento de un modelo.

Si tiene un modelo y quiere aprender a crear una aplicación de WinML desde cero, consulte Tutorial de la aplicación de WinML.

Si quiere obtener la solución predefinida para una aplicación de WinML, puede clonar el archivo de solución y probarlo de inmediato.

Escenario

En este tutorial, crearemos una aplicación de aprendizaje automático de clasificación de alimentos que se pueda ejecutar en cualquier dispositivo de Windows. El modelo se entrenará para que pueda reconocer determinados tipos de patrones y clasificar una imagen de alimentos y, cuando se le dé una imagen, devolverá una etiqueta de clasificación y el valor de confianza de porcentaje asociado de esa clasificación.

Requisitos previos para el entrenamiento del modelo

Para compilar y entrenar el modelo, usará ML.NET Model Builder en Visual Studio.

  • Necesitará Visual Studio 2019 16.6.1 o versión posterior para usar ML.NET Model Builder. Puede obtener Visual Studio aquí.
  • Necesitará una cuenta de Azure para entrenar un modelo con ML.NET Model Builder en el área de trabajo de Azure ML. Si es un usuario nuevo en Azure, puede registrarse para obtener una cuenta gratuita de Azure.

Nota:

¿Le interesa obtener más información sobre las opciones de registro de Azure y las cuentas gratuitas de Azure? Consulte Creación de una cuenta de Azure.

ML.NET Model Builder es una extensión gráfica e intuitiva de Visual Studio que se usa para compilar, entrenar e implementar modelos de Machine Learning personalizados. Usa el aprendizaje automático automatizado (AutoML) para explorar diferentes algoritmos y configuraciones de aprendizaje automático para ayudarle a encontrar el que mejor se adapte a su escenario.

ML.NET Model Builder se incluye en Visual Studio versión 16.6.1 o posteriores, al instalar una de las cargas de trabajo de .NET. Asegúrese de que el componente ML.NET Model Builder aparece activado en el instalador al descargar o modificar Visual Studio. Para comprobar si VS tiene el componente ML.NET Model Builder, vaya a Extensiones y seleccione Administrar extensiones. Escriba Model Builder en la barra de búsqueda para revisar los resultados de extensión.

Model builder extension

ML.NET Model Builder es actualmente una característica en versión preliminar. Por lo tanto, para usar la herramienta, en Visual Studio debe ir a Herramientas > Opciones > Entorno > Características de vista previa y habilitar ML.NET Model Builder:

Enable the model builder extension

Nota:

¿Le interesa obtener más información sobre ML.NET Model Builder y los diferentes escenarios que admite? Revise la documentación de Model Builder.

Requisitos previos para la implementación de la aplicación de Windows ML

Para crear e implementar una aplicación de Windows ML, necesitará lo siguiente:

  • Windows 10, versión 1809 (compilación 17763) o superior. Para comprobar el número de versión de compilación, ejecute winvermediante el comando Run (Windows logo key + R).
  • Windows SDK para la versión 17763 o posterior. Puede obtener el SDK aquí.
  • Visual Studio 2019, versión 16.6.1 o posterior. Puede obtener Visual Studio aquí.
  • La extensión de Visual Studio del generador de código de Windows ML (mlgen). Descárguela para VS 2019.
  • Si decide crear una aplicación para UWP, deberá habilitar la carga de trabajo de desarrollo de la Plataforma universal de Windows en Visual Studio.
  • También deberá habilitar el modo de desarrollador en el equipo

Nota:

Las API de Windows ML están integradas en las versiones más recientes de Windows 10 (1809 o posterior) y Windows Server 2019. Si la plataforma de destino es una versión anterior de Windows, puede migrar la aplicación de WinML al paquete de NuGet redistribuible (Windows 8.1 o superior).

Preparación de los datos

Los modelos de Machine Learning deben entrenarse con los datos existentes. En esta guía, usará un conjunto de datos de imágenes de alimentos de Kaggle Open Datasets. Este conjunto de datos se distribuye bajo la licencia de dominio público.

Importante

Para usar este conjunto de datos, debe aceptar los términos de uso del sitio de Kaggle y los términos de la licencia que acompaña al propio conjunto de datos Food-11. Microsoft no ofrece ninguna garantía ni representación sobre el sitio o este conjunto de datos.

El conjunto de datos tiene tres divisiones, evaluación, entrenamiento y validación, y contiene 16643 imágenes de alimentos agrupadas en 11 categorías principales de alimentos. Las imágenes del conjunto de datos de cada categoría de alimentos se colocan en una carpeta independiente, lo que hace que el proceso de entrenamiento del modelo sea más cómodo.

Descargue el conjunto de datos aquí. Tenga en cuenta que el conjunto de datos tiene un tamaño de aproximadamente 1 GB y es posible que se le pida que cree una cuenta en el sitio web de Kaggle para descargar los datos.

Food image dataset

Si quiere, puede usar cualquier otro conjunto de datos de imágenes relevantes. Como mínimo, se recomienda que use 30 imágenes por etiqueta en el conjunto de entrenamiento inicial. También conviene recopilar algunas imágenes adicionales para probar el modelo una vez que está entrenado.

Además, asegúrese de que todas las imágenes de entrenamiento cumplen los criterios siguientes:

  • Están en formato .jpg, .png, .bmp o .gif.
  • Tienen menos de 6 MB de tamaño (4 MB en el caso de imágenes de predicción).
  • Tienen más de 256 píxeles en el borde más corto. Custom Vision Service escalará verticalmente y de forma automática todas las imágenes que sean más cortas.

Pasos siguientes

Ahora que ha ordenado los requisitos previos y ha preparado el conjunto de datos, puede continuar con la creación del modelo de WinML. En la siguiente parte, usará ML.NET Model Builder para crear y entrenar el modelo de clasificación.