Detecção de objetos - 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á.

Detecção de objetos - MXNet

O algoritmo Amazon SageMaker Object Detection - MXNet detecta e classifica objetos em imagens usando uma única rede neural profunda. Ele é um algoritmo de aprendizagem supervisionada que captura imagens como entrada e identifica todas as instâncias de objetos na cena da imagem. O objeto é categorizado em uma das classes de uma coleção especificada, com uma pontuação de confiança que pertence à classe. Sua localização e escala na imagem são indicadas por uma caixa delimitadora retangular. Ele usa a estrutura Single Shot Multibox Detector (SSD) e suporta duas redes básicas: VGG e. ResNet A rede pode ser treinada do zero ou treinada com modelos pré-treinados no ImageNetconjunto de dados.

Interface de entrada/saída para o algoritmo de Detecção de objeto

O algoritmo de detecção de SageMaker objetos 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 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 formato de entrada recomendado para os algoritmos de detecção de SageMaker objetos da Amazon é o Apache MXNet Recordio. No entanto, você também pode usar imagens brutas nos formatos .jpg ou .png. O algoritmo é compatível com o application/x-image apenas para inferência.

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

Consulte o Blocos de anotações de amostra para Detecção de objetos para obter mais detalhes sobre formatos de dados.

Treinar com o formato RecordIO

Se você usar o formato RecordIO para treinamento, especifique ambos os canais de treinamento e validação como valores para o parâmetro InputDataConfig da solicitação CreateTrainingJob. Especifique um arquivo RecordIO (.rec) no canal de treinamento e um arquivo RecordIO no canal de validação. Defina o tipo de conteúdo para ambos os canais como application/x-recordio. Um exemplo de como gerar o arquivo RecordIO pode ser encontrado no bloco de anotações de amostra de detecção de objeto. Você também pode usar as ferramentas do GluonCV do MXNet para gerar arquivos RecordIO para conjuntos de dados populares como PASCAL Visual Object Classes e Common Objects in Context (COCO).

Treinar com o formato de imagem

Se você usar o formato de imagens para treinamento, especifique os canais train, validation, train_annotation e validation_annotation como valores para o parâmetro InputDataConfig da solicitação CreateTrainingJob. Especifique os arquivos de dados de imagem individuais (.jpg ou .png) para os canais de treinamento e validação. Para dados de anotação, você pode usar o formato JSON. Especifique os arquivos .json correspondentes nos canais de train_annotation e validation_annotation. Defina o tipo de conteúdo para todos os quatro canais como image/png ou image/jpeg com base no tipo de imagem. Você também pode usar o tipo de conteúdo application/x-image quando seu conjunto de dados contiver imagens .jpg e .png. Veja a seguir um exemplo de arquivo .json.

{ "file": "your_image_directory/sample_image1.jpg", "image_size": [ { "width": 500, "height": 400, "depth": 3 } ], "annotations": [ { "class_id": 0, "left": 111, "top": 134, "width": 61, "height": 128 }, { "class_id": 0, "left": 161, "top": 250, "width": 79, "height": 143 }, { "class_id": 1, "left": 101, "top": 185, "width": 42, "height": 130 } ], "categories": [ { "class_id": 0, "name": "dog" }, { "class_id": 1, "name": "cat" } ] }

Cada imagem precisa de um arquivo .json para anotação, e o arquivo .json deve ter o mesmo nome da imagem correspondente. O nome do arquivo .json acima deve ser "sample_image1.json". Existem quatro propriedades no arquivo .json de anotação. A propriedade "file" especifica o caminho relativo do arquivo de imagem. Por exemplo, se as suas imagens de treinamento e os arquivos .json correspondentes estiverem armazenados em s3://seu_bucket/train/sample_image e s3://seu_bucket/train_annotation, especifique o caminho para seus os canais train e train_annotation como s3://seu_bucket/train e s3://seu_bucket/train_annotation, respectivamente.

