Cree una solución para un clasificador de lesiones cutáneas por visión artificial utilizando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Cree una solución para un clasificador de lesiones cutáneas por visión artificial con Amazon SageMaker Pipelines

Canalizaciones de Amazon SageMaker es un servicio de integración continua y entrega continua (CI/CD) diseñado para casos de uso de aprendizaje automático (ML). Puede usarlo para crear, automatizar y administrar flujos de trabajo de ML de extremo a extremo. Aborda el desafío de orquestar cada paso de un proceso de ML, lo que requiere tiempo, esfuerzo y recursos. Para facilitar su uso, hay disponibles múltiples plantillas que puedes personalizar según tus necesidades.

Los servicios de análisis de imágenes y videos completamente administrados también han acelerado la adopción de soluciones de visión artificial. AWS ofrece un servicio de IA de AWS preentrenado y completamente administrado llamado Reconocimiento de amazonas que se pueden integrar en aplicaciones de visión por computadora mediante llamadas API y no requieren experiencia en ML. Sólo tienes que proporcionar una imagen a la API de Amazon Rekognition y puede identificar los objetos requeridos de acuerdo con etiquetas predefinidas. También es posible proporcionar etiquetas personalizadas específicas para su caso de uso y crear un modelo de visión por computadora personalizado con poca o ninguna necesidad de experiencia en ML.

En esta publicación, abordamos un problema específico de visión por computadora: la clasificación de lesiones cutáneas y el uso de Pipelines al personalizar una plantilla existente y adaptarla a esta tarea. La clasificación precisa de las lesiones cutáneas puede ayudar con el diagnóstico temprano de enfermedades cancerosas. Sin embargo, es una tarea desafiante en el campo de la medicina, porque existe una gran similitud entre los diferentes tipos de lesiones cutáneas. Pipelines nos permite aprovechar una variedad de modelos y algoritmos existentes, y establecer un pipeline de producción de extremo a extremo con el mínimo esfuerzo y tiempo.

Resumen de la solución

En esta publicación, construimos una tubería de extremo a extremo utilizando Pipelines para clasificar imágenes dermatoscópicas de lesiones cutáneas pigmentadas comunes. usamos el Estudio Amazon SageMaker plantilla de proyecto Plantilla de MLOps para construir, entrenar e implementar modelos y el código a continuación Repositorio GitHub. La arquitectura resultante se muestra en la siguiente figura.

Para esta canalización, utilizamos el conjunto de datos HAM10000 ("Humano contra máquina con 10000 10,015 imágenes de entrenamiento"), que consta de XNUMX XNUMX imágenes dermatoscópicas. La tarea que nos ocupa es una clasificación multiclase en el campo de la visión artificial. Este conjunto de datos representa seis de las categorías diagnósticas más importantes en el ámbito de las lesiones pigmentadas: queratosis actínica y carcinoma intraepitelial o enfermedad de Bowen (akiec), carcinoma de células basales (bcc), lesiones benignas similares a queratosis (léntigos solares o queratosis seborreicas y queratosis tipo liquen plano, bkl), dermatofibroma (df), melanoma (mel), nevo melanocítico (nv), y lesiones vasculares (angiomas, angioqueratomas, granulomas piógenos y hemorragia, vasc).

Para el formato de la entrada del modelo, usamos el RecordIO formato. Este es un formato compacto que almacena datos de imágenes juntos para una lectura continua y, por lo tanto, un entrenamiento más rápido y eficiente. Además, uno de los desafíos de usar el conjunto de datos HAM10000 es el desequilibrio de clases. La siguiente tabla ilustra la distribución de clases.

Clase akiec bcc BKL df miel nv vasco
Numero de imagenes 327 514 1099 115 1113 6705 142
Total 10015

Para abordar este problema, aumentamos el conjunto de datos mediante transformaciones aleatorias (como recortar, voltear, duplicar y rotar) para tener todas las clases con aproximadamente la misma cantidad de imágenes.

Este paso de preprocesamiento usa MXNet y OpenCV, por lo tanto, usa una imagen de contenedor MXNet preconstruida. El resto de dependencias se instalan mediante un requirements.txt expediente. Si desea crear y utilizar una imagen personalizada, consulte Cree proyectos de Amazon SageMaker con canalizaciones de CI / CD de creación de imágenes.

