Rotule dados de treinamento para machine learning

TUTORIAL

Visão geral

Neste tutorial, você aprenderá a configurar um trabalho de rotulagem no Amazon SageMaker Ground Truth a fim de anotar dados de treinamento para seu modelo de machine learning (ML). 

Um conjunto de dados rotulado é fundamental para o treinamento supervisionado de um modelo de ML. Muitas organizações têm grandes conjuntos de dados, mas não possuem rótulos associados aos dados. Usando o Amazon SageMaker Ground Truth, você pode rotular facilmente os dados com a opção de usar anotadores humanos por meio do Amazon Mechanical Turk, fornecedores terceirizados ou seus próprios prestadores de serviços privados. 

Para este tutorial, você usará o SageMaker Ground Truth para rotular um conjunto de imagens de veículos, incluindo aviões, carros, balsas, helicópteros e motos. Como este tutorial utiliza um conjunto de dados não confidencial, você usará a opção Amazon Mechanical Turk.

O que você aprenderá

Neste guia, você vai:

  • Criar e configurar um trabalho de rotulagem de dados
  • Analisar os resultados do trabalho de rotulagem

Pré-requisitos

Antes de iniciar este guia, você precisará de:

  • Uma conta da AWS: caso ainda não tenha uma conta, siga o guia de conceitos básicos Como configurar o seu ambiente para obter uma breve visão geral. 

 Experiência com a AWS

Iniciante

 Tempo para a conclusão

30 minutos

 Custo para a conclusão

Consulte os preços do SageMaker para estimar o custo deste tutorial.

 Requisitos

Você deve estar conectado a uma conta da AWS.

 Serviços usados

Amazon SageMaker Ground Truth

 Data da última atualização

6 de julho de 2022

Implementação

Etapa 1: configure uma instância de notebook do Amazon SageMaker

Na barra de pesquisa do Console da AWS, insira SageMaker e, em seguida, escolha Amazon SageMaker para abrir o console do SageMaker.

No painel de navegação esquerdo, clique em “Notebook” (Bloco de anotações).  Escolha Notebook instances (Instâncias de bloco de anotações) e, em seguida, escolha Create notebook instance (Criar instância de bloco de anotações).

Na página Create notebook instance (Criar instância de bloco de anotações), na caixa Notebook instance settings (Configurações da instância de bloco de anotações), em Notebook instance name (Nome da instância de bloco de anotações), insira SageMaker-Ground-Truth-Tutorial. Para o Notebook instance type (Tipo da instância de bloco de anotações), selecione ml.t2.medium

Na seção Permissions and encryption (Permissões e criptografia), em IAM role (Perfil do IAM), escolha Create a new role (Criar um novo perfil). Na caixa de diálogo Create an IAM role (Criar um perfil do IAM), selecione Any S3 bucket (Qualquer bucket do S3) e escolha Create role (Criar perfil). Como prática recomendada, limite o acesso ao bucket do S3 a um perfil específico do IAM com as permissões mínimas necessárias em ambientes de produção. Lembre-se deste nome de perfil quando for realizar a limpeza ao final do tutorial.

O SageMaker cria o perfil AmazonSageMaker-ExecutionRole-<role-id>. Mantenha as configurações padrões para as configurações restantes e escolha Create notebook instance (Criar instância de bloco de anotações).

Na seção Notebook instances (Instâncias de bloco de anotações), a instância de bloco de anotações SageMaker-Ground-Truth-Tutorial recém-criada é exibida com um status de Pending (Pendente). O bloco de anotações estará pronto quando o Status for alterado para InService (Em serviço).

Etapa 2: crie um trabalho de rotulagem

