
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
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 , 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
-
Vision Services sind eine Reihe von vortrainierten REST-APIs, die für Bild-Tagging, Gesichtserkennung, OCR, Videoanalyse und mehr aufgerufen werden können. Diese APIs funktionieren sofort und erfordern nur minimale Kenntnisse im Bereich maschinelles Lernen, bieten jedoch begrenzte Anpassungsmöglichkeiten. Sehen Sie sich die verschiedenen verfügbaren Demos an, um ein Gefühl für die Funktionalität zu bekommen (z. B. Computer Vision). Der Dienst kann über API-Aufrufe oder über SDKs (verfügbar in .NET, Python, Java, Node und Go) genutzt werden.
-
Custom Vision ist ein SaaS-Dienst zum Trainieren und Bereitstellen eines Modells als REST-API basierend auf einem vom Benutzer bereitgestellten Trainingsdatensatz. Alle Schritte einschließlich Bild-Upload, Annotation und Modellbereitstellung können über eine intuitive Benutzeroberfläche oder über SDKs (verfügbar in .NET, Python, Java, Node und Go) durchgeführt werden. Das Trainieren von Bildklassifizierungs- oder Objekterkennungsmodellen kann mit minimalen Kenntnissen im Bereich maschinelles Lernen erreicht werden. Custom Vision bietet mehr Flexibilität als die Verwendung der vortrainierten kognitiven Dienste-APIs, erfordert jedoch, dass der Benutzer eigene Daten mitbringt und annotiert.
Wenn Sie Ihr eigenes Modell trainieren müssen, bieten die folgenden Dienste und Links zusätzliche Informationen, die wahrscheinlich nützlich sind.
-
Azure Machine Learning service (AzureML) ist ein Dienst, der Benutzern hilft, das Training und die Bereitstellung von Machine-Learning-Modellen zu beschleunigen. Obwohl nicht speziell für Computer Vision-Workloads, kann das AzureML Python SDK für skalierbares und zuverlässiges Training und Bereitstellung von Machine-Learning-Lösungen in der Cloud verwendet werden. Wir nutzen Azure Machine Learning in mehreren der Notebooks dieses Repositorys (z. B. Bereitstellung für Azure Kubernetes Service)
-
Azure AI Reference architectures bieten eine Reihe von Beispielen (unterstützt durch Code) zur Erstellung gängiger KI-orientierter Workloads, die mehrere Cloud-Komponenten nutzen. Obwohl nicht spezifisch für Computer Vision, decken diese Referenzarchitekturen mehrere Machine-Learning-Workloads wie Modellbereitstellung oder Batch-Scoring ab.
Build-Status
AzureML-Test
| Build-Typ | Branch | Status | Branch | Status | |
|---|---|---|---|---|---|
| Linux GPU | master | PAUSIERT |
staging | PAUSIERT |
|
| Linux CPU | master | PAUSIERT |
staging | PAUSIERT |
|
| Notebook Unit GPU | master | PAUSIERT |
staging | PAUSIERT |
Beitrag
Dieses Projekt begrüßt Beiträge und Vorschläge. Bitte beachten Sie unsere Richtlinien für Beiträge.