Uno spazio di ricerca di Neural Architecture Search è fondamentale per ottenere un buon rendimento. Definisce tutte le potenziali architetture o parametri 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
Forniamo inoltre i seguenti esempi di spazio di ricerca:
- Spazio di ricerca Lidar per nuvole di punti 3D
- Esempio di spazio di ricerca per la segmentazione di immagini mediche 3D con PyTorch
- Esempio di spazio di ricerca PyTorch MnasNet
Il notebook Lidar pubblica i risultati della verifica nel notebook. 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 le attività di classificazione delle immagini e di rilevamento di oggetti e si basa sull'architettura MobileNetV2.
- Lo spazio di ricerca di EfficientNetV2 viene utilizzato per le attività di rilevamento degli oggetti. EfficientNetV2 aggiunge nuove operazioni, come Fused-MBConv. Per ulteriori dettagli, consulta il documento EfficientNetV2.
- Lo spazio di ricerca NAS-FPN viene in genere utilizzato per il rilevamento di oggetti. Puoi trovare una descrizione dettagliata in questa sezione.
La famiglia di spazi di ricerca SpineNet include
spinenet
,spinenet_v2
,spinenet_mbconv
espinenet_scaling
. Questi vengono in genere utilizzati anche per il rilevamento di oggetti. Puoi trovare una descrizione dettagliata di SpineNet in questa sezione.spinenet
è lo spazio di ricerca di base di questa famiglia e offre candidati per blocchi residuali e bottleneck durante la ricerca.spinenet_v2
offre una versione più piccola dispinenet
, che può contribuire a una convergenza più rapida, offrendo solo candidati per i blocchi bottleneck durante la ricerca.spinenet_mbconv
offre una versione dispinenet
per le piattaforme mobile e utilizza i candidati per i blocchi mbconv durante la ricerca.spinenet_scaling
viene in genere utilizzato dopo aver trovato un'architettura valida utilizzando lo spazio di ricercaspinenet
per ridimensionarla in base alle esigenze di latenza. Questa ricerca viene eseguita su elementi quali 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 solitamente utilizzato dopo aver già trovato un buon modello. Puoi trovare una descrizione dettagliata di DataAugmentation in questa sezione.
Lo spazio di ricerca Lidar per i nuclidi di punti 3D mostra la ricerca end-to-end su featurizer, backbone, decodificatore e detection head.
L'esempio di spazio di ricerca per la segmentazione di immagini mediche 3D di PyTorch mostra la ricerca sull'encoder e sul decodificatore UNet.
Nella maggior parte dei casi, questi spazi di ricerca predefiniti sono sufficienti. Tuttavia, se necessario, puoi personalizzare quelle esistenti o aggiungerne una nuova come richiesto utilizzando la libreria PyGlove. Consulta il codice di esempio per specificare lo spazio di ricerca NAS-FPN.
Spazio di ricerca di MNasnet ed EfficientNetV2
Gli spazi di ricerca MNasNet ed EfficientV2 definiscono diverse opzioni di 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 diversi livelli di funzionalità per il rilevamento degli oggetti, come mostrato nella figura seguente.
Spazio di ricerca di SpineNet
Lo spazio di ricerca di SpineNet consente di cercare un'ossatura con elementi intermedi permutati in base alla scala e connessioni tra scale, ottenendo prestazioni all'avanguardia per il rilevamento di oggetti in un'unica fase su COCO con il 60% in meno di calcoli e superando le controparti ResNet-FPN del 6% in termini di AP. Di seguito sono riportate le connessioni dei livelli di backbone nell'architettura SpineNet-49 searched.
Spazio di ricerca per l'aumento dei dati
Dopo aver già cercato l'architettura migliore, puoi anche cercare un'ottima strategia di aumento dei dati. L'aumento dei dati può migliorare ulteriormente la precisione dell'architettura cercata in precedenza.
La piattaforma Neural Architecture Search fornisce spazi di ricerca per le tecniche di aumento RandAugment e AutoAugment per due attività: (a) randaugment_detection per il rilevamento degli oggetti e (b) randaugment_segmentation per la segmentazione. Scegli internamente tra un elenco di operazioni di aumento, come contrasto automatico, inclinazione o rotazione, da applicare ai dati di addestramento.
Spazio di ricerca di RandAugment
Lo spazio di ricerca di RandAugment è configurato da due parametri: (a) N
che è il numero di operazioni di aumento successive da applicare a
un'immagine e (b) M
che è l'entità di TUTTE queste operazioni. Ad esempio, l'immagine seguente mostra un esempio in cui a un'immagine vengono applicate due operazioni N=2 (Cisaillement e Contraste) con M=magnitudine diverse.
Per un determinato valore di N, l'elenco di operazioni viene scelto in modo casuale dalla banca di operazioni. La ricerca di aumento trova il valore migliore di N
e M
per il compito di addestramento in questione. La ricerca non utilizza un'attività proxy e pertanto completa i job di addestramento.
Spazio di ricerca di AutoAugment
Lo spazio di ricerca di AutoAugment ti consente di cercare choice
, magnitude
e
probability
di operazioni per ottimizzare l'addestramento del modello.
Lo spazio di ricerca di AutoAugment ti consente di cercare le scelte del criterio,
che RandAugment non supporta.