August 2018

Jahrgang 33, Nummer 8

Künstlich Intelligent: Der Custom Vision Service im Detail

Durch Frank La La | August 2018

Frank La VigneEiner der mehr faszinierende in Microsoft Azure verfügbaren cognitive Services ist die Custom Vision Service, der Benutzern ermöglicht, benutzerdefinierte Modelle maschinelles sehen ganz einfach erstellen. In der Vergangenheit erforderlich, eine bildklassifizierung trainieren Tausende, wenn nicht Tausende, von Bilder pro Klasse zum Generieren eines Modells, die genau genug ist, für die praktische Verwendung. Darüber hinaus müssten Sie auch ein gründliches Verständnis auf der Mechanik von neuronalen Netzwerken. Der Custom Vision Service bietet eine einfache zu bedienende-Webbenutzeroberfläche, die dies maskiert zugrunde liegenden Komplexität.

Besser noch, können die Custom Vision Service Recht genau benutzerdefinierte bildklassifizierungen mit weniger als 15 oder 20 Bilder pro Klasse erstellen, trotz die Dokumentation zu mindestens 50 Bilder pro Klasse. Im Allgemeinen wird die Qualität der bildklassifizierung mit Weitere trainingsbilder verbessert. Der Custom Vision Service bietet auch trainierte Modelle, die über eine REST-API zur Vereinfachung der Bereitstellung dieser Modelle.

Auf der Konferenz Build 2018 beteiligt einen Keynote Demos einen unbesetzten Luftbild Fahrzeug oder eine drohne fliegen über eine Reihe von Pipes zu Fehlern und Problemen bei der Wartung zu erkennen. Im Demoprogramm gestreamt eine drohne Videos von der Kamera an einem Laptop. Der Laptop ausgewertet, die Bilder anhand eines trainierten benutzerdefiniertes maschinelles sehen-Modells, das den Operator "drone" gegebenenfalls verbleibender Mängel finden Sie in der Pipes benachrichtigt wird. In diesem Artikel werde ich eine ähnliche künstliche Intelligenz (KI) nachahmen-Modell für die Wartung für das Erkennen von Problemen mit Train verfolgt erweitert. Zu diesem Zweck ich die Custom Vision Service erkunden und veranschaulichen, wie einfach es ist, benutzerdefiniertes Image Klassifizierung einer beliebigen app oder Website hinzufügen.

Sourcing-Images zu schulen

Erstellen ein Modell für maschinelles sehen mit der Custom Vision Service umfasst drei einfache Schritten:

  1. Laden Sie einen Satz von Bildern, und beschriften Sie sie.
  2. Trainieren und das Modell durch Klicken auf die Schaltfläche "Train" zu generieren.
  3. Verwenden Sie die Web-Benutzeroberfläche oder die REST-APIs zum Auswerten der modellleistung.

Es ist tatsächlich einfach für den Einstieg. Aber Vorsicht Beginn sourcing-Images für das Modell für das trainieren.

Vor kurzem erfasst einer Customer-Demo, ich eine Reihe von Bildern der Train-Inhalte über das Internet. Diese Images enthalten die normalen Train verfolgt und die mit schwerwiegenden Fehlern. Mit weniger als 30 Bilder, konnte ich ein benutzerdefiniertes maschinelles sehen-Modell zum Nachverfolgen von Fehlern mit ungefähr 80 Prozent erkennen generieren genau wie ein Teil der Präsentation. Wie die beeindruckende kann sein, war ich schnell an den Kunden darauf hingewiesen, die produktionsbereite bildklassifizierungsmodell müssten Bilder von Train verfolgt in einer Vielzahl von unterschiedlichen Lichtverhältnissen, Perspektiven und so weiter. Diese Vielfalt der Klassifizierung von Daten reduziert die Wahrscheinlichkeit, dass der Algorithmus, der falsche Merkmale der Bilder Schulungen, die Chaos mit den Ergebnissen zu verursachen, würde zu isolieren.

Es gibt eine klassische und möglicherweise apocryphal, jeder Geschichte zu trainieren von neuronalen Netzwerken. Die Legende wird erläutert, was Experten in den 1980er konfrontiert, wenn der USA Armee entschieden, zum Trainieren eines neuronalen Netzwerks Tanks zu erkennen. Das neuronale Netzwerk gemäß der Story für die Testdaten als Teil des Experiments sehr gut ausgeführt. Wenn jedoch das neuronale Netzwerk neuer Images zum Klassifizieren von angegeben wurde, ausgeführt es allzu.

