Die Modernisierungsreise von TorchVision – Erinnerungen eines TorchVision-Entwicklers – 3

Die Modernisierungsreise von TorchVision – Erinnerungen eines TorchVision-Entwicklers – 3

  • 21. Mai 2022
  • Vasilis Vryniotis
  • . Keine Kommentare

Es ist schon eine Weile her, seit ich einen neuen Eintrag zur Memoirenreihe von TorchVision veröffentlicht habe. Ich dachte, ich hätte bereits einige Neuigkeiten im offiziellen PyTorch-Blog und weiter geteilt TwitterIch dachte, es wäre eine gute Idee, mehr darüber zu sprechen, was in der letzten TorchVision-Version (v0.12) passiert ist, was in der nächsten Version (v0.13) herauskommt und was unsere Pläne für 2022H2 sind. Mein Ziel ist es, über einen Überblick über neue Funktionen hinauszugehen und stattdessen einen Einblick in die Richtung zu geben, in die wir das Projekt in den kommenden Monaten einschlagen wollen.

TorchVision v0.12 war eine bedeutende Veröffentlichung mit einem doppelten Zweck: a) Aktualisierung unserer Modellabwertungs- und Beitragsrichtlinien, um die Transparenz zu verbessern und mehr Community-Mitwirkende anzulocken, und b) Verdoppelung unserer Modernisierungsbemühungen durch das Hinzufügen neuer beliebter Modellarchitekturen, Datensätze und ML-Techniken.

Aktualisierung unserer Richtlinien

Der Schlüssel zum Erfolg eines Open-Source-Projekts liegt in der Aufrechterhaltung einer gesunden und aktiven Community, die dazu beiträgt und es vorantreibt. Ein wichtiges Ziel unseres Teams besteht daher darin, die Anzahl der Community-Beiträge zu erhöhen, mit der langfristigen Vision, der Community zusätzlich zu den üblichen inkrementellen Verbesserungen (Fehlerbehebungen/Dokumente, kleine Features usw.) zu ermöglichen, auch große Funktionen (neue Modelle, ML-Techniken usw.) beizusteuern.

Obwohl die Community solche Funktionen gerne bereitstellen wollte, zögerte unser Team in der Vergangenheit, sie zu akzeptieren. Das Haupthindernis war das Fehlen eines konkreten Beitragsmodells und einer Abschreibungspolitik. Um dieses Problem anzugehen, hat Joao Gomes mit der Community zusammengearbeitet, um unsere ersten Richtlinien für Modellbeiträge zu schreiben und zu veröffentlichen, die den Prozess für das Beisteuern neuer Architekturen, vorab trainierter Gewichte und Funktionen, die ein Modelltraining erfordern, klarstellen. Darüber hinaus arbeitete Nicolas Hug mit wichtigen PyTorch-Entwicklern zusammen, um eine konkrete Abwertungsrichtlinie zu formulieren und zu übernehmen.

Die oben genannten Änderungen hatten unmittelbar positive Auswirkungen auf das Projekt. Die neue Beitragsrichtlinie ermöglichte es uns, viele Community-Beiträge für große Funktionen zu erhalten (weitere Details unten), und die klare Abwertungsrichtlinie ermöglichte es uns, unsere Codebasis zu bereinigen und gleichzeitig sicherzustellen, dass TorchVision starke Abwärtskompatibilitätsgarantien bietet. Unser Team ist hochmotiviert, weiterhin mit Open-Source-Entwicklern, Forschungsteams und nachgelagerten Bibliothekserstellern zusammenzuarbeiten, um TorchVision relevant und aktuell zu halten. Wenn Sie Feedback, Rückmeldungen oder Funktionswünsche haben, kontaktieren Sie uns bitte.

Modernisieren Sie TorchVision

Es ist kein Geheimnis, dass unser Ziel bei den letzten Versionen darin bestand, TorchVision alle notwendigen Erweiterungen, Verluste, Ebenen, Trainingsprogramme und neuen Architekturen hinzuzufügen, damit unsere Benutzer SOTA-Ergebnisse mit PyTorch problemlos reproduzieren können. TorchVision v0.12 setzte diesen Weg fort:

  • Unsere Rockstar-Community-Mitwirkenden Hu Ye und Zhiqiang Wang haben zur FCOS-Architektur beigetragen, einem einstufigen Objekterkennungsmodell.

  • Nicolas Hug fügte Unterstützung für den optischen Fluss in TorchVision hinzu, indem er die RAFT-Architektur hinzufügte.

  • Yiwen Song fügte Unterstützung für Vision Transformer (ViT) hinzu und ich fügte die ConvNeXt-Architektur sowie verbesserte vorab trainierte Gewichte hinzu.

  • Schließlich haben wir mit Hilfe unserer Community 14 neue Klassifizierungen und 5 neue Datensätze zum optischen Fluss hinzugefügt.

  • Wie üblich bringt die Veröffentlichung viele kleine Verbesserungen, Fehlerbehebungen und Dokumentationsverbesserungen mit sich. Alle neuen Funktionen und die Liste unserer Mitwirkenden finden Sie in den Versionshinweisen zu Version 0.12.

TorchVision v0.13 rückt immer näher und die Veröffentlichung ist für Anfang Juni geplant. Dies ist eine sehr umfangreiche Version mit einer beträchtlichen Anzahl neuer Funktionen und großen API-Verbesserungen.

Modernisierungen abschließen und die Lücke zu SOTA schließen

