Un espace de recherche Neural Architecture Search est essentiel pour obtenir de bonnes performances. Il définit tous les paramètres et architectures potentiels à explorer et à rechercher. Neural Architecture Search fournit un ensemble d'espaces de recherche par défaut dans le fichier search_spaces.py
:
Mnasnet
Efficientnet_v2
Nasfpn
Spinenet
Spinenet_v2
Spinenet_mbconv
Spinenet_scaling
Randaugment_detection
Randaugment_segmentation
AutoAugmentation_detection
AutoAugmentation_segmentation
Nous proposons également les exemples d'espace de recherche suivants :
- Espace de recherche Lidar pour les nuages de points 3D
- Exemple d'espace de recherche de segmentation d'image médicale 3D PyTorch
- Exemple d'espace de recherche MnasNet PyTorch
Le notebook Lidar publie les résultats de validation dans le notebook. Le reste du code des espaces de recherche PyTorch ne doit être utilisé qu'à titre d'exemple et non pour l'analyse comparative.
Chacun de ces espaces de recherche a un cas d'utilisation spécifique :
- L'espace de recherche MNasNet est utilisé pour les tâches de classification d'images et de détection d'objets. Il est basé sur l'architecture MobileNetV2.
- L'espace de recherche EfficientNetV2 est utilisé pour les tâches de détection d'objets. EfficientNetV2 ajoute de nouvelles opérations, telles que Fused-MBConv. Pour en savoir plus, consultez l'article EfficientNetV2.
- L'espace de recherche NAS-FPN est généralement utilisé pour la détection d'objets. Vous trouverez une description détaillée dans cette section.
La famille SpineNet inclut les espaces de recherche
spinenet
,spinenet_v2
,spinenet_mbconv
etspinenet_scaling
. Ces espaces sont généralement eux aussi utilisés pour la détection d'objets. Vous trouverez une description détaillée de SpineNet dans cette section.spinenet
est l'espace de recherche de base de cette famille. Il propose à la fois des candidats de blocs résiduels et de goulots d'étranglement lors de la recherche.spinenet_v2
propose une version plus petite despinenet
, qui peut aider à accélérer la convergence en ne proposant que des candidats de blocs de goulots d'étranglement lors de la recherche.spinenet_mbconv
propose une version despinenet
pour les plates-formes mobiles et utilise les candidats de blocs mbconv lors de la recherche.spinenet_scaling
est généralement utilisé après avoir trouvé une bonne architecture à l'aide de l'espace de recherchespinenet
afin de l'adapter à vos exigences en termes de latence. Cette recherche est effectuée en fonction de facteurs tels que la taille d'image, le nombre de filtres, la taille du filtre et le nombre de blocs répétés.
Les espaces de recherche RandAugment et AutoAugment permettent de rechercher des opérations optimales d'augmentation des données, respectivement pour la détection et la segmentation. Remarque : L'augmentation des données est généralement utilisée après avoir recherché un modèle approprié. Vous trouverez une description détaillée de DataAugmentation dans cette section.
L'espace de recherche Lidar pour les nuages de points 3D affiche la recherche de bout en bout sur le caractériseur, le réseau backbone, le décodeur et la tête de détection.
L'exemple d'espace de recherche de segmentation d'image médicale 3D PyTorch affiche la recherche sur l'encodeur et le décodeur UNet.
La plupart du temps, ces espaces de recherche par défaut suffisent. Toutefois, vous pouvez si nécessaire les personnaliser ou en ajouter selon vos besoins à l'aide de la bibliothèque PyGlove. Consultez l'exemple de code pour spécifier l'espace de recherche NAS-FPN.
Espaces de recherche MNasnet et EfficientNetV2
Les espaces de recherche MNasNet et EfficientV2 définissent différentes options de compilation backbone
, telles que ConvOps
, KernelSize
et ChannelSize
. Le réseau backbone
peut être utilisé pour différentes tâches telles que la classification et la détection.
Espace de recherche NAS-FPN
L'espace de recherche NAS-FPN définit l'espace de recherche dans les couches FPN qui relient différents niveaux de caractéristiques pour la détection d'objets, comme illustré dans la figure suivante.
Espace de recherche SpineNet
L'espace de recherche SpineNet permet de rechercher un réseau backbone doté de caractéristiques intermédiaires transposées à l'échelle. Vous obtenez ainsi des performances optimales pour une détection d'objets en une seule phase sur COCO, avec 60 % de calculs en moins, surpassant ainsi les équivalents ResNet-FPN avec une précision moyenne de 6 % supérieure. Vous trouverez ci-dessous les connexions des couches backbone dans l'architecture SpineNet-49 recherchée.
Espace de recherche pour l'augmentation des données
Une fois que vous avez recherché la meilleure architecture, vous pouvez également rechercher la meilleure stratégie d'augmentation des données. L'augmentation des données peut améliorer la précision de l'architecture précédemment recherchée.
La plate-forme Neural Architecture Search fournit des espaces de recherche pour l'augmentation, RandAugment et AutoAugment, ciblant deux tâches : (a) randaugment_detection pour la détection d'objets et (b) randaugment_segmentation pour la segmentation. Elle choisit en interne une liste d'opérations d'augmentation telles que le contraste automatique, la suppression ou la rotation à appliquer aux données d'entraînement.
Espace de recherche RandAugment
L'espace de recherche RandAugment est configuré par deux paramètres : (a) N
qui correspond au nombre d'opérations d'augmentation successives à appliquer à une image et (b) M
qui correspond à la magnitude de toutes ces opérations. Par exemple, l'image suivante montre un exemple dans lequel N=2 opérations (suppression et contraste) avec différentes M=magnitude sont appliquées à une image.
Pour une valeur donnée de N, la liste des opérations est sélectionnée de manière aléatoire dans la banque des opérations. La recherche d'augmentation recherche la meilleure valeur de N
et de M
pour la tâche d'entraînement en cours. La recherche n'utilise pas de tâche de proxy et exécute donc les tâches d'entraînement à la fin.
Espace de recherche AutoAugment
L'espace de recherche AutoAugment vous permet de rechercher des opérations choice
, magnitude
et probability
pour optimiser l'entraînement de votre modèle.
L'espace de recherche AutoAugment vous permet de rechercher les choix de la stratégie, non compatibles avec RandAugment.