Entrenamiento de un modelo de detección de objetos pequeños con AutoML
SE APLICA A:Extensión ML de la CLI de Azure v2 (actual)SDK de Python azure-ai-ml v2 (actual)
En este artículo, aprenderá a entrenar un modelo de detección de objetos para detectar objetos pequeños en imágenes de alta resolución con aprendizaje automático automatizado en Azure Machine Learning.
Normalmente, los modelos de Computer Vision de detección de objetos funcionan bien con conjuntos de datos que tienen objetos relativamente grandes. Sin embargo, debido a las restricciones de memoria y cálculo, estos modelos tienden a tener un rendimiento inferior cuando se les asigna la tarea de detectar objetos pequeños en imágenes de alta resolución. Dado que las imágenes de alta resolución suelen ser grandes, se les cambia el tamaño antes de introducirlas en el modelo, lo que limita su capacidad para detectar objetos más pequeños, en relación con el tamaño inicial de la imagen.
Para ayudar a solucionar este problema, el aprendizaje automático automatizado admite la colocación en mosaico como parte de las funcionalidades de Computer Vision. La funcionalidad de colocación en mosaico del aprendizaje automático automatizado se basa en los conceptos del documento sobre el poder de la colocación en mosaico para la detección de objetos pequeños.
En la colocación en mosaico, cada imagen se divide en una cuadrícula de mosaicos. Los mosaicos adyacentes se superponen entre sí en dimensiones de ancho y alto. Los mosaicos se recortan del original, como se muestra en la siguiente imagen.
Prerrequisitos
Un área de trabajo de Azure Machine Learning. Para crear el área de trabajo, consulte Creación de recursos del área de trabajo.
En este artículo se supone que tiene algún conocimiento sobre cómo configurar un experimento de aprendizaje automático automatizado para tareas de Computer Vision.
Modelos admitidos
La detección de objetos pequeños mediante mosaicos es compatible con todos los modelos admitidos que admite el aprendizaje automático automatizado para imágenes para la tarea de detección de objetos.
Habilitación de la colocación en mosaico durante el entrenamiento
Para habilitar la colocación en mosaico, puede establecer el parámetro tile_grid_size
en un valor como "3x2", donde 3 es el número de mosaicos a lo largo de la dimensión de ancho y 2 es el número de mosaicos a lo largo de la dimensión de alto. Cuando este parámetro se establece en '3x2'; cada imagen se divide en una cuadrícula de 3 x 2 mosaicos. Cada mosaico se superpone con los mosaicos adyacentes, de modo que todos los objetos que se encuentran en el borde del mosaico se incluyen completamente en uno de los mosaicos. Esta superposición se controla mediante el parámetro tile_overlap_ratio
, que tiene como valor predeterminado el 25 %.
Cuando se habilita la colocación en mosaico, la imagen completa y los mosaicos generados a partir de ella se pasan a través del modelo. Estas imágenes y mosaicos se cambian de tamaño según los parámetros min_size
y max_size
antes de introducirse en el modelo. El tiempo de cálculo aumenta proporcionalmente debido al procesamiento de estos datos adicionales.
Por ejemplo, cuando el parámetro tile_grid_size
es "3x2", el tiempo de cálculo será aproximadamente siete veces mayor que cuando no se usa la colocación en mosaico.
Puede especificar el valor de tile_grid_size
en los parámetros de entrenamiento como una cadena.
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
training_parameters:
tile_grid_size: '3x2'
El valor del parámetro tile_grid_size
depende de las dimensiones de la imagen y del tamaño de los objetos que contiene. Por ejemplo, un mayor número de mosaicos sería útil cuando haya objetos más pequeños en las imágenes.
Para elegir el valor óptimo de este parámetro para el conjunto de datos, puede usar la búsqueda de hiperparámetros. Para ello, puede especificar los valores para este parámetro en el espacio de hiperparámetros.
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
search_space:
- model_name:
type: choice
values: ['fasterrcnn_resnet50_fpn']
tile_grid_size:
type: choice
values: ['2x1', '3x2', '5x3']
Colocación en mosaico durante la inferencia
Cuando se implementa un modelo entrenado con la colocación en mosaico, esta funcionalidad también se aplica durante la inferencia. El aprendizaje automático automatizado usa el valor tile_grid_size
del entrenamiento para generar los mosaicos durante la inferencia. La imagen completa y los mosaicos correspondientes se pasan por el modelo, y las propuestas de objetos de estos se combinan para obtener las predicciones finales, como en la siguiente imagen.
Nota
Es posible que el mismo objeto se detecte desde varios mosaicos. A tal efecto, se realiza la detección de duplicación para eliminar dichos duplicados.
Para realizar la detección de duplicados, se ejecuta NMS en las propuestas de los mosaicos y la imagen. Cuando se superponen varias propuestas, se elige la que tiene la puntuación más alta y las otras se descartan como duplicados. Se considera que dos propuestas se superponen cuando la intersección sobre la unión (iou) entre ellas es mayor que el parámetro tile_predictions_nms_thresh
.
También tiene la opción de habilitar la colocación en mosaico solo durante la inferencia sin hacerlo en el entrenamiento. Para ello, establezca el parámetro tile_grid_size
solo durante la inferencia, no para el entrenamiento.
Si lo hace, puede mejorar el rendimiento de algunos conjuntos de datos y no incurrirá en el costo adicional que supone la colocación en mosaico en tiempo de entrenamiento.
Hiperparámetros de la colocación en mosaico
Estos son los parámetros que puede usar para controlar la característica de colocación en mosaico.
Nombre de parámetro | Descripción | Valor predeterminado |
---|---|---|
tile_grid_size |
Tamaño de la cuadrícula que se usará para la colocación en mosaico de cada imagen. Disponible para su uso durante el entrenamiento, la validación y la inferencia. Debe pasarse como cadena en formato '3x2' .Nota: Al establecer este parámetro aumenta el tiempo de cálculo proporcionalmente, ya que el modelo procesa todos los mosaicos e imágenes. |
sin valor predeterminado |
tile_overlap_ratio |
Controla la proporción de superposición entre los mosaicos adyacentes de cada dimensión. Cuando los objetos que se encuentran en el límite del mosaico sean demasiado grandes para caber completamente en uno de los mosaicos, aumente el valor de este parámetro. Debe ser un valor flotante en [0, 1). |
0,25 |
tile_predictions_nms_thresh |
La intersección sobre el umbral de unión que se usará para realizar la supresión no máxima (nms) al combinar predicciones de mosaicos e imágenes. Disponible durante la validación y la inferencia. Cambie este parámetro si se detectan varios cuadros por objeto en las predicciones finales. Debe ser un valor flotante en [0, 1]. |
0,25 |
Cuadernos de ejemplo
Consulte el cuaderno de ejemplo de detección de objetos para obtener ejemplos de código detallados sobre cómo configurar y entrenar un modelo de detección de objetos.
Nota
Todas las imágenes de este artículo están disponibles de acuerdo con la sección de uso permitido del contrato de licencia MIT. Copyright © 2020 Roboflow, Inc.
Pasos siguientes
- Obtenga más información sobre cómo y dónde implementar un modelo.
- Para obtener definiciones y ejemplos de las métricas y los gráficos de rendimiento que se proporcionan en cada trabajo, consulte Evaluación de los resultados del experimento de aprendizaje automático automatizado.
- Tutorial: Entrenamiento de un modelo de detección de objetos con AutoML y Python.
- Vea qué hiperparámetros están disponibles para las tareas de Computer Vision.
- Obtención de predicciones con ONNX en modelos de Computer Vision desde AutoML