Para el paso de entrenamiento, usamos el estimador disponible de la imagen Scikit Docker integrada de SageMaker para la clasificación de imágenes y configuramos los parámetros de la siguiente manera:

hyperparameters = {
        "num_layers": 18,
        "use_pretrained_model": 1,
        "augmentation_type": 'crop_color_transform',
        "image_shape": '3,224,224', 
        "num_classes": 7,
        "num_training_samples": 29311, 
        "mini_batch_size": 8,
        "epochs": 5, 
        "learning_rate": 0.00001,
        "precision_dtype": 'float32'
    }

    estimator_config = {
        "hyperparameters": hyperparameters,
        "image_uri": training_image,
        "role": role,
        "instance_count": 1,
        "instance_type": "ml.p3.2xlarge",
        "volume_size": 100,
        "max_run": 360000,
        "output_path": "s3://{bucket}/{base_job_prefix}/training_jobs",
    }
    
    image_classifier = sagemaker.estimator.Estimator(**estimator_config)

Para obtener más detalles sobre la imagen del contenedor, consulte Algoritmo de clasificación de imágenes.

Crear un proyecto de estudio

Para obtener instrucciones detalladas sobre cómo configurar Studio, consulte Incorporación al dominio de Amazon SageMaker mediante la configuración rápida. Para crear su proyecto, complete los siguientes pasos:

  1. En Studio, elija el Proyectos menú en el Recursos de SageMaker .
    Cree una solución para un clasificador de lesiones cutáneas por visión artificial utilizando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
    En la página de proyectos, puede iniciar una plantilla de SageMaker MLOps preconfigurada.
  2. Elige Plantilla de MLOps para la construcción, capacitación e implementación de modelos.
  3. Elige Seleccionar plantilla de proyecto.
    Cree una solución para un clasificador de lesiones cutáneas por visión artificial utilizando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
  4. Introduzca un nombre de proyecto y una breve descripción.
  5. Elige Crear proyecto.

El proyecto tarda unos minutos en crearse.

Preparar el conjunto de datos

Para preparar el conjunto de datos, complete los siguientes pasos:

  1. Ve a Verso de datos de Harvard.
  2. Elige Acceder al conjunto de datosy revise la licencia Creative Commons Attribution-NonCommercial 4.0 International Public License.
  3. Si acepta la licencia, seleccione Zip en formato original y descarga el archivo ZIP.
  4. Crear una Servicio de almacenamiento simple de Amazon (Amazon S3) depósito y elija un nombre que comience con sagemaker (esto permite que SageMaker acceda al depósito sin ningún permiso adicional).
  5. Puede habilitar el registro de acceso y el cifrado para las mejores prácticas de seguridad.
  6. Subir dataverse_files.zip al cubo.
  7. Guarde la ruta del depósito de S3 para su uso posterior.
  8. Tome nota del nombre del depósito en el que almacenó los datos y los nombres de las carpetas subsiguientes, para usar más tarde.

Prepárese para el preprocesamiento de datos

Debido a que usamos MXNet y OpenCV en nuestro paso de preprocesamiento, usamos una imagen MXNet Docker preconstruida e instalamos las dependencias restantes usando el requirements.txt expediente. Para hacerlo, debe copiarlo y pegarlo debajo pipelines/skin existentes sagemaker--modelbuild repositorio. Además, agregue el MANIFEST.in archivo al mismo nivel que setup.py, para decirle a Python que incluya el requirements.txt expediente. Para más información sobre MANIFIESTO.en, Referirse a Incluir archivos en distribuciones de origen con MANIFEST.in. Ambos archivos se pueden encontrar en el Repositorio GitHub.

Cambiar la plantilla de Pipelines

