Hiperparámetros para tareas de Computer Vision en el aprendizaje automático automatizado

SE APLICA A:Extensión ML de la CLI de Azure v2 (actual)SDK de Python azure-ai-ml v2 (actual)

Obtenga información sobre qué hiperparámetros están disponibles específicamente para las tareas de Computer Vision en experimentos de ML automatizados.

Con la compatibilidad con tareas de Computer Vision, puede controlar la arquitectura del modelo y los hiperparámetros de barrido. Estas arquitecturas de modelo y los hiperparámetros se pasan como espacio de parámetros para el barrido. Aunque muchos de los hiperparámetros expuestos son independientes del modelo, hay instancias en que los hiperparámetros son específicos de la tarea o del modelo.

Hiperparámetros específicos del modelo

En esta tabla se resumen los hiperparámetros específicos de la arquitectura yolov5.

Nombre de parámetro Descripción Valor predeterminado
validation_metric_type Método de cálculo de métricas que se usará para las métricas de validación.
Debe ser none, coco, voc, o coco_voc.
voc
validation_iou_threshold Umbral de IOU para la coincidencia de cuadros al calcular las métricas de validación.
Debe ser un valor float del intervalo [0.1, 1].
0.5
image_size Tamaño de la imagen para entrenamiento y validación.
Debe ser un entero positivo.

Nota: La ejecución del entrenamiento puede llegar a CUDA OOM si el tamaño es demasiado grande.
640
model_size Tamaño del modelo.
Debe ser small, medium, large o extra_large.

Nota: La ejecución del entrenamiento puede llegar a CUDA OOM si el tamaño del modelo es demasiado grande.
medium
multi_scale Habilitación de la imagen a escala múltiple variando el tamaño de la imagen en +/- 50 %.
Debe ser 0 o 1.

Nota: La ejecución del entrenamiento puede llegar a CUDA OOM si no hay suficiente memoria de GPU.
0
box_score_threshold Durante la inferencia, solo se devuelven propuestas con una puntuación mayor que box_score_threshold. La puntuación es la multiplicación de la puntuación de objetividad y la probabilidad de clasificación.
Debe ser un valor float en el intervalo [0, 1].
0,1
nms_iou_threshold Umbral de IOU usado durante la inferencia en el procesamiento posterior de la supresión no máxima.
Debe ser un valor float en el intervalo [0, 1].
0.5
tile_grid_size Tamaño de la cuadrícula que se usará para la colocación en mosaico de cada imagen.
Nota: tile_grid_size no debe ser None para habilitar la lógica de detección de objetos pequeños
Debe pasarse como cadena en formato "3x2". Ejemplo: --tile_grid_size '3x2'
Sin valor predeterminado
tile_overlap_ratio Proporción de superposición entre mosaicos adyacentes en cada dimensión.
Debe ser float en el intervalo de [0, 1)
0,25
tile_predictions_nms_threshold Umbral IOU que se usará para realizar NMS al combinar predicciones de mosaicos e imágenes. Se usa en la validación o inferencia.
Debe ser float en el intervalo de [0, 1]
0,25

En esta tabla se resumen los hiperparámetros específicos de maskrcnn_* para la segmentación de instancias durante la inferencia.

Nombre de parámetro Descripción Valor predeterminado
mask_pixel_score_threshold Límite de puntuación para considerar un píxel parte de la máscara de un objeto. 0.5
max_number_of_polygon_points Número máximo de pares de coordenadas (x, y) en el polígono después de la conversión a partir de una máscara. 100
export_as_image Exportación de máscaras como imágenes. Falso
image_type Tipo de imagen que se exportará como máscara (las opciones son jpg, png, bmp). JPG

Hiperparámetros independientes del modelo

En la tabla siguiente se describen los hiperparámetros que son independientes del modelo.

Nombre de parámetro Descripción Valor predeterminado
number_of_epochs Número de épocas de entrenamiento.
Debe ser un entero positivo.
15
(excepto yolov5: 30)
training_batch_size Tamaño del lote de entrenamiento.
Debe ser un entero positivo.
Multiclase/multietiqueta: 78
(excepto vit-variants:
vits16r224: 128
vitb16r224: 48
vitl16r224:10)

Detección de objetos: 2
(excepto yolov5: 16)

Segmentación de instancias: 2

Nota: Los valores predeterminados son el tamaño de lote más grande que se puede usar en la memoria de GPU de 12 GiB.
validation_batch_size Tamaño del lote de validación.
Debe ser un entero positivo.
Multiclase/multietiqueta: 78
(excepto vit-variants:
vits16r224: 128
vitb16r224: 48
vitl16r224: 10)

Detección de objetos: 1
(excepto yolov5: 16)

