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.

Diagrama en el que se muestra una imagen que se divide en una cuadrícula de mosaicos superpuestos.

Prerrequisitos

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 puede controlar 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.

Diagrama en el que se muestran las propuestas de objetos de imágenes y mosaicos que se combinan para formar las predicciones finales.

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