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
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:
-
Aprendizado residual profundo para reconhecimento de imagem
Kaiming He, et al., IEEE Conferência de 2016 sobre visão computacional e reconhecimento de padrões
Tópicos
- Interface de entrada/saída para o algoritmo de classificação de imagens
- EC2Recomendação de instância para o algoritmo de classificação de imagens
- Blocos de anotações de amostra de Classificação de imagens
- Como funciona a classificação de imagens
- Hiperparâmetros de Classificação de imagens
- Ajustar um modelo de classificação de imagens
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/png
image/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'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
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