Die Forscher hatten dumbfounded, bis ihnen klar, dass alle Images mit Tanks auf Bewölkung Tagen geändert wurde, während alle Bilder fehlen, für die Tanks für sonnentagen ausgeführt wurden. Das neuronale Netzwerk getrennt von den beiden Klassen von Fotos und ausgewählt haben, um die beiden Mengen, die basierend auf die Farbe des vom Himmel zu holen, statt das Vorhandensein von einem Behälter zu unterscheiden. Natürlich ist dies nicht der Armee benötigt werden. Vollständige Informationen zu der Story Erkennung Tank, sehen Sie sich Neil Frasers ursprünglichen schreiben Sie am bit.ly/2llxudb, aber lohnt sich dieser Teil in seinem Artikel hier zitieren:

"Es ist eine perfekte Darstellung der das größte Problem hinter neuronale Netzwerke. Alle automatisch trainierten Net mit mehr als ein paar Dutzend Neuronen ist nahezu unmöglich, analysieren und zu verstehen. Eine kann nicht feststellen, ob ein Netz Eingaben monatelang hat, oder "" auf andere Weise Aktivitäten ist."

Obwohl der Artikel in 2003 zuletzt aktualisiert wurde, gilt dieses Zitat noch heute. Arbeit verrichtet wird um die interne Funktionsweise von komplexen neuronalen Netzwerken besser zu verstehen, aber diese bemühungen laufende ist und kaum über seine entstehen begriffenen Phase. Die bewährte Methode ist derzeit auf die Quelldaten, die einen unterschiedlichen Satz von Trainingsdaten enthält. Dadurch wird den Algorithmus Images basierend auf den richtigen Variablen zu unterscheiden.

Um Image copyright-Probleme zu vermeiden, möchte ich meinen Kindern das große Spielzeug Train nachverfolgen Auflistung für diesen Artikel nutzen. Dadurch können auch erstellen, Trainieren und testen die Bilder schnell. Ich habe 34 Images erstellt und teilen sie in drei Ordner namens "Broken", "Normal" und "Test. Images mit "unterbrochen" Train verfolgt werden im Ordner "unterbrochen", und Images mit zusammenhängenden verfolgt werden im Ordner "Normal". Ich habe nach dem Zufallsprinzip eine Reihe von Bildern zum Testen des Modells auf ausgewählt und im Ordner "Test" gespeichert. Mit meiner Source-Images ausgewählt und mit der Bezeichnung ist es Zeit, ein Modell zu erstellen.

 

Erstellen des Modells

In einem Browser, wenn ich Gehe zu customvision.ai und klicken Sie auf die Schaltfläche "Anmelden" die Anmeldung mit meinem Microsoft-Konto. Sobald Sie angemeldet sind, klicke ich im neuen Projekt zum Erstellen eines neuen Projekts für benutzerdefiniertes maschinelles sehen.

In dem dann angezeigten Dialogfeld gebe ich "Toy Trains" für den Namen des Projekts und eine kurze Beschreibung des Projekts an. Ich behalten Sie der Standardeinstellung von eingeschränkten Testabonnement der Dropdownliste für die Ressourcengruppe aus, und stellen Sie sicher, dass die Optionsfelder für Projekttypen und Domänen bzw. für die Klassifizierung "und" Allgemein "," festgelegt werden. Als Nächstes klicke ich die Schaltfläche "Projekt erstellen", um ein neues benutzerdefiniertes maschinelles sehen-Projekt zu erstellen. Abbildung 1 zeigt diese Einstellungen.

Das Dialogfeld "Neues Projekt" erstellen
Abbildung 1 das Dialogfeld "Neues Projekt" erstellen

Beim Hochladen der Bilder

Nachdem das Projekt erstellt wurde, werden Sie von der Website aufgefordert, das Hochladen von Bildern. Klicken Sie auf Hinzufügen von Abbildern, und klicken Sie im folgenden Dialogfeld auf lokale Dateien durchsuchen, um die Suche nach Bildern zum Hochladen. Zunächst die Bilder im Ordner "unterbrochen" durch die Auswahl aller hochladen, und klicken im Dialogfeld "Durchsuchen" geöffnet. Klicken Sie im Textfeld unten die Images, wenn ich Geben Sie den Begriff Broken und klicken Sie auf die blaue Pluszeichen, um die Images mit der Bezeichnung fehlerhaft zu markieren. Ich klicken Sie dann auf die Schaltfläche "Hochladen", um die 15-Images hochladen. Dieser Schritt ist dargestellt, abbildung2. Als Nächstes klicke ich auf Fertig, um diesen Schritt ausgeführt haben.

