Uno spazio di ricerca di Neural Architecture Search è fondamentale per ottenere buone prestazioni. Definisce tutte le architetture o i parametri
potenziali da esplorare e cercare. Neural Architecture Search fornisce un insieme di spazi di ricerca predefiniti nel file search_spaces.py
:
Mnasnet
Efficientnet_v2
Nasfpn
Spinenet
Spinenet_v2
Spinenet_mbconv
Spinenet_scaling
Randaugment_detection
Randaugment_segmentation
AutoAugmentation_detection
AutoAugmentation_segmentation
Inoltre, forniamo anche i seguenti esempi di spazi di ricerca:
- Spazio di ricerca Lidar per nuvole di punti 3D
- Esempio di spazio di ricerca di segmentazione dell'immagine medica 3D con PyTorch
- Esempio di spazio di ricerca PyTorch MnasNet
Il blocco note Lidar pubblica i risultati della verifica nel blocco note. Il resto del codice degli spazi di ricerca di PyTorch deve essere utilizzato solo come esempio e non per il benchmarking.
Ciascuno di questi spazi di ricerca ha un caso d'uso specifico:
- Lo spazio di ricerca MNasNet viene utilizzato per attività di classificazione delle immagini e rilevamento di oggetti e si basa sull'architettura MobileNetV2.
- Lo spazio di ricerca EfficientNetV2 viene utilizzato per le attività di rilevamento di oggetti. EfficientNetV2 aggiunge nuove operazioni, ad esempio Fused-MBConv. Per ulteriori dettagli, consulta l'articolo su EfficientNetV2.
- Lo spazio di ricerca NAS-FPN viene generalmente utilizzato per il rilevamento degli oggetti. Puoi trovare una descrizione dettagliata in questa sezione.
La famiglia di spazi di ricerca SpineNet include
spinenet
,spinenet_v2
,spinenet_mbconv
espinenet_scaling
. In genere vengono utilizzati anche per il rilevamento di oggetti. In questa sezione puoi trovare una descrizione dettagliata di SpineNet.spinenet
è lo spazio di ricerca di base di questa famiglia, che offre sia candidati di blocco residui che collo di bottiglia durante la ricerca.spinenet_v2
offre una versione più piccola dispinenet
, che può aiutare a una convergenza più rapida, offrendo solo candidati di blocco col collo di bottiglia durante la ricerca.spinenet_mbconv
offre una versione dispinenet
per le piattaforme mobile e utilizza i candidati di blocco mbconv durante la ricerca.spinenet_scaling
viene in genere utilizzato dopo aver trovato una buona architettura utilizzando lo spazio di ricercaspinenet
per fare lo scale up o lo scale down in modo da soddisfare i requisiti di latenza. Questa ricerca viene eseguita per selezionare dimensioni delle immagini, numero di filtri, dimensioni dei filtri e numero di ripetizioni dei blocchi.
Gli spazi di ricerca RandAugment e AutoAugment ti consentono di cercare operazioni di aumento dei dati ottimali, rispettivamente, per il rilevamento e la segmentazione. Nota: l'aumento dei dati viene in genere utilizzato dopo aver già cercato un modello valido. Una descrizione dettagliata di DataAugmentation è disponibile in questa sezione.
Lo spazio di ricerca Lidar per le nuvole di punti 3D mostra la ricerca end-to-end su funzionalità, backbone, decoder e rilevamento.
Esempio di spazio di ricerca di segmentazione dell'immagine medica 3D di PyTorch mostra la ricerca su encoder e decoder UNet.
Nella maggior parte dei casi, questi spazi di ricerca predefiniti sono sufficienti. Tuttavia, se necessario, puoi personalizzare questi elementi esistenti o aggiungerne uno nuovo, se necessario, utilizzando la libreria PyGlove. Vedi il codice di esempio per specificare lo spazio di ricerca NAS-FPN.
Spazio di ricerca MNasnet ed EfficientNetV2
Gli spazi di ricerca MNasNet ed EfficientV2 definiscono diverse opzioni di creazione in backbone
come ConvOps
, KernelSize
e ChannelSize
. backbone
può essere
utilizzato per diverse attività come la classificazione e il rilevamento.
Spazio di ricerca NAS-FPN
Lo spazio di ricerca NAS-FPN definisce lo spazio di ricerca nei livelli FPN che collegano i diversi livelli di caratteristiche per il rilevamento degli oggetti, come mostrato nella figura seguente.
Spazio di ricerca SpineNet
Lo spazio di ricerca di SpineNet consente di cercare un backbone con funzionalità intermedie e connessioni trasversali con scalabilità orizzontale, ottenendo prestazioni all'avanguardia di rilevamento di oggetti monofase su COCO con il 60% di calcolo in meno e offre prestazioni superiori del 6% rispetto alle controparti ResNet-FPN. Di seguito sono riportate le connessioni dei livelli backbone nell'architettura SpineNet-49 in cui è stata eseguita la ricerca.
Spazio di ricerca per l'aumento dei dati
Dopo aver già cercato la migliore architettura, puoi anche cercare il criterio di aumento dei dati migliore. L'aumento dei dati può migliorare ulteriormente la precisione dell'architettura precedentemente cercata.
La piattaforma di ricerca Neural Architecture Search fornisce spazi di ricerca di potenziamento con RandAugment e AutoAugment per due attività: (a) randaugment_detection per il rilevamento di oggetti e (b) randaugment_segmentation per la segmentazione. Sceglie internamente tra un elenco di operazioni di aumento, come contrasto automatico, taglio o rotazione, da applicare ai dati di addestramento.
Spazio di ricerca RandAugment
Lo spazio di ricerca di RandAugment è configurato da due parametri: (a) N
, ovvero il numero di operazioni di aumento successive da applicare a un'immagine e (b) M
, che è la grandezza di TUTTE queste operazioni. La seguente immagine mostra un esempio in cui a un'immagine vengono applicate N=2 operazioni (Taglio e contrasto) con magnitudo M=diversa.
Per un determinato valore di N, l'elenco delle operazioni viene scelto in modo casuale dalla banca operativa. La ricerca di incremento rileva il valore migliore di N
e M
per il job di addestramento in corso. La ricerca non utilizza un'attività proxy e, pertanto, esegue i job di addestramento fino alla fine.
Aumento automatico dello spazio di ricerca
Lo spazio di ricerca AutoAugment ti consente di cercare choice
, magnitude
e probability
delle operazioni per ottimizzare l'addestramento del modello.
Lo spazio di ricerca AutoAugment ti consente di cercare le scelte del criterio, che non è supportato da RandAugment.