Hiperparâmetros para tarefas de visão computacional em aprendizado de máquina automatizado

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

Saiba quais hiperparâmetros estão disponíveis especificamente para tarefas de visão computacional em experimentos automatizados de ML.

Com suporte para tarefas de visão computacional, você pode controlar a arquitetura do modelo e varrer hiperparâmetros. Essas arquiteturas de modelo e hiperparâmetros são passados como o espaço de parâmetro para a varredura. Embora muitos dos hiperparâmetros expostos sejam agnósticos ao 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 da yolov5 arquitetura.

Nome do parâmetro Description Predefinido
validation_metric_type Método de cálculo métrico a utilizar para métricas de validação.
Deve ser none, coco, voc, ou coco_voc.
voc
validation_iou_threshold Limite de IOU para correspondência de caixa ao calcular métricas de validação.
Deve ser um flutuador na faixa [0,1, 1].
0.5
image_size Tamanho da imagem para trem e validação.
Deve ser um número inteiro positivo.

Nota: a corrida de treinamento pode entrar no CUDA OOM se o tamanho for muito grande.
640
model_size Tamanho do modelo.
Deve ser small, medium, large, ou extra_large.

Nota: a corrida de treinamento pode entrar no CUDA OOM se o tamanho do modelo for muito grande.
medium
multi_scale Habilite a imagem em várias escalas variando o tamanho da imagem em +/- 50%
Deve ser 0 ou 1.

Nota: a execução de treinamento pode entrar no CUDA OOM se não houver memória GPU suficiente.
0
box_score_threshold Durante a inferência, apenas retornam propostas com pontuação maior que box_score_threshold. A pontuação é a multiplicação da pontuação de objetividade e probabilidade de classificação.
Deve ser um flutuador na faixa [0, 1].
0.1
nms_iou_threshold Limiar de UIF usado durante a inferência em pós-processamento de supressão não máxima.
Deve ser um flutuador na faixa [0, 1].
0.5
tile_grid_size O tamanho da grade a ser usado para colocar lado a lado cada imagem.
Nota: tile_grid_size não deve ser Nenhum para habilitar a lógica de deteção de objetos pequenos
Deve ser passado como uma string no formato '3x2'. Exemplo: --tile_grid_size '3x2'
Sem padrão
tile_overlap_ratio Razão de sobreposição entre blocos adjacentes em cada dimensão.
Deve ser flutuante na faixa de [0, 1)
0.25
tile_predictions_nms_threshold O limite de UO a ser usado para executar o NMS ao mesclar previsões de blocos e imagem. Utilizado na validação/inferência.
Deve ser flutuante na faixa de [0, 1]
0.25

Esta tabela resume os hiperparâmetros específicos para, por exemplo, a segmentação durante a maskrcnn_* inferência.

Nome do parâmetro Description Predefinido
mask_pixel_score_threshold Ponto de 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 Exporte máscaras como imagens. False
image_type Tipo de imagem para exportar máscara como (as opções são jpg, png, bmp). JPG

Modelo de hiperparâmetros agnósticos

A tabela a seguir descreve os hiperparâmetros que são agnósticos ao modelo.

Nome do parâmetro Description Predefinido
number_of_epochs Número de épocas de formação.
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.
Multiclasse/multi-rótulo: 78
(exceto variantes vit:
vits16r224: 128
vitb16r224: 48
vitl16r224:10)

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

Segmentação de instâncias: 2

Nota: Os padrões são o maior tamanho de lote que pode ser usado em memória GPU de 12 GiB.
validation_batch_size Tamanho do lote de validação.
Deve ser um número inteiro positivo.
Multiclasse/multi-rótulo: 78
(exceto variantes vit:
vits16r224: 128
vitb16r224: 48
vitl16r224:10)

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

Segmentação de instâncias: 1

Nota: Os padrões são o maior tamanho de lote que pode ser usado em memória GPU de 12 GiB.
gradient_accumulation_step Acumulação de gradiente significa executar um número configurado de sem atualizar os pesos do modelo enquanto acumula os gradientes dessas etapas e, em seguida, usar os gradientes acumulados para calcular as atualizações de gradient_accumulation_step peso.
Deve ser um número inteiro positivo.
1
early_stopping Habilite a lógica de parada precoce durante o treinamento.
Deve ser 0 ou 1.
1
early_stopping_patience Número mínimo de épocas ou avaliações de validação com
Nenhuma melhoria na 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 a melhoria da métrica primária seja rastreada para interrupção antecipada.
Deve ser um número inteiro positivo.
5
learning_rate Taxa de aprendizagem inicial.
Deve ser um flutuador na faixa [0, 1].
Multiclasse: 0,01
(exceto variantes vit:
vits16r224: 0.0125
vitb16r224: 0.0125
vitl16r224: 0.001)

Multi-rótulo: 0.035
(exceto variantes vit:
vits16r224: 0.025
vitb16r224: 0.025
vitl16r224: 0.002)

