Espacios de búsqueda predefinidos

El espacio de búsqueda de Neural Architecture Search es fundamental para conseguir un buen rendimiento. Define todas las arquitecturas o parámetros potenciales que se pueden explorar y buscar. Neural Architecture Search proporciona un conjunto de espacios de búsqueda predeterminados en el archivo search_spaces.py:

  • Mnasnet
  • Efficientnet_v2
  • Nasfpn
  • Spinenet
  • Spinenet_v2
  • Spinenet_mbconv
  • Spinenet_scaling
  • Randaugment_detection
  • Randaugment_segmentation
  • AutoAugmentation_detection
  • AutoAugmentation_segmentation

Además, también proporcionamos los siguientes ejemplos de espacio de búsqueda:

El cuaderno de Lidar publica los resultados de la verificación en el cuaderno. El resto del código de los espacios de búsqueda de PyTorch se debe usar solo como ejemplo y no para realizar comparativas.

Cada uno de estos espacios de búsqueda tiene un caso práctico específico:

  • El espacio de búsqueda de MNasNet se usa para tareas de clasificación de imágenes y detección de objetos, y se basa en la arquitectura MobileNetV2.
  • El espacio de búsqueda de EfficientNetV2 se usa para tareas de detección de objetos. EfficientNetV2 añade nuevas operaciones, como Fused-MBConv. Consulta más información en el artículo sobre EfficientNetV2.
  • El espacio de búsqueda de NAS-FPN se suele usar para la detección de objetos. Puedes consultar una descripción detallada en esta sección.
  • La familia de espacios de búsqueda de SpineNet incluye spinenet, spinenet_v2, spinenet_mbconv y spinenet_scaling. También se suelen usar para la detección de objetos. Puedes consultar una descripción detallada de SpineNet en esta sección.

    • spinenet es el espacio de búsqueda base de esta familia, que ofrece candidatos de bloques residuales y de cuello de botella durante la búsqueda.
    • spinenet_v2 ofrece una versión más pequeña de spinenet, que puede ayudar a que la convergencia sea más rápida, ya que solo ofrece candidatos de bloque de cuello de botella durante la búsqueda.
    • spinenet_mbconv ofrece una versión de spinenet para plataformas móviles y usa candidatos de bloque mbconv durante la búsqueda.
    • spinenet_scaling se suele usar después de encontrar una buena arquitectura usando el espacio de búsqueda spinenet para aumentar o reducir su tamaño y cumplir los requisitos de latencia. Esta búsqueda se realiza en función de aspectos como el tamaño de la imagen, el número de filtros, el tamaño del filtro y el número de repeticiones de bloques.
  • Los espacios de búsqueda RandAugment y AutoAugment te permiten buscar operaciones de aumento de datos óptimas para la detección y la segmentación, respectivamente. Nota: La ampliación de datos se suele usar después de que ya se haya buscado un buen modelo. Puedes consultar una descripción detallada de DataAugmentation en esta sección.

  • Espacio de búsqueda de Lidar para nubes de puntos 3D muestra la búsqueda de extremo a extremo en featurizer, backbone, decoder y detection head.

  • En el ejemplo de espacio de búsqueda de segmentación de imágenes médicas en 3D de PyTorch se muestra una búsqueda en el codificador y el decodificador de UNet.

La mayoría de las veces, estos espacios de búsqueda predeterminados son suficientes. Sin embargo, si es necesario, puedes personalizar los que ya tienes o añadir uno nuevo con la biblioteca PyGlove. Consulta el código de ejemplo para especificar el espacio de búsqueda de NAS-FPN.

Espacio de búsqueda de MNasnet y EfficientNetV2

Los espacios de búsqueda de MNasNet y EfficientV2 definen diferentes opciones de backbone, como ConvOps, KernelSize y ChannelSize. El backbone se puede usar para diferentes tareas, como la clasificación y la detección.

Estructura de EfficientNet.

Espacio de búsqueda de NAS-FPN

El espacio de búsqueda de NAS-FPN define el espacio de búsqueda en las capas de FPN que conectan diferentes niveles de características para la detección de objetos, tal como se muestra en la siguiente figura.

Estructura de NAS-FPN.

Espacio de búsqueda de SpineNet

El espacio de búsqueda de SpineNet permite buscar una red troncal con funciones intermedias de escala permutada y conexiones entre escalas, lo que permite lograr un rendimiento de vanguardia en la detección de objetos de una fase en COCO con un 60% menos de computación y superar a las redes ResNet-FPN en un 6 % de AP. A continuación, se muestran las conexiones de las capas de la red troncal en la arquitectura de SpineNet-49 buscada.

Estructura de SpineNet.

Espacio de búsqueda de aumento de datos

Una vez que se haya buscado la mejor arquitectura, también puedes buscar la mejor política de aumento de datos. El aumento de datos puede mejorar aún más la precisión de la arquitectura buscada anteriormente.

La plataforma Neural Architecture Search proporciona espacios de búsqueda de aumento de datos RandAugment y AutoAugment para dos tareas: (a) randaugment_detection para la detección de objetos y (b) randaugment_segmentation para la segmentación. Elige internamente entre una lista de operaciones de aumento, como el contraste automático, el cizallamiento o la rotación, que se aplicarán a los datos de entrenamiento.

Espacio de búsqueda de RandAugment

El espacio de búsqueda de RandAugment se configura con dos parámetros: a) N, que es el número de operaciones de aumento sucesivas que se aplican a una imagen, y b) M, que es la magnitud de TODAS esas operaciones. Por ejemplo, en la siguiente imagen se muestra un ejemplo en el que se aplican a una imagen dos operaciones (Cizalla y Contraste) con diferentes magnitudes.

RandAugment aplicado a una imagen.

Para un valor de N determinado, las operaciones se eligen aleatoriamente del banco de operaciones. La búsqueda de aumento encuentra los mejores valores de N y M para el trabajo de entrenamiento en cuestión. La búsqueda no usa una tarea proxy y, por lo tanto, ejecuta los trabajos de entrenamiento hasta el final.

Espacio de búsqueda de AutoAugment

El espacio de búsqueda de AutoAugment te permite buscar choice, magnitude y probability operaciones para optimizar el entrenamiento de tu modelo. El espacio de búsqueda de AutoAugment te permite buscar las opciones de la política, algo que RandAugment no admite.