As imagens de amostra a serem rotuladas neste tutorial estão disponíveis publicamente e foram extraídas de Caltech 101 dataset (Li, F.-F., Andreeto, M., Ranzato, M. A., & Perona, P. (2022). Caltech 101 (Version 1.0) [Data set]. CaltechDATA), que contém imagens em 101 categorias de objetos. Para minimizar o custo deste tutorial, utilize um conjunto de amostras contendo dez imagens; duas imagens de cada uma das seguintes categorias: aviões, carros, balsas, helicópteros e motos. No entanto, as etapas para iniciar um trabalho de rotulagem para um conjunto de dados maior são semelhantes as deste tutorial. O conjunto de amostra de dez imagens já está disponível no bucket sagemaker-sample-files do Amazon S3.

Nesta etapa, você utiliza sua instância de bloco de anotações do SageMaker para programar o código python que carrega as imagens de amostra do bucket sagemaker-sample-files do S3 para o bucket sagemaker-<your-Region>-<your-aws-account-id> do S3 padrão. Depois que a instância de bloco de anotações SageMaker-Ground-Truth-Tutorial alterar de status para InService (Em serviço), escolha Open Jupyter (Abrir Jupyter).

No caderno Jupyter, em New (Novo), selecione conda_python3.

Clique em Untitled.ipynb para abrir o bloco de anotações. Em uma nova célula de código no caderno Jupyter, copie e cole o código a seguir e execute a célula.

import sagemaker

sess = sagemaker.Session()
bucket = sess.default_bucket()

!aws s3 sync s3://sagemaker-sample-files/datasets/image/caltech-101/inference/ s3://{bucket}/ground-truth-demo/images/

print('Copy and paste the below link into a web browser to confirm the ten images were successfully uploaded to your bucket:')
print(f'https://s3.console.aws.amazon.com/s3/buckets/{bucket}/ground-truth-demo/images/')

print('\nWhen prompted by Sagemaker to enter the S3 location for input datasets, you can paste in the below S3 URL')

print(f's3://{bucket}/ground-truth-demo/images/')

print('\nWhen prompted by Sagemaker to Specify a new location, you can paste in the below S3 URL')

print(f's3://{bucket}/ground-truth-demo/labeled-data/')

Depois que o código for executado com êxito, abra o console do Amazon S3 e navegue até o local sagemaker-<your-Region>-<your-aws-account-id>/ground-truth-demo/images para confirmar que as dez imagens foram carregadas.

Abra o console do SageMaker. No painel de navegação esquerdo, escolha Ground Truth e, em seguida, Labeling jobs (Trabalhos de rotulagem). Em seguida, escolha Create labeling job (Criar trabalho de rotulagem).

Na página Specify job details (Especificar detalhes do trabalho), em Job overview (Visão geral do trabalho), insira vehicle-labeling-demo na caixa Job name (Nome do trabalho). Em Input data setup (Configuração de dados de entrada), selecione Automated data setup (Configuração automatizada de dados). 

Você pode usar a configuração automatizada de dados para criar arquivos de manifesto para seus trabalhos de rotulagem no console do SageMaker Ground Truth usando imagens, vídeos, quadros de vídeo, arquivos de texto (.txt) e arquivos de valores separados por vírgula (.csv) armazenados no Amazon S3. Ao usar a configuração automatizada de dados, você especifica um local do Amazon S3 no qual os dados de entrada são armazenados e especifica o tipo de dados de entrada, e o SageMaker Ground Truth procura os arquivos que correspondem a esse tipo no local especificado.

Na seção Data setup (Configuração de dados): para o S3 location for input datasets (Local do S3 para conjuntos de dados de entrada), escolha Browse S3 e, em seguida, selecione o local s3://sagemaker-<your-Region>-<your-aws-account-id>/ground-truth-demo/images/ do S3 (este é o local no qual você carregou as imagens em uma etapa anterior). Em S3 location for input datasets (Local do S3 para conjuntos de dados de entrada), selecioneSpecify a new location (Especificar um novo local). Em seguida, especifique o caminho no qual as imagens rotuladas devem ser armazenadas: s3://sagemaker-<your-Region>-<your-aws-account-id>/ground-truth-demo/labeled-data/. Em Data type, (Tipo de dados), selecione Image (Imagem). Em IAM Role (Perfil do IAM), selecione Create a new role (Criar um novo perfil). Se preferir, você pode usar os valores correspondentes da captura de tela de instrução do caderno Jupyter que executamos anteriormente.