Para actualizar la plantilla Pipelines, complete los siguientes pasos:

  1. Cree una carpeta dentro del depósito predeterminado.
  2. Asegúrese de que el rol de ejecución de Studio tenga acceso al depósito predeterminado, así como al depósito que contiene el conjunto de datos.
  3. De la lista de proyectos, elija el que acaba de crear.
  4. En Repositorios pestaña, elija los hipervínculos para clonar localmente el Compromiso de código de AWS repositorios a su instancia local de Studio.
    Cree una solución para un clasificador de lesiones cutáneas por visión artificial utilizando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
  5. Navegue hasta la pipelines directorio dentro del sagemaker--modelbuild directorio y renombrar el abalone directorio a skin.
  6. Abra la codebuild-buildspec.yml presentar en el sagemaker--modelbuild directorio y modifique la ruta de la canalización de ejecución desde run-pipeline —module-name pipelines.abalone.pipeline (línea 15) a lo siguiente:
    run-pipeline --module-name pipelines.skin.pipeline 

  7. Guarde el archivo.
  8. Reemplace los archivos pipelines.py, preprocess.py, yevaluate.py en el directorio de tuberías con los archivos del Repositorio GitHub.
    Cree una solución para un clasificador de lesiones cutáneas por visión artificial utilizando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.
  9. Actualizar el preprocess.py archivo (líneas 183-186) con la ubicación S3 (SKIN_CANCER_BUCKET) y el nombre de la carpeta (SKIN_CANCER_BUCKET_PATH) donde subiste el dataverse_files.zip archivo:
    1. skin_cancer_bucket=””
    2. skin_cancer_bucket_path=””
    3. skin_cancer_files=””
    4. skin_cancer_files_ext=””

En el ejemplo anterior, el conjunto de datos se almacenaría en s3://monai-bucket-skin-cancer/skin_cancer_bucket_prefix/dataverse_files.zip.

Cree una solución para un clasificador de lesiones cutáneas por visión artificial utilizando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Activar una ejecución de canalización

La inserción de cambios confirmados en el repositorio de CodeCommit (realizado en la pestaña de control de código fuente de Studio) desencadena una nueva ejecución de canalización, porque un Puente de eventos de Amazon monitores de eventos para confirmaciones. Podemos monitorear la ejecución eligiendo la canalización dentro del proyecto SageMaker. La siguiente captura de pantalla muestra un ejemplo de una canalización que se ejecutó correctamente.

Cree una solución para un clasificador de lesiones cutáneas por visión artificial utilizando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

  1. Para confirmar los cambios, vaya a la sección Git en el panel izquierdo.
  2. Ponga en escena todos los cambios relevantes. No necesita hacer un seguimiento de los -checkpoint expediente. Puede agregar una entrada a la .gitignore archivo con *checkpoint.* para ignorarlos.
  3. Confirme los cambios proporcionando un resumen, así como su nombre y una dirección de correo electrónico.
  4. Empuje los cambios.
  5. Vuelva al proyecto y elija el Pipelines .
  6. Si elige las canalizaciones en curso, aparecen los pasos de la canalización.
    Esto le permite controlar el paso que se está ejecutando actualmente. La canalización puede tardar un par de minutos en aparecer. Para que la canalización comience a ejecutarse, los pasos definidos en CI/CD codebuild-buildspec.yml tiene que ejecutar con éxito. Para comprobar el estado de estos pasos, puede utilizar Construcción de código AWS. Para obtener más información, consulte AWS CodeBuild (AMSSSPS).
  7. Cuando la tubería esté completa, regrese a la página del proyecto y elija el Grupos de modelos pestaña para inspeccionar los metadatos adjuntos a los artefactos del modelo.
  8. Si todo se ve bien, elija el Actualizar el estado y apruebe manualmente el modelo. El valor predeterminado ModelApprovalStatus se establece a PendingManualApproval. Si nuestro modelo tiene una precisión superior al 60%, se agrega al registro del modelo, pero no se implementa hasta que se completa la aprobación manual.
  9. Navegue hasta la Endpoints en la consola de SageMaker, donde puede ver cómo se crea un punto final de prueba. Después de unos minutos, el punto final aparece con el InService de estado.
  10. Para implementar el endpoint en producción, en el CodePipeline consola, elija la sagemaker--modeldeploy canalización que se encuentra actualmente en curso.
  11. Al final de la DeployStaging fase, debe aprobar manualmente la implementación.

Después de este paso, puede ver cómo se implementa el punto final de producción en SageMaker. Endpoints página. Después de un tiempo, el punto final se muestra como InService.

Cree una solución para un clasificador de lesiones cutáneas por visión artificial utilizando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Limpiar

Puede limpiar fácilmente todos los recursos creados por el proyecto SageMaker.

  1. En el panel de navegación de Studio, seleccione Recursos de SageMaker.
  2. Elige Proyectos del menú desplegable y elige tu proyecto.
  3. En Acciones menú, seleccione Borrar para eliminar todos los recursos relacionados.

Cree una solución para un clasificador de lesiones cutáneas por visión artificial utilizando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Resultados y próximos pasos

