Anmerkungen: Feedback / Sudo Null IT News

Achtung: Der Text ist trocken, da er eher für die öffentliche Protokollierung geschrieben wurde und interessanter für diejenigen ist, die die Bibliothek bereits nutzen.

Ich bin einer der Entwickler der Open-Source-Bibliothek Albuminierungen.

Die Bibliothek ist für die Bilderweiterung vorgesehen und wird normalerweise für Computer-Vision-Aufgaben verwendet.

Das Training neuronaler Netze erfordert viele gekennzeichnete Daten. Und hier gibt es zwei Möglichkeiten:

  • sammeln und markieren. Teuer, lang, aber garantiert eine Verbesserung der Qualität des Modells.

  • eine Option für die Armen – Augmentationen. Welchen Wert sie haben, ist im Voraus nicht bekannt, aber es ist kostenlos und bereits jetzt.

In der Praxis werden beide Ansätze kombiniert.

Wir arbeiten seit 4 Jahren an der Bibliothek. In diesem Jahr schrieb ich einen ausführlichen Text über Habré darüber, wie die Bibliothek entstand und sich entwickelte. [ Рождение Albumentations ]

Im Moment haben wir:

Wie Sie auf der Karte sehen können, wird die Bibliothek auf der ganzen Welt verwendet, und die meisten Benutzer (in absteigender Reihenfolge): USA, Südkorea, Indien, China, Japan, Russland.

Der Start der Bibliothek hat verschiedene Gründe. Das ist sowohl Funktionalität als auch kompetente Werbung, aber vor allem Geschwindigkeit.

Idealerweise ist es notwendig, dass die Trainingsgeschwindigkeit auf der GPU ruht, folglich ist es erforderlich, dass die CPU kein Blocker ist. Und er wird sofort einer, wenn die Erweiterungspipeline langsam ist.

Von den Autoren der von Facebook entwickelten Augly-BibliothekVon den Autoren der von Facebook entwickelten Augly-Bibliothek

Die Entwicklung des Projekts verlief wie bei einem typischen Open Source. Kernteam in verschiedenen Ländern. Wenn jemand etwas hinzufügen musste, fügt er ohne Planung Synchronisierungen und OKRs hinzu.

In weniger als fünf Jahren habe ich mich entschieden zu fragen, wie die Bibliothek im Allgemeinen genutzt wird und was fehlt. Gefragt LinkedInauf der Twitter und in der Gemeinde ODSwie jemand die Bibliothek bei der Arbeit nutzt (das heißt, es hilft, Geld zu verdienen 🙂 ). Die Jungs haben geantwortet – ich habe Fragen gestellt.

Folgendes ist passiert:

F: In welchen Bereichen wird die Bibliothek verwendet?

  • Medizin (vom Erkennen von Muttermalen auf der Haut bis zur Diagnose von Krebs)

  • Dokumentenerkennung

  • Satellitenbilder

  • Autonome Autos

  • Robotik

  • Erkennung von Fehlern in der Produktion

  • Gesichtserkennung und Antispoofing

  • Fotobearbeitung und -verbesserung

  • Verkehrsüberwachung

  • Schönheit Sphäre

  • Einzelhandel

  • Testen von Modellen vor der Bereitstellung auf Widerstandsfähigkeit gegen Datendrift

  • Videobearbeitung von Sportveranstaltungen

  • Erinnerungsgenerierung.

Das heißt, wo Bilder oder Videos sind, wird dort die Bibliothek verwendet, was logisch und angenehm ist.

F: Welche Arten von Aufgaben?

  • Einstufung

  • Erkennung

  • Segmentierung

  • Aktionserkennung

  • Posenschätzung

  • Super-Auflösung

  • Bildeinmalung

Ursprünglich wurde die Bibliothek für die Klassifizierung und Segmentierung entwickelt. Wir haben den Rest der Funktionalität später hinzugefügt und anscheinend nicht umsonst.

F: Was fehlt in der Bibliothek?

  1. Beispiele für die Umwandlung von Bildern in Dokumentationen.

  2. Anweisungen zum Hinzufügen einer neuen Transformation. Jetzt kommt es darauf an – finden Sie eine ähnliche Transformation, passen Sie sie an Ihren Fall an. Fast jeder, mit dem ich gesprochen habe, hat benutzerdefinierte Transformationen durchgeführt, das heißt, Sie können es im Prinzip herausfinden. Andererseits musste jeder die Codebasis verstehen, anstatt einem einfachen Tutorial zu folgen.

  3. GPU-Arbeit. Für manche Aufgaben reicht die Geschwindigkeit von Albumentations nicht aus. Hat jemand versucht, mit DALI für Einstufungsprobleme und freute sich. Es stellt sich heraus, dass DALI gut ist, aber es gibt eine Schnittstelle für Drogenabhängige + nur Klassifizierungsaufgaben. Es gibt eine Bibliothek Kornia, die nur die GPU erweitert. Das Anwenden auf Stapel funktioniert gut, aber wenn es Bild für Bild ist, ist es nicht schneller als Albumentationen.

  4. Fehlende Unterstützung für 1D und 3D. 3D – es kann vollwertiges 3D wie in den Aufgaben der Medizin sein oder mit Video arbeiten. Es gibt bereits einige Lösungen auf dem Markt, die aber hinsichtlich Usability und Funktionalität nicht den Albumentationen genügen. Für 3D gibt es Monai und Volumentationen von Roman Solowjowaber es gibt Raum für Verbesserungen. Es gibt auch eine Idee, dass 3D ressourcenintensiver ist und Sie definitiv in die GPU klettern müssen.

  5. Export der Erweiterungspipeline in Pytorch, in andere Programmiersprachen wie C++ oder andere Plattformen.

