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á.
Algoritmo de segmentação semântica
O algoritmo de segmentação semântica do SageMaker AI oferece uma abordagem refinada em nível de pixel para o desenvolvimento de aplicações de visão computacional. Ele marca cada pixel em uma imagem com um rótulo de classe de um conjunto predefinido de classes. A marcação é fundamental para a compreensão de cenas, o que é crítico para um número crescente de aplicativos de visão computacional, como veículos autônomos, diagnósticos de imagens médicas e detecção de robôs.
Para comparação, o Classificação de imagens - MXNet do SageMaker AI é um algoritmo de aprendizado supervisionado que analisa apenas imagens inteiras, classificando-as em uma das várias categorias de saída. O Detecção de objetos - MXNet é um algoritmo de aprendizagem supervisionada que detecta e classifica todas as instâncias de um objeto em uma imagem. Ele indica a localização e a escala de cada objeto na imagem com uma caixa delimitadora retangular.
Como o algoritmo de segmentação semântica classifica cada pixel em uma imagem, ele também fornece informações sobre as formas dos objetos contidos na imagem. A saída de segmentação é representada como uma imagem em tons de cinza, chamada de máscara de segmentação. Uma máscara de segmentação é uma imagem em tons de cinza com a mesma forma da imagem de entrada.
O algoritmo de segmentação semântica do SageMaker AI é criado por meio do framework MXNet Gluon e do kit de ferramentas Gluon CV
Cada um dos três algoritmos tem dois componentes distintos:
-
A estrutura (ou codificador)—Uma rede que produz mapas de ativação confiáveis de recursos.
-
O decodificador—Uma rede que constrói a máscara de segmentação a partir dos mapas de ativação codificados.
Você também tem uma opção de backbones para os algoritmos FCN, PSP e DeepLabV3: ResNet50 or ResNet101
Para implantar o modelo treinado por inferência, use o serviço de hospedagem do SageMaker AI. Durante a inferência, você pode solicitar a máscara de segmentação como uma imagem PNG ou como um conjunto de probabilidades para cada classe para cada pixel. Você pode usar essas máscaras como parte de um pipeline maior que inclui processamento adicional de imagens posteriores ou de outros aplicativos.
Tópicos
Blocos de anotações de amostra de segmentação semântica
Para ver um exemplo de caderno Jupyter que usa o algoritmo de segmentação semântica do SageMaker AI para treinar um modelo e implantá-lo para realizar inferências, consulte o exemplo de segmentação semântica
Para ver uma lista de todos os exemplos do SageMaker AI, crie e abra uma instância de caderno e escolha a guia Exemplos do SageMaker AI. Os blocos de anotações de segmentação semântica estão localizados em Introdução aos algoritmos da Amazon. Para abrir um caderno, escolha a guia Uso e depois escolha Criar cópia.
Interface de entrada/saída para o algoritmo de segmentação semântica
A segmentação semântica do SageMaker AI espera que o conjunto de dados de treinamento do cliente esteja no Amazon Simple Storage Service (Amazon S3)train e outro para validation usando quatro diretórios, dois para imagens e dois para anotações. Espera-se que as anotações sejam imagens PNG não compactadas. O conjunto de dados também pode ter um mapa de rótulos que descreve como os mapeamentos de anotações são estabelecidos. Caso contrário, o algoritmo usa um padrão. Ele também oferece suporte para o formato de imagem de manifesto aumentado (application/x-image) para treinamento no modo de entrada Pipe diretamente do Amazon S3. Para inferência, um endpoint aceita imagens com um tipo de conteúdo image/jpeg.
Como funciona o treinamento
Os dados de treinamento são divididos em quatro diretórios: train, train_annotation, validation e validation_annotation. Existe um canal para cada um desses diretórios. Também espera-se que o conjunto de dados tenha um arquivo label_map.json por canal para train_annotation e validation_annotation, respectivamente. Se você não fornecer esses arquivos JSON, o SageMaker AI fornecerá o mapa de rótulos definido padrão.
O conjunto de dados que especifica esses arquivos deve ser semelhante ao seguinte exemplo:
s3://bucket_name | |- train | | - 0000.jpg | - coffee.jpg |- validation | | - 00a0.jpg | - bananna.jpg |- train_annotation | | - 0000.png | - coffee.png |- validation_annotation | | - 00a0.png | - bananna.png |- label_map | - train_label_map.json | - validation_label_map.json
Cada imagem JPG nos diretórios de treinamento e validação tem uma imagem de rótulo PNG correspondente com o mesmo nome nos diretórios train_annotation e validation_annotation. Essa convenção de nomenclatura ajuda o algoritmo a associar um rótulo à sua imagem correspondente durante o treinamento. Os canais train, train_annotation, validation e validation_annotation são obrigatórios. As anotações são imagens PNG de canal único. O formato funciona desde que os metadados (modos) na imagem ajudem o algoritmo a ler as imagens da anotação em um número inteiro não assinado de 8 bits de canal único. Para obter mais informações sobre nosso suporte para modos, consulte a documentação da Biblioteca de imagens PythonP true color de 8 bits de pixel.
A imagem codificada é um número inteiro simples de 8 bits ao usar modos. Para obter desse mapeamento um mapa de um rótulo, o algoritmo usa um arquivo de mapeamento por canal, chamado mapa de rótulos. O mapa de rótulos é usado para mapear os valores na imagem com índices de rótulos reais. No mapa de rótulos padrão, que é fornecido por padrão, se você não fornecer um, o valor de pixels em uma matriz de anotação (imagem) indexará diretamente o rótulo. Essas imagens podem ser arquivos PNG em escala de cinza ou arquivos PNG indexados de 8 bits. O arquivo de mapa de rótulos para o caso padrão sem escala é o seguinte:
{ "scale": "1" }
Para fornecer um certo contraste para visualização, alguns softwares de anotação dimensionam as imagens de rótulo em uma quantidade constante. Para isso, o algoritmo de segmentação semântica do SageMaker AI oferece uma opção de reajuste de escala para reduzir a escala verticalmente dos valores para valores de rótulos reais. Quando a redução da escala não converte o valor em um número inteiro apropriado, o algoritmo assume como padrão o maior número inteiro menor que ou igual ao valor da escala. O código a seguir mostra como definir o valor de escala para redimensionar os valores dos rótulos:
{ "scale": "3" }
O exemplo a seguir mostra como esse valor "scale" é usado para redimensionar os valores encoded_label da imagem de entrada anotação quando eles são mapeados para os valores mapped_label a serem usados no treinamento. Os valores dos rótulos na imagem de anotação de entrada são 0, 3, 6, com escala 3 e, portanto, são mapeados para 0, 1, 2 para treinamento:
encoded_label = [0, 3, 6] mapped_label = [0, 1, 2]
Em alguns casos, pode ser necessário especificar um mapeamento de cores específico para cada classe. Use a opção de mapa no mapeamento de rótulos, conforme mostrado no seguinte exemplo de um arquivo label_map:
{ "map": { "0": 5, "1": 0, "2": 2 } }
Esse mapeamento de rótulo para este exemplo é:
encoded_label = [0, 5, 2] mapped_label = [1, 0, 2]
Com mapeamentos de rótulos, você pode usar diferentes sistemas de anotação e softwares de anotação para obter dados sem muito pré-processamento. É possível fornecer um mapa de rótulos por canal. Os arquivos de um mapa de rótulos no canal label_map devem seguir as convenções de nomenclatura para a estrutura de quatro diretórios. Se você não fornecer um mapa de rótulos, o algoritmo assumirá uma escala de 1 (o padrão).
Treinando com o formato 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. O arquivo manifesto aumentado contém objetos de dados e deve estar no formato JSON LinesCreateTrainingJob. Cada linha no manifesto é uma entrada contendo o URI do Amazon S3 para a imagem e o URI para a imagem de anotação.
Cada objeto JSON no arquivo de manifesto deve conter uma chave source-ref. A chave source-ref deve conter o valor do URI do Amazon S3 para a imagem. Os rótulos são fornecidos sob o valor do parâmetro AttributeNames, conforme especificado na solicitação CreateTrainingJob. Elas também podem conter metadados adicionais sob a tag de metadados, mas estas são ignoradas pelo algoritmo. No exemplo abaixo, AttributeNames estão contidOs na lista de imagem e referências de anotação ["source-ref", "city-streets-ref"]. Esses nomes devem ter -ref anexada a eles. Ao usar o algoritmo Segmentação Semântica com Manifesto Aumentado, o valor do parâmetro RecordWrapperType deve ser "RecordIO" e o valor do parâmetro ContentType deve ser application/x-recordio.
{"source-ref": "S3 bucket location", "city-streets-ref": "S3 bucket location", "city-streets-metadata": {"job-name": "label-city-streets", }}
Para obter mais informações sobre arquivos manifestos aumentados, consulte Arquivos de Manifestos Aumentados em Trabalhos de Treinamento.
Treinamento incremental
Você também pode propagar o treinamento de um novo modelo com um modelo anteriormente treinado com o SageMaker AI. Esse treinamento incremental economiza tempo de treinamento quando você deseja treinar um novo modelo com dados iguais ou semelhantes. No momento, só é possível usar o treinamento incremental em modelos treinados com a segmentação semântica integrada do SageMaker AI.
Para usar seu próprio modelo pré-treinado, especifique ChannelName como "modelo" no InputDataConfig para a solicitação CreateTrainingJob. Defina o ContentType para o canal do modelo como application/x-sagemaker-model. Os parâmetros de entrada backbone, algorithm, crop_size e num_classes que definem a arquitetura de rede devem ser especificados de forma consistente nos hiperparâmetros de entrada do novo modelo e no modelo pré-treinado que você transfere por upload no canal do modelo. Para o arquivo de modelo pré-treinado, é possível usar os artefatos compactados (.tar.gz) de saídas do SageMaker AI. Você só pode usar formatos de imagem para dados de entrada. Para obter mais informações sobre treinamento incremental e instruções sobre como usá-lo, consulte Usar o treinamento incremental no Amazon SageMaker AI.
Produzir inferências
Para consultar um modelo treinado que é implantado em um endpoint, você precisa fornecer uma imagem e um AcceptType que represente o tipo de saída necessária. O endpoint usa imagens JPEG com um tipo de conteúdo image/jpeg. Se você solicitar um AcceptType de image/png, o algoritmo gerará um arquivo PNG com uma máscara de segmentação no mesmo formato que os rótulos. Se você solicitar um tipo aceito de application/x-recordio-protobuf, o algoritmo retornará probabilidades de classe codificadas no formato recordio-protobuf. O último formato produz um tensor 3D em que a terceira dimensão é do mesmo tamanho que o número de classes. Esse componente representa a probabilidade de cada rótulo de classe para cada pixel.
Recomendação de instâncias do EC2 para o algoritmo de Segmentação semântica
Só é possível usar o algoritmo de segmentação semântica do SageMaker AI em instâncias de GPU para treinamento, e recomendamos usar instâncias de GPU com mais memória para treinamento com tamanhos grandes de lote. O algoritmo pode ser treinado usando instâncias P2, P3, G4dn ou G5 em configurações de máquina única.
Para inferência, você pode usar instâncias de CPU (como C5 e M5) e instâncias de GPU (como P3 e G4dn) ou ambas. Para ter informações sobre os tipos de instância que oferecem combinações variadas de CPU, GPU, memória e capacidade de rede para inferência, consulte os tipos de instância de ML do Amazon SageMaker AI