Na notificação pop-up Create an IAM role (Criar um perfil do IAM), selecione Any S3 bucket (Qualquer bucket do S3) e, em seguida, escolha Create (Criar).

O SageMaker Ground Truth cria um perfil do IAM automaticamente e o insere na caixa IAM Role (Perfil do IAM). Escolha Complete data setup (Configuração de dados completa). A mensagem de confirmação Input data connection was successful (A conexão de dados de entrada foi bem-sucedida) será exibida.

Na seção Task type (Tipo de tarefa), para Task category (Categoria da tarefa), selecione Image (Imagem). Em Task selection (Seleção de tarefas), selecione Image Classification (Single Label) (Classificação de imagens [rótulo individual]) e, em seguida, escolha Next (Avançar).

Na página Select workers and configure tool (Selecionar prestadores de serviços e configurar ferramenta), em Worker types (Tipo de prestador de serviço), selecione Amazon Mechanical Turk.

Selecione The dataset does not contain adult content (O conjunto de dados não contém conteúdo adulto). 

Selecione You understand and agree that the Amazon Mechanical Turk workforce consists of independent contractors located worldwide and that you should not share confidential information, personal information or protected health information with this workforce (Você compreende e concorda que a mão de obra do Amazon Mechanical Turk consiste em prestadores de serviços independentes localizados em todo o mundo e que você não deve compartilhar informações confidenciais, informações pessoais ou informações de saúde protegidas com os prestadores de serviços).

 

Na seção Image classification (Single Label) labeling tool (Ferramenta de rotulagem de classificação de imagem [rótulo individual]), insira as seguintes informações:

Em brief description of task (breve descrição da tarefa), digite Please select the label that best matches the image below. You can choose only 1 label per image (Selecione o rótulo que melhor corresponde à imagem abaixo. Você pode escolher apenas um rótulo por imagem).

Em Select an option (Selecionar uma opção), insira os seguintes rótulos em caixas separadas: Airplane (Avião), Car (Carro), Ferry (Balsa), Helicopter (Helicóptero) e Motorbike (Moto).

Expanda as Additional instructions (Instruções adicionais) e anexe o seguinte texto à Etapa 3: If there are multiple vehicles in a single image, choose the most prominent vehicle in the image (Se houver vários veículos em uma única imagem, escolha o veículo mais proeminente na imagem).

Para visualizar como a ferramenta de rotulagem aparecerá para os rotuladores, escolha Preview (Pré-visualizar). 

Escolha Create (Criar).

O novo trabalho de rotulagem vehicle-labeling-demo está listado na seção Labeling jobs (Trabalhos de rotulagem) no console do SageMaker com um Status de In progress (Em progresso) e um Task type (Tipo de tarefa) de Image Classification (Single Label) (Classificação de imagens [rótulo individual]). O trabalho de rotulagem pode levar vários minutos para ser concluído. Após a rotulagem dos dados pelos prestadores de serviços públicos do Amazon Mechanical Turk, o Status muda para Complete (Concluído).

Etapa 3: analise os resultados do trabalho de rotulagem

Analisar os resultados do trabalho de rotulagem é importante para avaliar a qualidade da rotulagem e identificar se você precisa melhorar as instruções e os dados.

No painel de navegação esquerdo do console do SageMaker, escolha Labeling jobs (Trabalhos de rotulagem) e, em seguida, selecione vehicle-labeling-demo.

 

Na página de detalhes da vehicle-labeling-demo, a seção Labeled dataset objects (Objetos do conjunto de dados rotulados) exibe as miniaturas das imagens do conjunto de dados com os rótulos correspondentes como legendas.

 

Para acessar os resultados completos do trabalho de rotulagem, na seção Labeling job summary (Resumo do trabalho de rotulagem), escolha o link Output dataset location (Local de saída do conjunto de dados).

Escolha manifests (manifesto), output (saída) e output.manifest.

 

