Spazi di ricerca predefiniti

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:

  • 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:

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, e spinenet_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_v2 offre una versione più piccola di spinenet, che può aiutare a una convergenza più rapida, offrendo solo candidati di blocchi collo di bottiglia durante la ricerca.
    • spinenet_mbconv offre una versione di spinenet per le piattaforme mobile e utilizza candidati di blocchi mbconv durante la ricerca.
    • spinenet_scaling viene in genere utilizzato dopo aver trovato una buona architettura utilizzando lo spazio di ricerca spinenet per 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.

La struttura di EfficientNet.

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.

La struttura di NAS-FPN.

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.

La struttura di SpineNet.

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.

RandAugment applicato a un'immagine.

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.