Il viaggio di modernizzazione di TorchVision – Memorie di uno sviluppatore TorchVision – 3 PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Il viaggio di Modernizing TorchVision – Memorie di uno sviluppatore TorchVision – 3

Il viaggio di Modernizing TorchVision – Memorie di uno sviluppatore TorchVision – 3

È passato un po' di tempo dall'ultima volta che ho pubblicato una nuova voce nelle memorie di TorchVision serie. Pensavo, ho già condiviso notizie sul blog ufficiale PyTorch e su Twitter, ho pensato che sarebbe stata una buona idea parlare di più di quello che è successo nell'ultima versione di TorchVision (v0.12), cosa uscirà nella prossima (v0.13) e quali sono i nostri piani per il 2022H2. Il mio obiettivo è andare oltre la fornitura di una panoramica delle nuove funzionalità e piuttosto fornire approfondimenti su dove vogliamo portare il progetto nei prossimi mesi.

TorchVision v0.12 è stata una versione considerevole con un duplice obiettivo: a) aggiornare le nostre politiche di deprecazione e di contribuzione dei modelli per migliorare la trasparenza e attirare più contributori della comunità e b) raddoppiare i nostri sforzi di modernizzazione aggiungendo nuove architetture di modelli, set di dati e tecniche ML popolari.

Aggiornamento delle nostre politiche

La chiave per un progetto open source di successo è mantenere una comunità sana e attiva che contribuisca ad esso e lo porti avanti. Pertanto un obiettivo importante per il nostro team è aumentare il numero di contributi della comunità, con la visione a lungo termine di consentire alla comunità di contribuire con grandi funzionalità (nuovi modelli, tecniche ML, ecc.) oltre ai consueti miglioramenti incrementali (correzioni di bug/documenti). , piccole funzionalità, ecc.).

Storicamente, anche se la comunità lo era desideroso per fornire tali funzionalità, il nostro team ha esitato ad accettarle. Il principale ostacolo è stata la mancanza di un contributo concreto del modello e di una politica di deprecazione. Per risolvere questo problema, Joao Gomes ha collaborato con la community per redigere e pubblicare il nostro primo linee guida per la contribuzione del modello che fornisce chiarezza sul processo di contributo di nuove architetture, pesi pre-addestrati e funzionalità che richiedono l'addestramento del modello. Inoltre, Nicolas Hug ha collaborato con gli sviluppatori core di PyTorch per formulare e adottare un calcestruzzo politica di deprezzamento.

Le suddette modifiche hanno avuto effetti positivi immediati sul progetto. La nuova politica di contribuzione ci ha aiutato a ricevere numerosi contributi dalla community per funzionalità di grandi dimensioni (maggiori dettagli di seguito) e la chiara politica di deprecazione ci ha permesso di ripulire la nostra base di codice garantendo al tempo stesso che TorchVision offra forti garanzie di compatibilità con le versioni precedenti. Il nostro team è molto motivato a continuare a lavorare con gli sviluppatori open source, i team di ricerca e i creatori di librerie a valle per mantenere TorchVision pertinente e aggiornato. Se hai feedback, commenti o richieste di funzionalità, per favore contattarci a noi.

Modernizzare TorchVision

Non è un segreto che per le ultime uscite il ns bersaglio era aggiungere a TorchVision tutti gli aumenti, le perdite, i livelli, le utilità di formazione e le nuove architetture necessarie in modo che i nostri utenti possano riprodurre facilmente i risultati SOTA utilizzando PyTorch. TorchVision v0.12 ha continuato su questa strada:

  • I nostri collaboratori della community rockstar, Hu Ye e Zhiqiang Wang, hanno contribuito al CFSL architettura che è un modello di rilevamento degli oggetti a una fase.

  • Nicolas Hug ha aggiunto il supporto del flusso ottico in TorchVision aggiungendo il file ZATTERA architettura.

  • Yiwen Song ha aggiunto il supporto per Trasformatore di visione (ViT) e ho aggiunto il ConvNeXt architettura insieme a pesi pre-addestrati migliorati.

  • Finalmente con il Aiuto della nostra comunità, abbiamo aggiunto 14 nuova classificazione ed 5 nuovo flusso ottico set di dati.

  • Come al solito, la versione è arrivata con numerosi miglioramenti minori, correzioni di bug e miglioramenti alla documentazione. Per vedere tutte le nuove funzionalità e l'elenco dei nostri contributori, controlla il note sulla versione v0.12.

TorchVision v0.13 è proprio dietro l'angolo, con il rilascio previsto all'inizio di giugno. È una versione molto importante con un numero significativo di nuove funzionalità e grandi miglioramenti dell'API.

Concludere le modernizzazioni e colmare il divario rispetto a SOTA