No arquivo .json, o caminho relativo para uma imagem denominada sample_image1.jpg deve ser sample_image/sample_image1.jpg. A propriedade "image_size" especifica as dimensões gerais da imagem. Atualmente, o algoritmo de detecção de SageMaker objetos suporta apenas imagens de 3 canais. A propriedade "annotations" especifica as categorias e caixas delimitadoras para os objetos dentro da imagem. Cada objeto é anotado por um índice "class_id" e por quatro coordenadas da caixa delimitadora ("left", "top", "width", "height"). Os valores "left" (coordenada x) e "top" (coordenada y) representam o canto superior esquerdo da caixa delimitadora. Os valores "width" (coordenada x) e "height" (coordenada y) representam as dimensões da caixa delimitadora. A origem (0, 0) é o canto superior esquerdo da imagem inteira. Se você tiver vários objetos em uma imagem, todas as anotações deverão ser incluídas em um único arquivo .json. A propriedade "categories" armazena o mapeamento entre o índice de classe e o nome da classe. Os índices de classe devem ser numerados sucessivamente, e a numeração deve começar com 0. A propriedade "categories" é opcional para o arquivo .json de anotação

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 de arquivo de manifesto deve estar no formato linhas JSON, em que 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 a seguir, os "AttributeNames estão contidos na lista ["source-ref", "bounding-box"]:

{"source-ref": "s3://your_bucket/image1.jpg", "bounding-box":{"image_size":[{ "width": 500, "height": 400, "depth":3}], "annotations":[{"class_id": 0, "left": 111, "top": 134, "width": 61, "height": 128}, {"class_id": 5, "left": 161, "top": 250, "width": 80, "height": 50}]}, "bounding-box-metadata":{"class-map":{"0": "dog", "5": "horse"}, "type": "groundtruth/object-detection"}} {"source-ref": "s3://your_bucket/image2.jpg", "bounding-box":{"image_size":[{ "width": 400, "height": 300, "depth":3}], "annotations":[{"class_id": 1, "left": 100, "top": 120, "width": 43, "height": 78}]}, "bounding-box-metadata":{"class-map":{"1": "cat"}, "type": "groundtruth/object-detection"}}

A ordem dos "AttributeNames" nos arquivos de entrada é importante ao treinar o algoritmo Detecção de objetos. Ele aceita dados redirecionados em uma ordem específica, com image primeiro, seguido por annotations. Portanto, os AttributeNames "" neste exemplo são fornecidos "source-ref" primeiro, seguidos por"bounding-box". Ao usar Detecção de objetos com Manifesto aumentado, o valor do parâmetro RecordWrapperType deve ser definido como "RecordIO".

Para obter mais informações sobre arquivos manifestos aumentados, consulte Fornecer metadados de conjunto de dados para trabalhos de treinamento com um arquivo de Manifesto aumentado.

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 detecção de objetos só podem ser implantados com outro modelo de detecção de objetos 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 no canal do modelo devem ter as mesmas configurações para os parâmetros de entrada base_network 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.

Para obter mais informações sobre treinamento incremental e instruções sobre como usá-lo, consulte Use o treinamento incremental na Amazon SageMaker.

Recomendação de instâncias do EC2 para o algoritmo de Detecção de objeto

O algoritmo de detecção de objetos oferece suporte para famílias de instâncias de GPU P2, P3, G4dn e G5. Recomendamos o uso de instâncias de GPU com mais memória para treinamento com grandes tamanhos de lote. Você pode executar o algoritmo de detecção de objetos em configurações de várias GPUs e várias máquinas para treinamento distribuído.

Você pode usar instâncias de CPU (como C5 e M5) e de GPU (como P3 e G4dn) para inferência.

Blocos de anotações de amostra para Detecção de objetos

Para um exemplo de caderno que mostra como usar o algoritmo de detecção de SageMaker objetos para treinar e hospedar um modelo no

Conjunto de dados Caltech Birds (CUB 200 2011) usando o algoritmo Single Shot Multibox Detector, consulte Amazon SageMaker Object Detection for Bird Species. 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 SageMaker Exemplos para ver uma lista de todas as SageMaker amostras. O exemplo de bloco de anotações de detecção de objeto que usa o algoritmo de detecção de objetos está localizado 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.

Para obter mais informações sobre o algoritmo de detecção de SageMaker objetos da Amazon, consulte as seguintes postagens no blog: