Classificação de imagens - MXNet - Amazon SageMaker

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Classificação de imagens - MXNet

O algoritmo de classificação de SageMaker imagens da Amazon é um algoritmo de aprendizado supervisionado que oferece suporte à classificação de vários rótulos. Ele recebe uma imagem como entrada e gera um ou mais rótulos atribuídos a essa imagem. Ele usa uma rede neural convolucional que pode ser treinada do zero ou treinada com aprendizado de transferência quando um grande número de imagens de treinamento não está disponível.

O formato de entrada recomendado para os algoritmos de classificação de SageMaker imagens da Amazon é o Apache MXNet Recordio. No entanto, você também pode usar imagens brutas nos formatos .jpg ou .png. Consulte esta discussão para obter uma visão geral ampla da preparação e carregamento eficientes de dados para sistemas de machine learning.

nota

Para manter uma melhor interoperabilidade com as estruturas de aprendizado profundo existentes, isso difere dos formatos de dados protobuf comumente usados por outros algoritmos da Amazon. SageMaker

Para obter mais informações sobre as redes convolucionais, consulte:

Interface de entrada/saída para o algoritmo de classificação de imagens

O algoritmo de classificação de SageMaker imagem oferece suporte aos tipos de conteúdo recordIO (application/x-recordio) e imagem (image/pngimage/jpeg, eapplication/x-image) para treinamento no modo arquivo e suporta o tipo de conteúdo recordIO (application/x-recordio) para treinamento no modo pipe. No entanto, você também pode treinar no modo de Pipe usando arquivos de imagem (image/png, image/jpeg e application/x-image) sem criar arquivos RecordIO, usando o formato de manifesto aumentado.

O treinamento distribuído é compatível com o modo de Arquivo e o modo de Pipe. Ao usar o tipo de conteúdo RecordIO no modo de Pipe, você deve definir o S3DataDistributionType de S3DataSource como FullyReplicated. O algoritmo oferece suporte para um modelo totalmente replicado em que seus dados são copiados em cada máquina.

O algoritmo oferece suporte para image/png, image/jpeg e application/x-image para inferência.

Treinar com o formato RecordIO

Se você usar o formato RecordIO para treinamento, especifique os canais train e validation como valores para o parâmetro InputDataConfig da solicitação CreateTrainingJob. Especifique um arquivo RecordIO (.rec) no canal train e um arquivo RecordIO no canal validation. Defina o tipo de conteúdo para ambos os canais como application/x-recordio.

Treinar com o formato de imagem

Se você usar o formato de imagens para treinamento, especifique os canais train, validation, train_lst e validation_lst como valores para o parâmetro InputDataConfig da solicitação CreateTrainingJob. Especifique dados de imagem individuais (arquivos .jpg ou .png) para os canais train e validation. Especifique um arquivo .lst em cada um dos canais train_lst e validation_lst. Defina o tipo de conteúdo para os quatro canais como application/x-image.

nota

SageMaker lê os dados de treinamento e validação separadamente de diferentes canais, portanto, você deve armazenar os dados de treinamento e validação em pastas diferentes.

Um arquivo .lst é um arquivo separado por tabulação com três colunas que contém uma lista de arquivos de imagem. A primeira coluna especifica o índice de imagens; a segunda, o índice de rótulos de classe da imagem; e a terceira, o caminho relativo do arquivo de imagem. O índice de imagens na primeira coluna deve ser exclusivo em todas as imagens. O conjunto dos índices de rótulos de classe é numerado sucessivamente, e a numeração deve começar com 0. Por exemplo, 0 para a classe de cães, 1 para a classe de gatos, e assim por diante para as classes adicionais.

Este é um exemplo de um arquivo .lst:

5 1 your_image_directory/train_img_dog1.jpg 1000 0 your_image_directory/train_img_cat1.jpg 22 1 your_image_directory/train_img_dog2.jpg

Por exemplo, se as imagens de treinamento estiverem armazenadas em s3://<your_bucket>/train/class_dog, s3://<your_bucket>/train/class_cat e assim por diante, especifique o caminho para o canal train como s3://<your_bucket>/train, que é o diretório de nível superior dos seus dados. No arquivo .lst, especifique o caminho relativo de um arquivo individual chamado train_image_dog1.jpg no diretório de classes class_dog como class_dog/train_image_dog1.jpg. Também é possível armazenar todos os seus arquivos de imagem em um subdiretório dentro do diretório train. Nesse caso, use esse subdiretório para o caminho relativo. Por exemplo, s3://<your_bucket>/train/your_image_directory.

Treinar com o formato de imagem de manifesto aumentado

O formato de manifesto aumentado permite que você faça treinamentos no modo de Pipe usando arquivos de imagem, sem precisar criar arquivos RecordIO. Você precisa especificar ambos os canais de treinamento e de validação como valores para o parâmetro InputDataConfig da solicitação CreateTrainingJob. Ao usar esse formato, é necessário gerar um arquivo de manifesto do S3 contendo a lista de imagens e suas anotações correspondentes. O formato do arquivo de manifesto deve estar no formato JSONLinhas, no qual cada linha representa uma amostra. As imagens são especificadas usando a tag 'source-ref', que aponta para a localização do S3 da imagem. As anotações são fornecidas sob o valor do parâmetro "AttributeNames", conforme especificado na solicitação CreateTrainingJob. Elas também podem conter metadados adicionais sob a tag metadata, mas estas são ignoradas pelo algoritmo. No exemplo abaixo, os "AttributeNames" estão contidos na lista de referências de imagem e anotação ["source-ref", "class"]. O valor de rótulo correspondente é "0" para a primeira imagem e “1” para a segunda imagem:

