Incluso después de más de cien años desde su introducción, la histología sigue siendo el estándar de oro en el diagnóstico y pronóstico de tumores. Los anatomopatólogos evalúan la histología para estratificar a los pacientes con cáncer en diferentes grupos según los genotipos y fenotipos de sus tumores, y su resultado clínico [1,2]. Sin embargo, la evaluación humana de los portaobjetos histológicos es subjetiva y no repetible [3]. Además, la evaluación histológica es un proceso lento que requiere profesionales altamente capacitados.
Con importantes avances tecnológicos en la última década, las técnicas como la imagen de diapositiva completa (WSI) y el aprendizaje profundo (DL) ahora están ampliamente disponibles. WSI es el escaneo de portaobjetos de vidrio de microscopía convencional para producir una sola imagen de alta resolución a partir de esos portaobjetos. Esto permite la digitalización y la recopilación de grandes conjuntos de imágenes de patología, lo que habría requerido un tiempo y un coste prohibitivos. La disponibilidad de dichos conjuntos de datos crea formas nuevas e innovadoras de acelerar el diagnóstico mediante el uso de técnicas como el aprendizaje automático (ML) para ayudar a los patólogos a acelerar los diagnósticos al identificar rápidamente las características de interés.
En esta publicación, exploraremos cómo los desarrolladores sin experiencia previa en ML pueden usar Etiquetas personalizadas de Amazon Rekognition para entrenar un modelo que clasifique las características celulares. Las etiquetas personalizadas de Amazon Rekognition son una característica de Reconocimiento de amazonas que le permite crear sus propias capacidades especializadas de análisis de imágenes basadas en ML para detectar objetos únicos y escenas integrales para su caso de uso específico. En particular, utilizamos un conjunto de datos que contiene imágenes completas de diapositivas de carcinoma mamario canino [1] para demostrar cómo procesar estas imágenes y entrenar un modelo que detecta figuras mitóticas. Este conjunto de datos se ha utilizado con el permiso del Prof. Dr. Marc Aubreville, quien amablemente accedió a permitirnos usarlo para esta publicación. Para obtener más información, consulte la sección Agradecimientos al final de esta publicación.
Descripción general de la solución
La solución consta de dos componentes:
- Un modelo de etiquetas personalizadas de Amazon Rekognition — Para permitir que Amazon Rekognition detecte figuras mitóticas, completamos los siguientes pasos:
- Muestree el conjunto de datos WSI para producir imágenes de tamaño adecuado utilizando Estudio Amazon SageMaker y un código Python que se ejecuta en un cuaderno Jupyter. Studio es un entorno de desarrollo integrado (IDE) basado en la web para ML que proporciona todas las herramientas que necesita para llevar sus modelos de la experimentación a la producción mientras aumenta su productividad. Usaremos Studio para dividir las imágenes en otras más pequeñas para entrenar nuestro modelo.
- Entrene un modelo de etiquetas personalizadas de Amazon Rekognition para reconocer figuras mitóticas en muestras de hematoxilina-eosina utilizando los datos preparados en el paso anterior.
- Una aplicación de interfaz — Para demostrar cómo usar un modelo como el que entrenamos en el paso anterior, completamos los siguientes pasos:
El siguiente diagrama ilustra la arquitectura de la solución.
Todos los recursos necesarios para implementar la implementación discutida en esta publicación y el código para toda la sección están disponibles en GitHub. Puede clonar o bifurcar el repositorio, realizar los cambios que desee y ejecutarlo usted mismo.
En los siguientes pasos, recorremos el código para comprender los diferentes pasos necesarios para obtener y preparar los datos, entrenar el modelo y usarlo desde una aplicación de muestra.
Precio
Al ejecutar los pasos de este tutorial, incurre en pequeños costos al utilizar los siguientes servicios de AWS:
- Reconocimiento de amazonas
- AWS Fargate
- Balanceador de carga de aplicaciones
- Director de secretos de AWS
Además, si ya no se encuentra dentro del período o las condiciones de la capa gratuita, puede incurrir en costos de los siguientes servicios:
- CódigoPipeline
- códigoconstruir
- ECR de Amazon
- Amazon SageMaker
Si completa los pasos de limpieza correctamente después de finalizar este tutorial, puede esperar que los costos sean inferiores a 10 USD, si el modelo de etiquetas personalizadas de Amazon Rekognition y la aplicación web se ejecutan durante una hora o menos.
Requisitos previos
Para completar todos los pasos, necesita lo siguiente:
Entrenamiento del modelo de clasificación de figuras mitóticas
Ejecutamos todos los pasos necesarios para entrenar el modelo desde un cuaderno de Studio. Si nunca antes ha utilizado Studio, es posible que deba a bordo primero. Para más información, ver Incorporación rápida a Amazon SageMaker Studio.
Algunos de los siguientes pasos requieren más RAM de la que está disponible en una notebook estándar ml.t3.medium. Asegúrese de haber seleccionado un cuaderno ml.m5.large. Debería ver una indicación de 2 vCPU + 8 GiB en la esquina superior derecha de la página.
El código de esta sección está disponible como Archivo de cuaderno Jupyter.
Después de incorporarse a Studio, siga estas instrucciones para otorgar a Studio los permisos necesarios para llamar a Amazon Rekognition en su nombre.
Dependencias
Para empezar, necesitamos completar los siguientes pasos:
- Actualice los paquetes de Linux e instale las dependencias requeridas, como OpenSlide:
- Instale las bibliotecas fastai y SlideRunner usando pip:
- Descargue el conjunto de datos (proporcionamos un script para hacer esto automáticamente):
Procesar el conjunto de datos
Comenzaremos importando algunos de los paquetes que usamos a lo largo de la etapa de preparación de datos. Luego, descargamos y cargamos la base de datos de anotaciones para este conjunto de datos. Esta base de datos contiene las posiciones en las imágenes completas de las diapositivas de las figuras mitóticas (las características que queremos clasificar). Ver el siguiente código:
Debido a que usamos SageMaker, creamos un nuevo SageMaker Sesión objeto para facilitar tareas como cargar nuestro conjunto de datos a un Servicio de almacenamiento simple de Amazon (Amazon S3) cubeta. También usamos el depósito S3 que SageMaker crea de forma predeterminada para cargar nuestros archivos de imagen procesados.
El slidelist_test
array contiene los ID de las diapositivas que usamos como parte del conjunto de datos de prueba para evaluar el rendimiento del modelo entrenado. Ver el siguiente código:
El siguiente paso es obtener un conjunto de áreas de diapositivas de entrenamiento y prueba, junto con las etiquetas en ellas, de las cuales podemos tomar áreas más pequeñas para entrenar nuestro modelo. El código para get_slides está en el archivo sampling.py en GitHub.
Queremos tomar muestras al azar de las diapositivas de entrenamiento y prueba. Usamos las listas de diapositivas de entrenamiento y prueba y seleccionamos aleatoriamente n_training_images
veces un archivo para entrenamiento, y n_test_images
veces un archivo para la prueba:
A continuación, creamos un directorio para imágenes de entrenamiento y otro para imágenes de prueba:
Antes de producir las imágenes más pequeñas necesarias para entrenar el modelo, necesitamos un código de ayuda que produzca los metadatos necesarios para describir los datos de prueba y entrenamiento. El siguiente código se asegura de que un cuadro delimitador dado que rodea las características de interés (figuras mitóticas) esté bien dentro de la zona que estamos cortando, y produce una línea de JSON que describe la imagen y las características en ella en Verdad fundamental de Amazon SageMaker formato, que es el formato que requieren las etiquetas personalizadas de Amazon Rekognition. Para obtener más información sobre este archivo de manifiesto para la detección de objetos, consulte Localización de objetos en archivos de manifiesto.
Con la generate_annotations
en su lugar, podemos escribir el código para producir las imágenes de entrenamiento y prueba:
El último paso para tener todos los datos requeridos es escribir un manifest.json
archivo para cada uno de los conjuntos de datos:
Transferir los archivos a S3
Usamos la upload_data
método que expone el objeto de sesión de SageMaker para cargar las imágenes y los archivos de manifiesto en el depósito predeterminado de SageMaker S3:
Entrene un modelo de etiquetas personalizadas de Amazon Rekognition
Con los datos ya en Amazon S3, podemos comenzar a entrenar un modelo personalizado. Usamos la biblioteca Boto3 para crear un cliente de Amazon Rekognition y crear un proyecto:
Con el proyecto listo para usar, ahora necesita una versión del proyecto que apunte a los conjuntos de datos de prueba y entrenamiento en Amazon S3. Idealmente, cada versión apunta a diferentes conjuntos de datos (o diferentes versiones de los mismos). Esto nos permite tener diferentes versiones de un modelo, comparar su rendimiento y cambiar entre ellas según sea necesario. Ver el siguiente código:
Después de crear la versión del proyecto, Amazon Rekognition inicia automáticamente el proceso de capacitación. El tiempo de entrenamiento depende de varias características, como el tamaño de las imágenes y el número de ellas, el número de clases, etc. En este caso, para 500 imágenes, el entrenamiento tarda unos 90 minutos en finalizar.
Prueba el modelo
Después de la capacitación, cada modelo en las etiquetas personalizadas de Amazon Rekognition está en el STOPPED
estado. Para usarlo para la inferencia, debe iniciarlo. Obtenemos el ARN de la versión del proyecto de la descripción de la versión del proyecto y lo pasamos al start_project_version
. Observe la MinInferenceUnits
parámetro: comenzamos con una unidad de inferencia. El número máximo real de transacciones por segundo (TPS) que admite esta unidad de inferencia depende de la complejidad de su modelo. Para obtener más información sobre TPS, consulte este del blog.
Cuando la versión de su proyecto aparece como RUNNING
, puede comenzar a enviar imágenes a Amazon Rekognition para su inferencia.
Usamos uno de los archivos en el conjunto de datos de prueba para probar el modelo recién iniciado. En su lugar, puede utilizar cualquier archivo PNG o JPEG adecuado.
aplicación Streamlit
Para demostrar la integración con Amazon Rekognition, usamos una aplicación de Python muy simple. usamos el iluminado biblioteca para construir una interfaz de usuario espartana, donde le pedimos al usuario que cargue un archivo de imagen.
Utilizamos la biblioteca Boto3 y el detect_custom_labels
junto con el ARN de la versión del proyecto, para invocar el punto final de inferencia. La respuesta es un documento JSON que contiene las posiciones y clases de los diferentes objetos detectados en la imagen. En nuestro caso, estas son las figuras mitóticas que el algoritmo ha encontrado en la imagen que enviamos al endpoint. Ver el siguiente código:
Implementar la aplicación en AWS
Para implementar la aplicación, usamos un script de AWS CDK. El proyecto completo se puede encontrar en GitHub . Veamos los diferentes recursos desplegados por el script.
Crear un repositorio de Amazon ECR
Como primer paso para configurar nuestra implementación, creamos un repositorio de Amazon ECR, donde podemos almacenar las imágenes del contenedor de nuestra aplicación:
Cree y almacene su token de GitHub en AWS Secrets Manager
CodePipeline necesita un token de acceso personal de GitHub para monitorear su repositorio de GitHub en busca de cambios y extraer código. Para crear el token, siga las instrucciones en el Documentación de GitHub. El token requiere los siguientes ámbitos de GitHub:
- El
repo
scope, que se utiliza para el control total para leer y extraer artefactos de repositorios públicos y privados en una canalización. - El
admin:repo_hook
scope, que se utiliza para el control total de los enlaces del repositorio.
Después de crear el token, guárdelo en un nuevo secreto en Director de secretos de AWS como sigue:
Escribir parámetros de configuración en el almacén de parámetros de AWS Systems Manager
El script de AWS CDK lee algunos parámetros de configuración de Almacén de parámetros de AWS Systems Manager, como el nombre y el propietario del repositorio de GitHub, la cuenta de destino y la región. Antes de iniciar el script de AWS CDK, debe crear estos parámetros en su propia cuenta.
Puede hacerlo utilizando la CLI de AWS. Simplemente invoque el put-parameter
comando con un nombre, un valor y el tipo del parámetro:
La siguiente es una lista de todos los parámetros requeridos por el script de AWS CDK. Todos ellos son de tipo String
:
- /rek_wsi/prod/accountId — El ID de la cuenta donde implementamos la aplicación.
- /rek_wsi/prod/ecr_repo_name: el nombre del repositorio de Amazon ECR donde se almacenan las imágenes del contenedor.
- /rek_wsi/prod/github/branch: la rama del repositorio de GitHub de la que CodePipeline necesita extraer el código.
- /rek_wsi/prod/github/owner — El propietario del repositorio de GitHub.
- /rek_wsi/prod/github/repo — El nombre del repositorio de GitHub donde se almacena nuestro código.
- /rek_wsi/prod/github/token: el nombre o ARN del secreto en Secrets Manager que contiene su token de autenticación de GitHub. Esto es necesario para que CodePipeline pueda comunicarse con GitHub.
- /rek_wsi/prod/region — La región donde implementaremos la aplicación.
Note la prod
segmento en todos los nombres de parámetros. Aunque no necesitamos este nivel de detalle para un ejemplo tan simple, permitirá reutilizar este enfoque con otros proyectos donde pueden ser necesarios diferentes entornos.
Recursos creados por el script de AWS CDK
Necesitamos que nuestra aplicación, que se ejecuta en una tarea de Fargate, tenga permisos para invocar Amazon Rekognition. Así que primero creamos un Gestión de identidades y accesos de AWS (IAM) Rol de tarea con el RekognitionReadOnlyPolicy
póliza adjunta a la misma. Note que el assumed_by
parámetro en el siguiente código toma el ecs-tasks.amazonaws.com
director de servicio. Esto se debe a que usamos Amazon ECS como orquestador, por lo que necesitamos que Amazon ECS asuma el rol y pase las credenciales a la tarea de Fargate.
Una vez creada, la imagen del contenedor de nuestra aplicación se encuentra en un repositorio privado de Amazon ECR. Necesitamos un objeto que lo describa que podamos pasar al crear el servicio Fargate:
Creamos una nueva VPC y un clúster para esta aplicación. Puede modificar esta parte para usar su propia VPC usando el from_lookup
método de la Vpc
clase:
Ahora que tenemos una VPC y un clúster para implementar, creamos el servicio Fargate. Usamos 0.25 vCPU y 512 MB de RAM para esta tarea, y colocamos un Application Load Balancer (ALB) público frente a él. Una vez implementado, usamos el ALB CNAME para acceder a la aplicación. Ver el siguiente código:
Para compilar e implementar automáticamente una nueva imagen de contenedor cada vez que insertamos código en nuestra rama principal, creamos una canalización simple que consta de una acción de código fuente de GitHub y un paso de compilación. Aquí es donde usamos los secretos que almacenamos en AWS Secrets Manager y AWS Systems Manager Parameter Store en los pasos anteriores.
CodeBuild necesita permisos para enviar imágenes de contenedores a Amazon ECR. Para otorgar estos permisos, agregamos el AmazonEC2ContainerRegistryFullAccess
política a un rol de IAM personalizado que la entidad principal del servicio de CodeBuild puede asumir:
El proyecto CodeBuild inicia sesión en el repositorio privado de Amazon ECR, crea la imagen de Docker con la aplicación Streamlit e inserta la imagen en el repositorio junto con un appspec.yaml
y una imagedefinitions.json
archivo.
El appspec.yaml
El archivo describe la tarea (puerto, versión de la plataforma Fargate, etc.), mientras que el imagedefinitions.json
El archivo asigna los nombres de las imágenes del contenedor a su URI de Amazon ECR correspondiente. Ver el siguiente código:
Finalmente, juntamos las diferentes etapas del pipeline. La última acción es la EcsDeployAction
, que toma la imagen del contenedor creada en la etapa anterior y realiza una actualización gradual de las tareas en nuestro clúster de ECS:
Limpiar
Para evitar incurrir en costos futuros, limpie los recursos que creó como parte de esta solución.
Modelo de etiquetas personalizadas de Amazon Rekognition
Antes de apagar su computadora portátil Studio, asegúrese de detener el modelo de etiquetas personalizadas de Amazon Rekognition. Si no lo hace, continúa incurriendo en costos.
Como alternativa, puede utilizar la consola de Amazon Rekognition para detener el servicio:
- En la consola de Amazon Rekognition, elija Usar etiquetas personalizadas en el panel de navegación.
- Elige Proyectos en el panel de navegación.
- Elija la versión 1 de la
rek-mitotic-figures-workshop
proyecto. - En Modelo de uso pestaña, elegir Detener.
aplicación Streamlit
Para destruir todos los recursos asociados a la aplicación Streamlit, ejecute el siguiente código desde el directorio de la aplicación AWS CDK:
Director de secretos de AWS
Para eliminar el token de GitHub, siga las instrucciones en el documentación.
Conclusión
En esta publicación, repasamos los pasos necesarios para entrenar un modelo de etiquetas personalizadas de Amazon Rekognition para una aplicación de patología digital utilizando datos del mundo real. Luego aprendimos a usar el modelo desde una aplicación simple implementada desde una canalización de CI/CD a Fargate.
Las etiquetas personalizadas de Amazon Rekognition le permiten crear aplicaciones de atención médica habilitadas para ML que puede crear e implementar fácilmente mediante servicios como Fargate, CodeBuild y CodePipeline.
¿Se le ocurre alguna aplicación para ayudar a los investigadores, médicos o sus pacientes a hacer sus vidas más fáciles? Si es así, use el código de este tutorial para compilar su próxima aplicación. Y si tienes alguna pregunta, por favor compártela en la sección de comentarios.
AGRADECIMIENTOS
Nos gustaría agradecer al Prof. Dr. Marc Aubreville por darnos amablemente permiso para usar el conjunto de datos MITOS_WSI_CMC para esta publicación de blog. El conjunto de datos se puede encontrar en GitHub.
Referencias
[1] Aubreville, M., Bertram, CA, Donovan, TA et al. Un conjunto de datos de imágenes de diapositivas completas completamente anotadas del cáncer de mama canino para ayudar en la investigación del cáncer de mama humano. Datos científicos 7, 417 (2020). https://doi.org/10.1038/s41597-020-00756-z
[2] Khened, M., Kori, A., Rajkumar, H. et al. Un marco generalizado de aprendizaje profundo para la segmentación y el análisis de imágenes de diapositivas completas. Sci Rep 11, 11579 (2021). https://doi.org/10.1038/s41598-021-90444-8
[3] PNAS 27 de marzo de 2018 115 (13) E2970-E2979; publicado por primera vez el 12 de marzo de 2018; https://doi.org/10.1073/pnas.1717139115
Sobre la autora
Pablo Núñez Pölcher, MSc, es un Arquitecto de Soluciones Senior que trabaja para el equipo del Sector Público con Amazon Web Services. Pablo se enfoca en ayudar a los clientes del sector público de la salud a crear productos nuevos e innovadores en AWS de acuerdo con las mejores prácticas. Recibió su M.Sc. en Ciencias Biológicas de la Universidad de Buenos Aires. En su tiempo libre, disfruta andar en bicicleta y jugar con dispositivos integrados habilitados para ML.
Razvan Ionasec, PhD, MBA, es el líder técnico para el cuidado de la salud en Amazon Web Services en Europa, Medio Oriente y África. Su trabajo se centra en ayudar a los clientes de atención médica a resolver problemas comerciales mediante el aprovechamiento de la tecnología. Anteriormente, Razvan fue el jefe global de productos de inteligencia artificial (IA) en Siemens Healthineers a cargo de AI-Rad Companion, la familia de soluciones de salud digital basadas en la nube y basadas en IA para imágenes. Posee más de 30 patentes en AI/ML para imágenes médicas y ha publicado más de 70 publicaciones técnicas y clínicas internacionales revisadas por pares sobre visión por computadora, modelado computacional y análisis de imágenes médicas. Razvan recibió su doctorado en Informática de la Universidad Técnica de Múnich y su maestría en administración de empresas de la Judge Business School de la Universidad de Cambridge.
- '
- "
- &
- 100
- 11
- 110
- 2020
- 2021
- 7
- Nuestra Empresa
- acelerar
- de la máquina
- Mi Cuenta
- la columna Acción
- África
- AI
- algoritmo
- Todos
- ya haya utilizado
- Aunque
- Amazon
- Reconocimiento de amazonas
- Amazon SageMaker
- Amazon Web Services
- análisis
- Aplicación
- aplicaciones
- APT
- arquitectura
- artificial
- inteligencia artificial
- Inteligencia Artificial (AI)
- Activos
- Autenticación
- disponibilidad
- Hoy Disponibles
- AWS
- equilibrador
- MEJOR
- y las mejores prácticas
- Blog
- impulsar
- Box
- Cáncer de mama
- build
- llamar al
- Cambridge
- Puede conseguir
- Cáncer
- la investigación del cáncer
- CHARGE
- clasificación
- código
- --
- comentarios
- Ciencias de la Computación
- Visión por computador
- confianza
- Configuración
- Consola
- Envase
- Contenedores
- contiene
- continúa
- Precio
- Creamos
- Referencias
- Clientes
- datos
- Base de datos
- bases de datos
- deep learning
- destruir
- detalle
- Detección
- desarrolladores
- Desarrollo
- Dispositivos
- una experiencia diferente
- digital
- Salud digital
- digitalización
- Docker
- Doctores
- DE INSCRIPCIÓN
- pasan fácilmente
- echo
- Punto final
- Entorno
- Europa
- ejemplo
- experience
- exportar
- familia
- Feature
- Caracteristicas
- Figura
- Nombre
- seguir
- tenedor
- formato
- encontrado
- Marco conceptual
- Gratuito
- ser completados
- función
- futuras
- generar
- geometría
- GitHub
- Diezmos y Ofrendas
- Buscar
- Gold
- conceder
- subvenciones
- es
- cabeza
- Salud
- la salud
- ayuda
- esta página
- Cómo
- Como Hacer
- HTTPS
- AMI
- Identidad
- imagen
- análisis de imagen
- Segmentación de imagen
- Proyección de imagen
- importador
- información
- originales
- un elemento indispensable
- integración
- Intelligence
- intereses
- Internacional
- involucra
- IT
- Cuaderno Jupyter
- Etiquetas
- large
- más reciente
- lanzamiento
- APRENDE:
- aprendido
- aprendizaje
- Nivel
- Biblioteca
- línea
- Linux
- Lista
- Listas
- carga
- aplicaciones móviles
- máquina de aprendizaje
- Mapas
- Marzo
- servicios
- imagenes medicas
- mediano
- Oriente Medio
- ML
- modelo
- modelado
- modelos
- más,
- Munich
- nombres
- Navegación
- Detección de objetos
- Inmersión
- Otro
- propietario
- Okeanos
- patología
- los pacientes
- actuación
- con
- plataforma
- política
- Director de la escuela
- privada
- Producción
- productividad
- Productos
- profesionales
- proyecto
- proyecta
- proporcionar
- proporciona un
- público
- sector público
- publicaciones
- Python
- RAM
- la investigación
- Recursos
- respuesta
- Ejecutar
- correr
- sabio
- exploración
- Escuela
- Ciencia:
- CIENCIAS
- sector
- seleccionado
- Servicios
- set
- pólipo
- Compartir
- Siemens
- importante
- sencillos
- Tamaño
- chica
- So
- Soluciones
- RESOLVER
- Espacio
- especializado
- dividido
- Etapa
- comienzo
- fundó
- Estado
- Estado
- STORAGE
- tienda
- estudio
- soportes
- Switch
- Todas las funciones a su disposición
- Target
- Técnico
- técnicas
- Tecnología
- test
- La Fuente
- A través de esta formación, el personal docente y administrativo de escuelas y universidades estará preparado para manejar los recursos disponibles que derivan de la diversidad cultural de sus estudiantes. Además, un mejor y mayor entendimiento sobre estas diferencias y similitudes culturales permitirá alcanzar los objetivos de inclusión previstos.
- equipo
- prolongado
- juntos
- ficha
- parte superior
- Formación
- Transacciones
- único
- universidad
- Universidad de Cambridge
- Actualizar
- URI
- us
- USD
- propuesta de
- versión
- visión
- W
- web
- servicios web
- Basado en la Web
- ¿
- Que es
- QUIENES
- extensamente
- dentro de
- sin
- Actividades:
- trabajando
- se
- la escritura
- X
- años
- Youtube