[ad_1]
Amazon SageMaker proporciona un conjunto de algoritmos integrados, modelos preentrenados y plantillas de soluciones preempaquetadas para facilitar que los científicos de datos y los profesionales del aprendizaje automático (ML) comiencen a entrenar e implementar modelos de ML. Puede usar estos algoritmos y modelos para el aprendizaje supervisado y no supervisado. Puede procesar diferentes tipos de datos de entrada, incluidas tablas, imágenes y texto.
A partir de hoy, SageMaker ofrece un nuevo algoritmo de clasificación de imágenes integrado: Clasificación de imágenes – TensorFlow. Es un algoritmo de aprendizaje supervisado que admite el aprendizaje de transferencia para muchos modelos previamente entrenados disponibles en TensorFlow Hub. Toma una imagen como entrada y genera la probabilidad para cada una de las etiquetas de clase. Puede utilizar el aprendizaje por transferencia para optimizar estos modelos preentrenados, incluso cuando no haya disponible una gran cantidad de imágenes de entrenamiento. Está disponible a través de los algoritmos integrados de SageMaker, así como a través de la interfaz de usuario de SageMaker JumpStart en Amazon SageMaker Studio. Para obtener más información, consulte la documentación relacionada Clasificación de imágenes: TensorFlow y el cuaderno de muestra Introducción a SageMaker TensorFlow: Clasificación de imágenes.
La clasificación de imágenes con TensorFlow en SageMaker proporciona transferencia de aprendizaje para muchos modelos previamente entrenados disponibles en TensorFlow Hub. Se adjunta una capa de clasificación al modelo de TensorFlow Hub preentrenado de acuerdo con la cantidad de etiquetas de clase en los datos de entrenamiento. La capa de clasificación consta de una capa de abandono y una capa densa, que es una capa totalmente conectada con un regularizador de 2 normas inicializado con pesos aleatorios. El entrenamiento del modelo tiene hiperparámetros para la tasa de abandono de la capa de abandono y el factor de regularización L2 para la capa densa. Luego, toda la red, incluido el modelo preentrenado, o solo la capa de clasificación superior se puede ajustar a los nuevos datos de entrenamiento. En este modo de transferencia de aprendizaje, también puede entrenar con un conjunto de datos más pequeño.
Cómo usar el nuevo algoritmo de clasificación de imágenes de TensorFlow
En esta sección, se describe cómo usar el algoritmo de clasificación de imágenes de TensorFlow con el SDK de Python de SageMaker. Consulte SageMaker JumpStart para obtener información sobre cómo usarlo desde la interfaz de usuario de Studio.
El algoritmo admite el aprendizaje de transferencia para los modelos preentrenados que se enumeran en los modelos de TensorFlow Hub. Cada modelo está identificado por un artículo único. model_id
. El siguiente código muestra el ajuste fino de MobileNet V2 1.00 224 identificado por model_id
tensorflow-ic-imagenet-mobilenet-v2-100-224-classification-4
en un conjunto de datos de entrenamiento personalizado. Para cada model_id
Para iniciar un trabajo de capacitación de SageMaker desde la clase Estimator de SageMaker Python SDK, debe obtener el URI de la imagen de Docker, el URI del script de capacitación y el URI del modelo preentrenado de las funciones auxiliares proporcionadas en SageMaker. El URI del script de entrenamiento contiene todo el código necesario para el procesamiento de datos, la carga del modelo previamente entrenado, el entrenamiento del modelo y el almacenamiento del modelo entrenado para la inferencia. El URI del modelo preentrenado contiene la definición de la arquitectura del modelo preentrenado y los parámetros del modelo. Tenga en cuenta que el URI de la imagen de Docker y el URI del script de entrenamiento son los mismos para todos los modelos de clasificación de imágenes de TensorFlow. El URI del modelo preentrenado es específico para cada modelo. Los tarballs de modelos previamente entrenados se descargaron previamente de TensorFlow Hub y se almacenaron en depósitos de Amazon Simple Storage Service (Amazon S3) con la firma de modelo adecuada, de modo que el trabajo de entrenamiento se ejecuta en aislamiento de red. Ver el siguiente código:
Puede crear un objeto de clase Estimator utilizando estos artefactos de entrenamiento específicos del modelo:
A continuación, para transferir el aprendizaje en su conjunto de datos personalizado, es posible que deba cambiar los valores predeterminados de los hiperparámetros de entrenamiento enumerados en Hiperparámetros. Puede obtener un diccionario de Python de estos hiperparámetros con sus valores predeterminados llamando hyperparameters.retrieve_default
, actualícelos según sea necesario y luego páselos a la clase Estimator. Tenga en cuenta que los valores predeterminados de algunos hiperparámetros son diferentes para diferentes modelos. Para modelos grandes, el tamaño de pila predeterminado es más pequeño y el train_only_top_layer
hiperparámetro se establece en True
. El hiperparámetro Train_only_top_layer
define qué parámetros del modelo cambian durante el proceso de ajuste. si train_only_top_layer
es True
los parámetros de las capas de clasificación cambian y los parámetros restantes permanecen constantes durante el proceso de ajuste fino. Por otro lado, si train_only_top_layer
es False
todos los parámetros del modelo están ajustados. Ver el siguiente código:
El siguiente código proporciona un conjunto de datos de entrenamiento estándar alojado en depósitos S3. Ofrecemos el tf_flowers
Conjunto de datos como el conjunto de datos predeterminado para ajustar los modelos. El conjunto de datos incluye imágenes de cinco tipos de flores. El conjunto de datos se descargó de TensorFlow con la licencia Apache 2.0.
Finalmente, para iniciar el trabajo de capacitación de SageMaker para ajustar el modelo, llame .fit
en el objeto de la clase Estimator al pasar la ubicación S3 del conjunto de datos de entrenamiento:
Para obtener más información sobre el uso del nuevo algoritmo de clasificación de imágenes SageMaker TensorFlow para transferir el aprendizaje en un conjunto de datos personalizado, implementar el modelo ajustado, ejecutar inferencias en el modelo implementado e implementar el modelo previamente entrenado sin ajustar primero la información sobre un personalizado conjunto de datos, consulte el siguiente cuaderno de muestra: Introducción en SageMaker TensorFlow – Clasificación de imágenes.
Interfaz de entrada/salida para el algoritmo de clasificación de imágenes TensorFlow
Puede ajustar cualquiera de los modelos preentrenados que se enumeran en TensorFlow Hub Models a cualquier conjunto de datos con imágenes de cualquier cantidad de clases. El objetivo es minimizar los errores de predicción en los datos de entrada. El modelo devuelto por el ajuste fino se puede utilizar más para la inferencia. Las siguientes son instrucciones sobre cómo deben formatearse los datos de entrenamiento para su entrada en el modelo:
- Entrada – Un directorio con tantos subdirectorios como clases haya. Cada subdirectorio debe contener imágenes de esta clase en formato .jpg, .jpeg o .png.
- producción – Un modelo perfeccionado que se puede usar para inferencia o entrenarse más a través del entrenamiento incremental. Se agrega una firma de preprocesamiento y posprocesamiento al modelo ajustado para que tome una imagen .jpg sin procesar como entrada y devuelva las probabilidades de clase. Un archivo que asocia índices de clase con identificadores de clase se almacena con los modelos.
El directorio de entrada debería parecerse al siguiente ejemplo cuando los datos de entrenamiento contienen imágenes de dos clases: roses
y dandelion
. La ruta S3 debería verse así s3://bucket_name/input_directory/
. Tenga en cuenta el retraso /
es necesario. Los nombres de las carpetas y roses
, dandelion
, y los nombres de archivo .jpg pueden ser cualquier cosa. El archivo de asignación de etiquetas, almacenado con el modelo entrenado en el depósito de S3, asigna los nombres de carpeta rosas y diente de león a los índices en la lista de probabilidades de clase que genera el modelo. La asignación sigue el orden alfabético de los nombres de las carpetas. En el siguiente ejemplo, el índice corresponde a 0 en la lista de salida del modelo dandelion
y el índice corresponde a 1 roses
.
Inferencia usando el algoritmo de clasificación de imágenes TensorFlow
Los modelos generados se pueden alojar para inferencia y admitir formatos de imagen .jpg, .jpeg y .png codificados como application/x-image
tipo de contenido. La imagen de entrada se redimensiona automáticamente. La salida contiene los valores de probabilidad, las etiquetas de clase para todas las clases y la etiqueta predicha correspondiente al índice de clase con la probabilidad más alta, codificada en formato JSON. El modelo de clasificación de imágenes de TensorFlow procesa una sola imagen por solicitud y genera solo una línea de JSON. El siguiente es un ejemplo de una respuesta en JSON:
si accept
se establece en application/json
, entonces el modelo solo genera probabilidades. Para obtener más detalles sobre el entrenamiento y la inferencia, consulte Introducción a SageMaker TensorFlow: cuaderno de muestra de clasificación de imágenes.
Use los algoritmos integrados de SageMaker a través de la interfaz de usuario de JumpStart
También puede usar la clasificación de imágenes de SageMaker TensorFlow y todos los demás algoritmos integrados con unos pocos clics desde la interfaz de usuario de JumpStart. JumpStart es una característica de SageMaker que le permite entrenar e implementar algoritmos integrados y modelos previamente entrenados desde varios marcos de ML y centros de modelos a través de una interfaz gráfica. También le permite implementar soluciones de ML completas que unen modelos de ML y varios otros servicios de AWS para resolver un caso de uso específico. Consulte Ejecutar clasificación de texto con Amazon SageMaker JumpStart con TensorFlow Hub y Hugging Face Models para descubrir cómo puede usar JumpStart para entrenar un algoritmo o un modelo previamente entrenado con unos pocos clics.
Conclusión
En esta publicación, anunciamos el lanzamiento del algoritmo de clasificación de imágenes incorporado, SageMaker TensorFlow. Proporcionamos un código de ejemplo sobre cómo realizar transferencias de aprendizaje en un conjunto de datos personalizado mediante un modelo previamente entrenado de TensorFlow Hub con este algoritmo. Para obtener más información, consulte la documentación y el cuaderno de muestra.
Sobre los autores
dr. Ashish Khetan es un científico aplicado sénior con algoritmos integrados de Amazon SageMaker y ayuda a desarrollar algoritmos de aprendizaje automático. Recibió su doctorado de la Universidad de Illinois Urbana-Champaign. Es un investigador activo en el campo del aprendizaje automático y la inferencia estadística y ha publicado numerosos artículos en las conferencias NeurIPS, ICML, ICLR, JMLR, ACL y EMNLP.
dr. vivek madan es científico aplicado en el equipo JumpStart de Amazon SageMaker. Recibió su doctorado de la Universidad de Illinois Urbana-Champaign y fue becario postdoctoral en Georgia Tech. Es un investigador activo en los campos de aprendizaje automático y diseño de algoritmos y ha publicado artículos en conferencias EMNLP, ICLR, COLT, FOCS y SODA.
João Moura es Arquitecto de Soluciones Especialista en AI/ML en Amazon Web Services. Centrado principalmente en casos de uso de NLP, ayuda a los clientes a optimizar la capacitación y la implementación de modelos de aprendizaje profundo. También es un defensor activo de las soluciones de aprendizaje automático de código bajo y el hardware especializado en aprendizaje automático.
Raju Penmatcha es arquitecto sénior de soluciones especialista en inteligencia artificial y aprendizaje automático en AWS. Trabaja con clientes del sector educativo, gubernamental y sin fines de lucro en proyectos relacionados con el aprendizaje automático y la inteligencia artificial, y los ayuda a crear soluciones con AWS. Cuando no está ayudando a los clientes, le gusta viajar a nuevos lugares.
[ad_2]