Hiperparâmetros para tarefas de pesquisa visual computacional no ML automatizado

APLICA-SE A:Extensão de ML da CLI do Azure v2 (atual)SDK do Python azure-ai-ml v2 (atual)

Saiba quais hiperparâmetros estão disponíveis especificamente para as tarefas de pesquisa visual computacional nos experimentos do ML automatizado.

Com suporte a tarefas visuais computacionais, você pode controlar a arquitetura de modelo e os hiperparâmetros de varredura. Essas arquiteturas de modelo e hiperparâmetros são transmitidos como o espaço de parâmetro para a varredura. Embora muitos hiperparâmetros expostos sejam independentes do modelo, há instâncias em que os hiperparâmetros são específicos do modelo ou da tarefa.

Hiperparâmetros específicos do modelo

Esta tabela resume os hiperparâmetros específicos para a arquitetura yolov5.

Nome do parâmetro Descrição Padrão
validation_metric_type Método de computação de métrica a ser usado em métricas de validação.
Precisa ser none, coco, voc ou coco_voc.
voc
validation_iou_threshold Limite de IOU para correspondência de caixa ao computar métricas de validação.
Deve ser um float no intervalo [0.1, 1].
0,5
image_size Tamanho da imagem para treinamento e validação.
Deve ser um número inteiro positivo.

Observação: a execução de treinamento poderá entrar em CUDA OOM se o tamanho for muito grande.
640
model_size Tamanho do modelo.
Precisa ser small, medium, large ou extra_large.

Observação: a execução de treinamento poderá entrar em CUDA OOM se o tamanho do modelo for muito grande.
medium
multi_scale Habilitar imagem em várias escalas variando o tamanho da imagem por +/-50%
Precisa ser 0 ou 1.

Observação: a execução de treinamento poderá entrar em CUDA OOM se não houver memória GPU suficiente.
0
box_score_threshold Durante a inferência, retornar apenas propostas com uma pontuação maior que box_score_threshold. A pontuação é a multiplicação da pontuação de objeções e da probabilidade de classificação.
Precisa ser um float no intervalo [0, 1].
0,1
nms_iou_threshold Limite de IOU usado durante a inferência no pós-processamento de supressão não máxima.
Precisa ser um float no intervalo [0, 1].
0,5
tile_grid_size O tamanho da grade a ser usado para a divisão em blocos de cada imagem.
Observação: tile_grid_size precisa não ser None para habilitar a lógica de detecção de objeto pequeno
Deve ser passado como uma cadeia de caracteres no formato '3x2'. Exemplo: --tile_grid_size '3x2'
Sem padrão
tile_overlap_ratio Taxa de sobreposição entre blocos adjacentes em cada dimensão.
Precisa ser um float no intervalo [0, 1)
0,25
tile_predictions_nms_threshold O limite de IOU a ser usado para executar NMS durante a mescla de previsões de blocos e imagens. Usado em validação/inferência.
Precisa ser um float no intervalo [0, 1]
0,25

Esta tabela resume os hiperparâmetros específicos de maskrcnn_* para a segmentação da instância durante a inferência.

Nome do parâmetro Descrição Padrão
mask_pixel_score_threshold Corte de pontuação para considerar um pixel como parte da máscara de um objeto. 0.5
max_number_of_polygon_points Número máximo de pares de coordenadas (x, y) no polígono após a conversão de uma máscara. 100
export_as_image Exportação de máscaras como imagens. Falso
image_type Tipo de imagem para exportação da máscara como (as opções são JPG, PNG e BMP). JPG

Hiperparâmetros que independem do modelo

A tabela a seguir descreve os hiperparâmetros que independem do modelo.

Nome do parâmetro Descrição Padrão
number_of_epochs Número de épocas de treinamento.
Deve ser um número inteiro positivo.
15
(exceto yolov5: 30)
training_batch_size Tamanho do lote de treinamento.
Deve ser um número inteiro positivo.
Várias classes/vários rótulos: 78
(exceto vit-variants:
vits16r224: 128
vitb16r224: 48
vitl16r224:10)

Detecção de objetos: 2
(exceto yolov5: 16)

Segmentação de instâncias: 2

Observação: os padrões são o maior tamanho de lote que possa ser usado na memória de GPU de 12 GiB.
validation_batch_size Tamanho do lote de validação.
Deve ser um número inteiro positivo.
Várias classes/vários rótulos: 78
(exceto vit-variants:
vits16r224: 128
vitb16r224: 48
vitl16r224:10)

Detecção de objetos: 1
(exceto yolov5: 16)

Segmentação de instâncias: 1