Escolha Open (Abrir) para fazer download dos resultados de rotulagem no formato linhas JSON. Linhas JSON é um formato delimitado por nova linha para armazenar dados estruturados em que cada linha é um valor JSON válido.

 

O output.manifest inclui os seguintes dados: 

source-ref: especifica o local de entrada da imagem no arquivo de manifesto de entrada. Como você selecionou Automated data setup (Configuração automatizada de dados) na Etapa 2, o Amazon SageMaker Ground Truth criou automaticamente essas entradas e o arquivo de manifesto de entrada.

vehicle-labeling-demo: especifica o rótulo de destino como um valor numérico indexado a zero. Para as cinco classes de imagem neste exemplo, os rótulos são 0, 1, 2, 3 e 4.

vehicle-labeling-demo-metadata: especifica os metadados de rotulagem, como a pontuação de confiança, o nome do trabalho, o nome da sequência de rótulos (por exemplo, avião, carro, balsa, helicóptero e moto) e se ocorreu anotação humana ou de máquina (aprendizado ativo).

Você pode analisar o arquivo output.manifest para criar um conjunto de dados rotulado para aplicações downstream, como classificação de imagem. Para obter mais informações sobre como usar o arquivo output.manifest com o Amazon SageMaker para treinar modelos, leia a publicação do blog Easily train models using datasets labeled by SageMaker Ground Truth (Treine modelos facilmente usando conjuntos de dados rotulados pelo Amazon SageMaker Ground Truth).

Etapa 4: realize a limpeza dos recursos

É uma prática recomendada excluir recursos de que você não precisa mais para não incorrer em cobranças não intencionais.

Para excluir o bucket do S3, faça o seguinte: 

  • Abra o console do Amazon S3. Na barra de navegação, escolha Buckets, sagemaker-<your-Region>-<your-account-id> e, em seguida, marque a caixa de seleção ao lado de ground-truth-demo. Em seguida, selecione Delete (Excluir). 
  • Na caixa de diálogo Delete objects (Excluir objetos), verifique se você selecionou o objeto correto para excluir e digite permanently delete (excluir permanentemente) na caixa de confirmação Permanently delete objects (Excluir objetos permanentemente).

Abra o console do AWS IAM digitando IAM na barra de pesquisa do Console da AWS e selecionando IAM. No painel de navegação esquerdo do console do IAM, escolha Roles (Perfis). Para pesquisar o perfil do IAM que você usou para este tutorial, insira Amazon na barra de pesquisa. Em Role name (Nome do perfil), selecione o perfil e escolha Delete (Excluir). Observe que esta ação requer privilégios de administrador associados à sua conta.

Para abrir o console do SageMaker, insira SageMaker na barra de pesquisa do Console da AWS e escolha Amazon SageMaker nos resultados da pesquisa. No painel esquerdo do console do SageMaker, escolha Notebook instances (Instâncias de bloco de anotações) e, em seguida, selecione SageMaker-Ground-Truth-Tutorial. Em Actions (Ações), selecione Stop (Interromper).

Depois que o status da instância for alterado para Stopped (Interrompido), escolha Actions (Ações) e, então, selecione Delete (Excluir). Escolha Delete (Excluir) no pop-up de confirmação.

Conclusão

Parabéns! Você finalizou o tutorial Rotule dados de treinamento para machine learning

Neste tutorial, você usou o Amazon SageMaker Ground Truth e o Amazon Mechanical Turk para criar um conjunto de dados de treinamento para machine learning. 

Continue sua jornada de machine learning com o Amazon SageMaker seguindo a seção de próximas etapas abaixo.

Esta página foi útil para você?

Criar um modelo de ML automaticamente

Aprenda a usar o AutoML para desenvolver modelos de ML sem programação de código.
Próximo »

Implantar um modelo treinado

Aprenda a implantar um modelo de ML treinado para inferência.
Próximo »

Encontre mais tutoriais práticos

Explore outros tutoriais de machine learning para se aprofundar.
Próximo »