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:
- Espacio de búsqueda de Lidar para nubes de puntos 3D
- Ejemplo de espacio de búsqueda de segmentación de imágenes médicas en 3D de PyTorch
- Ejemplo de espacio de búsqueda de MnasNet de PyTorch
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
yspinenet_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 despinenet
, 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 despinenet
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úsquedaspinenet
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.
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.
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.
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.
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.