Observação: os padrões são o maior tamanho de lote que possa ser usado na memória de GPU de 12 GiB.
gradient_accumulation_step A acumulação de gradiente significa executar um número configurado de gradient_accumulation_step sem atualizar os pesos do modelo ao acumular os gradientes dessas etapas e, em seguida, usar os gradientes acumulados para calcular as atualizações de peso.
Deve ser um número inteiro positivo.
1
early_stopping Habilitar a lógica de parada antecipada durante o treinamento.
Precisa ser 0 ou 1.
1
early_stopping_patience Número mínimo de épocas ou avaliações de validação
sem nenhuma melhoria de métrica primária antes que a execução seja interrompida.
Deve ser um número inteiro positivo.
5
early_stopping_delay Número mínimo de épocas ou avaliações de validação a aguardar
antes que o aprimoramento da métrica primária seja rastreado para parada antecipada.
Deve ser um número inteiro positivo.
5
learning_rate Taxa de aprendizagem inicial.
Precisa ser um float no intervalo [0, 1].
Várias classes: 0,01
(exceto vit-variants:
vits16r224: 0,0125
vitb16r224: 0,0125
vitl16r224: 0,001)

Vários rótulos: 0,035
(exceto vit-variants:
vits16r224: 0,025
vitb16r224: 0,025
vitl16r224: 0,002)

Detecção de objetos: 0,005
(exceto yolov5: 0.01)

Segmentação de instância: 0,005
learning_rate_scheduler Tipo de agendador de taxa de aprendizagem.
Deve ser warmup_cosine ou step.
warmup_cosine
step_lr_gamma Valor de gama quando o agendador de taxa de aprendizagem é step.
Precisa ser um float no intervalo [0, 1].
0,5
step_lr_step_size Valor do tamanho da etapa quando o agendador de taxa de aprendizagem é step.
Deve ser um número inteiro positivo.
5
warmup_cosine_lr_cycles Valor do ciclo cosseno quando o agendador de taxa de aprendizagem é warmup_cosine.
Precisa ser um float no intervalo [0, 1].
0,45
warmup_cosine_lr_warmup_epochs Valor de épocas de aquecimento quando o agendador de taxa de aprendizagem é warmup_cosine.
Deve ser um número inteiro positivo.
2
optimizer Tipo de otimizador.
Precisa ser sgd, adam ou adamw.
sgd
momentum Valor de momentum quando o otimizador é sgd.
Precisa ser um float no intervalo [0, 1].
0,9
weight_decay Valor de decaimento de peso quando o otimizador é sgdadam ou adamw.
Precisa ser um float no intervalo [0, 1].
1e-4
nesterov Habilitar nesterov quando o otimizador é sgd.
Precisa ser 0 ou 1.
1
beta1 Valor de beta1 quando o otimizador é adam ou adamw.
Precisa ser um float no intervalo [0, 1].
0,9
beta2 Valor de beta2 quando o otimizador é adam ou adamw.
Precisa ser um float no intervalo [0, 1].
0,999
ams_gradient Habilitar ams_gradient quando o otimizador é adam ou adamw.
Precisa ser 0 ou 1.
0
evaluation_frequency Frequência para avaliar o conjunto de dados de validação a fim de obter pontuações de métrica.
Deve ser um número inteiro positivo.
1
checkpoint_frequency Frequência para armazenar pontos de verificação do modelo.
Deve ser um número inteiro positivo.
Ponto de verificação na época com a melhor métrica primária na validação.
checkpoint_run_id A ID de execução do experimento que tem um ponto de verificação pré-treinado para treinamento incremental. sem padrão
layers_to_freeze Quantas camadas devem ser congeladas para seu modelo. Por exemplo, a transmissão de 2 como valor para seresnext significa congelar layer0 e layer1 em relação às informações de camada de modelo com suporte abaixo.
Deve ser um número inteiro positivo.

- 'resnet': [('conv1.', 'bn1.'), 'layer1.', 'layer2.', 'layer3.', 'layer4.']
- 'mobilenetv2': ['features.0.', 'features.1.', 'features.2.', 'features.3.', 'features.4.', 'features.5.', 'features.6.', 'features.7.', 'features.8.', 'features.9.', 'features.10.', 'features.11.', 'features.12.', 'features.13.', 'features.14.', 'features.15.', 'features.16.', 'features.17.', 'features.18.']
- 'seresnext': ['layer0.', 'layer1.', 'layer2.', 'layer3.', 'layer4.'] * 'vit': ['patch_embed', 'blocks.0.', 'blocks.1.', 'blocks.2.', 'blocks.3.', 'blocks.4.', 'blocks.5.', 'blocks.6.','blocks.7.', 'blocks.8.', 'blocks.9.', 'blocks.10.', 'blocks.11.'] * 'yolov5_backbone': ['model.0.', 'model.1.', 'model.2.', 'model.3.', 'model.4.','model.5.', 'model.6.', 'model.7.', 'model.8.', 'model.9.']
- 'resnet_backbone': ['backbone.body.conv1.', 'backbone.body.layer1.', 'backbone.body.layer2.','backbone.body.layer3.', 'backbone.body.layer4.']
sem padrão

Hiperparâmetros específicos de classificação de imagem (multiclasse e multirrótulos)

A tabela a seguir resume os hiperparâmetros para tarefas de classificação de imagem (várias classes e vários rótulos).

