Preparar um pequeno modelo de deteção de objetos com AutoML

APLICA-SE A: SDK python azure-ai-ml v2 (atual)

Neste artigo, irá aprender a preparar um modelo de deteção de objetos para detetar objetos pequenos em imagens de alta resolução com ML automatizado no Azure Machine Learning.

Normalmente, os modelos de imagem digitalizada para deteção de objetos funcionam bem para conjuntos de dados com objetos relativamente grandes. No entanto, devido à memória e às restrições computacionais, estes modelos tendem a ser pouco executados quando são incumbidos de detetar pequenos objetos em imagens de alta resolução. Uma vez que as imagens de alta resolução são normalmente grandes, são redimensionadas antes da entrada no modelo, o que limita a capacidade de detetar objetos mais pequenos em relação ao tamanho inicial da imagem.

Para ajudar com este problema, o ML automatizado suporta o til como parte das capacidades de imagem digitalizada. A capacidade de til no ML automatizado baseia-se nos conceitos em O Poder do Til para a Deteção de Objetos Pequenos.

Ao fazer mosaicos, cada imagem é dividida numa grelha de mosaicos. Os mosaicos adjacentes sobrepõem-se entre si em dimensões de largura e altura. Os mosaicos são recortados do original, conforme mostrado na imagem seguinte.

Diagrama que mostra uma imagem a ser dividida numa grelha de mosaicos sobrepostos.

Pré-requisitos

Modelos suportados

A deteção de objetos pequenos através de til é suportada para todos os modelos suportados pelo ML Automatizado para imagens para a tarefa de deteção de objetos.

Ativar o mosaico durante a preparação

Para ativar o mosaico, pode definir o tile_grid_size parâmetro para um valor como "3x2"; em que 3 é o número de mosaicos ao longo da dimensão de largura e 2 é o número de mosaicos ao longo da dimensão de altura. Quando este parâmetro está definido como '3x2', cada imagem é dividida numa grelha de 3 x 2 mosaicos. Cada mosaico sobrepõe-se aos mosaicos adjacentes, para que todos os objetos que caiam no limite do mosaico sejam incluídos completamente num dos mosaicos. Esta sobreposição pode ser controlada pelo tile_overlap_ratio parâmetro , que é predefinido como 25%.

Quando o mosaico está ativado, toda a imagem e os mosaicos gerados a partir da mesma são transmitidos através do modelo. Estas imagens e mosaicos são redimensionados de acordo com os min_size parâmetros e max_size antes de serem alimentados para o modelo. O tempo de computação aumenta proporcionalmente devido ao processamento destes dados adicionais.

Por exemplo, quando o tile_grid_size parâmetro é "3x2", o tempo de computação seria aproximadamente sete vezes maior do que sem til.

Pode especificar o valor para tile_grid_size nos parâmetros de preparação como uma cadeia.

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

training_parameters:
  tile_grid_size: '3x2'

O valor do tile_grid_size parâmetro depende das dimensões da imagem e do tamanho dos objetos na imagem. Por exemplo, um maior número de mosaicos seria útil quando existem objetos mais pequenos nas imagens.

Para escolher o valor ideal para este parâmetro para o conjunto de dados, pode utilizar a pesquisa de hiperparâmetros. Para tal, pode especificar uma escolha de valores para este parâmetro no seu espaço de hiperparâmetros.

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

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

Mosaicos durante a inferência

Quando um modelo preparado com til é implementado, o til também ocorre durante a inferência. O ML automatizado utiliza o tile_grid_size valor da preparação para gerar os mosaicos durante a inferência. Toda a imagem e os mosaicos correspondentes são transmitidos através do modelo e as propostas de objeto das mesmas são intercaladas para exportar predições finais, como na imagem seguinte.

Diagrama que mostra as propostas de objetos da imagem e os mosaicos a serem intercalados para formar as predições finais.

Nota

É possível que o mesmo objeto seja detetado a partir de vários mosaicos. A deteção de duplicação é efetuada para remover esses duplicados.

A deteção de duplicados é efetuada ao executar o NMS nas propostas dos mosaicos e da imagem. Quando várias propostas se sobrepõem, a que tem a classificação mais alta é escolhida e outras são eliminadas como duplicados. Considera-se que duas propostas se sobrepõem quando a intersecção entre as mesmas é maior do que o tile_predictions_nms_thresh parâmetro .

Também tem a opção de ativar o til apenas durante a inferência sem a ativar na preparação. Para tal, defina o parâmetro apenas durante a tile_grid_size inferência, não para preparação.

Ao fazê-lo, poderá melhorar o desempenho de alguns conjuntos de dados e não incorrerá no custo adicional fornecido com o til no momento da preparação.

Hiperparâmetros de mosaico

Seguem-se os parâmetros que pode utilizar para controlar a funcionalidade de til.

Nome do Parâmetro Description Predefinição
tile_grid_size O tamanho da grelha a utilizar para tilar cada imagem. Disponível para utilização durante a preparação, validação e inferência.

Deve ser transmitida como uma cadeia de carateres no '3x2' formato .

Nota: definir este parâmetro aumenta proporcionalmente o tempo de computação, uma vez que todos os mosaicos e imagens são processados pelo modelo.
sem valor predefinido
tile_overlap_ratio Controla a relação de sobreposição entre mosaicos adjacentes em cada dimensão. Quando os objetos que se inserem no limite do mosaico forem demasiado grandes para caberem completamente num dos mosaicos, aumente o valor deste parâmetro para que os objetos se encaixem em, pelo menos, um dos mosaicos completamente.

Tem de ser um carro alegórico em [0, 1).
0,25
tile_predictions_nms_thresh A interseção acima do limiar de união a utilizar para efetuar supressões não máximas (nms) ao unir predições de mosaicos e imagens. Disponível durante a validação e inferência. Altere este parâmetro se forem detetadas várias caixas por objeto nas predições finais.

Tem de estar a flutuar [0, 1].
0,25

Blocos de notas de exemplo

Veja o bloco de notas de exemplo de deteção de objetos para obter exemplos de código detalhados sobre como configurar e preparar um modelo de deteção de objetos.

Nota

Todas as imagens neste artigo são disponibilizadas de acordo com a secção de utilização permitida do contrato de licenciamento do MIT. Copyright © 2020 Roboflow, Inc.

Passos seguintes