Segmentación de instancias: 1

Nota: Los valores predeterminados son el tamaño de lote más grande que se puede usar en la memoria de GPU de 12 GiB.
gradient_accumulation_step La acumulación de gradiente implica la ejecución de un número configurado de gradient_accumulation_step sin actualizar los pesos del modelo mientras se acumulan los gradientes de esos pasos y, a continuación, el uso de gradientes acumulados para calcular las actualizaciones de peso.
Debe ser un entero positivo.
1
early_stopping Habilite la lógica de detención temprana durante el entrenamiento.
Debe ser 0 o 1.
1
early_stopping_patience Número mínimo de épocas o evaluaciones de validación sin
ninguna mejora de métrica principal antes de que se detenga la ejecución.
Debe ser un entero positivo.
5
early_stopping_delay Número mínimo de épocas o evaluaciones de validación que se esperarán
antes de que se realice un seguimiento de la mejora de la métrica principal para la detención temprana.
Debe ser un entero positivo.
5
learning_rate Velocidad de aprendizaje inicial.
Debe ser un valor float en el intervalo [0, 1].
Varias clases: 0,01
(excepto vit-variants:
vits16r224: 0,0125
vitb16r224: 0,0125
vitl16r224: 0,001)

Varias etiquetas: 0,035
(excepto vit-variants:
vits16r224: 0,025
vitb16r224: 0,025
vitl16r224: 0,002)

Detección de objetos: 0,005
(excepto yolov5: 0,01)

Segmentación de instancias: 0,005
learning_rate_scheduler Tipo de programador de velocidad de aprendizaje.
Debe ser warmup_cosine o step.
warmup_cosine
step_lr_gamma Valor de gamma cuando el programador de velocidad de aprendizaje es step.
Debe ser un valor float en el intervalo [0, 1].
0.5
step_lr_step_size Valor del tamaño de paso cuando el programador de velocidad de aprendizaje es step.
Debe ser un entero positivo.
5
warmup_cosine_lr_cycles Valor del ciclo de coseno cuando el programador de velocidad de aprendizaje es warmup_cosine.
Debe ser un valor float en el intervalo [0, 1].
0.45
warmup_cosine_lr_warmup_epochs Valor de las épocas de warmup cuando el programador de velocidad de aprendizaje es warmup_cosine.
Debe ser un entero positivo.
2
optimizer Tipo de optimizador.
Debe ser sgd, adam, adamw.
sgd
momentum Valor de momentum cuando el optimizador es sgd.
Debe ser un valor float en el intervalo [0, 1].
0.9
weight_decay Valor de weight decay cuando el optimizador es sgd, adam o adamw.
Debe ser un valor float en el intervalo [0, 1].
1e-4
nesterov Habilite nesterov cuando el optimizador sea sgd.
Debe ser 0 o 1.
1
beta1 Valor de beta1 cuando el optimizador es adam o adamw.
Debe ser un valor float en el intervalo [0, 1].
0.9
beta2 Valor de beta2 cuando el optimizador es adam o adamw.
Debe ser un valor float en el intervalo [0, 1].
0,999
ams_gradient Habilite ams_gradient cuando el optimizador sea adam o adamw.
Debe ser 0 o 1.
0
evaluation_frequency Frecuencia para evaluar el conjunto de datos de validación para obtener puntuaciones de métricas.
Debe ser un entero positivo.
1
checkpoint_frequency Frecuencia para almacenar puntos de control del modelo.
Debe ser un entero positivo.
Punto de control en época con la mejor métrica principal en la validación.
checkpoint_run_id Identificador de ejecución del experimento que tiene un punto de control previamente entrenado para el entrenamiento incremental. sin valor predeterminado
layers_to_freeze Número de capas que se inmovilizarán para el modelo. Por ejemplo, pasar 2 como valor para seresnext significa inmovilizar layer0 y layer1 haciendo referencia a la siguiente información de capa de modelo admitida.
Debe ser un entero 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.']
sin valor predeterminado

Hiperparámetros específicos de la clasificación de imágenes (de varias clases y de varias etiquetas)

En la tabla siguiente se resumen los hiperparámetros para las tareas de clasificación de imágenes (de varias clases y de varias etiquetas).

Nombre de parámetro Descripción Valor predeterminado
model_name Nombre del modelo que se va a usar en la tarea de clasificación de imágenes.

Debe ser uno de los siguientes: mobilenetv2, resnet18, resnet34, resnet50, resnet101, resnet152, resnest50, resnest101, seresnext, vits16r224, vitb16r224, vitl16r224.
seresnext
weighted_loss - 0 para ninguna pérdida ponderada.
- 1 para pérdida ponderada con sqrt. (class_weights)
- 2 para pérdida ponderada con class_weights.
- Debe ser 0, 1 o 2.
0
validation_resize_size - Tamaño de imagen al que se va a cambiar el tamaño antes de recortar para el conjunto de datos de validación.
- Debe ser un entero positivo.

