Best Practice Tipps: Training eines neuronalen Netzwerks mit Deep Learning
Einführung
Die wichtigste Determinante für die Wirksamkeit von Deep Learning-Systemen ist der von den Entwicklern verwendete Datensatz, um sie zu trainieren. Ein qualitativ hochwertiger Trainingsdatensatz verbessert die Inferenzgenauigkeit und -geschwindigkeit und reduziert gleichzeitig die Systemressourcen und beschleunigt den Lernprozess.
Falls Entwickler auf einem System mit stark eingeschränkten Ressourcen Inferenzen auf Basis von Deep Learning durchführen müssen, können sie das trainierte neuronale Netzwerk entsprechend optimieren und ein Host-System überflüssig machen. Bei viel kleineren Geräten, wie der neuen FLIR® Firefly®-Kamera, kann auf der integrierten Movidius ™ Myriad ™ 2-VPU auf der Grundlage Ihres eingesetzten neuronalen Netzwerks Interferenz ausgeführt werden.
In diesem Artikel wird beschrieben, wie Sie ein Dataset entwickeln, um Bilder zu klassifizieren und in Kategorien zu sortieren. Dies ist der beste Ausgangspunkt für Benutzer, die sich mit Deep Learning nicht auskennen.
Wie viele Trainingsdaten brauche ich?
Die Menge der erforderlichen Trainingsdaten hängt von den folgenden Faktoren ab:
- Anzahl der zu unterscheidenden Datenklassen, z. B. "Apfel", "Blatt", "Ast".
- Die Ähnlichkeit der zu unterscheidenden Klassen, z. B. "Apfel" vs. "Birne" ist komplexer als "Apfel" vs. “Blatt”.
- Die beabsichtigte Abweichung innerhalb jeder Klasse, z. B. Äpfel unterschiedlicher Farben und Formen, für mehr Robustheit gegen Variationen im realen Anwendungsszenario.
- Unerwünschte Abweichungen in den Bilddaten, z. B. Rauschen, Unterschiede im Weißabgleich, Helligkeit, Kontrast, Objektgröße, Betrachtungswinkel usw.
Einige hundert Bilder können ausreichen, um akzeptable Ergebnisse zu liefern, während komplexere Anwendungen mehr als eine Million Bilder erfordern können. Um die Anforderungen Ihrer Trainingsdaten zu ermitteln, ist es am besten, Daten zu sammeln und Ihr Modell damit zu testen. Das Finden von Problemen wie dem, das Sie lösen, kann auch einen guten Ausgangspunkt für die Schätzung der Datenmenge darstellen.
Ihr Netzwerk erreicht schließlich einen Punkt, an dem zusätzliche Daten die Modellgenauigkeit nicht verbessern. Es ist unwahrscheinlich, dass Ihr Modell eine Genauigkeit von 100 % erreicht, unabhängig davon, wie groß Ihr Trainingsdatensatz ist. Wenn Sie die für Ihre spezifische Anwendung erforderliche Balance zwischen Geschwindigkeit und Genauigkeit kennen, können Sie feststellen, ob zusätzliche Trainingsdaten erforderlich sind.
Testen Sie mit Validierungsdaten
Ihr Bilddatensatz muss groß genug sein, um Validierungsdaten bereitzustellen, anhand derer die Genauigkeit und Geschwindigkeit des Netzwerks während des Trainings bewertet wird. Diese Bilder sollten zufällig aus dem Datensatz ausgewählt werden, um sicherzustellen, dass sie so weit wie möglich repräsentativ sind.
Bei kleinen Datensätzen oder wenn genügend Zeit und Rechenleistung zur Verfügung steht, kann die Erkennungsleistung auch durch mehrfache Validierung bestimmt werden. Hier wird ein Datensatz in z. B. fünf zufällige Segmente aufgeteilt. Daher wird ein neuronales Netz mit vier Segmenten trainiert und mit dem verbleibenden Segment validiert. Dieses Training und die Validierung werden für alle fünf Kombinationen von Trainings- und Validierungssegmenten wiederholt. Der Mittelwert der Erkennungsraten gibt die zu erwartende Leistung an. Die Standardabweichung gibt an, wie repräsentativ der Datensatz ist.
Verbesserung Ihres Datensatzes
Deep Learning ist ein iterativer Prozess. Netzwerke treffen Vorhersagen über Trainingsdaten, die zur Verbesserung des Netzwerks verwendet werden. Dieser Vorgang wird wiederholt, bis das Netzwerk die gewünschte Genauigkeit erreicht hat. Je größer der Datensatz, desto mehr Abweichungen können in der Zielanwendung dem Deep-Learning-Algorithmus angezeigt werden. Sehr kleine Datensätze liefern nicht genügend Informationen, damit der Algorithmus ordnungsgemäß funktionieren kann. Infolgedessen sehen Sie möglicherweise eine gute Erkennungsleistung für die Trainingsdaten, aber für Validierungsdaten eine Erkennungsrate eher um die Schätzwahrscheinlichkeit. Eine gut geplante Trainingsdatenerfassungsphase, die genau beschriftete Bilder mit einem Minimum an unnötigen Abweichungen liefert, reduziert die Menge der erforderlichen Trainingsdaten, beschleunigt das Training und verbessert die Genauigkeit und Geschwindigkeit von Inferenzen.
Minimieren Sie die Unterschiede zwischen Trainingsbildern und Produktionsbildern
Durch das Aufnehmen von Bildern mit den gleichen Kameras, Optiken und Beleuchtungen, wie sie im zukünftigen Produktionssystem zur Anwendung kommen, müssen keine Unterschiede in der Geometrie, Beleuchtung und der spektralen Reaktion zwischen Trainings- und Live-Bilddaten kompensiert werden. Hochwertige Kameras mit Pregius®-Sensoren, GenICam®-Schnittstellen und umfassenden GPIO-Funktionen erleichtern die Automatisierung der Erfassung guter Trainingsdatensätze.
Verwenden von kontrollierten Umgebungen, um die Datenmenge zu reduzieren
Ein guter Schulungsdatensatz enthält Beispiele für Abweichungen, bei denen dies erwartet wird, und minimiert Abweichungen, bei denen er durch das Systemdesign eliminiert werden kann. Zum Beispiel ist das Überprüfen von Äpfeln, während sie sich noch auf dem Baum befinden, viel komplexer als das Überprüfen derselben Äpfel auf einem Förderband. Das Outdoor-System muss trainiert werden, um Äpfel in unterschiedlichen Entfernungen, Ausrichtungen und Winkeln zu erkennen, und muss sich ändernde Licht- und Wetterbedingungen berücksichtigen. Ein Modell, das konsistent arbeitet, erfordert einen sehr großen Datensatz.
Durch das Aufnehmen von Bildern von Äpfeln in einer kontrollierten Umgebung können Systemdesigner viele Varianzquellen eliminieren und hochpräzise Inferenz mit einem viel kleineren Datensatz erzielen. Dies reduziert wiederum die Größe des Netzwerks und ermöglicht den Betrieb auf kompakter eigenständiger Hardware wie der FLIR Firefly, die von Intel Movidius Myriad 2 angetrieben wird.
Abb. 1. Bilder, die unter kontrollierten Bedingungen (A) aufgenommen wurden, weisen eine geringere Abweichung auf als Bilder, die unter unkontrollierten Bedingungen aufgenommen wurden (B).
Verbesserung der Ergebnisse mit präzise gekennzeichneten Daten
Etiketten werden verwendet, um Vorhersagen, die während des Trainings gemacht wurden, zu testen. Etiketten müssen die Bilder darstellen, zu denen sie gehören. Ungenaue oder "rauschende" Etiketten sind ein häufiges Problem bei Datensätzen, die mithilfe der Bildersuche im Internet zusammengestellt werden. Das Anhängen von Etiketten an Bilddateinamen ist eine gute Idee, da dies die Verwirrung bei der Verwaltung und Verwendung von Trainingsdaten verringert.
Abb. 2. Beispiele gut ausgewählter (A) und schlecht ausgewählter Bilder (B) für die Kategorie "Apfel".
Das Kennzeichnen von Daten für die Segmentierung ist viel komplexer und zeitaufwendiger als die Klassifizierung.
Abb. . Das Kennzeichnen von Bildern für die Segmentierung ist viel komplexer als die Klassifizierung.
Verbesserung der Qualität und Quantität eines vorhandenen Datensatzes
Augmentation, um den Datensatz zu erweitern
Einige Systeme, z. B. für die Obstinspektion, untersuchen Objekte, deren Ausrichtung nicht kontrolliert wird. Für diese Systeme ist die Datenaugmentation eine nützliche Methode, um die Datenmenge schnell durch affine und projektive Transformationen zu erweitern. Durch die Farbtransformation kann das Netzwerk auch einer größeren Vielfalt von Bildern ausgesetzt werden. Entwickler müssen transformierte Bilder ausschneiden, um die Eingangsabmessungen, die das neuronale Netzwerk benötigt, zu erhalten.
Abb. 5. Beispiele für Transformationen einschließlich Rotation, Skalierung und Scherung.
Normalisierung für verbesserte Genauigkeit
Durch die Normalisierung von Daten wird das Training neuronaler Netze effizienter. Normalisierte Bilder sehen für den Menschen unnatürlich aus, sind aber für das Training präziser neuronaler Netzwerke effektiver. Entwickler können Pixel- und numerische Werte auf dieselbe Weise normalisieren.
Abb. 6. Originalbild (A) vs. Bild unter Verwendung der üblichen Normalisierungsmethode Y = (x - x.mean ()) / x.std ()
Synthetische Daten
In Situationen, in denen eine große Menge an Trainingsdaten erforderlich ist, die nicht mit der Datenmengenerhöhung erstellt werden können, stellen synthetische Daten ein leistungsfähiges Werkzeug dar. Bei synthetischen Daten handelt es sich um künstlich erzeugte Bilder, mit denen schnell große Mengen an vorgekennzeichneten, perfekt segmentierten Daten erzeugt werden können. Synthetische Daten allein reichen jedoch nicht aus, um ein Netzwerk zu trainieren, das genaue, reale Ergebnisse liefert. Um den Realismus synthetischer Daten zu verbessern, ist eine Nachbearbeitung erforderlich.
Fazit
Ein qualitativ hochwertiger Trainingsdatensatz verbessert die Inferenzgenauigkeit und -geschwindigkeit und reduziert gleichzeitig die Systemressourcen und beschleunigt den Trainingsprozess. Es gibt Methoden, um sowohl die Quantität als auch die Qualität des Datensatzes zu erhöhen. Die FLIR Firefly-Kamera ist eine großartige Option für Designer, welche die Systemgröße minimieren, hochgenaue Inferenz erzielen, Trainingsdatensätze erfassen und ihr neuronales Netzwerk einsetzen möchten.
Weitere Informationen finden Sie unter www.flir.com/firefly.