Stiamo continuando il nostro percorso di ammodernamento della biblioteca aggiungendo le primitive necessarie, le architetture dei modelli e le utilità delle ricette per produrre risultati SOTA per le attività chiave della visione artificiale:

  • Con l'aiuto di Victor Fomin, ho aggiunto importanti tecniche di Data Augmentation mancanti come AugMix, Jitter su larga scala ecc. Queste tecniche ci hanno permesso di colmare il divario rispetto a SOTA e produrre pesi migliori (vedi sotto).

  • Con l'aiuto di Aditya Oke, Hu Ye, Yassine Alouini e Abhijit Deo, abbiamo aggiunto importanti elementi costitutivi comuni come il DropBlock strato, il MLP blocco, il cIoU & dIoU perdita ecc. Alla fine ho lavorato con Shen Li per risolvere un problema di vecchia data su PyTorch SyncBatchNorm livello che ha influenzato i modelli di rilevamento.

  • Hu Ye con il supporto di Joao Gomes ha aggiunto Trasformatore Swin insieme a pesi pre-allenati migliorati. Ho aggiunto il EfficientNetV2 architettura e diverse ottimizzazioni architettoniche post-articolo sull'implementazione di RetinaNet, FasterRCNN e MaskRCNN.

  • Come ho discusso in precedenza sul blog PyTorch, abbiamo compiuto sforzi significativi per migliorare i nostri pesi pre-allenati creando un sistema migliorato ricetta di allenamento. Ciò ci ha permesso di migliorare la precisione dei nostri Modelli di classificazione di 3 punti di precisione, ottenendo nuovi SOTA per varie architetture. Uno sforzo simile è stato compiuto per Rilevamento e segmentazione, dove abbiamo migliorato la precisione dei modelli in media di oltre 8.1 mAP. Infine Yosua Michael M ha lavorato con Laura Gustafson, Mannat Singhand e Aaron Adcock per aggiungere supporto MALLOPPO, FESTONE, una serie di nuovi pesi preaddestrati all'avanguardia e altamente accurati per ViT e RegNet.

Nuova API di supporto multi-peso

Come io precedentemente discusso sul blog PyTorch, TorchVision ha esteso il suo meccanismo di creazione di modelli esistente per supportare più pesi pre-addestrati. La nuova API è completamente retrocompatibile, consente di istanziare modelli con pesi diversi e fornisce meccanismi per ottenere metadati utili (come categorie, numero di parametri, metriche, ecc.) e trasformazioni di inferenza pre-elaborazione del modello. C'è un feedback dedicato problema su Github per aiutarci a stirare i nostri eventuali bordi irregolari.

Documentazione rinnovata

Nicolas Hug ha guidato gli sforzi di ristrutturazione del documentazione del modello di TorchVision. La nuova struttura è in grado di sfruttare le funzionalità provenienti dall'API Multi-weight Support per offrire una migliore documentazione per i pesi pre-addestrati e il loro utilizzo nella libreria. Un grande ringraziamento ai membri della nostra comunità per aiutandoci documentare tutte le architetture in tempo.

Sebbene la nostra tabella di marcia dettagliata per il 2022H2 non sia ancora finalizzata, ecco alcuni progetti chiave su cui stiamo attualmente pianificando di lavorare:

  • Stiamo lavorando a stretto contatto con Haoqi Fan e Christoph Feichtenhofer di Video PyTorch, per aggiungere il Trasformatore di visione multiscala migliorato (MViTv2) a TorchVision.

  • Philip Meier e Nicolas Hug stanno lavorando su una versione migliorata del API dei set di dati (v2) che utilizza TorchData e tubi dati. Anche Philip Meier, Victor Fomin e io stiamo lavorando per estendere il nostro Trasforma l'API (v2) per supportare non solo le immagini ma anche i riquadri di delimitazione, le maschere di segmentazione ecc.

  • Infine, la community ci sta aiutando a mantenere TorchVision aggiornato e pertinente aggiungendo architetture e tecniche popolari. Lezwon Castelino sta attualmente lavorando con Victor Fomin per aggiungere il SimpleCopyPaste aumento. Hu Ye sta attualmente lavorando per aggiungere il file Architettura DeTR.

Se desideri essere coinvolto nel progetto, dai un'occhiata al nostro buoni primi numeri e la Cercasi assistente elenchi. Se sei un veterano esperto di PyTorch/Computer Vision e desideri contribuire, abbiamo diversi progetti candidati per nuovi Operatori, perdite, potenziamenti ed modelli.

Spero che tu abbia trovato l'articolo interessante. Se vuoi metterti in contatto, contattami LinkedIn or Twitter.

Timestamp:

Di più da Databox