Wir setzen unsere Reise zur Modernisierung der Bibliothek fort, indem wir die Grundelemente, Modellarchitekturen und Rezeptdienstprogramme hinzufügen, die zur Erstellung von SOTA-Ergebnissen für wichtige Computer-Vision-Aufgaben erforderlich sind:

  • Mit Hilfe von Victor Fomin habe ich wichtige fehlende Datenerweiterungstechniken wie AugMix, Large Scale Jitter usw. hinzugefügt. Diese Techniken ermöglichten es uns, die Lücke zu SOTA zu schließen und bessere Gewichte zu produzieren (siehe unten).

  • Mit Hilfe von Aditya Oke, Hu Ye, Yassine Alouini und Abhijit Deo haben wir wichtige gemeinsame Bausteine ​​wie DropBlock-Schicht, MLP-Block, cIoU- und dIoU-Verlust usw. hinzugefügt. Schließlich habe ich mit Shen Li zusammengearbeitet, um ein seit langem bestehendes Problem auf der SyncBatchNorm-Schicht von PyTorch zu lösen, das sich auf Erkennungsmodelle auswirkte.

  • Hu Ye fügte mit Unterstützung von Joao Gomes Swin Transformer sowie verbesserte vortrainierte Gewichte hinzu. Ich habe die EfficientNetV2-Architektur und mehrere Post-Paper-Architekturoptimierungen zur Implementierung von RetinaNet, FasterRCNN und MaskRCNN hinzugefügt.

  • Wie ich bereits im PyTorch-Blog erwähnt habe, haben wir erhebliche Anstrengungen unternommen, um unsere vorab trainierten Gewichte zu verbessern, indem wir ein verbessertes Trainingsrezept erstellt haben. Dadurch konnten wir die Genauigkeit unserer Klassifizierungsmodelle um 3 Präzisionspunkte verbessern und so neue SOTA für verschiedene Architekturen erreichen. Ähnliche Anstrengungen wurden bei der Erkennung und Segmentierung unternommen, wo wir die Modellgenauigkeit im Durchschnitt um mehr als 8,1 mAP verbesserten. Schließlich arbeitete Yosua Michael M mit Laura Gustafson, Mannat Singhand und Aaron Adcock zusammen, um Unterstützung für SWAG hinzuzufügen, eine Reihe neuer, hochpräziser, hochmoderner vorab trainierter Gewichte für ViT und RegNets.

Neue API zur Unterstützung mehrerer Gewichtungen

Wie ich bereits im PyTorch-Blog erwähnt habe, hat TorchVision seinen bestehenden Modellbildungsmechanismus erweitert, um mehrere vorab trainierte Gewichte zu unterstützen. Die neue API ist vollständig abwärtskompatibel, ermöglicht die Instanziierung von Modellen mit unterschiedlichen Gewichtungen und bietet Mechanismen zum Erhalten nützlicher Metadaten (wie Kategorien, Parameteranzahlen, Metriken usw.) und Modellvorverarbeitungs-Inferenztransformationen. Auf Github gibt es eine eigene Kommentarfunktion, die uns dabei helfen soll, unsere Ecken und Kanten auszubügeln.

Überarbeitete Dokumentation

Nicolas Hug leitete die Bemühungen zur Neustrukturierung der Modelldokumentation von TorchVision. Das neue Framework ist in der Lage, Funktionen der Multi-weight Support API zu nutzen, um vorab trainierte Gewichte und deren Verwendung in der Bibliothek besser zu dokumentieren. Vielen Dank an unsere Community-Mitglieder, die uns dabei geholfen haben, alle Architekturen rechtzeitig zu dokumentieren.

Obwohl unsere detaillierte Roadmap für die zweite Hälfte des Jahres 2022 noch nicht fertiggestellt ist, sind hier einige wichtige Projekte, an denen wir derzeit arbeiten möchten:

  • Wir arbeiten eng mit Haoqi Fan und Christoph Feichtenhofer von PyTorch Video zusammen, um TorchVision um die erweiterte Multi-Scale Vision Transformer (MViTv2)-Architektur zu erweitern.

  • Philip Meier und Nicolas Hug arbeiten an einer verbesserten Version der Datasets API (v2), die TorchData- und Data-Pipes verwendet. Philip Meier, Victor Fomin und ich arbeiten außerdem an der Erweiterung unserer Transforms API (v2), um nicht nur Bilder, sondern auch Begrenzungsrahmen, Segmentierungsmasken usw. zu unterstützen.

  • Schließlich hilft uns die Community, TorchVision auf dem neuesten Stand und relevant zu halten, indem sie beliebte Architekturen und Techniken hinzufügt. Lezwon Castelino arbeitet derzeit mit Victor Fomin zusammen, um die SimpleCopyPaste-Erweiterung hinzuzufügen. Hu Ye arbeitet derzeit daran, die DeTR-Architektur hinzuzufügen.

Wenn Sie sich an dem Projekt beteiligen möchten, schauen Sie sich bitte unsere Listen mit guten Erstausgaben und Hilfegesuchen an. Wenn Sie ein erfahrener PyTorch/Computer Vision-Veteran sind und einen Beitrag leisten möchten, haben wir mehrere Kandidatenprojekte für neue Operatoren, Verluste, Erweiterungen und Modelle.

Ich hoffe, Sie fanden den Artikel interessant. Wenn Sie mit mir Kontakt aufnehmen möchten, kontaktieren Sie mich auf LinkedIn oder Twitter.



Source link

Similar Posts