Markierte unterbrochen Track-Images
Abbildung 2 markiert unterbrochen Track-Images

Nun, dass die Bilder der fehlerhaften Train Inhalte hochgeladen wurden, ist es Zeit, die Bilder im Ordner "normalen" hochladen. Dazu klicke ich auf das Symbol oben links im Bereich mit dem Pluszeichen (+) auf. Diese Schaltfläche wird hervorgehoben Abbildung 3. Ich wiederhole es sich um die vorherigen Schritte zum Hochladen der eingehenden Bilder, außer dass diesmal, ich Wählen der Bilder in die normalen Ordner, und kennzeichnen die Images mit der Bezeichnung Normal. Ich klicken Sie, auf die Schaltfläche "Hochladen" zum Übertragen von Bilder und klicken Sie dann auf Fertig, um das Dialogfeld zu schließen.

Weitere Bilder hinzugefügt, auf die Trainingsdaten
Abbildung 3: Hinzufügen von weiteren Bilder mit den Trainingsdaten

Mit allen Beispielbilder hochgeladen und markiert ist es Zeit zum Trainieren und Testen des Modells.

Trainieren des Modells

Es gibt ein grünes Symbol mit Gears darauf, im oberen Bereich der Seite. Ich klicke auf diese Option, um das Trainieren eines Modells mit dem derzeit gekennzeichneten Bilder. Es dauert einen Moment Zeit oder zwei, bevor das Training abgeschlossen ist, und die Webseite zurückgegeben wird, mit den Leistungsmetriken des Modells, die in angezeigt wird Abbildung 4.

Trainingsergebnissen und Leistungsindikatoren
Abbildung 4 Trainingsergebnissen und Metriken zur Datenbankleistung

Die zwei primären Kennzahlen sind Präzision und Sensitivität des Modells. Genauigkeit gibt an, wie oft ein vorhergesagtes Ergebnis richtig ist, wird beim Rückruf den Prozentsatz misst der wie oft ein vorhergesagten Tag korrekt war. Das heißt, Sensitivität zeigt an, dass die richtige Antwort ist "Fehlerhaft", wie oft das Modell "Broken." vorhergesagt wird Eine weitere Erläuterung Konfusionsmatrix Terminologie, lesen Sie die "einfache Anleitung zu Verwirrung Matrix-Terminologie" zur bit.ly/2IbRoAi.

Testen des Modells

Jetzt ist es Zeit für das Modell in den Images, reservieren Sie für das Testen, um festzustellen, wie gut das Modell mit neuen Images für die Darstellung führt zu testen. Unmittelbar rechts neben der Schaltfläche mit den grünen Training es gibt eine Schaltfläche zu testen. Ich klicke auf diese Option, um Sie öffnen das Dialogfeld "Test", und klicken Sie dann auf die Schaltfläche zum Durchsuchen von lokalen Dateien, um das Dialogfeld "Datei hochladen" zu öffnen. Verwenden Sie dieses Dialogfeld Wählen Sie ein Bild im Ordner "Test", und klicken Sie auf Öffnen, um die Datei hochzuladen. Nach einer Weile wird der Algorithmus die Ergebnisse angezeigt, nach der Auswertung der Abbildung. Abbildung 5 zeigt an, dass für dieses Image ist eine 79.2 Prozent Wahrscheinlichkeit wird eine normale nachverfolgen und eine Wahrscheinlichkeit 60.2 Prozent unterbrochen wird. Denken Sie daran, dass für dieses Projekt Normal bedeutet, dass die Spur fortlaufende oder zusammenhängende.

Schnelltest-Dialogfeld für einen zusammenhängenden Satz von Titeln
Abbildung 5 Schnelltest-Dialogfeld für einen zusammenhängenden Satz von Titeln

Ich den Test ausführen erneut mit einem anderen Image von einem fehlerhaften nachverfolgen, indem Sie erneut auf die Schaltfläche zum Durchsuchen von lokalen Dateien auf. Diesmal wähle ich ein Bild eines fehlerhaften Satzes von verfolgt. Das Modell meldet, dass eine 95.9 Prozent Wahrscheinlichkeit von diesem einen fehlerhaften nachverfolgen und nur 11.2 prozentige Chance, dass die Spur wird normal. Ich Testen des Modells, mit dem Rest der Dateien im Ordner "Test" um eine Vorstellung davon, in dem das Modell gut und, in denen sie Probleme identifizieren den richtigen Status der Spuren wurde zu erhalten.