Nome do parâmetro Descrição Padrão
model_name Nome do modelo a ser usado para a tarefa de classificação de imagem em questão.

Deve ser um destes:mobilenetv2, resnet18, resnet34, resnet50, resnet101, resnet152, resnest50, resnest101, seresnext, vits16r224, vitb16r224, vitl16r224.
seresnext
weighted_loss – 0 para sem perda ponderada.
– 1 para perda ponderada com sqrt. (class_weights)
– 2 para perda ponderada com class_weights.
– Deve ser 0, 1 ou 2.
0
validation_resize_size – Tamanho da imagem a redimensionar antes do corte para um conjunto de dados de validação.
– Deve ser um número inteiro positivo.

Observações:
- seresnext não assume um tamanho arbitrário.
– A execução de treinamento poderá entrar em CUDA OOM se o tamanho for muito grande
.
256
validation_crop_size – Tamanho de corte da imagem que serve de entrada para sua rede neural para o conjunto de dados de validação.
– Deve ser um número inteiro positivo.

Observações:
- seresnext não assume um tamanho arbitrário.
- As ViT-variants devem ter os mesmos validation_crop_size e training_crop_size.
– A execução de treinamento poderá entrar em CUDA OOM se o tamanho for muito grande
.
224
training_crop_size – Tamanho de corte da imagem que serve de entrada para sua rede neural para o conjunto de dados de treinamento.
– Deve ser um número inteiro positivo.

Observações:
- seresnext não assume um tamanho arbitrário.
- As ViT-variants devem ter os mesmos validation_crop_size e training_crop_size.
– A execução de treinamento poderá entrar em CUDA OOM se o tamanho for muito grande
.
224

Hiperparâmetros específicos da tarefa de detecção de objetos e segmentação de instâncias

Os hiperparâmetros a seguir servem para tarefas de segmentação de instância e detecção de objetos.

Aviso

Não há suporte a esses parâmetros com a arquitetura yolov5. Consulte a seção hiperparâmetros específicos do modelo para obter osyolov5 hiperparâmetros com suporte.

Nome do parâmetro Descrição Padrão
model_name Nome do modelo a ser usado para a tarefa de classificação de imagem em questão.
– Para a tarefa de detecção de objetos, deve ser uma destas: yolov5, fasterrcnn_resnet18_fpn, fasterrcnn_resnet34_fpn, fasterrcnn_resnet50_fpn, fasterrcnn_resnet101_fpn, fasterrcnn_resnet152_fpn, retinanet_resnet50_fpn.
– Para a tarefa de segmentação de instância, deve ser uma destas maskrcnn_resnet18_fpn, maskrcnn_resnet34_fpn, maskrcnn_resnet50_fpn, maskrcnn_resnet101_fpn, maskrcnn_resnet152_fpn
– Para a tarefa de detecção de objeto, fasterrcnn_resnet50_fpn
– Para a tarefa de segmentação de instâncias, maskrcnn_resnet50_fpn
validation_metric_type Método de computação de métrica a ser usado em métricas de validação.
Precisa ser none, coco, voc ou coco_voc.
voc
validation_iou_threshold Limite de IOU para correspondência de caixa ao computar métricas de validação.
Deve ser um float no intervalo [0.1, 1].
0,5
min_size Tamanho mínimo da imagem a ser redimensionada antes de alimentar o backbone.
Deve ser um número inteiro positivo.

Observação: a execução de treinamento poderá entrar em CUDA OOM se o tamanho for muito grande.
600
max_size Tamanho máximo da imagem a ser redimensionada antes de alimentar o backbone.
Deve ser um número inteiro positivo.

Observação: a execução de treinamento poderá entrar em CUDA OOM se o tamanho for muito grande.
1333
box_score_threshold Durante a inferência, só retornar propostas com uma pontuação de classificação maior que box_score_threshold.
Precisa ser um float no intervalo [0, 1].
0.3
nms_iou_threshold Limite de IOU (interseção sobre união) usado em NMS (supressão não máxima) para o cabeçalho de previsão. Usado durante a inferência.
Precisa ser um float no intervalo [0, 1].
0,5
box_detections_per_image Número máximo de detecções por imagem, para todas as classes.
Deve ser um número inteiro positivo.
100
tile_grid_size O tamanho da grade a ser usado para a divisão em blocos de cada imagem.
- tile_grid_size não deve ser None para habilitar a lógica de detecção de objetos pequenos.
- tile_grid_size não tem suporte para tarefas de segmentação de instância.
Deve ser passado como uma cadeia de caracteres no formato '3x2'. Exemplo: --tile_grid_size '3x2'
Sem padrão
tile_overlap_ratio Taxa de sobreposição entre blocos adjacentes em cada dimensão.
Precisa ser um float no intervalo [0, 1)
0,25
tile_predictions_nms_threshold O limite de IOU a ser usado para executar NMS durante a mescla de previsões de blocos e imagens. Usado em validação/inferência.
Precisa ser um float no intervalo [0, 1]
0,25

Próximas etapas