Deteçã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.
Deve ser um flutuador na faixa [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.
Deve ser um flutuador na faixa [0, 1].
0,45
warmup_cosine_lr_warmup_epochs Valor das épocas de aquecimento quando o agendador de taxa de aprendizagem é warmup_cosine.
Deve ser um número inteiro positivo.
2
optimizer Tipo de otimizador.
Deve ser ou sgd, adam, adamw.
sgd
momentum Valor do momento quando o otimizador é sgd.
Deve ser um flutuador na faixa [0, 1].
0,9
weight_decay Valor de decaimento de peso quando o otimizador é sgd, adamou adamw.
Deve ser um flutuador na faixa [0, 1].
1E-4
nesterov Habilite nesterov quando o otimizador for sgd.
Deve ser 0 ou 1.
1
beta1 Valor de beta1 quando o otimizador é adam ou adamw.
Deve ser um flutuador na faixa [0, 1].
0,9
beta2 Valor de beta2 quando o otimizador é adam ou adamw.
Deve ser um flutuador na faixa [0, 1].
0.999
ams_gradient Habilite ams_gradient quando o otimizador for adam ou adamw.
Deve ser 0 ou 1.
0
evaluation_frequency Frequência para avaliar o conjunto de dados de validação para obter pontuações métricas.
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 congelar para o seu modelo. Por exemplo, passar 2 como valor para seresnext significa congelar layer0 e layer1 referindo-se às informações da camada de modelo suportada 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

Classificação de imagem (multiclasse e multi-label) hiperparâmetros específicos

A tabela a seguir resume os hiperparímetros para tarefas de classificação de imagem (multiclasse e multirótulo).

Nome do parâmetro Description Predefinido
model_name Nome do modelo a ser usado para a tarefa de classificação de imagem em mãos.

Deve ser um dos mobilenetv2, , , resnet34, resnet50, resnet101resnet152, seresnextresnest50resnest101, . vits16r224vitb16r224vitl16r224resnet18
seresnext
weighted_loss - 0 para nenhuma perda de peso.
- 1 para perda de peso com sqrt. (class_weights)
- 2 para perda de peso com class_weights.
- Deve ser 0 ou 1 ou 2.
0
validation_resize_size - Tamanho da imagem para o qual redimensionar antes de cortar para o conjunto de dados de validação.
- Deve ser um número inteiro positivo.

Observações:
- seresnext não tem um tamanho arbitrário.
- A corrida de treinamento pode entrar no CUDA OOM se o tamanho for muito grande
.
256
validation_crop_size - Tamanho de corte de imagem que é inserido em sua rede neural para conjunto de dados de validação.
- Deve ser um número inteiro positivo.

Observações:
- seresnext não tem um tamanho arbitrário.
- As variantes ViT devem ter o mesmo validation_crop_size e training_crop_size.
- A corrida de treinamento pode entrar no CUDA OOM se o tamanho for muito grande
.
224
training_crop_size - Tamanho de corte de imagem que é inserido em sua rede neural para o conjunto de dados de trem.
- Deve ser um número inteiro positivo.

Observações:
- seresnext não tem um tamanho arbitrário.
- As variantes ViT devem ter o mesmo validation_crop_size e training_crop_size.
- A corrida de treinamento pode entrar no CUDA OOM se o tamanho for muito grande
.
224

Deteção de objetos e segmentação de instância Tarefa de segmentação de hiperparâmetros específicos

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

Aviso

Esses parâmetros não são suportados com a yolov5 arquitetura. Consulte a seção de hiperparâmetros específicos do modelo para hiperparímetros yolov5 suportados.

Nome do parâmetro Description Predefinido
model_name Nome do modelo a ser usado para a tarefa de classificação de imagem em mãos.
- Para a tarefa de deteção de objetos, deve ser um dos yolov5, fasterrcnn_resnet18_fpn, fasterrcnn_resnet34_fpn, fasterrcnn_resnet50_fpn, fasterrcnn_resnet101_fpn, fasterrcnn_resnet152_fpn, retinanet_resnet50_fpn.
- Por exemplo, a tarefa de segmentação, deve ser uma das maskrcnn_resnet18_fpn, maskrcnn_resnet34_fpn, maskrcnn_resnet50_fpn, maskrcnn_resnet101_fpn, maskrcnn_resnet152_fpn
- Para a tarefa de deteção de objetos, fasterrcnn_resnet50_fpn
- Por exemplo, tarefa de segmentação, maskrcnn_resnet50_fpn
validation_metric_type Método de cálculo métrico a utilizar para métricas de validação.
Deve ser none, coco, voc, ou coco_voc.
voc
validation_iou_threshold Limite de IOU para correspondência de caixa ao calcular métricas de validação.
Deve ser um flutuador na faixa [0,1, 1].
0.5
min_size Tamanho mínimo da imagem a ser redimensionada antes de alimentá-la para o backbone.
Deve ser um número inteiro positivo.

Nota: a corrida de treinamento pode entrar no CUDA OOM se o tamanho for muito grande.
600
max_size Tamanho máximo da imagem a ser redimensionada antes de alimentá-la para o backbone.
Deve ser um número inteiro positivo.

Nota: a corrida de treinamento pode entrar no CUDA OOM se o tamanho for muito grande.
1333
box_score_threshold Durante a inferência, apenas retornam propostas com uma pontuação de classificação maior que box_score_threshold.
Deve ser um flutuador na faixa [0, 1].
0.3
nms_iou_threshold Limiar de IOU (intersecção sobre união) usado na supressão não máxima (NMS) para a cabeça de previsão. Usado durante a inferência.
Deve ser um flutuador na faixa [0, 1].
0.5
box_detections_per_image Número máximo de deteçõ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 colocar lado a lado cada imagem.
- tile_grid_size não deve ser Nenhum para habilitar a lógica de deteção de objetos pequenos.
- tile_grid_size não é suportado para tarefas de segmentação por exemplo.
Deve ser passado como uma string no formato '3x2'. Exemplo: --tile_grid_size '3x2'
Sem padrão
tile_overlap_ratio Razão de sobreposição entre blocos adjacentes em cada dimensão.
Deve ser flutuante na faixa de [0, 1)
0.25
tile_predictions_nms_threshold O limite de UO a ser usado para executar o NMS ao mesclar previsões de blocos e imagem. Utilizado na validação/inferência.
Deve ser flutuante na faixa de [0, 1]
0.25

Próximos passos