Detecção de objetos - MXNet - SageMaker IA da Amazon

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

Ele detecta e classifica objetos em imagens usando uma única rede neural profunda. Ele é um algoritmo de aprendizado supervisionado 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 oferece apoio para duas redes de base: VGG e ResNet. A rede pode ser treinada do zero ou treinada com modelos que tenham sido pré-treinados no conjunto de dados do ImageNet.

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

O algoritmo de detecção de objetos do SageMaker AI permite os tipos de conteúdo RecordIO (application/x-recordio) e de imagem (image/png, image/jpeg e application/x-image) para treinamento no modo File, bem como o tipo 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 objetos do Amazon SageMaker AI é 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 melhorar a interoperabilidade com os frameworks de aprendizado profundo existentes, esse formato é diferente dos formatos de dados protobuf comumente usados por outros algoritmos do Amazon SageMaker AI.

Consulte o Cadernos 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 caderno 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 mais conhecidos 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. No momento, o algoritmo de detecção de objetos do SageMaker AI comporta apenas imagens de três 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 seguinte exemplo, 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" nesse exemplo são fornecidos com "source-ref" primeiro, seguido 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 Arquivos de Manifestos Aumentados em Trabalhos de Treinamento.

Treinamento incremental

Também é possível propagar o treinamento de um novo modelo usando os artefatos de um modelo anteriormente treinado com o SageMaker AI. Um treinamento incremental economiza tempo de treinamento quando você deseja treinar um novo modelo com dados iguais ou semelhantes. Os modelos de detecção de objetos do SageMaker AI só podem ser propagados com outro modelo de detecção de objetos integrado treinado no SageMaker AI.

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 compactados (no formato .tar.gz) processados pelo SageMaker AI. 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 Usar o treinamento incremental no Amazon SageMaker AI.

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

O algoritmo de detecção de objetos oferece apoio 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.

Cadernos de amostra para Detecção de objetos

Para ver um caderno de exemplo que mostra como usar o algoritmo de detecção de objetos do SageMaker AI 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 AI Object Detection for Bird Species. Para obter instruções sobre como criar e acessar instâncias do caderno Jupyter que você pode utilizar para executar o exemplo no SageMaker AI, consulte Instâncias de SageMaker notebook da Amazon. Depois de criar uma instância de caderno e abri-la, selecione a guia Exemplos do SageMaker AI para ver uma lista de todas os exemplos do SageMaker AI. O exemplo de caderno 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 caderno, clique em sua guia Uso e selecione Criar cópia.

Para ter mais informações sobre o algoritmo de detecção de objetos do Amazon SageMaker AI, consulte as seguintes publicações de blog: