[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.
Esta publicación es la segunda de una serie sobre los nuevos algoritmos integrados en SageMaker. En la primera publicación, mostramos cómo SageMaker proporciona un algoritmo de clasificación de imágenes integrado. Hoy anunciamos que SageMaker proporciona un nuevo algoritmo de detección de objetos integrado mediante TensorFlow. Este algoritmo de aprendizaje supervisado admite el aprendizaje de transferencia para muchos modelos previamente entrenados disponibles en TensorFlow. Toma una imagen como entrada y genera los objetos presentes en la imagen junto con los cuadros delimitadores. 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 Tensorflow de detección de objetos y Introducción a SageMaker Tensorflow: cuaderno de muestra de detección de objetos.
El reconocimiento de objetos con TensorFlow en SageMaker proporciona transferencia de aprendizaje para muchos modelos previamente entrenados disponibles en TensorFlow Hub. De acuerdo con la cantidad de etiquetas de clase en los datos de entrenamiento, un nuevo cabezal de detección de objetos inicializado aleatoriamente reemplaza el cabezal del modelo TensorFlow existente. Se puede ajustar toda la red, incluido el modelo preentrenado, o solo la capa superior (cabezal de detección de objetos) 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 detección de objetos de TensorFlow
En esta sección, se describe cómo usar el algoritmo de detección de objetos 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 Modelos de TensorFlow. Cada modelo está identificado por un artículo único. model_id
. El siguiente código muestra el ajuste fino de un modelo ResNet50 V1 FPN, indicado por model_id
tensorflow-od1-ssd-resnet50-v1-fpn-640x640-coco17-tpu-8
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 detección de objetos de TensorFlow. El URI del modelo preentrenado es específico para cada modelo. TensorFlow descargó previamente los tarballs del modelo previamente entrenados y los almacenó en depósitos de Amazon Simple Storage Service (Amazon S3) con la firma del modelo adecuada, por lo 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:
Proporcionamos el conjunto de datos de PennFudanPed como el conjunto de datos predeterminado para ajustar los modelos. El conjunto de datos incluye imágenes de peatones. El siguiente código proporciona el conjunto de datos de entrenamiento predeterminado alojado en depósitos de S3:
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 detección de objetos SageMaker TensorFlow para transferir un conjunto de datos personalizado, implementar el modelo ajustado, realizar inferencias en el modelo implementado e implementar el modelo previamente entrenado sin ajustar primero la información sobre un conjunto de datos personalizado, consulte el cuaderno de muestra a continuación: Introducción a SageMaker TensorFlow – Reconocimiento de objetos.
Interfaz de entrada/salida para el algoritmo de detección de objetos TensorFlow
Puede ajustar cualquiera de los modelos previamente entrenados que se enumeran en TensorFlow Models a cualquier conjunto de datos con imágenes de cualquier número 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 un subdirectorio imágenes y un archivo
annotations.json
. - producción – Hay dos salidas. El primero es un modelo ajustado que se puede implementar para la inferencia o entrenarse más a través del entrenamiento incremental. El segundo es un archivo que asigna índices de clase a etiquetas de clase; esto se guarda con el modelo.
El directorio de entrada debe parecerse al siguiente ejemplo:
Que annotations.json
El archivo debe tener información para bounding_boxes
y sus designaciones de clase. Debe tener un diccionario con las claves. "images"
y "annotations"
. El valor para el "images"
La clave debe ser una lista de entradas, una para cada imagen del formulario {"file_name": image_name, "height": height, "width": width, "id": image_id}
. El valor de "annotations"
La clave debe ser una lista de entradas, una para cada cuadro delimitador del formulario {"image_id": image_id, "bbox": [xmin, ymin, xmax, ymax], "category_id": bbox_label}
.
Inferencia usando el algoritmo de detección de objetos 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 incluye los campos, las clases pronosticadas y las puntuaciones de cada predicción. El modelo de detección de objetos 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
, el modelo genera solo cuadros, clases y puntajes pronosticados. Para obtener más detalles sobre el entrenamiento y la inferencia, consulte Introducción a SageMaker TensorFlow: cuaderno de muestra de detección de objetos.
Use los algoritmos integrados de SageMaker a través de la interfaz de usuario de JumpStart
También puede usar la detección de objetos 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.
A continuación se muestran dos videos que demuestran cómo replicar el mismo proceso de ajuste e implementación que acabamos de realizar con solo unos pocos clics desde la interfaz de usuario de JumpStart.
Optimizar el modelo preentrenado
Este es el proceso para ajustar el mismo modelo de detección de objetos previamente entrenado.
Implementar el modelo optimizado
Una vez completada la capacitación del modelo, puede implementar el modelo directamente en un punto final persistente en tiempo real con un solo clic.
Conclusión
En esta publicación, anunciamos el lanzamiento del algoritmo de detección de objetos integrado de SageMaker TensorFlow. Proporcionamos un código de ejemplo sobre cómo realizar transferencias de aprendizaje en un conjunto de datos personalizado usando un modelo previamente entrenado de TensorFlow con este algoritmo.
Para obtener más información, consulte la documentación y el cuaderno de muestra.
Sobre los autores
dr. vivek madan es científico aplicado en el equipo JumpStart de Amazon SageMaker. Recibió su doctorado de la Universidad de Illinois en 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.
joao 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.
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 muchos artículos en las conferencias NeurIPS, ICML, ICLR, JMLR, ACL y EMNLP.
[ad_2]