F: Welche Transformationen fehlen in der Bibliothek?

  1. Text im Handumdrehen hinzufügen – das kann wie in medizinischen Bildern sein, oder es kann kyrillisch sein, wie in TextRecognitionGenerator.

  2. AugMix, Schnittmix, verwechseln

  3. Ausschneiden und Einfügen – das ist, wenn ein Bild eines Objekts auf verschiedenen Hintergrundbildern platziert werden muss, aber so, dass die Grenze zwischen Objekt und Hintergrund durch Inpainting oder Poisson Blending verwischt wird.

  4. Augmentation, um dem Gesicht eine Maske oder Brille hinzuzufügen. Hier werden, so wie ich es verstehe, Gesichtsschlüsselpunkte im Voraus lokalisiert und eine Maske oder Brille darüber gezogen.

  5. Mehr Konvertierungen mit Komprimierung. Bei Aufgaben, bei denen Bilder in schlechter Qualität oder von alten Telefonen stammen – und das ist ein großer Teil der bestehenden Aufgaben – funktionieren Transformationen gut Bildkompression. Wir haben jetzt Unterstützung für Jpeg und WebP, es gab eine Anfrage zum Hinzufügen heic und jpeg2000

  6. Mosaik verwandeln – hier wird man aus mehreren Bildern zusammengesetzt. Verwendet in YOLO v4

  7. Augmentation nur in der ausgewählten Region der Karte:

    1. In den Transformationen der Pixel-DropOut-Ansicht – nicht zurücksetzen, sondern die ausgewählten Bereiche in Graustufen übertragen.

    2. Erweiterungen nur innerhalb von Begrenzungsrahmen.

    3. Augmentation nur dort, wo Nicht-Null-Maske. Angenommen, Sie benötigen Bilder, auf denen Menschen Jacken in verschiedenen Farben haben ⇒ Sie können die Jacken im Voraus segmentieren und dann Farbtransformationen nur in Bereichen anwenden, in denen die Maske nicht Null ist.

F: Welche Beispiele für benutzerdefinierte Konvertierungen funktionieren gut?

F: Wie werden Augmentationen im Allgemeinen ausgewählt?

Jeder hier ist anders, nicht sehr strukturiert, ungefähr so ​​wie ich es die ganze Zeit gemacht habe.

  • Vom Wettbewerb mit Kaggle abgeschnitten.

  • Aus früheren ähnlichen Aufgaben. Oft gibt es einen Standardsatz von Typtransformationen: Schwer, Mittel, Leicht, der von Aufgabe zu Aufgabe wandert.

  • Um die ursprüngliche Distribution nicht zu verderben. Bedingt horizontaler Flip in Naturbildern bzw D4 auf Satellit.

  • Für die Auswahl von Transformationen und Parametern verwendet jemand Toolza auf Heroku (Hände haben es mehrere Jahre lang nicht aktualisiert, es gibt nicht viele neue Transformationen.) und jemand experimentiert mit Jupyter Notebook.

Im Allgemeinen scheint die Frage nicht gelöst zu sein, und hier möchte ich wirklich, dass ein Tool erscheint, das einen Datensatz und einen Aufgabentyp verwendet und eine gute Erweiterungspipeline zurückgibt.

Aber es gibt Probleme:

  • Niemand weiß wirklich, wie es geht. Ja, es gibt ein beliebtes AutoAugment-Forschungsgebiet, das eine Teilmenge des noch populäreren AutoML ist, aber es läuft nicht sehr gut.

  • Augmentationen hängen nicht nur vom Datensatz und der Aufgabe ab, sondern auch vom Modell. Je schwerer das Modell ist, desto dichtere Transformationen können darauf angewendet werden.

  • Augmentationen tragen zur Genauigkeit und Verallgemeinerungsfähigkeit des Modells bei, und je kleiner der Trainingsdatensatz ist, desto mehr summieren sie sich. Aber wie viel sie tun werden und ob sie es überhaupt tun werden, ist im Voraus nicht bekannt, was nicht dazu beiträgt, dass die Leute versuchen, Zeit und Energie in die Entwicklung eines auf AutoAugment basierenden Produkts zu investieren.

Zusammenfassend gibt es Raum für Arbeit und Entwicklung. Es gibt Dokumentation und neue Funktionen.

Wenn sich also jemand an der Entwicklung von Open Source beteiligen möchte – herzlich willkommen. Ein Meer einfacher Aufgaben, bei denen man zum ersten Mal versuchen kann, etwas zu tun 🙂

Im Allgemeinen möchte ich, dass jemand Vollzeit an dem Projekt arbeitet, aber dafür wird es anscheinend notwendig sein, ein Spendensystem einzurichten und jemanden einzustellen. Bis ich herausgefunden habe, wie ich das alles einrichten kann, aber es scheint, dass dies bei der derzeitigen Popularität der Bibliothek real ist.

PS Russische Fassung

Similar Posts

Leave a Reply

Your email address will not be published.