Mesmo depois de mais de cem anos após sua introdução, a histologia continua sendo o padrão-ouro no diagnóstico e prognóstico tumoral. Os anatomopatologistas avaliam a histologia para estratificar os pacientes com câncer em diferentes grupos, dependendo dos genótipos e fenótipos do tumor e do resultado clínico [1,2]. No entanto, a avaliação humana de lâminas histológicas é subjetiva e não repetível [3]. Além disso, a avaliação histológica é um processo demorado que requer profissionais altamente treinados.
Com avanços tecnológicos significativos na última década, técnicas como imagem de lâmina inteira (WSI) e aprendizagem profunda (DL) estão agora amplamente disponíveis. WSI é a digitalização de lâminas de vidro de microscopia convencional para produzir uma única imagem de alta resolução a partir dessas lâminas. Isto permite a digitalização e recolha de grandes conjuntos de imagens patológicas, o que teria sido proibitivamente demorado e dispendioso. A disponibilidade de tais conjuntos de dados cria formas novas e inovadoras de acelerar o diagnóstico, utilizando técnicas como a aprendizagem automática (ML) para ajudar os patologistas a acelerar os diagnósticos, identificando rapidamente características de interesse.
Nesta postagem, exploraremos como desenvolvedores sem experiência anterior em ML podem usar Rótulos personalizados do Amazon Rekognition para treinar um modelo que classifica recursos celulares. Os rótulos personalizados do Amazon Rekognition são um recurso do Reconhecimento da Amazônia que permite que você crie seus próprios recursos especializados de análise de imagens baseados em ML para detectar objetos e cenas exclusivos, essenciais para seu caso de uso específico. Em particular, usamos um conjunto de dados contendo imagens inteiras de slides de carcinoma mamário canino [1] para demonstrar como processar essas imagens e treinar um modelo que detecta figuras mitóticas. Este conjunto de dados foi usado com permissão do Prof. Marc Aubreville, que gentilmente concordou em permitir-nos usá-lo para esta postagem. Para mais informações, consulte a seção Agradecimentos no final deste post.
Visão geral da solução
A solução consiste em dois componentes:
- Um modelo de rótulos personalizados do Amazon Rekognition — Para permitir que o Amazon Rekognition detecte figuras mitóticas, concluímos as seguintes etapas:
- Experimente o conjunto de dados WSI para produzir imagens de tamanho adequado usando Estúdio Amazon SageMaker e um código Python em execução em um notebook Jupyter. Studio é um ambiente de desenvolvimento integrado (IDE) baseado na Web para ML que fornece todas as ferramentas necessárias para levar seus modelos da experimentação à produção e, ao mesmo tempo, aumentar sua produtividade. Usaremos o Studio para dividir as imagens em imagens menores para treinar nosso modelo.
- Treine um modelo Amazon Rekognition Custom Labels para reconhecer figuras mitóticas em amostras de hematoxilina-eosina usando os dados preparados na etapa anterior.
- Um aplicativo front-end — Para demonstrar como usar um modelo como o que treinamos na etapa anterior, completamos as seguintes etapas:
O diagrama a seguir ilustra a arquitetura da solução.
Todos os recursos necessários para implantar a implementação discutida neste post e o código de toda a seção estão disponíveis em GitHub. Você pode clonar ou bifurcar o repositório, fazer as alterações desejadas e executá-lo você mesmo.
Nas próximas etapas, percorremos o código para compreender as diferentes etapas envolvidas na obtenção e preparação dos dados, no treinamento do modelo e na utilização dele a partir de um aplicativo de amostra.
custos
Ao executar as etapas deste tutorial, você incorrerá em pequenos custos ao usar os seguintes serviços da AWS:
- Reconhecimento da Amazônia
- AWS Fargate
- Balanceador de carga de aplicativo
- Gerenciador de segredos da AWS
Além disso, se não estiver mais dentro do período ou das condições do nível gratuito, você poderá incorrer em custos dos seguintes serviços:
- CodePipeline
- CódigoBuild
- ECR da Amazon
- Amazon Sage Maker
Se você concluir as etapas de limpeza corretamente após concluir este passo a passo, poderá esperar que os custos sejam inferiores a US$ 10, se o modelo Amazon Rekognition Custom Labels e o aplicativo Web forem executados por uma hora ou menos.
Pré-requisitos
Para concluir todas as etapas, você precisa do seguinte:
Treinando o modelo de classificação de figuras mitóticas
Executamos todas as etapas necessárias para treinar o modelo em um notebook Studio. Se você nunca usou o Studio antes, talvez seja necessário a bordo primeiro. Para mais informações, veja Integre rapidamente no Amazon SageMaker Studio.
Algumas das etapas a seguir requerem mais RAM do que a disponível em um notebook ml.t3.medium padrão. Certifique-se de ter selecionado um caderno ml.m5.large. Você deverá ver uma indicação de 2 vCPU + 8 GiB no canto superior direito da página.
O código desta seção está disponível como um Arquivo de caderno Jupyter.
Após a integração no Studio, siga estas instruções para conceder ao Studio as permissões necessárias para chamar o Amazon Rekognition em seu nome.
Dependências
Para começar, precisamos concluir as seguintes etapas:
- Atualize os pacotes Linux e instale as dependências necessárias, como OpenSlide:
- Instale as bibliotecas fastai e SlideRunner usando pip:
- Baixe o conjunto de dados (fornecemos um script para fazer isso automaticamente):
Processar o conjunto de dados
Começaremos importando alguns dos pacotes que utilizamos durante a fase de preparação dos dados. Em seguida, baixamos e carregamos o banco de dados de anotações para este conjunto de dados. Este banco de dados contém as posições nas imagens inteiras dos slides das figuras mitóticas (as características que queremos classificar). Veja o seguinte código:
Como estamos usando o SageMaker, criamos um novo SageMaker Sessão objetar para facilitar tarefas como carregar nosso conjunto de dados para um Serviço de armazenamento simples da Amazon (Amazon S3) balde. Também usamos o bucket S3 que o SageMaker cria por padrão para fazer upload de nossos arquivos de imagem processados.
A slidelist_test
array contém os IDs dos slides que usamos como parte do conjunto de dados de teste para avaliar o desempenho do modelo treinado. Veja o seguinte código:
O próximo passo é obter um conjunto de áreas de treinamento e slides de teste, junto com os rótulos neles, dos quais podemos pegar áreas menores para usar no treinamento de nosso modelo. O código para get_slides está no arquivo sampling.py em GitHub.
Queremos obter amostras aleatórias dos slides de treinamento e teste. Usamos as listas de slides de treinamento e teste e selecionamos aleatoriamente n_training_images
vezes um arquivo para treinamento, e n_test_images
vezes um arquivo para teste:
A seguir, criamos um diretório para imagens de treinamento e outro para imagens de teste:
Antes de produzirmos as imagens menores necessárias para treinar o modelo, precisamos de algum código auxiliar que produza os metadados necessários para descrever os dados de treinamento e teste. O código a seguir garante que uma determinada caixa delimitadora em torno das características de interesse (figuras mitóticas) esteja bem dentro da zona que estamos cortando e produz uma linha de JSON que descreve a imagem e as características nela contidas em Verdade no solo do Amazon SageMaker formato, que é o formato exigido pelos rótulos personalizados do Amazon Rekognition. Para obter mais informações sobre esse arquivo de manifesto para detecção de objetos, consulte Localização de objetos em arquivos de manifesto.
Com o generate_annotations
funcionando, podemos escrever o código para produzir as imagens de treinamento e teste:
O último passo para ter todos os dados necessários é escrever um manifest.json
arquivo para cada um dos conjuntos de dados:
Transfira os arquivos para S3
Usamos o upload_data
método que o objeto de sessão do SageMaker expõe para fazer upload das imagens e dos arquivos de manifesto para o bucket padrão do SageMaker S3:
Treinar um modelo de rótulos personalizados do Amazon Rekognition
Com os dados já no Amazon S3, podemos treinar um modelo personalizado. Usamos a biblioteca Boto3 para criar um cliente Amazon Rekognition e criar um projeto:
Com o projeto pronto para uso, agora você precisa de uma versão do projeto que aponte para os conjuntos de dados de treinamento e teste no Amazon S3. Idealmente, cada versão aponta para conjuntos de dados diferentes (ou versões diferentes deles). Isso nos permite ter diferentes versões de um modelo, comparar seu desempenho e alternar entre elas conforme necessário. Veja o seguinte código:
Depois de criarmos a versão do projeto, o Amazon Rekognition inicia automaticamente o processo de treinamento. O tempo de treinamento depende de vários recursos, como o tamanho das imagens e a quantidade delas, o número de aulas e assim por diante. Nesse caso, para 500 imagens, o treinamento leva cerca de 90 minutos para ser finalizado.
Teste o modelo
Após o treinamento, todos os modelos nos rótulos personalizados do Amazon Rekognition estarão no STOPPED
estado. Para usá-lo para inferência, você precisa iniciá-lo. Obtemos o ARN da versão do projeto na descrição da versão do projeto e o passamos para o start_project_version
. Observe o MinInferenceUnits
parâmetro — começamos com uma unidade de inferência. O número máximo real de transações por segundo (TPS) que esta unidade de inferência suporta depende da complexidade do seu modelo. Para saber mais sobre o TPS, consulte este no blog.
Quando a versão do seu projeto estiver listada como RUNNING
, você poderá começar a enviar imagens ao Amazon Rekognition para inferência.
Usamos um dos arquivos do conjunto de dados de teste para testar o modelo recém-iniciado. Você pode usar qualquer arquivo PNG ou JPEG adequado.
Aplicativo Streamlit
Para demonstrar a integração com o Amazon Rekognition, usamos um aplicativo Python muito simples. Nós usamos o Iluminado biblioteca para construir uma interface de usuário espartana, onde solicitamos ao usuário que carregue um arquivo de imagem.
Usamos a biblioteca Boto3 e o detect_custom_labels
método, juntamente com o ARN da versão do projeto, para invocar o endpoint de inferência. A resposta é um documento JSON que contém as posições e classes dos diferentes objetos detectados na imagem. No nosso caso, estas são as figuras mitóticas que o algoritmo encontrou na imagem que enviamos ao endpoint. Veja o seguinte código:
Implantar o aplicativo na AWS
Para implantar o aplicativo, usamos um script AWS CDK. Todo o projeto pode ser encontrado em GitHub . Vejamos os diferentes recursos implantados pelo script.
Crie um repositório Amazon ECR
Como primeiro passo para configurar nossa implantação, criamos um repositório Amazon ECR, onde podemos armazenar nossas imagens de contêiner de aplicativos:
Crie e armazene seu token GitHub no AWS Secrets Manager
O CodePipeline precisa de um token de acesso pessoal do GitHub para monitorar seu repositório GitHub em busca de alterações e extrair código. Para criar o token, siga as instruções no Documentação GitHub. O token requer os seguintes escopos do GitHub:
- A
repo
escopo, que é usado para controle total para ler e extrair artefatos de repositórios públicos e privados para um pipeline. - A
admin:repo_hook
escopo, que é usado para controle total dos ganchos do repositório.
Após criar o token, armazene-o em um novo segredo em Gerenciador de segredos da AWS como se segue:
Gravar parâmetros de configuração no AWS Systems Manager Parameter Store
O script AWS CDK lê alguns parâmetros de configuração de Armazenamento de parâmetros do AWS Systems Manager, como o nome e o proprietário do repositório GitHub e a conta e região de destino. Antes de iniciar o script AWS CDK, você precisa criar esses parâmetros em sua própria conta.
Você pode fazer isso usando a AWS CLI. Basta invocar o put-parameter
comando com um nome, um valor e o tipo do parâmetro:
A seguir está uma lista de todos os parâmetros exigidos pelo script AWS CDK. Todos eles são do tipo String
:
- /rek_wsi/prod/accountId — O ID da conta onde implantamos o aplicativo.
- /rek_wsi/prod/ecr_repo_name — O nome do repositório do Amazon ECR onde as imagens do contêiner estão armazenadas.
- /rek_wsi/prod/github/branch — A ramificação no repositório GitHub da qual o CodePipeline precisa extrair o código.
- /rek_wsi/prod/github/owner — O proprietário do repositório GitHub.
- /rek_wsi/prod/github/repo — O nome do repositório GitHub onde nosso código está armazenado.
- /rek_wsi/prod/github/token — O nome ou ARN do segredo no Secrets Manager que contém seu token de autenticação do GitHub. Isso é necessário para que o CodePipeline possa se comunicar com o GitHub.
- /rek_wsi/prod/region — A região onde implantaremos o aplicativo.
Observe a prod
segmento em todos os nomes de parâmetros. Embora não necessitemos deste nível de detalhe para um exemplo tão simples, isso permitirá reutilizar esta abordagem com outros projetos onde diferentes ambientes possam ser necessários.
Recursos criados pelo script AWS CDK
Precisamos que nosso aplicativo, executado em uma tarefa do Fargate, tenha permissões para invocar o Amazon Rekognition. Então, primeiro criamos um Gerenciamento de acesso e identidade da AWS (IAM) Função de Tarefa com o RekognitionReadOnlyPolicy
política que lhe está associada. Observe que o assumed_by
parâmetro no código a seguir leva o ecs-tasks.amazonaws.com
principal de serviço. Isso ocorre porque estamos usando o Amazon ECS como orquestrador, portanto, precisamos que o Amazon ECS assuma a função e passe as credenciais para a tarefa do Fargate.
Depois de construída, nossa imagem de contêiner de aplicativo fica em um repositório privado do Amazon ECR. Precisamos de um objeto que o descreva e que possamos passar ao criar o serviço Fargate:
Criamos um novo VPC e cluster para este aplicativo. Você pode modificar esta parte para usar seu próprio VPC usando o comando from_lookup
método do Vpc
classe:
Agora que temos uma VPC e um cluster para implantar, criamos o serviço Fargate. Usamos 0.25 vCPU e 512 MB de RAM para esta tarefa e colocamos um Application Load Balancer (ALB) público na frente dela. Uma vez implantado, usamos o ALB CNAME para acessar o aplicativo. Veja o seguinte código:
Para construir e implantar automaticamente uma nova imagem de contêiner sempre que enviamos código para nosso branch principal, criamos um pipeline simples que consiste em uma ação de origem do GitHub e uma etapa de construção. É aqui que usamos os segredos que armazenamos no AWS Secrets Manager e no AWS Systems Manager Parameter Store nas etapas anteriores.
O CodeBuild precisa de permissões para enviar imagens de contêiner ao Amazon ECR. Para conceder essas permissões, adicionamos o AmazonEC2ContainerRegistryFullAccess
política para uma função do IAM personalizada que o principal de serviço do CodeBuild pode assumir:
O projeto CodeBuild faz login no repositório privado do Amazon ECR, cria a imagem do Docker com o aplicativo Streamlit e envia a imagem para o repositório junto com um arquivo appspec.yaml
e um imagedefinitions.json
arquivo.
A appspec.yaml
descreve a tarefa (porta, versão da plataforma Fargate e assim por diante), enquanto o arquivo imagedefinitions.json
file mapeia os nomes das imagens de contêiner para o URI correspondente do Amazon ECR. Veja o seguinte código:
Finalmente, reunimos os diferentes estágios do pipeline. A última ação é a EcsDeployAction
, que pega a imagem do contêiner criada no estágio anterior e faz uma atualização contínua das tarefas em nosso cluster ECS:
Limpar
Para evitar incorrer em custos futuros, limpe os recursos criados como parte desta solução.
Modelo de rótulos personalizados do Amazon Rekognition
Antes de desligar o notebook do Studio, certifique-se de interromper o modelo Amazon Rekognition Custom Labels. Caso contrário, continuará a incorrer em custos.
Como alternativa, você pode usar o console do Amazon Rekognition para interromper o serviço:
- No console do Amazon Rekognition, escolha Use rótulos personalizados no painel de navegação.
- Escolha Projectos no painel de navegação.
- Escolha a versão 1 do
rek-mitotic-figures-workshop
projeto. - No Usar modelo guia, escolha Dê um basta.
Aplicativo Streamlit
Para destruir todos os recursos associados ao aplicativo Streamlit, execute o seguinte código no diretório do aplicativo AWS CDK:
Gerenciador de segredos da AWS
Para excluir o token GitHub, siga as instruções no documentação.
Conclusão
Nesta postagem, percorremos as etapas necessárias para treinar um modelo Amazon Rekognition Custom Labels para um aplicativo de patologia digital usando dados do mundo real. Em seguida, aprendemos como usar o modelo de um aplicativo simples implantado de um pipeline de CI/CD no Fargate.
Os rótulos personalizados do Amazon Rekognition permitem criar aplicativos de saúde habilitados para ML que você pode criar e implantar facilmente usando serviços como Fargate, CodeBuild e CodePipeline.
Você consegue pensar em algum aplicativo para ajudar pesquisadores, médicos ou seus pacientes a tornar suas vidas mais fáceis? Nesse caso, use o código deste passo a passo para criar seu próximo aplicativo. E se você tiver alguma dúvida, compartilhe-a na seção de comentários.
Agradecimentos
Gostaríamos de agradecer ao Prof. Marc Aubreville por gentilmente nos dar permissão para usar o conjunto de dados MITOS_WSI_CMC para esta postagem do blog. O conjunto de dados pode ser encontrado em GitHub.
Referências
[1] Aubreville, M., Bertram, CA, Donovan, TA. e outros. Um conjunto de dados de imagens de slides completamente anotado sobre câncer de mama canino para auxiliar na pesquisa do câncer de mama humano. Dados científicos 7, 417 (2020). https://doi.org/10.1038/s41597-020-00756-z
[2] Khened, M., Kori, A., Rajkumar, H. et ai. Uma estrutura generalizada de aprendizado profundo para segmentação e análise de imagens de slides inteiros. Sci Rep 11, 11579 (2021). https://doi.org/10.1038/s41598-021-90444-8
[3] PNAS 27 de março de 2018 115 (13) E2970-E2979; publicado pela primeira vez em 12 de março de 2018; https://doi.org/10.1073/pnas.1717139115
Sobre o autor
Pablo Nuñez Pölcher, MSc, é arquiteto de soluções sênior e trabalha para a equipe do setor público na Amazon Web Services. Pablo se concentra em ajudar clientes do setor público de saúde a criar produtos novos e inovadores na AWS de acordo com as práticas recomendadas. Ele recebeu seu M.Sc. em Ciências Biológicas pela Universidade de Buenos Aires. Em seu tempo livre, ele gosta de andar de bicicleta e mexer em dispositivos incorporados habilitados para ML.
Razvan Ionasec, PhD, MBA, é líder técnico de saúde na Amazon Web Services na Europa, Oriente Médio e África. Seu trabalho se concentra em ajudar os clientes da área de saúde a resolver problemas de negócios aproveitando a tecnologia. Anteriormente, Razvan foi chefe global de produtos de inteligência artificial (IA) na Siemens Healthineers, responsável pela AI-Rad Companion, a família de soluções de saúde digital baseadas em nuvem e alimentadas por IA para imagens. Ele detém mais de 30 patentes em IA/ML para imagens médicas e publicou mais de 70 publicações técnicas e clínicas internacionais revisadas por pares sobre visão computacional, modelagem computacional e análise de imagens médicas. Razvan recebeu seu PhD em Ciência da Computação pela Universidade Técnica de Munique e MBA pela Universidade de Cambridge, Judge Business School.
- '
- "
- &
- 100
- 11
- 110
- 2020
- 2021
- 7
- Sobre
- acelerar
- Acesso
- Conta
- Açao Social
- África
- AI
- algoritmo
- Todos os Produtos
- já
- Apesar
- Amazon
- Reconhecimento da Amazônia
- Amazon Sage Maker
- Amazon Web Services
- análise
- Aplicação
- aplicações
- APT
- arquitetura
- artificial
- inteligência artificial
- Inteligência artificial (AI)
- Ativos
- Autenticação
- disponibilidade
- disponível
- AWS
- balanceador
- MELHOR
- melhores práticas
- Blog
- impulsionar
- Caixa
- Câncer de mama
- construir
- negócio
- chamada
- cambridge
- Pode obter
- Câncer
- pesquisa sobre o câncer
- carregar
- classificação
- código
- coleção
- comentários
- Ciência da Computação
- Visão de Computador
- confiança
- Configuração
- cônsul
- Recipiente
- Containers
- contém
- continua
- custos
- Criar
- Credenciais
- Clientes
- dados,
- banco de dados
- bases de dados
- deep learning
- destruir
- detalhe
- Detecção
- desenvolvedores
- Desenvolvimento
- Dispositivos/Instrumentos
- diferente
- digital
- Digital Health
- digitalização
- Estivador
- Médicos
- down
- facilmente
- eco
- Ponto final
- Meio Ambiente
- Europa
- exemplo
- vasta experiência
- exportar
- família
- Característica
- Funcionalidades
- Figura
- Primeiro nome
- seguir
- garfo
- formato
- encontrado
- Quadro
- Gratuito
- cheio
- função
- futuro
- gerar
- geometria
- GitHub
- Dando
- Global
- Dourado
- conceder
- subsídios
- ter
- cabeça
- Saúde
- saúde
- ajudar
- SUA PARTICIPAÇÃO FAZ A DIFERENÇA
- Como funciona o dobrador de carta de canal
- Como Negociar
- HTTPS
- IAM
- Dados de identificação:
- imagem
- análise de imagem
- segmentação de imagem
- Imagiologia
- importador
- INFORMAÇÕES
- inovadores
- integral
- integração
- Inteligência
- interesse
- Internacionais
- envolvido
- IT
- Caderno Jupyter
- Rótulos
- grande
- mais recente
- de lançamento
- APRENDER
- aprendido
- aprendizagem
- Nível
- Biblioteca
- Line
- linux
- Lista
- listas
- carregar
- Localização
- aprendizado de máquina
- mapas
- Março
- médico
- imagiologia médica
- média
- Médio Oriente
- ML
- modelo
- modelagem
- modelos
- mais
- Munique
- nomes
- Navegação
- necessário
- Detecção de Objetos
- Onboarding
- Outros
- proprietário
- Patentes
- patologia
- pacientes
- atuação
- pessoal
- plataforma
- Privacidade
- Diretor
- privado
- processo
- Produção
- produtividade
- Produtos
- projeto
- projetos
- fornecer
- fornece
- público
- setor público
- publicações
- Python
- RAM
- pesquisa
- Recursos
- resposta
- Execute
- corrida
- sábio
- exploração
- Escola
- Ciência
- CIÊNCIAS
- setor
- selecionado
- Serviços
- conjunto
- contexto
- Partilhar
- Siemens
- periodo
- simples
- Tamanho
- pequeno
- So
- Soluções
- RESOLVER
- Espaço
- especializado
- divisão
- Etapa
- começo
- começado
- Estado
- Status
- armazenamento
- loja
- estudo
- suportes
- Interruptor
- sistemas
- Target
- Dados Técnicos:
- técnicas
- Equipar
- teste
- A fonte
- Através da
- tempo
- demorado
- juntos
- token
- ferramentas
- topo
- Training
- Transações
- único
- universidade
- Universidade de Cambridge
- Atualizar
- URI
- us
- USD
- valor
- versão
- visão
- W
- web
- serviços web
- Web-Based
- O Quê
- O que é a
- QUEM
- largamente
- dentro
- sem
- Atividades:
- trabalhar
- seria
- escrita
- X
- anos
- Youtube