Zum Inhalt springen.

Computer Vision

In den letzten Jahren haben wir ein außergewöhnliches Wachstum im Bereich Computer Vision erlebt, mit Anwendungen in der Gesichtserkennung, Bildanalyse, Suche, bei Drohnen, Kartierung sowie bei halbautonomen und autonomen Fahrzeugen. Eine Schlüsselkomponente vieler dieser Anwendungen sind visuelle Erkennungsaufgaben wie Bildklassifizierung, Objekterkennung und Bildähnlichkeit.

Dieses Repository bietet Beispiele und Best-Practice-Richtlinien für den Aufbau von Computer Vision-Systemen. Das Ziel dieses Repositorys ist es, eine umfassende Sammlung von Werkzeugen und Beispielen zu erstellen, die die jüngsten Fortschritte bei Computer Vision-Algorithmen, neuronalen Architekturen und der Operationalisierung solcher Systeme nutzen. Anstatt Implementierungen von Grund auf neu zu erstellen, greifen wir auf bestehende State-of-the-Art-Bibliotheken zurück und entwickeln zusätzliche Hilfsmittel für das Laden von Bilddaten, die Optimierung und Bewertung von Modellen sowie die Skalierung in die Cloud. Darüber hinaus möchten wir, basierend auf unserer langjährigen Erfahrung in diesem Bereich, häufig gestellte Fragen beantworten, auf häufig beobachtete Fallstricke hinweisen und zeigen, wie die Cloud für Training und Bereitstellung genutzt werden kann.

Wir hoffen, dass diese Beispiele und Hilfsprogramme die "Time-to-Market" erheblich verkürzen können, indem sie die Erfahrung von der Definition des Geschäftsproblems bis zur Entwicklung der Lösung um Größenordnungen vereinfachen. Darüber hinaus dienen die Beispiel-Notebooks als Leitfaden und demonstrieren Best Practices und die Verwendung der Tools in einer Vielzahl von Sprachen.

Diese Beispiele werden als Jupyter-Notebooks und allgemeine Hilfsfunktionen bereitgestellt. Alle Beispiele verwenden PyTorch als zugrunde liegende Deep-Learning-Bibliothek.

Examples

Dieses Repository unterstützt verschiedene Computer Vision-Szenarien, die entweder auf einem einzelnen Bild basieren

Some supported CV scenarios

Sowie Szenarien wie die Aktionserkennung, die eine Videosequenz als Eingabe verwenden

<img src=/scenarios/action_recognition/media/action_recognition2.gif "Beispiel für Aktionserkennung"/>

Zielgruppe

Unsere Zielgruppe für dieses Repository umfasst Data Scientists und Machine-Learning-Ingenieure mit unterschiedlichem Wissen im Bereich Computer Vision, da unsere Inhalte ausschließlich aus Quellen stammen und auf kundenspezifisches Machine-Learning-Modelling abzielen. Die bereitgestellten Hilfsmittel und Beispiele sollen als Lösungsbeschleuniger für reale Vision-Probleme dienen.

Erste Schritte

Um zu beginnen, navigieren Sie zum Einrichtungsleitfaden, der Anweisungen zur Einrichtung der Computerumgebung und der Abhängigkeiten enthält, die zum Ausführen der Notebooks in diesem Repository erforderlich sind. Sobald Ihre Umgebung eingerichtet ist, navigieren Sie zum Ordner Szenarien und beginnen Sie mit der Erkundung der Notebooks. Wir empfehlen, mit den Notebooks zur Bildklassifizierung zu beginnen, da diese Konzepte einführen, die auch von anderen Szenarien verwendet werden (z. B. Vortraining auf ImageNet).

Alternativ unterstützen wir Binder Binder, was es einfach macht, eines unserer Notebooks im Webbrowser auszuprobieren, indem Sie einfach diesem Link folgen. Binder ist jedoch kostenlos und bietet daher nur begrenzte CPU-Rechenleistung und keine GPU-Unterstützung. Erwarten Sie, dass das Notebook sehr langsam läuft (dies wird durch Reduzierung der Bildauflösung auf z. B. 60 Pixel etwas verbessert, jedoch auf Kosten niedriger Genauigkeiten).

Szenarien