{"source-ref":"s3://image/filename1.jpg", "class":"0"} {"source-ref":"s3://image/filename2.jpg", "class":"1", "class-metadata": {"class-name": "cat", "type" : "groundtruth/image-classification"}}

A ordem dos arquivos "AttributeNames" de entrada é importante ao treinar o ImageClassification algoritmo. Ele aceita dados redirecionados em uma ordem específica, com image primeiro, seguido por label. Portanto, os AttributeNames "" neste exemplo são fornecidos "source-ref" primeiro, seguidos por"class". Ao usar o ImageClassification algoritmo com o Manifesto Aumentado, o valor do RecordWrapperType parâmetro deve ser"RecordIO".

O treinamento com vários rótulos também é suportado pela especificação de uma JSON matriz de valores. O hiperparâmetro num_classes deve ser definido para corresponder ao número total de classes. Existem dois formatos de rótulo válidos: multi-hot e class-id.

No formato multi-hot, cada rótulo é um vetor codificado multi-hot de todas as classes, em que cada classe leva o valor de 0 ou de 1. No exemplo a seguir, existem três classes. A primeira imagem é rotulada com as classes 0 e 2, enquanto a segunda imagem é rotulada apenas com a classe 2:

{"image-ref": "s3://amzn-s3-demo-bucket/sample01/image1.jpg", "class": "[1, 0, 1]"} {"image-ref": "s3://amzn-s3-demo-bucket/sample02/image2.jpg", "class": "[0, 0, 1]"}

No formato class-id, cada rótulo é uma lista dos IDs de classe, de (0, num_classes), que se aplicam ao ponto de dados. Em vez disso, o exemplo anterior seria parecido com isto:

{"image-ref": "s3://amzn-s3-demo-bucket/sample01/image1.jpg", "class": "[0, 2]"} {"image-ref": "s3://amzn-s3-demo-bucket/sample02/image2.jpg", "class": "[2]"}

O formato multi-hot é o padrão, mas pode ser definido explicitamente no tipo de conteúdo com o label-format parâmetro: "application/x-recordio; label-format=multi-hot". O formato class-id, que é o formato gerado por GroundTruth, deve ser definido explicitamente: "application/x-recordio; label-format=class-id".

Para obter mais informações sobre arquivos manifestos aumentados, consulte Arquivos de manifesto aumentados para trabalhos de treinamento.

Treinamento incremental

Você também pode semear o treinamento de um novo modelo com os artefatos de um modelo com SageMaker o qual você treinou anteriormente. O treinamento incremental economiza tempo de treinamento quando você deseja treinar um novo modelo com dados iguais ou similares. SageMaker os modelos de classificação de imagens só podem ser semeados com outro modelo de classificação de imagem incorporado treinado SageMaker.

Para usar um modelo pré-treinado, na solicitação CreateTrainingJob, especifique ChannelName como "modelo" no parâmetro InputDataConfig. Defina o ContentType para o canal do modelo como application/x-sagemaker-model. Os hiperparâmetros de entrada do novo modelo e do modelo pré-treinado que você transfere por upload para o canal do modelo devem ter as mesmas configurações para os parâmetros de entrada num_layers, image_shape e num_classes. Esses parâmetros definem a arquitetura da rede. Para o arquivo de modelo pré-treinado, use os artefatos do modelo compactado (no formato.tar.gz) produzidos por. SageMaker Você pode usar os formatos RecordIO ou de imagem para dados de entrada.

Inferência com o algoritmo de classificação de imagens

Os modelos gerados podem ser hospedados para inferência e oferecem suporte aos formatos de imagem .jpg e .png codificados como image/png, image/jpeg e content-type application/x-image. A imagem de entrada é redimensionada automaticamente. A saída são os valores de probabilidade para todas as classes codificadas em JSON formato ou em formato de texto de JSON linhas para transformação em lote. O modelo de classificação de imagens processa uma única imagem por solicitação e, portanto, gera somente uma linha no formato JSON ou JSON Linhas. Veja a seguir um exemplo de uma resposta no formato JSON Linhas:

accept: application/jsonlines {"prediction": [prob_0, prob_1, prob_2, prob_3, ...]}

Para obter mais detalhes sobre treinamento e inferência, consulte as instâncias de bloco de anotações de amostra de classificação de imagens mencionadas na introdução.

EC2Recomendação de instância para o algoritmo de classificação de imagens

Para classificação de imagens, oferecemos suporte às instâncias P2, P3, G4dn e G5. Recomendamos usar GPU instâncias com mais memória para treinamento com lotes grandes. Você também pode executar o algoritmo em configurações de várias GPU e várias máquinas para treinamento distribuído. As instâncias CPU (como C4) e GPU (P2, P3, G4dn ou G5) podem ser usadas para inferência.

Blocos de anotações de amostra de Classificação de imagens

Para um notebook de amostra que usa o algoritmo de classificação de SageMaker imagens, consulte Criar e registrar um modelo de classificação de MXNet imagens por meio de SageMaker pipelines. Para obter instruções sobre como criar e acessar instâncias do notebook Jupyter que você pode usar para executar o exemplo SageMaker, consulte. Instâncias do Amazon SageMaker Notebook Depois de criar uma instância do notebook e abri-la, selecione a guia SageMakerExemplos para ver uma lista de todas as SageMaker amostras. Os exemplos de blocos de anotações de classificação de imagens estão localizados na seção Introdução aos algoritmos da Amazon. Para abrir um bloco de anotações, clique em sua guia Uso e selecione Criar cópia.