Notas:
- seresnext no toma un tamaño arbitrario.
- La ejecución del entrenamiento puede llegar a CUDA OOM si el tamaño es demasiado grande
.
256
validation_crop_size - Tamaño de recorte de imagen que se introduce en la red neuronal para el conjunto de datos de validación.
- Debe ser un entero positivo.

Notas:
- seresnext no toma un tamaño arbitrario.
- Las ViT-variants deben tener el mismo validation_crop_size y training_crop_size.
- La ejecución del entrenamiento puede llegar a CUDA OOM si el tamaño es demasiado grande
.
224
training_crop_size - Tamaño de recorte de imagen que se introduce en la red neuronal para el conjunto de datos de entrenamiento.
- Debe ser un entero positivo.

Notas:
- seresnext no toma un tamaño arbitrario.
- Las ViT-variants deben tener el mismo validation_crop_size y training_crop_size.
- La ejecución del entrenamiento puede llegar a CUDA OOM si el tamaño es demasiado grande
.
224

Hiperparámetros específicos de la tarea de detección de objetos y segmentación de instancias

Los siguientes hiperparámetros son para tareas de detección de objetos y segmentación de instancias.

Advertencia

Estos parámetros no se admiten con la arquitectura yolov5. Consulte la sección sobre hiperparámetros específicos del modelo para ver los hiperparámetros de yolov5admitidos.

Nombre de parámetro Descripción Valor predeterminado
model_name Nombre del modelo que se va a usar en la tarea de clasificación de imágenes.
- Para la tarea de detección de objetos, debe ser uno de los siguientes: yolov5, fasterrcnn_resnet18_fpn, fasterrcnn_resnet34_fpn, fasterrcnn_resnet50_fpn, fasterrcnn_resnet101_fpn, fasterrcnn_resnet152_fpn, retinanet_resnet50_fpn.
- Para la tarea de segmentación de instancias, debe ser uno de los siguientes: maskrcnn_resnet18_fpn, maskrcnn_resnet34_fpn, maskrcnn_resnet50_fpn, maskrcnn_resnet101_fpn, maskrcnn_resnet152_fpn.
- Para la tarea de detección de objetos: fasterrcnn_resnet50_fpn.
- Para la tarea de segmentación de instancias: maskrcnn_resnet50_fpn.
validation_metric_type Método de cálculo de métricas que se usará para las métricas de validación.
Debe ser none, coco, voc, o coco_voc.
voc
validation_iou_threshold Umbral de IOU para la coincidencia de cuadros al calcular las métricas de validación.
Debe ser un valor float del intervalo [0.1, 1].
0.5
min_size Tamaño mínimo de la imagen que se va a volver a escalar antes de proporcionársela a la red troncal.
Debe ser un entero positivo.

Nota: La ejecución del entrenamiento puede llegar a CUDA OOM si el tamaño es demasiado grande.
600
max_size Tamaño máximo de la imagen que se va a volver a escalar antes de proporcionársela a la red troncal.
Debe ser un entero positivo.

Nota: La ejecución del entrenamiento puede llegar a CUDA OOM si el tamaño es demasiado grande.
1333
box_score_threshold Durante la inferencia, solo se devuelven propuestas con una puntuación de clasificación mayor que box_score_threshold.
Debe ser un valor float en el intervalo [0, 1].
0,3
nms_iou_threshold Umbral de IOU (intersección sobre unión) utilizado en la supresión no máxima (NMS) para el encabezado de predicción. Se usa durante la inferencia.
Debe ser un valor float en el intervalo [0, 1].
0.5
box_detections_per_image Número máximo de detecciones por imagen, para todas las clases.
Debe ser un entero positivo.
100
tile_grid_size Tamaño de la cuadrícula que se usará para la colocación en mosaico de cada imagen.
- tile_grid_size no debe ser None para habilitar la lógica de detección de objetos pequeños.
- tile_grid_size no se admite para las tareas de segmentación de instancias.
Debe pasarse como cadena en formato "3x2". Ejemplo: --tile_grid_size '3x2'
Sin valor predeterminado
tile_overlap_ratio Proporción de superposición entre mosaicos adyacentes en cada dimensión.
Debe ser float en el intervalo de [0, 1)
0,25
tile_predictions_nms_threshold Umbral IOU que se usará para realizar NMS al combinar predicciones de mosaicos e imágenes. Se usa en la validación o inferencia.
Debe ser float en el intervalo de [0, 1]
0,25

Pasos siguientes