Treine um modelo de deteção de objetos pequenos com o AutoML

APLICA-SE A:Azure CLI ml extension v2 (current)Python SDK azure-ai-ml v2 (current)

Neste artigo, você aprenderá a treinar um modelo de deteção de objetos para detetar pequenos objetos em imagens de alta resolução com ML automatizado no Aprendizado de Máquina do Azure.

Normalmente, os modelos de visão computacional para deteção de objetos funcionam bem para conjuntos de dados com objetos relativamente grandes. No entanto, devido a restrições de memória e computação, esses modelos tendem a ter um desempenho inferior quando encarregados de detetar pequenos objetos em imagens de alta resolução. Como as imagens de alta resolução geralmente são grandes, elas são redimensionadas antes da entrada no modelo, o que limita sua capacidade de detetar objetos menores - em relação ao tamanho inicial da imagem.

Para ajudar com esse problema, o ML automatizado suporta mosaico como parte dos recursos de visão computacional. A capacidade de mosaico no ML automatizado baseia-se nos conceitos de The Power of Tiling for Small Object Detection.

Ao lado a lado, cada imagem é dividida em uma grade de blocos. As telhas adjacentes sobrepõem-se umas às outras em dimensões de largura e altura. Os blocos são cortados do original, conforme mostrado na imagem a seguir.

Diagrama que mostra uma imagem sendo dividida em uma grade de blocos sobrepostos.

Pré-requisitos

Modelos suportados

A deteção de objetos pequenos usando mosaicos é suportada para todos os modelos suportados pelo ML automatizado para imagens para tarefas de deteção de objetos.

Ativar mosaico durante o treinamento

Para habilitar o mosaico, você pode definir o tile_grid_size parâmetro para um valor como '3x2', onde 3 é o número de blocos ao longo da dimensão largura e 2 é o número de blocos ao longo da dimensão altura. Quando este parâmetro é definido como '3x2'; Cada imagem é dividida em uma grade de 3 x 2 blocos. Cada bloco se sobrepõe aos blocos adjacentes, de modo que todos os objetos que caem na borda do bloco são incluídos completamente em um dos blocos. Essa sobreposição é controlada pelo tile_overlap_ratio parâmetro, cujo padrão é de 25%.

Quando o mosaico está ativado, toda a imagem e os mosaicos gerados a partir dela são passados pelo modelo. Estas imagens e mosaicos são redimensionados de acordo com os min_size parâmetros e max_size antes de alimentar o modelo. O tempo de cálculo aumenta proporcionalmente devido ao processamento desses dados extras.

Por exemplo, quando o tile_grid_size parâmetro é '3x2', o tempo de cálculo seria aproximadamente sete vezes maior do que sem tiling.

Você pode especificar o valor para tile_grid_size em seus parâmetros de treinamento como uma cadeia de caracteres.

APLICA-SE A:Extensão ml da CLI do Azure v2 (atual)

training_parameters:
  tile_grid_size: '3x2'

O valor para tile_grid_size o parâmetro depende das dimensões da imagem e do tamanho dos objetos dentro da imagem. Por exemplo, um número maior de blocos seria útil quando há objetos menores nas imagens.

Para escolher o valor ideal para esse parâmetro para seu conjunto de dados, você pode usar a pesquisa de hiperparâmetros. Para fazer isso, você pode especificar uma escolha de valores para esse parâmetro em seu espaço de hiperparâmetro.

APLICA-SE A:Extensão ml da CLI do Azure v2 (atual)

search_space:
  - model_name:
      type: choice
      values: ['fasterrcnn_resnet50_fpn']
    tile_grid_size:
      type: choice
      values: ['2x1', '3x2', '5x3']

Mosaico durante a inferência

Quando um modelo treinado com mosaico é implantado, o mosaico também ocorre durante a inferência. O ML automatizado usa o tile_grid_size valor do treinamento para gerar os blocos durante a inferência. A imagem inteira e os blocos correspondentes são passados pelo modelo, e as propostas de objeto deles são mescladas para gerar previsões finais, como na imagem a seguir.

Diagrama que mostra propostas de objetos de imagem e blocos sendo mesclados para formar as previsões finais.

Nota

É possível que o mesmo objeto seja detetado a partir de vários blocos, a deteção de duplicação é feita para remover essas duplicatas.

A deteção de duplicados é feita executando o NMS nas propostas dos blocos e da imagem. Quando várias propostas se sobrepõem, a que tiver a pontuação mais alta é escolhida e outras são descartadas como duplicatas. Duas propostas são consideradas sobrepostas quando a intersecção sobre união (iou) entre elas é maior do que o tile_predictions_nms_thresh parâmetro.

Você também tem a opção de habilitar o mosaico somente durante a inferência sem habilitá-lo no treinamento. Para fazer isso, defina o parâmetro apenas durante a tile_grid_size inferência, não para treinamento.

Isso pode melhorar o desempenho de alguns conjuntos de dados e não incorrerá no custo extra que vem com o mosaico no momento do treinamento.

Hiperparâmetros de ladrilhos

A seguir estão os parâmetros que você pode usar para controlar o recurso de mosaico.

Nome do Parâmetro Description Predefinido
tile_grid_size O tamanho da grade a ser usado para colocar lado a lado cada imagem. Disponível para uso durante treinamento, validação e inferência.

Deve ser passado como uma cadeia de caracteres no '3x2' formato.

Nota: A definição deste parâmetro aumenta proporcionalmente o tempo de cálculo, uma vez que todos os mosaicos e imagens são processados pelo modelo.
sem valor padrão
tile_overlap_ratio Controla a taxa de sobreposição entre blocos adjacentes em cada dimensão. Quando os objetos que caem no limite do bloco forem muito grandes para caber completamente em um dos blocos, aumente o valor desse parâmetro para que os objetos se encaixem em pelo menos um dos blocos completamente.

Deve ser um flutuador em [0, 1].
0.25
tile_predictions_nms_thresh A interseção acima do limite de união a ser usada para fazer supressão não máxima (nms) ao mesclar previsões de blocos e imagem. Disponível durante a validação e inferência. Altere esse parâmetro se houver várias caixas detetadas por objeto nas previsões finais.

Deve ser flutuante em [0, 1].
0.25

Blocos de notas de exemplo

Consulte o bloco de anotações de exemplo de deteção de objetos para obter exemplos de código detalhados de configuração e treinamento de um modelo de deteção de objetos.

Nota

Todas as imagens neste artigo são disponibilizadas de acordo com a seção de uso permitido do contrato de licenciamento do MIT. Direitos autorais © 2020 Roboflow, Inc.

Próximos passos