Spazi di ricerca predefiniti

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:

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 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 per blocchi residuali e bottleneck durante la ricerca.
    • spinenet_v2 offre una versione più piccola di spinenet, che può contribuire a una convergenza più rapida, offrendo solo candidati per i blocchi bottleneck durante la ricerca.
    • spinenet_mbconv offre una versione di spinenet 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 ricerca spinenet 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.

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 degli oggetti, come mostrato nella figura seguente.

La struttura di NAS-FPN.

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.

La struttura di SpineNet.

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.

RandAugment applicato a un'immagine.

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.