Im Folgenden finden Sie eine Zusammenfassung der gängigsten Computer Vision-Szenarien, die in diesem Repository behandelt werden. Für jedes der Hauptszenarien ("base") stellen wir die Werkzeuge zur Verfügung, um Ihr eigenes Modell effektiv zu erstellen. Dies umfasst einfache Aufgaben wie das Fine-Tuning Ihres eigenen Modells auf Ihren eigenen Daten bis hin zu komplexeren Aufgaben wie dem Hard-Negative-Mining und sogar der Modellbereitstellung.

Szenario Support Beschreibung
Klassifizierung Basis Bildklassifizierung ist eine überwachte Machine-Learning-Technik, um die Kategorie eines gegebenen Bildes zu lernen und vorherzusagen.
Ähnlichkeit Basis Bildähnlichkeit ist eine Methode zur Berechnung eines Ähnlichkeitswerts für ein Bildpaar. Gegeben ein Bild, ermöglicht es Ihnen, das ähnlichste Bild in einem bestimmten Datensatz zu identifizieren.
Erkennung Basis Objekterkennung ist eine Technik, mit der die Bounding Box eines Objekts in einem Bild erkannt werden kann.
Schlüsselpunkte Basis Die Schlüsselpunkt-Erkennung kann verwendet werden, um bestimmte Punkte auf einem Objekt zu erkennen. Ein vortrainiertes Modell wird zur Erkennung von Körpergelenken für die menschliche Pose-Schätzung bereitgestellt.
Segmentierung Basis Bildsegmentierung weist jedem Pixel in einem Bild eine Kategorie zu.
Aktionserkennung Basis Aktionserkennung zur Identifizierung von Aktionen in Video-/Webcam-Aufnahmen (z. B. "laufen", "eine Flasche öffnen") und deren jeweiligen Start-/Endzeiten. Wir haben auch die i3d-Implementierung der Aktionserkennung implementiert, die unter (contrib)[contrib] zu finden ist.
Verfolgung Basis Verfolgung ermöglicht die Erkennung und Verfolgung mehrerer Objekte in einer Videosequenz über die Zeit.
Massen-Zählung Contrib Zählen der Anzahl von Personen in Szenarien mit geringer Menschendichte (z. B. weniger als 10 Personen) und hoher Menschendichte (z. B. Tausende von Personen).

Wir trennen die unterstützten CV-Szenarien an zwei Orten: (i) base: Code und Notebooks in den Ordnern "utils_cv" und "scenarios", die strengen Codierungsrichtlinien folgen, gut getestet und gewartet sind; (ii) contrib: Code und andere Assets im Ordner "contrib", die hauptsächlich weniger verbreitete CV-Szenarien abdecken, die bahnbrechende State-of-the-Art-Ansätze verwenden. Code in "contrib" wird nicht regelmäßig getestet oder gewartet.

Computer Vision auf Azure

Beachten Sie, dass Sie für bestimmte Computer Vision-Probleme möglicherweise keine eigenen Modelle erstellen müssen. Stattdessen gibt es auf Azure vorgefertigte oder leicht anpassbare Lösungen, die keine benutzerdefinierte Programmierung oder Machine-Learning-Expertise erfordern. Wir empfehlen dringend, zu prüfen, ob diese Ihr Problem ausreichend lösen können. Wenn diese Lösungen nicht anwendbar sind oder die Genauigkeit dieser Lösungen nicht ausreicht, kann ein Rückgriff auf komplexere und zeitaufwändigere benutzerdefinierte Ansätze erforderlich sein.

Die folgenden Microsoft-Dienste bieten einfache Lösungen für gängige Computer Vision-Aufgaben

Wenn Sie Ihr eigenes Modell trainieren müssen, bieten die folgenden Dienste und Links zusätzliche Informationen, die wahrscheinlich nützlich sind.

Build-Status

AzureML-Test

Build-Typ Branch Status   Branch Status
Linux GPU master PAUSIERT Build-Status   staging PAUSIERT Build-Status
Linux CPU master PAUSIERT Build-Status   staging PAUSIERT Build-Status
Notebook Unit GPU master PAUSIERT Build-Status   staging PAUSIERT Build-Status

Beitrag

Dieses Projekt begrüßt Beiträge und Vorschläge. Bitte beachten Sie unsere Richtlinien für Beiträge.