Spazi di ricerca predefiniti

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:

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 e spinenet_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 di spinenet, 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 di spinenet 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 ricerca spinenet 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.

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 i diversi livelli di caratteristiche per il rilevamento degli oggetti, come mostrato nella figura seguente.

La struttura di NAS-FPN.

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.

La struttura di SpineNet.

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.

RandAugment applicato a un'immagine.

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.