Für weitere Experimente führen eine Image-Suche im Internet ich und die Bild-URL kopieren und fügen Sie ihn in das Textfeld auf der Benutzeroberfläche testen. Diese Images dargestellt Train verfolgt aus verschiedenen Blickwinkeln und auf verschiedenen Oberflächen in Lichtverhältnissen im Gegensatz zum Trainingssatz des Images an. Dadurch ermöglichen Sie eine Perspektive auf wie neuronale Netzwerke und warum ein unterschiedlicher Satz von Beispieldaten entscheidend für den Erfolg eines Modells bereit für die Produktion ist. Die folgenden drei URLs zeigen Sie auf einige Bilder zeigen Beispiele, die ich online gefunden (Beachten Sie hier an, wie das Modell für jedes der Images klassifiziert):

Darüber hinaus ist es hilfreich zu wissen, wie der Klassifizierer verhält, wenn ein Bild außerhalb ihres Bereichs angegeben. Beispielsweise wird wie dieser Klassifizierung, die entwickelt, um das Bestimmen des Status des Spielzeug Train verfolgt, wenn ein Abbild von einer Neon-Anmeldung erhält? Dies wird als negative Bildbehandlung bezeichnet, und ein effektives Modell zum Vorhersagen der Werte nahe 0 (null) in diesen Fällen sollte. Um dies zu testen, ich die folgende URL in das Textfeld eingeben: http://datadriven.tv/wp-content/uploads/2018/05/50k.png. Mein Vorhersagemodell erzeugt ein Ergebnis vom 1.7 für normalen und 0 Prozent für Broken.

Tiefere Einblicke

Für die Zwecke dieses Beispiels habe ich ein zweiklassiges System für die bildklassifizierung, in denen das Modell nur für Bezeichnung Images Spielzeug Train verfolgt entweder beschädigt oder Normal aufweist. Allerdings kann ich mehr komplexe Modelle erstellen. Zurzeit unterstützt (Standard) Custom Vision Service S0-Tarif bis zu 250 eindeutige Tags, was bedeutet, dass es trainiert werden kann, um 250 separate Bezeichnungen zu klassifizieren. Darüber hinaus kann der Dienst bis zu 50.000 Bildern pro Projekt verarbeiten.

Darüber hinaus wird die Modelle, die von der Custom Vision Service generiert für die Verwendung in Edge computing Geräten exportiert werden können, und verlassen Sie sich nicht für den Zugriff auf den Cloud-Dienst. Dies bedeutet, dass ich könnte des Modells auf ein Gerät laden und klassifizieren Bilder in einem Offlineszenario. Derzeit unterstützt der Custom Vision Service Model-Exporte in drei Formaten: TensorFlow für Android-Geräte CoreML für iOS-Geräte und ONNX für Windows-Geräte. Darüber hinaus können die Custom Vision Service einen Windows oder Linux-Container erstellen, der ein TensorFlow-Modells und der Code zum Aufrufen der REST-API integriert. Für ausführliche Informationen zum Exportieren von Modellen zur Ausführung auf Edge-Geräten, achten Sie darauf, verweisen in der Dokumentation unter bit.ly/2K4ibjL.

In diesem Artikel habe ich gezeigt, wie einfach es ist, erste Schritte mit der Custom Vision Service, und erstellen Sie ein Modell für maschinelles sehen mit einem begrenzten Satz von Trainingsdaten. Eine mögliche Verwendung für diese Technologie wäre Datenverkehr Kameras Image-Daten zugreifen und Trainieren Sie ein Modell aus, um verschiedene Ebenen der Überlastung, die ausschließlich auf Basis dieser Daten zu erkennen. Zuvor, eine solche Aufgabe automatisieren schwierige, wäre es sowohl eine riesige Menge von bezeichneten Trainings-Daten als auch spezielle Kenntnisse erforderlich. Jedoch kombiniert der Custom Vision Service innovative neural Network-Technologie, mit eine einfach zu bedienende-Schnittstelle für ein Tool erstellen, das Computer Vision weiter verbreiteten Verwendung geöffnet wird.


Frank La Vignearbeitet bei Microsoft als ein KI-Lösungen Technologieexperte, in denen er unterstützt Unternehmen dabei, mehr erreichen, indem Sie ihre Daten mit Analytics und KI optimal. Er auch Co Hosts die DataDriven Podcast. Er bloggt regelmäßig auf FranksWorld.com, und Sie können ihm auf seinem YouTube-Kanal „Frank's World TV“ (FranksWorld.TV) folgen.

Unser Dank gilt den folgenden technischen Experten für die Durchsicht dieses Artikels: Andy Leonard, und ich bin Jonathan Wood


Diesen Artikel im MSDN Magazine-Forum diskutieren