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.
Pré-requisitos
Uma área de trabalho do Azure Machine Learning. Para criar o espaço de trabalho, consulte Criar recursos do espaço de trabalho.
Este artigo pressupõe alguma familiaridade com como configurar um experimento de aprendizado de máquina automatizado para tarefas de visão computacional.
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: Azure CLI ml extension 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: Azure CLI ml extension 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.
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
- Saiba mais sobre como e onde implantar um modelo.
- Para obter definições e exemplos dos gráficos e métricas de desempenho fornecidos para cada trabalho, consulte Avaliar resultados de experimentos de aprendizado de máquina automatizados.
- Tutorial: Treine um modelo de deteção de objetos com AutoML e Python.
- Veja quais hiperparâmetros estão disponíveis para tarefas de visão computacional.
- Faça previsões com ONNX em modelos de visão computacional do AutoML