Uno spazio di ricerca di Agent Platform Neural Architecture Search è fondamentale per ottenere un buon rendimento.
Definisce tutte le potenziali architetture o i parametri da esplorare e cercare. Agent Platform Neural Architecture Search
fornisce un insieme di spazi di ricerca predefiniti nel
search_spaces.py
file:
MnasnetEfficientnet_v2NasfpnSpinenetSpinenet_v2Spinenet_mbconvSpinenet_scalingRandaugment_detectionRandaugment_segmentationAutoAugmentation_detectionAutoAugmentation_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 per la segmentazione di immagini mediche 3D 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 PyTorch deve essere utilizzato solo come esempio e non per il benchmarking.
Ognuno 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 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, come Fused-MBConv. Per ulteriori dettagli, consulta l' articolo 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 di blocchi residui e collo di bottiglia durante la ricerca.spinenet_v2offre una versione più piccola dispinenet, che può aiutare a una convergenza più rapida, offrendo solo candidati di blocchi collo di bottiglia durante la ricerca.spinenet_mbconvoffre una versione dispinenetper le piattaforme mobile e utilizza candidati di blocchi mbconv durante la ricerca.spinenet_scalingviene in genere utilizzato dopo aver trovato una buona architettura utilizzando lo spazio di ricercaspinenetper aumentarla o ridurla in base ai requisiti di latenza. Questa ricerca viene eseguita su elementi come le dimensioni dell'immagine, il numero di filtri, le dimensioni del filtro e il numero di ripetizioni dei blocchi.
Gli spazi di ricerca RandAugment e AutoAugment consentono di cercare le 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 buon modello. Puoi trovare una descrizione dettagliata di DataAugmentation in questa sezione.
Lo spazio di ricerca Lidar per nuvole di punti 3D mostra la ricerca end-to-end su featurizer, backbone, decoder e head di rilevamento.
L'esempio di spazio di ricerca per la segmentazione di immagini mediche 3D PyTorch mostra la ricerca su encoder UNet e decoder UNet.
Nella maggior parte dei casi, questi spazi di ricerca predefiniti sono sufficienti. Tuttavia, se necessario, puoi personalizzare quelli esistenti o aggiungerne uno nuovo in base alle esigenze utilizzando la libreria PyGlove. Vedi l'esempio codice 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 di backbone, come ConvOps, KernelSize e ChannelSize. Il 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 di oggetti, come mostrato nella figura seguente.

Spazio di ricerca SpineNet
Lo spazio di ricerca SpineNet consente di cercare un backbone con funzionalità intermedie con permutazione di scala e connessioni cross-scale, ottenendo prestazioni allo stato dell'arte del rilevamento di oggetti a una fase su COCO con il 60% di calcoli in meno e superando le controparti ResNet-FPN del 6% AP. Di seguito sono riportate le connessioni dei livelli backbone nell'architettura SpineNet-49 cercata.

Spazio di ricerca per l'aumento dei dati
Dopo aver già cercato l'architettura migliore, puoi anche cercare una policy di aumento dei dati ottimale. L'aumento dei dati può migliorare ulteriormente l'accuratezza dell'architettura cercata in precedenza.
Agent Platform Neural Architecture Search fornisce spazi di ricerca per l'aumento RandAugment e AutoAugment per due attività: (a) randaugment_detection per il rilevamento di oggetti e (b) randaugment_segmentation per la segmentazione. Sceglie internamente da un elenco di operazioni di aumento, come contrasto automatico, distorsione o rotazione, da applicare ai dati di addestramento.
Spazio di ricerca RandAugment
Lo spazio di ricerca RandAugment è configurato da due parametri: (a) N, ovvero il numero di operazioni di aumento successive da applicare a un'immagine, e (b) M, ovvero la magnitudo di TUTTE queste operazioni. Ad esempio, l'immagine seguente mostra un esempio in cui vengono applicate a un'immagine N=2 operazioni (distorsione e contrasto) con M=magnitudo diverse.

Per un determinato valore di N, l'elenco delle operazioni viene scelto in modo casuale dalla banca delle operazioni. La ricerca di aumento trova il valore migliore di N e M per il job di addestramento in questione. La ricerca non utilizza un'attività proxy e pertanto esegue i job di addestramento fino alla fine.
Spazio di ricerca AutoAugment
Lo spazio di ricerca AutoAugment consente di cercare choice, magnitude e probability delle operazioni per ottimizzare l'addestramento del modello.
Lo spazio di ricerca AutoAugment consente di cercare le scelte della policy, che RandAugment non supporta.