Utilizamos con éxito Pipelines para crear un marco MLOps de extremo a extremo para la clasificación de lesiones cutáneas utilizando un modelo integrado en el conjunto de datos HAM10000. Para los parámetros proporcionados en el repositorio, obtuvimos los siguientes resultados en el conjunto de prueba.

Métricos Precisión Recordar Puntuación F1
Valor 0.643 0.8 0.713

Puede seguir trabajando para mejorar el rendimiento del modelo ajustando sus hiperparámetros, agregando más transformaciones para el aumento de datos o utilizando otros métodos, como la técnica de sobremuestreo de minorías sintéticas (SMOTE) o las redes adversas generativas (GAN). Además, puede usar su propio modelo o algoritmo para el entrenamiento usando imágenes integradas de SageMaker Docker o adaptando su propio contenedor para que funcione en SageMaker. Para más detalles, consulte Usar contenedores de Docker con SageMaker.

También puede agregar características adicionales a su canalización. Si desea incluir el seguimiento, puede elegir el Plantilla MLOps para la creación, capacitación, implementación y monitoreo de modelos plantilla al crear el proyecto de SageMaker. La arquitectura resultante tiene un paso de monitoreo adicional. O si tiene un repositorio Git de terceros existente, puede usarlo eligiendo el Plantilla MLOps para la creación, capacitación e implementación de modelos con repositorios Git de terceros mediante Jenkins proyecto y proporcionar información para la creación de modelos y los repositorios de implementación de modelos. Esto le permite utilizar cualquier código existente y le ahorra tiempo o esfuerzo en la integración entre SageMaker y Git. Sin embargo, para esta opción, un Código de AWS se requiere conexión.

Conclusión

En esta publicación, mostramos cómo crear un flujo de trabajo de ML de extremo a extremo utilizando Studio y Pipelines automatizados. El flujo de trabajo incluye obtener el conjunto de datos, almacenarlo en un lugar accesible para el modelo de ML, configurar una imagen de contenedor para el preprocesamiento y luego modificar el código repetitivo para acomodar dicha imagen. Luego, mostramos cómo desencadenar la canalización, los pasos que sigue la canalización y cómo funcionan. También discutimos cómo monitorear el rendimiento del modelo e implementar el modelo en un punto final.

Realizamos la mayoría de estas tareas dentro de Studio, que actúa como un IDE de ML integral y acelera el desarrollo y la implementación de dichos modelos.

Esta solución no está ligada a la tarea de clasificación de la piel. Puede extenderlo a cualquier tarea de clasificación o regresión utilizando cualquiera de los algoritmos integrados de SageMaker o modelos previamente entrenados.


Sobre los autores

Cree una solución para un clasificador de lesiones cutáneas por visión artificial utilizando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai. Mariem Kthiri es consultor de AI/ML en AWS Professional Services Globals y forma parte del equipo de Health Care and Life Science (HCLS). Le apasiona crear soluciones de ML para diversos problemas y siempre está ansiosa por aprovechar nuevas oportunidades e iniciativas. Vive en Munich, Alemania y está interesada en viajar y descubrir otras partes del mundo.

Cree una solución para un clasificador de lesiones cutáneas por visión artificial utilizando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Yassine Zaafouri es un consultor de AI/ML dentro de Servicios Profesionales en AWS. Permite a los clientes empresariales globales crear e implementar soluciones de IA/ML en la nube para superar sus desafíos comerciales. En su tiempo libre, le gusta jugar y ver deportes y viajar por el mundo.

Cree una solución para un clasificador de lesiones cutáneas por visión artificial utilizando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Fotinos Kyriakides es un ingeniero de AI/ML dentro de los servicios profesionales en AWS. Le apasiona usar la tecnología para brindar valor a los clientes y lograr resultados comerciales. Con base en Londres, en su tiempo libre le gusta correr y explorar.

Cree una solución para un clasificador de lesiones cutáneas por visión artificial utilizando Amazon SageMaker Pipelines PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.Anna Zapaishchykova fue consultor de ProServe en AI/ML y miembro de Amazon Healthcare TFC. Le apasiona la tecnología y el impacto que puede tener en la atención médica. Su experiencia es en la creación de MLOps y soluciones basadas en inteligencia artificial para los problemas de los clientes en una variedad de dominios, como seguros, automóviles y atención médica.

Sello de tiempo:

Mas de Aprendizaje automático de AWS