Maschinelles Lernen und neuronale Netze - Seite 40

 

BILDKLASSIFIZIERUNG mit benutzerdefiniertem Yolov8-Datensatz | Computer Vision-Tutorial

Code: https://github.com/computervisioneng/image-classification-yolov8



BILDKLASSIFIZIERUNG mit benutzerdefiniertem Yolov8-Datensatz | Computer Vision-Tutorial

In diesem Abschnitt erklärt der Referent, wie man das beste Modell für das Projekt auswählt, und macht Vorschläge zwischen der Wahl des letzten Modells, das aus dem Schulungsprozess hervorgegangen ist, oder der Wahl des Modells mit der höchsten Genauigkeit. Die Entscheidung hängt von verschiedenen Faktoren ab, darunter Daten, Problem, Anwendungsfall und Trainingsprozess. Der Referent erklärt auch, wie alle Schlussfolgerungen gezogen und neue Proben vorhergesagt werden, indem YOLO importiert und der absolute Pfad zum Modell angegeben wird, indem ein Bild vom lokalen Computer verwendet und die Ergebnisse angezeigt werden. Die Ergebnisse liefern viele Informationen, einschließlich der Wahrscheinlichkeiten und der Namen der Kategorien, auf die der Bildklassifizierer trainiert wurde.

  • 00:00:00 In diesem Abschnitt demonstriert der YouTuber, wie ein Bildklassifizierer mit YOLOv8 auf einem benutzerdefinierten Datensatz erstellt wird. Er zeigt zunächst den Datensatz, der Bilder von Wolken, Regen, Sonnenschein und Sonnenaufgängen enthält. Er erklärt auch die Dateistruktur, die YOLOv8 für die Dateneingabe erwartet. Felipe erklärt dann drei verschiedene Möglichkeiten, einen Bildklassifizierer mit YOLOv8 zu trainieren: Die erste nutzt ein Python-Skript, die zweite nutzt ein Google Colab Notebook und die dritte nutzt Darknet, das zugrunde liegende Framework für YOLOv8.

  • 00:05:00 In diesem Abschnitt geht das Tutorial auf die Abhängigkeiten ein, die zum Trainieren eines Bildklassifizierungsmodells mit Yolov8 erforderlich sind, und wie sie mit dem Python-Interpreter in PyCharm installiert werden. Die beiden Hauptpakete, die benötigt werden, sind Ultralytics und NumPy, wobei Ultralytics entscheidend für den Import der erforderlichen Daten zum Trainieren des Modells ist. Das Lernprogramm geht dann auf den Code ein, der zum Trainieren des Modells erforderlich ist, und erfordert das Festlegen des absoluten Pfads zu den Daten im richtigen Format. Es wird auch ein Testlauf für nur eine Epoche durchgeführt, um sicherzustellen, dass alles richtig funktioniert, bevor mit dem weiteren Training fortgefahren wird.

  • 00:10:00 In diesem Abschnitt zeigt der Referent, wo sich die Ergebnisse aus dem Trainingsprozess befinden und erklärt die Ordnerstruktur innerhalb des Laufordners. Anschließend demonstriert er, wie ein Bildklassifizierer mit Yolov8 über die Befehlszeile mit einem bestimmten Dienstprogramm und den erforderlichen Argumenten trainiert wird. Er fährt fort, die Einfachheit dieses Ansatzes zu demonstrieren, indem er das Modell nur für eine Epoche trainiert, und zeigt dann, wo die Ergebnisse in einem neuen Verzeichnis mit der Bezeichnung „trainiert 13“ gespeichert werden. Abschließend erläutert der Referent eine weitere Möglichkeit, das Modell mit Google Collab zu trainieren, und erläutert kurz den Prozess zur Einrichtung.

  • 00:15:00 In diesem Abschnitt zeigt der Moderator ein Notizbuch, das bereits für das Training von Yolov8-Modellen mit dem Namen "train.ipymb" erstellt wurde. Das Hochladen von Datensätzen auf Google Drive ist ein wesentlicher Schritt für Benutzer, um auf ihre Daten von Google Collab zuzugreifen, da der Prozess erfordert, dass Benutzer eine Zelle ausführen, die Google Collab mit Google Drive verbindet. Es ist wichtig, den Pfad zum Datensatz eines Benutzers in Google Drive zu kennen, da Benutzer diesen Pfad in ihre Notizbücher eingeben müssen, um ihre Datensätze richtig zu verwenden. Schließlich bietet der Presenter einfache Befehle, die Benutzer ausführen können, um die erforderlichen Bibliotheken zu installieren, die zum Trainieren der Yolov8-Modelle erforderlich sind.

  • 00:20:00 In diesem Abschnitt des Videos zeigt der Kursleiter, wie ein Bildklassifizierer mit YOLOv8 und einem benutzerdefinierten Datensatz trainiert wird und wie die in einer Google Colab-Umgebung erzielten Ergebnisse in Google Drive kopiert werden. Sie führen den Trainingsprozess für eine Epoche durch, kopieren die Ergebnisse auf Google Drive und führen dann den Trainingsprozess für 20 Epochen durch. Schließlich zeigen sie, wie analysiert werden kann, ob der Trainingsprozess zu einem guten Bildklassifizierer geführt hat. Der Kursleiter betont, wie wichtig es ist, die Datenverzeichnisvariable richtig einzustellen, und schlägt vor, die Ergebnisse in Google Drive zu kopieren, um das Herunterladen und Analysieren zu vereinfachen.

  • 00:25:00 In diesem Abschnitt werden die Ergebnisse des Trainingsprozesses für einen benutzerdefinierten Datensatz mit YOLOv8 analysiert. Die auf dem lokalen Computer gespeicherten Dateien werden untersucht, einschließlich einer Konfigurationsdatei, die alle EPA-Parameter auflistet, die während des Trainingsprozesses verwendet werden, und einer Ergebnisdatei, die den Trainings- und Validierungsverlust sowie die Genauigkeit enthält. Eine Python-Datei, die Verlust und Genauigkeit über verschiedene Epochen hinweg darstellt, wurde verwendet, um festzustellen, ob der Verlust abnimmt und ob die Genauigkeit während des Trainingsprozesses zunimmt. Es wird geschlussfolgert, dass ein einfacher, aber wirkungsvoller Ansatz darin besteht, zu überprüfen, ob der Trainingsverlust und der Validierungsverlust sinken, während die Genauigkeit steigt.

  • 00:30:00 In diesem Abschnitt erklärt der Sprecher, wie die Bewertungsgenauigkeit aussieht, wenn wir die Anzahl der Epochen erhöhen, und zeigt, dass die Genauigkeit zunimmt und dann ein Plateau erreicht. Verschiedene Parameter und ein stärker angepasstes Training könnten verwendet werden, um den Prozess zu verbessern, um ein besseres Modell zu erhalten. Außerdem wird das Verzeichnis „weights“ erklärt, in dem zwei verschiedene Dateien gespeichert werden: „last.pt“ und „best.pt“. Die Datei "last.pt" ist das Modell, das am Ende der letzten Epoche des Trainings erstellt wurde, während die Datei "best.pt" das Modell ist, das am Ende der besten Trainingsepoche erstellt wurde. In der Praxis würde das letzte Modell verwendet werden, um die endgültigen Ergebnisse zu erhalten.

  • 00:35:00 In diesem Abschnitt erörtert der Referent, wie man das beste Modell für das Projekt auswählt, und macht Vorschläge zwischen der Auswahl des letzten Modells, das aus dem Trainingsprozess hervorgegangen ist, oder der Auswahl des Modells mit der höchsten Genauigkeit. Die Entscheidung hängt von verschiedenen Faktoren ab, darunter Daten, Problem, Anwendungsfall und Trainingsprozess. Der Referent erklärt auch, wie alle Schlussfolgerungen gezogen und neue Proben vorhergesagt werden, indem YOLO importiert und der absolute Pfad zum Modell angegeben wird, indem ein Bild vom lokalen Computer verwendet und die Ergebnisse angezeigt werden. Die Ergebnisse liefern viele Informationen, einschließlich der Wahrscheinlichkeiten und der Namen der Kategorien, auf die der Bildklassifizierer trainiert wurde.

  • 00:40:00 In diesem Abschnitt des Videos erklärt der Moderator, wie man ein Wörterbuch verwendet, um die Klassifizierungen eines Bildes mit YOLOv8 zu identifizieren. Die Ergebnisse des Bildklassifizierers sind Ganzzahlen, die unterschiedlichen Kategorien entsprechen, und ein Wörterbuch wird verwendet, um zu identifizieren, welche Kategorie jede Ganzzahl darstellt. Zusätzlich wird der Wahrscheinlichkeitsvektor aller verschiedenen Klassen für ein bestimmtes Bild erhalten, und der Präsentator demonstriert, wie man die maximale Wahrscheinlichkeit und die entsprechende Kategorie mit numpy identifiziert. Der Moderator zeigt abschließend, wie man ein Bild mit dem YOLOv8-Modell klassifiziert, und schlägt vor, seinen Kanal für weitere Computer-Vision-Engineering-Projekte zu abonnieren.
GitHub - computervisioneng/image-classification-yolov8
GitHub - computervisioneng/image-classification-yolov8
  • computervisioneng
  • github.com
You can download the same dataset I use in the video here. Ajayi, Gbeminiyi (2018), “Multi-class Weather Dataset for Image Classification”, Mendeley Data, V1, doi: 10.17632/4drtyfjtfy.1
 

Trainieren Sie die Yolov8-Objekterkennung auf einem benutzerdefinierten Datensatz | Schritt-für-Schritt-Anleitung | Computer Vision-Tutorial

Code: https://github.com/computervisioneng/train-yolov8-custom-dataset-step-by-step-guide



Trainieren Sie die Yolov8-Objekterkennung auf einem benutzerdefinierten Datensatz | Schritt-für-Schritt-Anleitung | Computer Vision-Tutorial

Dieses Video-Tutorial bietet eine Schritt-für-Schritt-Anleitung zum Trainieren eines Objektdetektors mit YOLOv8 auf einem benutzerdefinierten Datensatz für Computer-Vision-Anwendungen. Das Tutorial behandelt wichtige Aspekte wie Datenerfassung, Kommentierung, Formatierung und Training sowie die Bedeutung der Analyse von Verlustfunktionsdiagrammen und realen Beispielen zur Bewertung der Modellleistung. Das Tutorial betont die Verwendung des CVAT-Tools für Annotationen, die Einhaltung des erforderlichen YOLOv8-Datenformats und die Erstellung einer YAML-Konfigurationsdatei. Das Tutorial demonstriert auch die Verwendung von Google Colab und PyCharm zum Trainieren und Testen des Objektdetektors.

Das Video demonstriert die Leistung eines YOLOv8-Objekterkennungsmodells, das auf einem Alpaka-Datensatz trainiert wurde. Der Sprecher verwendet ein Python-Skript, um Videos zu laden und Vorhersagen auszuführen, die in einigen Fällen eine nahezu perfekte Erkennung und in anderen eine stabile Erkennung zeigen, wobei einige Erkennungen in einem Video verpasst wurden. Der Referent empfiehlt, die Trainings- und Validierungsverlustfunktionen zu analysieren und zu entscheiden, ob Raum für Verbesserungen besteht, bevor das Modell erneut trainiert wird, um ein leistungsfähigeres und leistungsfähigeres Modell zu erhalten.

  • 00:00:00 In diesem Abschnitt des Videos erklärt der Moderator, wie wichtig es ist, Daten beim Training eines Objektdetektors mit YOLOv8 zu sammeln, sowie die verschiedenen Möglichkeiten, wie man Daten sammeln kann, z. B. durch das Aufnehmen eigener Fotos oder die Verwendung eines öffentlich zugänglichen Datensatzes wie das Open Images Set. Der Moderator verwendet einen Alpaka-Datensatz zu Demonstrationszwecken, und den Zuschauern werden Beispiele der im Datensatz enthaltenen Bilder gezeigt. Darüber hinaus erwähnt der Moderator, dass er den Zuschauern Skripts zur Verfügung stellen kann, um die Daten aus dem Open Images Set genau so herunterzuladen und zu formatieren, wie es für das Tutorial erforderlich ist.

  • 00:05:00 In diesem Abschnitt des Videos erläutert der Erzähler den Prozess der Datenannotation mit dem CVAT-Tool, einem Beschriftungstool, das für Objekterkennungs- und Computer Vision-bezogene Annotationsaufgaben verwendet werden kann. Der Sprecher demonstriert, wie das CVAT-Tool verwendet wird, um eine Reihe von Bildern für einen benutzerdefinierten Datensatz zu kommentieren, und erklärt, wie ein neues Projekt und eine neue Aufgabe erstellt, Bilder hochgeladen und Bezeichnungen für die zu erkennenden Objekte hinzugefügt werden. Obwohl der Erzähler bereits die Anmerkungen für die verwendeten Bilder hat, bieten sie eine Schritt-für-Schritt-Anleitung für diejenigen, die ihre Daten kommentieren müssen. Das Video hebt auch die Vor- und Nachteile verschiedener Annotationswerkzeuge hervor und betont gleichzeitig die Vorteile der Verwendung von CVAT.

  • 00:10:00 In diesem Abschnitt zeigt der Videoersteller, wie Objekte auf einem Bilddatensatz für die Objekterkennung mit dem YOLOv8-Algorithmus gekennzeichnet werden. Der Ersteller verwendet Bilder von Alpakas und demonstriert, wie das Objekt in eine Verbindungsbox eingeschlossen wird, damit der Algorithmus die Objekte erkennen und identifizieren kann. Sie erklären auch, wie wichtig es ist, Ihre eigenen Daten zu kommentieren, um mit den verschiedenen Situationen vertraut zu sein, die während des Kommentierens auftreten können, und um Klarheit über die erkannten Objekte zu schaffen. Der Ersteller weist darauf hin, dass Datenkommentierungen zwar mit externen Diensten durchgeführt werden können, es jedoch wichtig ist, einige der Bilder selbst zu kommentieren, um die Daten besser zu verstehen.

  • 00:15:00 In diesem Abschnitt wird die Bedeutung von Kriterien für die Annotation von Bildern am Beispiel eines Alpaka-Datensatzes diskutiert. Die verschiedenen Möglichkeiten zum Definieren von Begrenzungsrahmen für Objekte werden ebenfalls gezeigt, einschließlich des Anpassens des Rahmens an das Objekt oder eines entspannteren Begrenzungsrahmens. Das Annotationstool cb80 wird als nützliche und benutzerfreundliche Webanwendung zum Formatieren und Annotieren von Daten hervorgehoben, wodurch die Bedeutung der Datenannotation in Algorithmen zur Erkennung von Trainingsobjekten hervorgehoben wird.

  • 00:20:00 In diesem Abschnitt des Videos erklärt der Moderator das spezifische Datenformat, das für YOLOv8 erforderlich ist, um einen Objektdetektor zu trainieren. Jeder Algorithmus beim maschinellen Lernen hat seine eigenen Anforderungen an die Dateneingabe, und YOLO benötigt die Daten in einem ganz bestimmten Format. Der Moderator demonstriert, wie annotierte Daten aus CV80 exportiert und in das YOLO-Format konvertiert werden. Das YOLO-Format erfordert, dass die Anmerkungen und die entsprechenden Bilder denselben Namen und unterschiedliche Dateierweiterungen haben, wobei jede Begrenzungsrahmen-Anmerkung eine Klassennummer und vier Gleitkommazahlen enthält, die die mittlere Position, Breite und Höhe des Begrenzungsrahmens definieren. Es wird betont, dass es für das Training eines Objektdetektors entscheidend ist, Daten im richtigen Format zu haben.

  • 00:25:00 In diesem Abschnitt erklärt der Referent, wie die Daten für die Trainingsobjekterkennung mit YOLOv8 auf einem benutzerdefinierten Datensatz strukturiert werden. Der erste Schritt besteht darin, zwei Verzeichnisse zu erstellen: eines für Bilder und eines für Etiketten, mit bestimmten Verzeichnisnamen, die nicht geändert werden können. Innerhalb des Bilderverzeichnisses sollten sich alle Bilder befinden, die für das Training verwendet werden, und ein Zugverzeichnis kann der Einfachheit halber verwendet werden. Innerhalb des Etikettenverzeichnisses sollten für jedes Bild Anmerkungsdateien vorhanden sein, die einem Standardformat folgen, in dem jede Zeile die Klassen-ID, die X/Y-Position der Mitte des Begrenzungsrahmens sowie die Breite und Höhe des Begrenzungsrahmens angibt. Der Referent erklärt auch, wie Sie zusätzliche Verzeichnisse für Validierungs- oder Testdaten oder für verschiedene Versionen der Daten verwenden können.

  • 00:30:00 In diesem Abschnitt erläutert das Video-Tutorial den Prozess des Trainierens Ihres Objektdetektors mit YOLO V8 unter Verwendung von Python oder dem Befehlszeilendienstprogramm. Das offizielle Repository von YOLO V8 bietet die Möglichkeit, mit ein paar Python-Anweisungen oder durch Ausführen eines Befehls im Terminal zu trainieren. Das Tutorial geht dann durch eine Schritt-für-Schritt-Anleitung zum Trainieren eines Objektdetektors mit YOLO V8 in einem PyCharm-Projekt, einschließlich des Imports der Ultralytics-Bibliothek und der Erstellung einer YAML-Konfigurationsdatei. Das Tutorial hebt auch hervor, dass Benutzer zwischen der Arbeit in einer lokalen Umgebung oder Google Colab wählen können.

  • 00:35:00 In diesem Abschnitt des Videos erläutert der Sprecher die Konfigurationsdatei zum Trainieren eines Objektdetektors mit YOLO V8 auf einem benutzerdefinierten Datensatz. Sie erklären, wie die Namen der verschiedenen erkannten Klassen, der absolute Pfad zum Verzeichnis mit den Bildern und Anmerkungen und der relative Pfad zum Speicherort der Bilder festgelegt werden. Der Referent erwähnt auch die beiden Schlüsselwörter „train“ und „val“, die sich auf die Trainings- bzw. Validierungsdaten beziehen. Sie betonen, wie wichtig es ist, einen absoluten Pfad anstelle eines relativen Pfads zu verwenden, um Probleme zu vermeiden. Der Sprecher demonstriert dann, wie die Datei ausgeführt wird, und beginnt den Trainingsprozess für eine Epoche, wobei er betont, dass gewartet werden muss, bis der Prozess abgeschlossen ist. Schließlich zeigen sie die nach Abschluss des Trainingsprozesses generierten Ausgabedateien.

  • 00:40:00 In diesem Abschnitt des Video-Tutorials zeigt der Sprecher die Stapel von Bildern, die zum Trainieren des YOLOv8-Objekterkennungsalgorithmus verwendet werden, sowie ähnliche Bilder zur Validierung. Der Referent erklärt, dass sie ein Flach- und Dummy-Training durchführen, und zeigt die dafür verwendeten Dateien. Der Referent zeigt dann, wie der Algorithmus von der Befehlszeile mit dem Terminal und auch von einem Google Collab-Notebook aus trainiert wird. Das Notebook besteht nur aus fünf Zellen, und der Referent demonstriert, wie einfach es ist, Daten hochzuladen, Google Drive zu mounten und den Algorithmus zu trainieren, indem er einfach den relativen Pfad zum Speicherort der Daten angibt.

  • 00:45:00 In diesem Abschnitt zeigt das Video-Tutorial, wie Sie mit Google Colab einen YOLOv8-Objektdetektor für einen benutzerdefinierten Datensatz trainieren. Der Prozess umfasst das Speichern einer bestimmten Variablen und das Ausführen des Befehls „pip install ultralytics“ in der Google Colab-Umgebung über den Ausrufezeichenbefehl. Das Tutorial zeigt, wie Sie dieselben Codezeilen eingeben, die in der lokalen Umgebung verwendet werden, und wie Sie einen absoluten Pfad zum Google Drive-Verzeichnis angeben. Sobald die Dateien hochgeladen und die Befehle ausgeführt wurden, ähnelt der Trainingsprozess dem in der lokalen Umgebung. Das Tutorial weist Benutzer an, auf den Abschluss der Ausführung zu warten und daran zu denken, den Befehl auszuführen, der das Ergebnisverzeichnis in das ausgewählte Verzeichnis in Google Colab kopiert.

  • 00:50:00 In diesem Abschnitt konzentriert sich das Video-Tutorial auf das Testen der Leistung des Yolov8-Objektdetektors, der mit einem benutzerdefinierten Datensatz trainiert wurde. Der erste Schritt beim Testen des Modells besteht darin, in das Verzeichnis zu gehen, in dem alle Informationen zum Trainingsprozess gespeichert wurden. Das Video zeigt dann verschiedene Ausgaben und Diagramme, die verwendet werden können, um die Leistung des Modells zu analysieren, einschließlich Konfusionsmatrizen, F1-Vertrauenskurven und Verlustfunktionsdiagramme. Das Video empfiehlt, sich auf die Verlustdiagramme zu konzentrieren und sicherzustellen, dass alle Verluste sinken, da dies eine einfache, aber leistungsstarke Möglichkeit ist, die Leistung des Modells zu analysieren. Es werden auch verschiedene Situationen in den Diagrammen der Verlustfunktion diskutiert, wie z. B. eine Flatline-Verlustfunktion, die darauf hinweisen könnte, dass das Modell alles gelernt hat, was es zum Lernen benötigt.

  • 00:55:00 In diesem Abschnitt des Videos erörtert der Moderator die Analyse der Verlustfunktion, um Einblicke in den Trainingsprozess eines Objekterkennungsmodells zu erhalten. Wenn die Verlustfunktion nach unten geht, läuft alles gut, aber wenn sie nach oben geht, gibt es ein Problem mit dem Training. Beim Betrachten der Diagramme und Analysieren dieser Informationen geht es eher um Recherche, aber der Präsentator schlägt eine visuellere Methode vor, um die Leistung des Modells zu bewerten, nämlich reale Beispiele zu betrachten und zu sehen, wie das Modell mit realen Daten abschneidet. Der Moderator zeigt Beispiele für das Modell, das echte Alpakas in Videos erkennt, bei denen es sich um völlig unsichtbare Daten handelt, um die Leistung des Modells zu testen. Obwohl die Ergebnisse nicht perfekt sind, ist die Leistung gut, und der Moderator argumentiert, dass diese visuelle Bewertung für einen Freiberufler, der an einem Kundenprojekt arbeitet, relevanter ist, da sich der Kunde möglicherweise nicht für die Plots und Metriken interessiert, sondern eher sehen möchte, wie dies funktioniert Modell funktioniert mit echten Daten.
  • 01:00:00 In diesem Abschnitt demonstriert der Referent die Leistung des YOLOv8-Objekterkennungsmodells, das auf einem Alpaka-Datensatz mit unsichtbaren Daten durch ein Python-Skript trainiert wurde, das Videos lädt und Vorhersagen ausführt. Die Erkennung scheint gut zu funktionieren, mit einer fast perfekten Erkennung in einigen Fällen und einer stabilen Erkennung in anderen, mit Ausnahme einiger verpasster Erkennungen in einem Video. Der Referent empfiehlt, die Trainings- und Validierungsverlustfunktionen zu analysieren, ihren Abwärtstrend und das Vorhandensein von Raum für Verbesserungen zu prüfen, um zu entscheiden, ob das Modell erneut trainiert werden soll, was der Referent tut, um ein leistungsfähigeres und leistungsstärkeres Modell zu erhalten.
GitHub - computervisioneng/train-yolov8-custom-dataset-step-by-step-guide
GitHub - computervisioneng/train-yolov8-custom-dataset-step-by-step-guide
  • computervisioneng
  • github.com
In this video I show you a super comprehensive step by step tutorial on how to use yolov8 to train an object detector on your own custom dataset! dataset If you want to train yolov8 with the same dataset I use in the video, this is what you should do: Go to prepare_data directory. Execute...
 

Yolov8 Objekterkennung + Deep Sort Objektverfolgung | Computer Vision-Tutorial

Code: https://github.com/computervisioneng/object-tracking-yolov8-deep-sort



Yolov8 Objekterkennung + Deep Sort Objektverfolgung | Computer Vision-Tutorial

Dieses Video-Tutorial zeigt, wie Sie ein Objekterkennungs- und -verfolgungssystem mit YOLOv8 und Deep Sort implementieren. Der Moderator geht Schritt für Schritt durch den Prozess, vom Einrichten der Umgebung, Laden und Erkennen von Objekten in einem Video mit YOLOv8 bis hin zum Verfolgen der erkannten Objekte im Laufe der Zeit mit Deep Sort. Sie erklären auch, wie wichtig es ist, die richtige Dateistruktur zu erstellen und die erforderlichen Abhängigkeiten zu installieren. Sobald die Erkennungen aus YOLOv8 extrahiert wurden, wird Deep Sort-Objektverfolgung angewendet, um die erkannten Objekte im Laufe der Zeit zu verfolgen. Abschließend erklärt der Moderator, wie die endgültigen Ausgabeframes in einer Videodatei gespeichert werden, und ermutigt die Zuschauer, den Erkennungsschwellenwert für eine bessere Genauigkeit zu ändern.

  • 00:00:00 In diesem Abschnitt des Videos stellt der Moderator das Projekt der Arbeit mit der Objekterkennung mit YOLOv8 und der Objektverfolgung mit Deep Sort vor. Das Ziel besteht darin, einen Tracking-Algorithmus zu erstellen, der Personen verfolgen kann, die sich in einem Video bewegen, und Begrenzungsrahmen in verschiedenen Farben verwendet, um zu verfolgende Objekte anzuzeigen. Der Host zeigt die YOLOv8- und Deep-Sort-Repositories, die verwendet werden, sowie die Videodaten, die getestet werden. Schließlich führt der Host eine Datei namens „tracker.py“ ein, die ein Wrapper um Deep Sort ist, der den Objektverfolgungsprozess durch die Verwendung von High-Level-Funktionen vereinfacht.

  • 00:05:00 In diesem Abschnitt des Videos erklärt der Moderator, wie die Umgebung für das Tutorial eingerichtet wird, indem das erforderliche Repository geklont, die erforderlichen Dateien heruntergeladen und die erforderlichen Bibliotheken importiert werden. Sie erklären, wie wichtig es ist, die richtige Dateistruktur zu erstellen und die richtigen Abhängigkeiten zu installieren, um die Kompatibilität mit dem Code sicherzustellen. Der Moderator demonstriert dann, wie man ein Video lädt und Frames daraus mit OpenCV liest und wie man die Frames in einem Fenster anzeigt.

  • 00:10:00 In diesem Abschnitt demonstriert der Moderator, wie das vorab trainierte YOLOv8-Modell verwendet wird, um Erkennungen in einem Video zu erzeugen. Mit Ultralytics wird das vortrainierte Modell importiert und die Funktion wird für einen Frame des Videos aufgerufen. Die ausgegebenen Erkennungsergebnisse werden gedruckt, aber da die Ergebnisse in einem benutzerdefinierten Objekttyp vorliegen, müssen sie entpackt und mithilfe einer for-Schleife in eine Liste umgewandelt werden. Die endgültigen Ausgabeerkennungen werden in einem neuen Objekt gespeichert. Sobald der Code erfolgreich ausgeführt wurde, können die Ergebnisse als Eingabedaten für Objektverfolgungsalgorithmen verwendet werden.

  • 00:15:00 In diesem Abschnitt des Video-Tutorials demonstriert der Referent, wie man alle wichtigen Erkennungsinformationen aus dem YOLOv8-Objektdetektor auspackt und die erkannten Objekte mit Deep Sort-Objektverfolgung verfolgt. Sie zeigen, wie Informationen wie die Klassen-ID, der Konfidenzwert und die Koordinaten für jede Erkennung extrahiert werden, um sie an den Tracking-Algorithmus weiterzugeben. Der Referent zeigt auch, wie der Deep Sort-Tracker mit den Erkennungen und Frames initialisiert und aufgerufen wird, um die erkannten Objekte über die Zeit zu verfolgen.

  • 00:20:00 In diesem Abschnitt erklärt der Moderator den Prozess der Deep-Sort-Objektverfolgung, bei der Merkmale über dem Rahmen und den erkannten Objekten berechnet werden. Der Algorithmus schneidet den Frame zu und extrahiert Merkmale, und um alle Tracks zu durchlaufen, verwendet der Präsentator eine Schleife, um auf den Begrenzungsrahmen und die Track-ID zuzugreifen. Jeder im Video erkannten Person oder jedem Objekt wird eine ID zugewiesen, die über alle Frames hinweg stabil bleibt. Für jede neu erkannte ID zeichnet der Präsentator sie mit einer anderen Farbe unter Verwendung einer Liste zufälliger Farben in der Visualisierung.

  • 00:25:00 In diesem Abschnitt des Videos löst der Sprecher das Problem, das Video mit all den verschiedenen Einzelbildern und Erkennungen zurück auf dem lokalen Computer zu speichern. Ein neues Objekt, CV2 Video Writer, wird erstellt, um das Video unter einem bestimmten Namen und Ort zu speichern. Das Video wird mit einem MP4-Codec und derselben Bildrate wie das Originalvideo gespeichert. Der Referent betont, dass alles einwandfrei funktioniert, auch wenn aufgrund der vielen hochgeladenen Objekte und der Ausführung auf einer CPU keine Echtzeiterkennung erreicht wird. Insgesamt wurde das Problem der Objekterkennung mit YOLOv8 und der Objektverfolgung mit Deep SORT erfolgreich gelöst.

  • 00:30:00 In diesem Abschnitt schließt der Referent das Tutorial ab, indem er die letzten Schritte bespricht, die zur Implementierung eines erfolgreichen Objekterkennungs- und -verfolgungssystems mit YOLOv8 und Deep Sort erforderlich sind. Sie demonstrieren, wie die Ausgabeframes in einer out.mp4-Datei gespeichert werden, und zeigen den erfolgreichen Abschluss. Außerdem erwähnt der Sprecher mögliche Fehlerkennungen und ermutigt Zuschauer, die Erkennungsschwelle zu modifizieren, um die Genauigkeit des Systems zum Erkennen von Objekten wie Vögeln zu verbessern. Insgesamt dient dieses Tutorial als hilfreicher Leitfaden für alle, die ein Objekterkennungs- und -verfolgungssystem mithilfe von Computer-Vision-Techniken implementieren möchten.
GitHub - computervisioneng/object-tracking-yolov8-deep-sort
GitHub - computervisioneng/object-tracking-yolov8-deep-sort
  • computervisioneng
  • github.com
Yolov8 object detection + deep sort object tracking ! requirements Deep Sort We are working on this fork from deep sort official implementation. You can download deep sort feature extraction model here. data You can download the same data I use in the video here.
 

Bildsegmentierung mit benutzerdefiniertem Yolov8-Datensatz | Computer Vision-Tutorial

Code: https://github.com/computervisioneng/image-segmentation-yolov8

Daten: https://drive.google.com/drive/folders/1JvA2IvHBy2QOnAtPtoy4JbEEmtbz5dnK



Bildsegmentierung mit benutzerdefiniertem Yolov8-Datensatz | Computer Vision-Tutorial

Dieses Tutorial behandelt das Kommentieren von Bildern und das Erstellen einer binären Maske für die semantische Segmentierung, das Formatieren und Strukturieren des Datensatzes für das Training mit YoloV8, das Trainieren des Modells in Google Collab, das Analysieren der Trainingsergebnisse und das Treffen von Vorhersagen mit einem Python-Skript. Der Referent betont, wie wichtig es ist, das Dateisystem zu strukturieren und die Verlustfunktion und Validierungsmetriken zu analysieren, um ein gutes Modell für den benutzerdefinierten YoloV8-Datensatz zu trainieren. Sie diskutieren auch die Auswirkungen fehlerhafter Daten auf die Vorhersagequalität und empfehlen, die Vorhersagen des aktuellen Modells zu verwenden, um ein neues und verbessertes Modell zu trainieren. Insgesamt bietet das Tutorial eine umfassende Anleitung zur Bildsegmentierung mit dem benutzerdefinierten YoloV8-Datensatz.

  • 00:00:00 In diesem Abschnitt des Videos zeigt der Kursleiter den Datensatz, der für die semantische Segmentierung verwendet wird: eine Reihe von Entenbildern mit entsprechenden Binärmasken. Die binäre Maske hat alle weißen Pixel für ein Objekt im Bild und alle schwarzen Pixel für alles andere. Der Dozent lädt diesen Datensatz aus Open Images Asset Version 7 herunter und zeigt die Website cvat.ai, falls eigene Bilddaten annotiert werden müssen. Anschließend zeigt der Kursleiter, wie dieses Tool verwendet wird, um eine binäre Maske für ein Bild in nur einer Bildanmerkung zu erstellen.

  • 00:05:00 In diesem Abschnitt des Tutorials demonstriert der Moderator, wie ein Bild mit Anmerkungen versehen und eine binäre Maske für die semantische Segmentierung erstellt wird. Am Beispiel eines Entenbildes führen sie den Betrachter durch den Prozess des Zeichnens eines Polygons, um die Maske um den Körper der Ente zu erstellen, einschließlich einer Diskussion darüber, ob bestimmte Teile unter Wasser als Teil der Ente kommentiert werden sollen oder nicht. Der Moderator betont, dass die Maske nicht pixelgenau sein muss, aber genau genug sein sollte, um eine gute Maske zu erstellen. Schließlich zeigen sie, wie die annotierten Daten gespeichert und heruntergeladen werden, um sie beim Erstellen eines Datensatzes zu verwenden.

  • 00:10:00 In diesem Abschnitt erklärt der Referent, wie der Datensatz formatiert und strukturiert wird, um ein semantisches Segmentierungsmodell mit YoloV8 zu trainieren. Der erste Schritt besteht darin, die erforderlichen Daten mit der Option Export Task Data Set herunterzuladen und die Segmentierungsmaske auszuwählen. Sobald die Daten heruntergeladen sind, müssen sie in einer Verzeichnisstruktur organisiert werden, die die Bilder, Masken und Beschriftungen enthält. Die aus den Bildern generierten Masken müssen durch ein vom Referenten bereitgestelltes Python-Skript in ein anderes Dateiformat konvertiert werden. Dieses Dateiformat wird von YoloV8 benötigt und enthält dieselben Informationen wie die binären Masken. Der Referent betont auch, wie wichtig es ist, das Dateisystem auf eine bestimmte Weise zu strukturieren, damit YoloV8 die Daten finden und verwenden kann.

  • 00:15:00 In diesem Abschnitt erläutert der Moderator die notwendige Verzeichnisstruktur, die für die Bildsegmentierung mit dem benutzerdefinierten Yolov8-Datensatz erforderlich ist. Benutzer benötigen zwei Verzeichnisse: eines mit dem Namen „train“, das alle Trainingsdaten für das semantische Segmentierungsmodell enthält, und das andere mit dem Namen „ball“, das Bilder enthält, die zur Validierung des Modells verwendet werden. Innerhalb dieser Verzeichnisse befinden sich zwei weitere Verzeichnisse – „images“ und „labels“ – die beide zwei Unterverzeichnisse namens „train“ und „ball“ haben. Ersteres enthält alle Anmerkungen, die aus den Trainingsmasken generiert wurden. Der Referent richtet die Struktur in pycharm ein und erklärt anschließend, wie das Modell mithilfe eines vortrainierten Yolov8-Modells von Ultralytics trainiert wird, einschließlich der Codeimplementierung und der Bearbeitung der Konfigurationsdatei.

  • 00:20:00 In diesem Abschnitt erklärt der Referent, dass das semantische Segmentierungsmodell aufgrund des Zugriffs auf eine kostenlose GPU in Google Collab trainiert wird, wodurch der Prozess viel schneller wird. Der Referent empfiehlt, Daten, einschließlich Verzeichnisse und Bilder, sowie die Datei config.yaml hochzuladen, bevor Sie mit dem Prozess beginnen. Darüber hinaus zeigt und erklärt der Redner, wie jede einzelne Zelle auf dem Jupiter-Notebook ausgeführt wird, und teilt den Speicherort seiner Daten auf Google Drive mit und ermutigt den Benutzer, dasselbe zu tun, wenn er seine Daten hochlädt. Abschließend erwähnt der Referent die Installation von Ultralytics, damit sie YOLOv8 im Notebook verwenden können, und betont die Sicherstellung der Verwendung von Google Collab mit GPU bei der Überprüfung des Laufzeittyps.

  • 00:25:00 In diesem Abschnitt des Tutorials trainiert der Sprecher das Modell für 10 Epochen und speichert die Ergebnisse im Ordner „Segment Train 2“. Der nächste Schritt besteht darin, die Trainingsergebnisse zu analysieren, um zu überprüfen, ob alles einwandfrei funktioniert. Der einfachste Weg, dies zu tun, besteht darin, den gesamten Inhalt des Verzeichnisses, in dem die Ergebnisse gespeichert sind, auf Google Drive zu kopieren. Sobald die Ergebnisse auf einen lokalen Computer heruntergeladen wurden, empfiehlt der Referent, sich auf die Analyse der Verlustfunktion, des Segmentierungsverlusts, des Trainingsverlusts und der Validierungsverlustdiagramme zu konzentrieren, um sicherzustellen, dass die Verlustfunktion sinkt. Dies ist ein gutes Zeichen dafür, dass die Dinge gut funktionieren, während eine zunehmende Verlustfunktion auf ein ernsthaftes Problem hinweist.

  • 00:30:00 In diesem Abschnitt spricht der Redner über die Analyse der Verlustfunktion und der Validierungsmetriken, um ein gutes Modell für den benutzerdefinierten Yolov8-Datensatz zu trainieren. Es ist ein gutes Zeichen, wenn der Trainings- und Validierungsverlust zurückgeht, was auf einen Trend zur Verbesserung der Vorhersagequalität hindeutet. Der Referent warnt jedoch davor, dass fehlende Anmerkungen und andere Fehler in den Trainingsdaten die Vorhersagequalität beeinträchtigen und zu unerwarteten Trends im Diagramm der Verlustfunktion führen können. Daher rät der Referent, sich bei der Analyse dieser Diagramme nicht verrückt zu machen und eine Analyse der Vorhersagen einzubeziehen, um die Gesamtleistung des Modells zu bewerten.

  • 00:35:00 In diesem Abschnitt erörtert der Referent die Bedeutung der Analyse der Validierungs- und Bewertungsergebnisse eines Modells, das auf einem Datensatz trainiert wurde, der nicht perfekt ist und Fehler aufweist. Diese Fehler können behoben werden, indem die Vorhersagen des aktuellen Modells verwendet werden, um ein neues und verbessertes Modell zu trainieren. Der Sprecher zeigt das Verzeichnis, in dem die Gewichtungen des Modells gespeichert sind, und erklärt, dass last.pt und best.pt die letzten bzw. besten Modelle während des Trainings darstellen. Abschließend empfiehlt der Referent, less.pt zu verwenden, da es viel mehr Informationen berücksichtigt als das best.pt-Modell.

  • 00:40:00 In diesem Abschnitt des Video-Tutorials zur Bildsegmentierung mit dem benutzerdefinierten YOLOv8-Datensatz demonstriert der Moderator, wie man mithilfe eines Python-Skripts Vorhersagen trifft. Er importiert zunächst das YOLO-Paket aus Ultralytics und definiert das Modell mit less.pt aus dem Ergebnisverzeichnis. Dann gibt er den Bildpfad an und importiert CV2, um dieses Bild zu öffnen und zu lesen. Der Präsentator erhält die Modellergebnisse, indem er das Modell auf dem Bild aufruft und durch die Ergebnisse iteriert, um die vorhergesagte Maske zu erhalten. Er skaliert die Maske auf die Größe des Originalbildes und speichert sie als output.png. Der Moderator zeigt auch, wie die Maske über das Originalbild gelegt wird, um eine gute Vorhersage zu gewährleisten.

  • 00:45:00 In diesem Abschnitt demonstriert der Moderator das Ergebnis des semantischen Segmentierungsmodells, das er mit YOLOv8 trainiert hat. Anhand eines überlagerten Bildes und einer Transparenz zeigen sie, dass die Maske zwar nicht 100 % perfekt ist, aber angesichts der Fehler in den Daten ein sehr gutes Ergebnis ist. Der Moderator fasst dann den gesamten Prozess vom Kommentieren der Daten, Trainieren des Modells, Validieren bis zum Treffen von Vorhersagen zusammen. Schließlich ermutigen sie die Zuschauer, ihren Kanal zu abonnieren und sich andere Videos anzusehen, die sie veröffentlicht haben.
GitHub - computervisioneng/image-segmentation-yolov8
GitHub - computervisioneng/image-segmentation-yolov8
  • computervisioneng
  • github.com
Contribute to computervisioneng/image-segmentation-yolov8 development by creating an account on GitHub.
 

Tensorflow-Objekterkennung in 5 Stunden mit Python | Vollständiger Kurs mit 3 Projekten

Holen Sie sich den Code Tensorflow-Objekterkennungs-Python-Kurscode: https://github.com/nicknochnack/TFODCourse

Tensorflow-Objekterkennungsreaktions-App: https://github.com/nicknochnack/TFODApp

Tensorflow-Objekterkennung für Raspberry Pi: https://github.com/nicknochnack/TFODRPi



Tensorflow-Objekterkennung in 5 Stunden mit Python | Vollständiger Kurs mit 3 Projekten


Teil 1

  • 00:00:00 In diesem Abschnitt stellt der Ausbilder den Objekterkennungskurs vor, der komplette Anfänger in der Objekterkennung auf ein kompetentes Niveau als Praktiker bringen soll. Der Kurs ist umfassend und umfasst die Installation und Einrichtung der TensorFlow-Objekterkennungs-API, das Sammeln und Beschriften von Bildern, das Trainieren des Modells, das Exportieren des Erkennungsmodells in verschiedene Formate und das Testen der Modelle in verschiedenen Anwendungsfällen. Der Kurs wird ausschließlich mit Open-Source-Tools durchgeführt, hauptsächlich Python und TensorFlow-Objekterkennung, wodurch es einfach ist, den Code für die Erkennung verschiedener Objekte umzufunktionieren. Der Kursleiter erläutert auch die Vorteile der Verwendung der TensorFlow-Objekterkennungs-API, die den Prozess der Erstellung von Objekterkennungsmodellen aufgrund der verschiedenen zusätzlichen Funktionen, die sie bietet, beschleunigt.

  • 00:05:00 In diesem Abschnitt erklärt der Kursleiter den Unterschied zwischen traditioneller Programmierung und maschinellem Lernen, bei dem maschinelles Lernen Daten und Antworten verwendet, um ein Objekterkennungsmodell zum Erlernen der Regeln zu trainieren, anstatt explizite Regeln zum Erkennen von Objekten zu definieren. Das Modell kann Objekte in statischen Bildern und Echtzeit-Video-Feeds erkennen und kann durch Einfrieren und Konvertieren in verschiedene Formate wie tensorflow.js und tf lite exportiert und konvertiert werden. Die Leistungsoptimierung ist entscheidend für die Verbesserung der Genauigkeit des Modells, und der Ausbilder behandelt dieses Thema in Schritt sechs. Schließlich demonstriert der Kursleiter drei Projekte, darunter die Verwendung eines USB-Mikroskops zum Erkennen von Fehlern in kleinen Teilen, das Erkennen von Objekten in einem Videospiel und das Zählen der Anzahl von Objekten, die eine Webcam passieren.

  • 00:10:00 In diesem Abschnitt stellt der Kursleiter die drei Projekte vor, die im Tutorial behandelt werden, darunter das Trainieren eines Objekterkennungsmodells zum Identifizieren von Fehlern auf Leiterplatten, das Erkennen von Handgesten und das Integrieren des Modells in eine Web-App. und Durchführen einer Objekterkennung in Echtzeit mit einem Raspberry Pi. Der Dozent stellt für jedes der Projekte drei Codesätze auf Github zur Verfügung, die verwendet werden, um die Modelle Schritt für Schritt zu erstellen. Der erste Schritt besteht darin, den Code zu klonen und eine virtuelle Umgebung zu erstellen, die wie ein separater Raum in einem Haus erklärt wird. Dieser Abschnitt enthält auch hilfreiche Tipps zum Befolgen des Tutorials, z. B. das Überprüfen aller Schritte, bevor Sie fortfahren, das Erstellen von Notizen und das Bitten um Hilfe, falls erforderlich, über den bereitgestellten Discord-Server.

  • 00:15:00 In diesem Abschnitt des Videos erklärt der Kursleiter die Bedeutung der Verwendung einer virtuellen Umgebung bei der Arbeit mit TensorFlow-Objekterkennungsmodellen. Er beschreibt es als das Erstellen eines neuen Raums in einem Haus, in dem alle Objekterkennungsabhängigkeiten installiert werden, um sicherzustellen, dass sie nicht mit zuvor installierten Bibliotheken in Konflikt geraten. Der Kursleiter spricht dann über die Abhängigkeiten, die für die Arbeit mit TensorFlow erforderlich sind, einschließlich Visual C++ Build Tools und CUDA und CUDNN für GPU-basierte Beschleunigung. Er erklärt, dass diese Bibliotheken für ein schnelleres Training von Objekterkennungsmodellen unerlässlich sind, und zeigt, wie man sie herunterlädt und installiert. Insgesamt bietet dieser Abschnitt eine wesentliche Grundlage, die zum Einrichten einer Entwicklungsumgebung zum Erstellen von TensorFlow-Objekterkennungsmodellen erforderlich ist.

  • 00:20:00 In diesem Abschnitt des Video-Lernprogramms erläutert der Kursleiter die erforderlichen Anforderungen für die Installation der TensorFlow-Objekterkennung, einschließlich der erforderlichen spezifischen Versionen von Python, GCC-Compiler, Bazel, CUDA und cuDNN. Der Kursleiter betont, dass der Abgleich der Versionen von TensorFlow, CUDA und cuDNN für die Nutzung von GPUs während des Trainings unerlässlich ist. Sie stellen Links zu Installationsanleitungen für Windows und Linux/macOS bereit und raten Zuschauern, ihre TensorFlow-Version zu überprüfen und geeignete CUDA- und cuDNN-Versionen zu erwerben. Darüber hinaus erwähnt der Kursleiter, dass er einen Fehlerleitfaden für häufige Probleme erstellt hat, die während der Installation oder während der Ausführung des Objekterkennungs-Notebooks auftreten. Der Leitfaden enthält Lösungen für verschiedene Fehler und kann im angegebenen GitHub-Repository-Link gefunden werden.

  • 00:25:00 In diesem Abschnitt zeigt der Kursleiter, wie eine virtuelle Umgebung für die TensorFlow-Objekterkennung mit Python eingerichtet wird. Er zeigt die Schritte auf, die zum Erstellen der Umgebung zu befolgen sind, was das Klonen eines Repositorys mit dem erforderlichen Code und den erforderlichen Abhängigkeiten, das Erstellen einer virtuellen Umgebung mit Pythons venv-Paket und das Aktivieren der Umgebung umfasst. Das Erstellen einer virtuellen Umgebung ähnelt dem Erstellen eines neuen Raums in einem Haus, in dem Bibliotheken und Abhängigkeiten isoliert werden können, um in einer isolierten Umgebung an TensorFlow-Objekterkennungsprojekten zu arbeiten.

  • 00:30:00 In diesem Abschnitt erläutert der Videoersteller den Prozess der Erstellung einer virtuellen Umgebung für die TensorFlow-Objekterkennung (TFOD), um Training, App und Raspberry Pi-Code getrennt zu halten. Der Videoersteller führt die Schritte zur Aktivierung der virtuellen Umgebung durch, einschließlich der Ausführung eines Befehls auf einem Windows-Computer zur Aktivierung der Umgebung. Es gibt eine Demonstration der Aktualisierung des Pip-Installationsprogramms und der anschließenden Installation von TensorFlow. Der Vorteil dieser Updates ist die Möglichkeit, Installationen in Echtzeit innerhalb des Site-Paketordners anzuzeigen. Es wird darauf hingewiesen, dass die Installation von TensorFlow manchmal mehrere Versuche erfordert und der Videoersteller über ein Überprüfungsskript verfügt, um sicherzustellen, dass alles korrekt installiert ist.

  • 00:35:00 In diesem Abschnitt erklärt der Referent, wie man die notwendigen Pakete installiert und eine virtuelle Umgebung mit Jupyter Notebook unter Verwendung von iPy Kernel einrichtet. Sie enthalten auch Anweisungen zur Installation von Anaconda Python und Jupyter Notebooks für diejenigen, die neu darin sind. Anschließend erklären sie, wie der iPy-Kernel installiert und mit dem Jupyter-Notebook verknüpft wird, um eine effizientere Data-Science-Workload zu ermöglichen. Schließlich zeigt der Referent, wie man die virtuelle Umgebung validiert und als Teil des nächsten Schritts zum Aufbau eines TensorFlow-Objekterkennungsmodells mit dem Sammeln und Beschriften von Bildern beginnt.

  • 00:40:00 In diesem Abschnitt betont der Kursleiter die Bedeutung des Sammelns und Kennzeichnens guter Bilder beim Trainieren von Objekterkennungsmodellen. Um dies zu demonstrieren, verwendet er ein Jupyter-Notebook, um Bilder von einer Webcam zu sammeln, und die LabelImg-Bibliothek, um die Bilder zu beschriften. Der Kursleiter teilt Best Practices mit, die beim Beschriften zu beachten sind, z. B. Etiketten so eng wie möglich zu halten und Bilder von Objekten in verschiedenen Winkeln und unter verschiedenen Lichtbedingungen einzufügen. Eine weitere wichtige bewährte Methode besteht darin, mit 10 bis 20 Bildern jeder Klasse zu beginnen, aber der Ausbilder beginnt mit weniger und zeigt, wie man zusätzliche Bilder hinzufügt, um das Modell neu zu trainieren, wenn die Leistung nicht optimal ist. Abschließend erklärt der Ausbilder, dass die Bereitstellung des Modells mit einer Vielzahl von Bildern ohne einen grünen Bildschirm hinter dem Objekt es verallgemeinern und besser in der Lage sein wird, Objekte zu erkennen.

  • 00:45:00 In diesem Abschnitt führt der Kursleiter die Zuschauer durch die Bilderfassungskomponente des TensorFlow-Tutorials zur Objekterkennung. Das Tutorial beginnt mit der Installation von OpenCV, einer beliebten Computer-Vision-Bibliothek, die für den Zugriff auf die Webcam und das Sammeln von Bildern verwendet wird. Der Kursleiter betont, wie wichtig es ist, sicherzustellen, dass die Abhängigkeiten in der virtuellen Umgebung installiert werden, um die Kontrolle zu behalten und einen reibungslosen Betrieb zu gewährleisten. Der Code importiert dann die erforderlichen Abhängigkeiten, einschließlich UUID, Betriebssystem und Zeit, die verwendet werden, um die Einhaltung verschiedener Dateipfade sicherzustellen und Bilder aus verschiedenen Winkeln aufzunehmen. Das Tutorial definiert dann die verschiedenen zu erfassenden Labels und erklärt, dass die Labels basierend auf den gewünschten zu erkennenden Objekten geändert werden können. Die Etiketten werden in einer Liste gespeichert, und der Ausbilder erklärt, dass die Anzahl der Bilder, die für jedes Etikett gesammelt werden, durch die Variable "Anzahl der Bilder" definiert wird.

  • 00:50:00 In diesem Abschnitt erläutert der Kursleiter das Einrichten der Ordnerstruktur für die Objekterkennung, die Bedeutung einer guten Anzahl von Bildern zu Beginn und das Aufnehmen von Bildern mit einer Webcam oder einem anderen Aufnahmegerät. Die Ordnerstruktur wird mithilfe eines bestimmten Dateipfads erstellt, der während des gesamten Tutorials befolgt werden sollte. Der Code durchläuft alle Etiketten, stellt eine Verbindung zur Webcam her und erfasst Bilder für jedes Etikett. Der Dozent betont die Wichtigkeit der korrekten Angabe der Videoaufnahmegerätenummer für die Webcam, da es sonst zu Fehlern kommen kann.

  • 00:55:00 In diesem Abschnitt erklärt der Kursleiter den Code zum Sammeln von Bildern für die Objekterkennung. Der Code durchläuft die Labels und erfasst die Frames mit der Webcam. Es erstellt ein neues Bild und platziert es mit einem eindeutigen Kennungsnamen im entsprechenden Etikettenordner. Der Befehl cv2.iamwrite wird verwendet, um das Bild in eine Datei zu schreiben und auf dem Bildschirm anzuzeigen. Der Code ermöglicht es dem Benutzer auch, die q-Taste zu drücken, um an jedem Punkt zu entkommen, und schließt alles, wenn er fertig ist. Der Kursleiter betont, dass es wichtig ist, Bilder in verschiedenen Positionen aufzunehmen, um ein verallgemeinertes Modell zu erstellen.

Teil 2

  • 01:00:00 In diesem Abschnitt betont der Referent die Wichtigkeit des schnellstmöglichen Prototypings für wissenschaftliche Projekte, um die Machbarkeit und Möglichkeit des Projekts festzustellen. Zur Veranschaulichung gibt der Referent ein Beispiel für die Erkennung gebogener LEDs, wofür ein hypergenaues Modell oder ein Sensor wie ein Mikroskop erforderlich wäre. Das schnelle Prototyping mit einem Mobilfunkmodell und einer Webcam kann eine schlechte Leistung zeigen, was auf die Notwendigkeit einer anderen Technik oder eines anderen Sensors hinweist. Das Prototyping hilft schnell, eine Grundlinie für Verbesserungen zu schaffen, und der Sprecher fährt fort, das Modell mit den gesammelten Bildern für die Daumen-nach-oben-Erkennung zu trainieren, während er betont, wie wichtig es ist, Bilder mit geringer Qualität zu löschen und mehr Bilder mit guter Qualität für eine bessere Erkennung aufzunehmen.

  • 01:05:00 In diesem Abschnitt stellt der Kursleiter das Label Image-Paket vor, mit dem die Bilder beschriftet werden. Benutzer können zum Github-Repository gehen, um das Paket zu überprüfen. Danach zeigt der Kursleiter, wie die erforderlichen Abhängigkeiten, pi qt5 und lxml, installiert und ein neuer Ordner namens tensorflow und label image erstellt werden, um das Paket zu speichern. Anschließend zeigt der Kursleiter, wie Sie das Github-Repository klonen und das Label-Image-Paket installieren, indem Sie bestimmte Befehle ausführen. Schließlich öffnet der Ausbilder die Etikettenbildanwendung und bereitet sich darauf vor, die Bilder zu etikettieren.

  • 01:10:00 In diesem Abschnitt demonstriert der Kursleiter den Prozess der Beschriftung von Bildern für die Objekterkennung mit der OpenCV Labeling-Software. Der Vorgang umfasst das Öffnen des spezifischen Verzeichnisses in der Software und das Auswählen der zu beschriftenden Bilder. Der Ausbilder empfiehlt, mit den Erkennungsetiketten so genau wie möglich umzugehen und sicherzustellen, dass die Etikettennamen mit denen in den Anmerkungen und im Trainingsschritt übereinstimmen. Darüber hinaus ermutigt der Kursleiter die Zuschauer, über verschiedene Anwendungen der Objekterkennung nachzudenken und sie auszuprobieren, indem sie denselben Prozess zum Definieren von Etiketten, Sammeln von Bildern und Beschriften verwenden. Es wird auch betont, wie wichtig es ist, sicherzustellen, dass die entsprechenden Anmerkungen für jedes Bild vorhanden sind.

  • 01:15:00 In diesem Abschnitt erklärt der Kursleiter, wie man ein Bild beschriftet, indem man eine Anmerkungsdatei erstellt. Die Anmerkungsdatei ist eine XML-Datei, die die Position des Objekts im Bild beschreibt. Der Kursleiter zeigt, wie man ein Bild mit mehreren Objekten beschriftet und erklärt, wie man die Anmerkungen richtig speichert. Der Prozess der Beschriftung von Bildern kann durch Outsourcing oder durch Verwendung neuerer Tools, die den Beschriftungsprozess mithilfe von leichten Objekterkennungsmodellen automatisieren, skaliert werden.

  • 01:20:00 In diesem Abschnitt zeigt der Videolehrer, wie Sie Bilder mithilfe von Etikettenbildern beschriften und wie Sie Prototypen erstellen, um sicherzustellen, dass Sie die richtige Technik verwenden, bevor Sie ein riesiges Objekterkennungsmodell mit Tausenden von Bildern erstellen. Er empfiehlt, mit der Beschriftung von 10–25 Bildern zu beginnen, um superschnell zu bleiben, und die richtigen Sensoren zu verwenden, um die richtigen Datenmengen zu erhalten. Der Ausbilder erklärt auch, wie wichtig es ist, die Bilder in eine Trainings- und eine Testpartition aufzuteilen, um das Modell mit einem Segment von Bildern zu trainieren und es mit einer Reihe von Bildern zu testen, die es noch nie zuvor gesehen hat. Er erstellt zwei neue Ordner namens „train“ und „test“ innerhalb des Ordners „images“, um die Trainings- und Testbilder und Anmerkungen zu speichern.

  • 01:25:00 In diesem Abschnitt lernen wir, wie wir die gesammelten und beschrifteten Bilddaten für das Training unseres Objekterkennungsmodells vorbereiten. Wir erstellen zwei Ordner, Training und Testing, um unsere Bilder und Anmerkungen zu speichern, und stellen sicher, dass wir sowohl Bild- als auch Anmerkungsdateien für jede Klasse abrufen. Anschließend erklären wir, wie Sie diese in TensorFlow-Datensätze konvertieren, die für das Training verwendet werden. Wir behandeln auch einige Best Practices für die Benennung und Organisation unserer Daten. Schließlich führen wir die Abhängigkeiten ein, die zum Trainieren eines TensorFlow-Objekterkennungsmodells erforderlich sind, und wie unser Modell mithilfe von Bewertungsmetriken bewertet wird.

  • 01:30:00 In diesem Abschnitt erörtert der Referent die Bewertungsmetriken, die Sie nach dem Training Ihres Objekterkennungsmodells erhalten. Diese Metriken umfassen die Genauigkeit und die mittlere durchschnittliche Genauigkeit (MAP), die den Anteil korrekter Erkennungen berechnet. Sie werden auf der Grundlage der Anzahl richtig positiver, falsch positiver, richtig negativer und falsch negativer Ergebnisse berechnet. Der Referent erklärt, dass Präzision und Abruf sehr wichtig sind, wenn man die Leistung des Modells bewertet. Darüber hinaus erwähnt der Referent, dass die Wahl des TensorFlow-Modellzoos die Genauigkeit und Geschwindigkeit des Modells beeinflusst. Unterschiedliche Modelle haben unterschiedliche Architekturen, die zu unterschiedlichen Genauigkeits- und Geschwindigkeitsniveaus führen, und Praktiker müssen das geeignete Modell für ihren Anwendungsfall auswählen.

  • 01:35:00 In diesem Abschnitt erörtert das Transkript die Kompromisse zwischen Modellgeschwindigkeit und Genauigkeit bei der Auswahl einer Modellarchitektur für die TensorFlow-Objekterkennung. Das Video zeigt verschiedene Modelloptionen und ihre entsprechenden Bildgeschwindigkeiten und mittleren durchschnittlichen Präzisionswerte. Der Moderator weist darauf hin, dass bestimmte Architekturen schnell und sehr genau sein können, während andere langsamer, aber präziser sind. Die Vorteile der Verwendung der TensorFlow Update Detection-Modell-API werden ebenfalls erwähnt, wie z. B. die Verwendung von Vorverarbeitungs- und Nachverarbeitungstechniken und Bilderweiterung. Der Abschnitt schließt mit einer Diskussion darüber, wie ein Modell bei Bedarf mit einer Cloud-Instanz trainiert werden kann.

  • 01:40:00 In diesem Abschnitt erläutert der Kursleiter die Einrichtung für das TensorFlow-Objekterkennungsmodell, das die Einrichtung des vortrainierten Modellnamens und der URL sowie Variablen wie das Skript zum Generieren von tf-Datensätzen und den Bezeichnungszuordnungsnamen umfasst. Die Ordnerstruktur für das Modell wird ebenfalls angezeigt, wobei der Arbeitsbereich Ordner für Anmerkungen, Bilder, Modelle und Prüfpunkte enthält. Der nächste Schritt besteht darin, die TensorFlow-Modelle aus dem TensorFlow-Modellzoo herunterzuladen und das TensorFlow-Objekterkennungspaket zu installieren, das der Kursleiter Schritt für Schritt durchgeht, um eine erfolgreiche Installation sicherzustellen. Der Prozess umfasst das Klonen des TensorFlow-Objekterkennungs-Repositorys und das Installieren der erforderlichen Abhängigkeiten.

  • 01:45:00 In diesem Abschnitt erklärt der Moderator, wie Sie die Modell-API für die TensorFlow-Objekterkennung klonen und installieren. Die Modell-API kann aus dem TensorFlow-Modellgarten heruntergeladen werden, der zahlreiche Dokumentationen und Open-Source-Tutorials enthält. Der Moderator zeigt dann, wie man zum Forschungsordner navigiert, der alle erforderlichen Dateien enthält, um die API des TensorFlow-Objekterkennungsmodells zu verwenden. Nach dem Klonen des Forschungsordners erklärt der Moderator, wie Protokoll und andere notwendige Komponenten installiert werden, die für die erfolgreiche Installation der TensorFlow-Objekterkennungsmodell-API erforderlich sind. Abschließend zeigt der Moderator, wie die Installation überprüft wird, indem ein Überprüfungsskript ausgeführt wird, um zu überprüfen, ob die TensorFlow-Objekterkennungs-API erfolgreich installiert wurde.

  • 01:50:00 In diesem Abschnitt geht der Kursleiter durch den Prozess der Überprüfung und Installation von Tensorflow für die Objekterkennung. Er erklärt, dass ein Verifizierungsskript verwendet wird, um sicherzustellen, dass Tensorflow korrekt installiert ist und dass es ausgeführt werden kann, um nach Fehlern zu suchen. Das Skript ist ein standardmäßiges Tensorflow-Objekterkennungsskript, das angibt, ob Tensorflow bei der Ausführung installiert ist oder nicht. Wenn Tensorflow nicht korrekt installiert ist, bietet der Kursleiter Anleitungen zur Konfiguration, einschließlich der Installation zusätzlicher Pakete wie matplotlib und yaml. Der Kursleiter versichert dem Zuschauer, dass er, wenn er auf Fehler stößt, diese googeln kann, da sie häufig auftreten und leicht zu lösen sind. Abschließend erklärt er, dass das Erreichen des „Okay“-Zeichens am Ende des Verifizierungsskripts bedeutet, dass Tensorflow korrekt installiert wurde.

  • 01:55:00 In diesem Abschnitt behandelt das Video den Installationsprozess von TensorFlow und die erforderlichen Pakete für die Objekterkennung. Der Kursleiter zeigt, wie TensorFlow, Matplotlib, Protobuf, Pillow und Pymel installiert werden. Der Kursleiter empfiehlt, den Installationsprozess zu überprüfen, da er je nach Umgebung unterschiedlich sein kann. Das Video führt auch die Schritte zur Installation von CUDA und CuDNN durch, die erforderlich sind, wenn Sie die GPU für das Training verwenden möchten. Der Kursleiter erklärt, wie Sie die richtige Version von CUDA und CuDNN finden, und geht durch den Installationsprozess. Abschließend demonstriert der Kursleiter, wie Sie die Objekterkennungs-API erfolgreich in das Notebook importieren, indem Sie den Kernel neu starten.

Teil 3

  • 02:00:00 In diesem Abschnitt geht der Kursleiter durch den Prozess des Herunterladens und Installierens von Nvidia cuDNN, was erforderlich ist, wenn Sie auf einer GPU schulen. Zuerst müssen Sie sich für ein kostenloses Nvidia-Entwicklerkonto anmelden, dann cuDNN herunterladen auswählen und sich anmelden. Es sind zwei Versionen verfügbar, und Sie müssen die Version herunterladen, die mit Ihrer Version von TensorFlow kompatibel ist. Der Kursleiter erklärt, wie Sie die gezippte Datei extrahieren und die cuDNN-Dateien in die entsprechenden Ordner innerhalb Ihres CUDA-Installationsorts kopieren. Nach dem Kopieren der Dateien besteht der letzte Schritt darin, sicherzustellen, dass der CUDA-Ordner Ihrem Pfad auf einem Windows-Computer hinzugefügt wird.

  • 02:05:00 In diesem Abschnitt des Videos erklärt der Kursleiter den Installationsprozess für TensorFlow und wie man testet, ob es richtig funktioniert oder nicht. Das Video fährt dann mit dem Prozess des Herunterladens eines vortrainierten Objekterkennungsmodells aus dem TensorFlow-Modellzoo fort, das für das Transferlernen zum Erkennen benutzerdefinierter Objekte verwendet wird. Der Kursleiter zeigt, wie das Modell heruntergeladen wird, und erklärt die verschiedenen Komponenten der heruntergeladenen Dateien. Schließlich wird eine Beschriftungskarte erstellt, um die verschiedenen Beschriftungen für die benutzerdefinierte Objekterkennung darzustellen.

  • 02:10:00 In diesem Abschnitt erläutert der Kursleiter die Erstellung einer Etikettenkarte und die Generierung von tf-Datensätzen. Er unterstreicht die Bedeutung der richtigen Kennzeichnung, da die Label-Map-Datei anschließend während des gesamten Schulungsprozesses verwendet wird. Das Video führt durch das Generieren eines Zuges und eines Testdatensatzes und wie Pfadkomponenten für das Modell aktualisiert werden, insbesondere der Feinabstimmungsprüfpunkt, Beschriftungskartenpfad und Eingabepfad. Abschließend hebt er die Relevanz der Pipeline-Konfigurationsdatei hervor, die die Architektur des Modells bestimmt und für bestimmte Modelle angepasst werden sollte.

  • 02:15:00 In diesem Abschnitt des Videos erklärt der Ausbilder, wie die Konfigurationsdatei zum Trainieren des Modells eingerichtet wird. Die Pipeline-Datei wird aus dem Ordner mit vortrainierten Modellen kopiert, und dann erfolgt die Konfiguration durch Code, indem alle verschiedenen Dateipfade zusammen mit der Anzahl der Klassen eingerichtet und Feinabstimmungs-Checkpoint, Label-Map-Pfad, Eingabepfad usw. eingerichtet werden Sobald die Einrichtung abgeschlossen ist, kann das Modell trainiert werden, indem das Modelltrainingsskript mit den erforderlichen Argumenten wie dem Dateipfad „pipeline.config“, der Pipelinekonfiguration und der Anzahl der Trainingsschritte ausgeführt wird. Es wird empfohlen, den Befehl in einer separaten Eingabeaufforderung außerhalb des Notebooks auszuführen, um den Fortschritt des Modelltrainings anzuzeigen.

  • 02:20:00 In diesem Abschnitt behebt der Ausbilder Fehler, die während des Schulungsprozesses zur Objekterkennung auftreten. Er erklärt, dass die meisten Fehler behoben werden, indem die richtige Bibliothek installiert oder online nach Lösungen gesucht wird. Er weist auch darauf hin, dass Benutzer sicherstellen sollten, dass sie die richtige Version der TensorFlow-GPU installiert haben, wenn sie die GPU nutzen möchten. Der Kursleiter führt die Zuschauer dann durch den Prozess der Deinstallation und Neuinstallation von Bibliotheken, um bestimmte Fehler zu beheben, und betont, dass dieser Prozess einige Zeit dauern kann, aber für einen erfolgreichen Trainingslauf zur Objekterkennung erforderlich ist. Schließlich zeigt er den Zuschauern, wie sie überprüfen können, ob sie die richtigen Bibliotheken installiert haben, und wie sie den Fortschritt des Trainingslaufs überwachen können.

  • 02:25:00 In diesem Abschnitt erläutert der Kursleiter den Prozess des Trainierens des Modells und Bewerten seiner Leistungsmetriken. Sobald das Training gestartet wurde, werden die Verlustmetriken alle 100 Schritte angezeigt, was darauf hinweist, dass das Modell korrekt trainiert wird. Die Ausgabe des Trainingsmodells für 2000 Schritte wird generiert, was anzeigt, dass das Modell erfolgreich mit einem endgültigen Verlust von 0,188 trainiert wurde. Der Kursleiter erklärt dann, wie das Modell mithilfe der TensorFlow-Objekterkennungsbibliothek bewertet und das Bewertungsskript ausgeführt wird, das Leistungsmetriken für das trainierte Modell generiert. Die durchschnittlichen Präzisions- und Recall-Metriken können dann mit TensorBoard, einem interaktiven Überwachungstool für TensorFlow, angezeigt werden.

  • 02:30:00 In diesem Abschnitt führt der Kursleiter die Zuschauer durch die Verwendung von Tensorboard zum Anzeigen und Verfolgen von Metriken während des Trainings und der Bewertung. Durch Navigieren zum Train-Ordner können sie die Verlustmetriken im Laufe der Zeit anzeigen, und indem sie zum Eval-Ordner wechseln, können sie die Bewertungsmetriken wie mittlere durchschnittliche Präzision, Präzision und Abruf sehen. Die Zuschauer können auch die Echtzeitleistung des Modells sehen, indem sie sich die Bilder ansehen und ob es sie richtig kategorisiert, und sie erfahren, wie sie das Diagramm nach dem Einfrieren exportieren.

  • 02:35:00 In diesem Abschnitt wird das trainierte Modell vom Prüfpunkt geladen und die Objekterkennung auf einem Bild durchgeführt. Der neueste Prüfpunkt befindet sich im benutzerdefinierten Modellordner, der die Pipeline und alle Prüfpunkte enthält. Sobald der letzte Prüfpunkt importiert wurde, kann ein Bild ausgewählt und die Objekterkennung mit der Erkennungsfunktion durchgeführt werden. Die Erkennungsfunktion wird auch verwendet, um Objekte in Echtzeit von einer Webcam zu erkennen. Trotz des Trainings für nur 2000 Schritte mit nicht vielen Bildern zeigt das Modell eine gute Leistung bei der Erkennung verschiedener Handgesten.

  • 02:40:00 In diesem Abschnitt demonstriert der Kursleiter die Leistung des Objekterkennungsmodells bei verschiedenen Handgesten, wie „Daumen hoch“, „Daumen runter“, „Lange leben“ und „Beide Hände“. Die Leistung des Modells variiert je nach Handgeste und Entfernung von der Kamera, kann jedoch durch Hinzufügen weiterer Bilder zum Trainingssatz feinabgestimmt werden. Der Abschnitt fährt dann mit dem Einfrieren und Konvertieren des Modells fort, indem ein eingefrorenes Diagramm erstellt und nach TensorFlow.js und TFLite exportiert wird. Das konvertierte Modell kann für eine Web-App oder für ein Raspberry-Pi-Projekt verwendet werden. Die endgültige Ausgabe des benutzerdefinierten Modells ähnelt den vortrainierten Modellen, mit Checkpoint, gespeicherten Modellobjekten, Variablen und Pipelinekonfiguration.

  • 02:45:00 In diesem Abschnitt bespricht der Sprecher die letzte Konvertierung, die durchgeführt werden muss, nämlich die Konvertierung zu tf light. Dies erfolgt in zwei Teilen: Zuerst wird das Diagramm in ein tf lite-Diagramm exportiert und dann mit dem tf lite-Konverter ausgeführt, um die genaue Ausgabe auszugeben, die zur Nutzung erforderlich ist. Der Redner merkt an, dass dies das End-to-End-Modell ist und dass sie das Diagramm eingefroren, in tfjs und tf lite exportiert und damit die vollständige exemplarische Vorgehensweise für die Arbeit mit der tensorflow-Objekterkennungs-API abgeschlossen haben. Der Referent geht auch auf die Leistungsoptimierung ein und nennt drei wichtige Dinge, die getan werden können, um die Leistung des Modells zu verbessern: Hinzufügen von mehr Bildern einer leistungsschwachen Klasse zum Trainingsdatensatz, längeres Trainieren des Modells und Ändern der Modellarchitektur.

  • 02:50:00 In diesem Abschnitt des Videos zeigt der Moderator, wie die Leistung der leistungsschwachen Klassen im Objekterkennungsmodell verbessert werden kann, indem relevantere Trainingsbilder hinzugefügt werden. Anstatt Bilder von jeder einzelnen Klasse zu sammeln, sammelt der Präsentator mehr Bilder von Daumen nach oben und Daumen nach unten, die mit verschiedenen Händen nicht gut funktionierten. Der Präsentator importiert OpenCV und aktualisiert die Beschriftungskarte, bevor er nur Bilder von „Daumen nach oben“ und „Daumen nach unten“ sammelt. Die gesammelten Bilder werden im Tensorflow-Arbeitsbereich gespeichert, wo der Präsentator sie auswertet und die Bilder mit schlechter Qualität entfernt. Abschließend fügt der Präsentator ein paar weitere Bilder von Daumen nach unten mit einer anderen Hand hinzu, um die Leistung des Modells zu verbessern.

  • 02:55:00 In diesem Abschnitt des Videos führt der Kursleiter Code aus, um weitere Bilder für die Handgesten „Daumen hoch“ und „Daumen runter“ aufzunehmen. Nach dem Erfassen der Bilder überprüft der Ausbilder die Qualität der Bilder und entscheidet, alle Bilder mit dem Daumen nach oben beizubehalten und einige der Bilder mit dem Daumen nach unten zu entfernen, die nicht auf dem Bildschirm angezeigt werden. Der Kursleiter öffnet dann das LabelImg-Tool und beschriftet die neuen Bilder erneut, wobei er auf die Groß- und Kleinschreibung der Beschriftungsnamen achtet. Der Kursleiter erwähnt, dass dieser Schritt des Beschriftens von Bildern Versuch und Irrtum ist, und man kann bewerten und sehen, was das Modell besser macht. Der Kursleiter schlägt vor, sich mit Tools zur automatischen Kennzeichnung zu befassen, um die Effizienz zu verbessern, rät jedoch, auf ihre Leistung zu achten, um manuelle Anpassungen zu vermeiden.

Teil 4

  • 03:00:00 In diesem Abschnitt zeigt der Kursleiter, wie Bilder schnell beschriftet werden, um das Training des TensorFlow-Objekterkennungsmodells zu verbessern. Er erklärt, dass es wichtig ist, die beschrifteten Bilder sowohl in den Schulungs- als auch in den Testordner zu kopieren, um die Genauigkeit des Modells zu bewerten. Als Nächstes zeigt er, wie ein „abgestimmtes“ Modell trainiert wird, indem der Name des benutzerdefinierten Modells im Trainings- und Erkennungsnotizbuch geändert wird, um einen neuen Ordner zu erstellen. Anschließend erläutert er, wie die vorab trainierte Pipelinekonfiguration in das neue optimierte Modell kopiert und Aktualisierungen in der Pipelinekonfiguration vorgenommen werden. Schließlich konfiguriert er alle erforderlichen Pfade mit dem bereitgestellten Code, um die neuen tf-Eintragsdateien zu erstellen, die für das Training benötigt werden.

  • 03:05:00 In diesem Abschnitt aktualisiert der Ausbilder die Pipeline-Konfiguration, die alle Label-Map-Pfade für das Training unter Verwendung der Standardkonfiguration definiert. Das Aktualisieren der Pipeline ist ein wesentlicher Schritt, da es den Weg für die Ausführung des Trainingsskripts ebnet. Die Anzahl der Trainingsschritte wird von der vorherigen Konfiguration auf 3000 aktualisiert und der Befehl wird ausgeführt, um das trainierte Modell zu erstellen. Nach Abschluss der Trainingsschritte wird dieses Modell bewertet und mit dem vorherigen Modell verglichen, indem der Code unter Schritt 7 ausgeführt wird. Die Bewertungsmetriken zeigen, dass die durchschnittliche Genauigkeit von 0,7 auf 0,834 gestiegen ist und die Erkennung schneller und genauer ist. Durch Hinzufügen weiterer Bilder, zusätzlicher Beschriftungen und verschiedener Positionen demonstriert der Kursleiter die Verbesserung des Modells und die Erstellung eines besseren Objekterkennungsmodells. Schließlich wird das neue Modell geladen und der Code für die Echtzeiterkennung ausgeführt, wodurch Objekte sehr schnell und genau erkannt werden.

  • 03:10:00 In diesem Abschnitt erörtert der Kursleiter Möglichkeiten zur Verbesserung der Leistung des Tensorflow-Objekterkennungsmodells durch Änderung der Architektur des Modells. Dazu muss der Benutzer den Link des vortrainierten Modells, das er verwenden möchte, im Erkennungsnotizbuch aktualisieren. Durch Kopieren und Einfügen des neuen Links und Namens kann der Benutzer dann das neue vortrainierte Modell in seinen Ordner für vortrainierte Modelle herunterladen. Der Ausbilder betont jedoch, dass eine bessere Leistung durch eine Verbesserung der Bildqualität erreicht wird, z. B. durch die Verwendung unterschiedlicher Bildstile, Bilder mit unterschiedlichen Winkeln und längeres Training. Der Kursleiter zeigt auch, wie ein Modell in Google Colab trainiert wird, indem die Bilder komprimiert und archiviert werden, bevor sie in das Trainings- und Erkennungsnotizbuch auf Colab importiert werden.

  • 03:15:00 In diesem Abschnitt führt der Kursleiter die Zuschauer durch den Prozess des Hochladens von Bildern, die im TensorFlow-Objekterkennungsprogramm verwendet werden sollen, sowie durch das Klonen des TensorFlow-Modellrepositorys und das Installieren der TensorFlow-Objekterkennungssoftware. Das vortrainierte Modell wird eingebracht und die Etikettenkarte erstellt. Der Ausbilder richtet dann eine benutzerdefinierte Konfiguration im Ordner „models/my_ssd_mobnet“ ein, bevor er das Modell trainiert. Der Betrachter wird gewarnt, dass die Objekterkennung in Echtzeit nicht mit einer Webcam mit Colab, sondern mit einem Bild erfolgen kann. Während der Betrachter Schritt für Schritt durch den Prozess geht, kann er sein Modell auswerten, um die durchschnittliche durchschnittliche Genauigkeit und den durchschnittlichen Abruf zu sehen.

  • 03:20:00 In diesem Abschnitt des Videos demonstriert der Kursleiter, wie Objekte in einem Bild mit dem trainierten Modell erkannt werden. Der neueste Checkpoint wird geladen und der Image-Name zum Ausführen des Erkennungsskripts angegeben. Der Kursleiter weist darauf hin, dass das Bild gültig sein und sich im Bilderordner befinden muss. Nach dem Ausführen der Zelle identifiziert das trainierte Objekterkennungsmodell das Objekt im Bild. Der Kursleiter erklärt außerdem, wie die Dateien komprimiert und exportiert werden, und betont die Notwendigkeit, die Objekterkennungs-API zu installieren, wenn der Code lokal ausgeführt wird. Der Abschnitt schließt mit einer Vorschau auf die drei Projekte, die als Nächstes behandelt werden, darunter die Verwendung eines Mikroskops zur Objekterkennung, die Erstellung einer TensorFlow.js-Web-App und die Durchführung der Raspberry Pi-Stimmungserkennung.

  • 03:25:00 In diesem Abschnitt erklärt der Kursleiter zunächst das erste Projekt, bei dem es darum geht, mithilfe eines USB-Mikroskops Defekte in kleinen LEDs zu erkennen. Das Mikroskop wird wie jede andere Kamera behandelt, und der Video-Feed wird mithilfe der OpenCV-Bibliothek abgerufen. Der Kursleiter zeigt, wie das Mikroskop mithilfe von Python-Code positioniert und gezoomt wird, und zeigt den Video-Feed an. Der Video-Feed wird dann verwendet, um Trainingsbilder für die Objekterkennung zu sammeln. Das Ziel dieses Projekts ist es, ein Modell zu trainieren, um Defekte in den LEDs zu erkennen und sie entweder als gebogen oder nicht gebogen zu klassifizieren.

  • 03:30:00 In diesem Abschnitt des vollständigen TensorFlow-Objekterkennungskurses mit drei Projekten zeigt der Kursleiter, wie Sie mit OpenCV Bilder von einer Webcam oder einem Mikroskop-Feed erfassen. Er geht auf Best Practices für das Freigeben des Erfassungsgeräts und das Zerstören von OpenCV-Fenstern ein, einschließlich des Ausführens von „cap.release“ nach dem Schließen einer cv2-Weberfassung. Anschließend demonstriert er, wie die Position und der Fokus des Mikroskops angepasst werden, um Bilder von LED-Stiften aufzunehmen, und wie zwei neue Ordner zum Speichern von Bildern defekter und nicht defekter Stifte erstellt werden. Schließlich testet er den Webcam-Feed für die Bilderfassung, um sicherzustellen, dass alles wie erwartet funktioniert.

  • 03:35:00 In diesem Abschnitt des Videos demonstriert der Kursleiter, wie Bilder eines defekten Stifts und eines nicht defekten Stifts zur Objekterkennung erfasst werden. Sie positionieren die Stifte und passen die Ruhezeit zwischen den Bildaufnahmen an und verwenden dann die Schlaffunktion, um zwischen den Aufnahmen anzuhalten. Der Kursleiter erklärt auch, wie die Bilder mit der Beschriftungslinie und dem Ordnerstandort beschriftet werden. Sie ermutigen die Zuschauer, im Kommentarbereich oder auf dem Discord-Server um Klärung zu bitten oder Feedback zu geben.

  • 03:40:00 In diesem Abschnitt des Videos geht der Kursleiter durch den Prozess der Beschriftung von Bildern, um ein benutzerdefiniertes Objekterkennungsmodell mit TensorFlow zu trainieren. Mit einem Mikroskop nimmt der Ausbilder Bilder von defekten und nicht defekten Stiften auf und beschriftet sie entsprechend. Anschließend kopieren sie die Bilder in Trainings- und Testordner, bevor sie ihre Trainingspipeline einrichten. Der Kursleiter erklärt, wie er einen neuen Ordner für sein benutzerdefiniertes Objekterkennungsmodell erstellt und die Beschriftungszuordnung aktualisiert, um die neuen Beschriftungen aufzunehmen. Die in diesem Abschnitt verwendete Codebasis ist ziemlich universell und ermöglicht viele Anpassungen, und der Kursleiter gibt Tipps zur Leistungsoptimierung.

  • 03:45:00 In diesem Abschnitt des Tutorials liegt der Schwerpunkt auf der Erstellung von TensorFlow-Datensätzen, die das Training des Modells ermöglichen. Die notwendigen Zellen zum Herunterladen vortrainierter Modelle und zum Erstellen von Etikettenkarten werden diskutiert, aber der Schwerpunkt liegt auf der Erstellung von TensorFLow-Datensätzen, die das Training des Modells ermöglichen. Nachdem TensorFlow-Datensätze erstellt wurden, wird das Modell mit den neuen Klassen aktualisiert und die aktualisierte Konfiguration gespeichert. Das Modell wird für 2000 Schritte trainiert, und das neue Modell wird getestet, um defekte und nicht defekte Stifte zu erkennen. Das Notizbuch wird skizziert und der Benutzer wird auf bestimmte Zellen gelenkt, die die Entwicklung dieses Modells ermöglichen.

  • 03:50:00 In diesem Abschnitt aktualisiert der Ausbilder das Bild, um einen defekten Stift und einen nicht defekten Stift zu erkennen. Das System erkennt erfolgreich beide Stifte mit hoher Zuverlässigkeit. Der Ausbilder bemerkt jedoch, dass das System mit dem defekten Stift in einer bestimmten Position nicht gut funktioniert, was auf einen Tuning-Kompromiss hinweist. Der Ausbilder zeigt, dass der Erkennungsrahmen Parameter hat, die modifiziert werden können, um den Grad der Erkennungsgenauigkeit zu bestimmen. Durch Reduzieren der minimalen Bewertungsschwelle kann das System den defekten Stift ziemlich gut erkennen, jedoch auf Kosten der Erkennung vieler anderer Dinge als defekt. Der Instruktor testet das System mit Pins in verschiedenen Farben, darunter einem, der nicht trainiert wurde, und in einem Winkel, der die Robustheit des Systems zeigt.

  • 03:55:00 In diesem Abschnitt demonstriert der Ausbilder die Ergebnisse des ersten Projekts unter Verwendung eines Mikroskops als Objekterkennungsmethode. Er weist auf die erkannten Stifte hin und wie sie als defekt oder nicht defekt klassifiziert werden, indem er die Winkel und Positionen der Stifte ändert. Er fasst den Prozess des ersten Projekts zusammen, das das Aufnehmen und Beschriften von Bildern, das Einrichten eines Mikroskopordners und das Trainieren des Modells umfasst. Das nächste Projekt konzentriert sich auf den Aufbau einer Web-App zur Erkennung der Richtung eines Objekts. Dazu wird Code aus dem TensorFlow-Objekterkennungskurs mit dem Github-Repository der TensorFlow-Objekterkennungs-App kombiniert. Ziel ist es, Auf-Ab-Links-Rechts-Bewegungen zu erkennen, die in Zukunft als Website eingesetzt werden können.

Teil 5

  • 04:00:00 In diesem Abschnitt des Videos erklärt der Kursleiter, wie die Bezeichnungen für die Tensorflow-Objekterkennung festgelegt und zurückgesetzt werden. Anstatt Bezeichnungen wie Daumen nach oben oder unten oder defekte und nicht defekte Stifte zu definieren, zeigen sie, wie man stattdessen Richtungsbewegungen wie links, rechts, oben und unten definiert. Anschließend zeigen sie, wie man Ordner für die verschiedenen Richtungen erstellt und Bilder sammelt, um sie für das Training zu verwenden. Der Kursleiter erklärt auch, wie die Bilder mit LabelImg beschriftet werden, wobei auf Bildfälle zu achten ist, und schlägt eine Leistungsoptimierung bei glanzlosen Ergebnissen vor. Schließlich zeigen sie, wie man Bilder für die richtige Richtung kennzeichnet.

  • 04:05:00 In diesem Abschnitt des Videos zeigt der Kursleiter, wie Bilder für die Verwendung im Objekterkennungsmodell beschriftet werden. Es werden nur fünf Bilder pro Objekt/Klasse verwendet, aber der Benutzer kann die Anzahl beliebig anpassen. Der Kursleiter weist darauf hin, dass dies ein iterativer Prozess ist und es in Ordnung ist, mit einer unterschiedlichen Anzahl von Bildern zu experimentieren. Sobald Bilder beschriftet sind, werden sie in Schulungs- und Testordner sortiert, mit einer 80/20-Aufteilung für jedes Bild/jede Klasse. Wenn die Ordner eingerichtet sind, ändert der Kursleiter den Namen des Ordners und erstellt einen neuen Dateipfad namens „directions“. Abschließend stellt der Ausbilder fest, dass die virtuelle Umgebung bereits eingerichtet ist und keine zusätzlichen Schritte erforderlich sind.

  • 04:10:00 In diesem Abschnitt wird die Etikettenkarte mit neuen Etiketten für „links“, „rechts“, „oben“ und „unten“ aktualisiert, und jedem werden eindeutige Kennungen zugewiesen. Die Anmerkungen werden dann ausgeführt, um die Etikettenkarte zu aktualisieren und die erforderlichen Zug- und Test-tfrecord-Dateien zu generieren. Das Modell wird dann unter Verwendung eines Befehls zum Generieren des Trainingsskripts trainiert, und der Verlust wird mit 0,299 berechnet. Prüfpunkt 3 wird wiederhergestellt, um die Abhängigkeiten für Echtzeiterkennungen zu importieren, und der Schwellenwert für die Mindestpunktzahl wird auf 90 festgelegt. Schließlich wird die Webcam aktiviert, um Echtzeiterkennungen für das Objekterkennungsmodell zu generieren.

  • 04:15:00 In diesem Abschnitt zeigt der Ausbilder, wie man das Modell auswertet und seine Genauigkeit verbessert, indem er mehr Bilder von bestimmten Klassen hinzufügt, die nicht gut abschneiden. Er demonstriert dies, indem er zeigt
    mit beiden Händen in verschiedene Richtungen und sehen, wie sich das Modell verhält. Anschließend friert er das Diagramm ein, exportiert es und konvertiert es in tensorflow.js. Er erklärt auch, wie das Modell in den IBM Cloud Object Store hochgeladen wird, und geht durch die Schritte, die im Github-Repository verfügbar sind. Der Kursleiter klont dann das Repository, öffnet eine neue Eingabeaufforderung und zeigt, wie man zu den richtigen Ordnern navigiert.

  • 04:20:00 In diesem Abschnitt des Videos erklärt der Kursleiter Schritt für Schritt, wie eine Entwicklungsumgebung für die Verwendung der TensorFlow-Objekterkennung für die Bilderkennung vorbereitet wird. Der Kursleiter zeigt zunächst, wie man zu den erforderlichen Ordnern navigiert und das TensorFlow-Objekterkennungs-Repository klont. Anschließend zeigt der Kursleiter, wie Node.js und die Abhängigkeiten für das Repository installiert werden. Abschließend demonstriert der Kursleiter, wie ein neuer Cloud-Objektspeicher-Bucket in IBM Cloud erstellt und benannt wird. Dieser Vorgang ist für die Verwendung der webbasierten Benutzeroberfläche in späteren Abschnitten des Videos erforderlich.

  • 04:25:00 In diesem Abschnitt fährt der Kursleiter mit Schritt fünf des Lernprogramms fort, bei dem es darum geht, einen Bucket in IBM Cloud Object Storage zu erstellen und die Dateien model.json und .bin darin hochzuladen. Als Nächstes aktiviert er eine öffentliche Zugriffsrichtlinie, die den Zugriff auf das Modell von jedem Standort aus ermöglicht, und zeigt, wie die URL zur Datei „model.json“ zur späteren Verwendung in der App abgerufen wird. Anschließend führt er den Prozess der Aktivierung von Cross-Origin Resource Sharing (CORS) durch, indem er CLI-Befehle nach der Installation der IBM Cloud Object Storage-CLI ausführt.

  • 04:30:00 In diesem Abschnitt zeigt das Video, wie Sie die IBM Cloud-CLI und die IBM Cloud Object Storage-CLI über eine Befehlszeilenschnittstelle installieren und Cross-Origin-Ressourcenfreigabe (CORS) aktivieren, wodurch eine Web-App auf eine URL zugreifen kann von woanders. Der Befehl installiert auch den IBM Cloud Storage Client und konfiguriert ihn mit einer Konfigurationsdatei. Das Video zeigt, wie Sie den Namen des Buckets eines Benutzers in einen Befehl einfügen, der die Ursachenrichtlinie in den Stammordner des Buckets legt. Schließlich erklärt das Video, dass die Ursachenrichtlinie in der Cloud-Konfigurationsdatei enthalten und Teil des geklonten Repositorys ist, was bedeutet, dass keine Dateierstellung erforderlich ist.

  • 04:35:00 In diesem Abschnitt erklärt der Kursleiter, wie die erforderlichen Dateien zum Ausführen der TensorFlow.js-Web-App aktualisiert werden. Die Schritte umfassen das Festlegen der Google Cloud Storage-Anmeldeinformationen, das Aktualisieren der Modell-URL in app.js, das Aktualisieren der Bezeichnungszuordnung in tools.js und das Starten der App mit npm start. Der Kursleiter erklärt auch, wie man die App debuggt, wenn sie nicht funktioniert, einschließlich der Änderung der Konfidenzmetrik und der Überprüfung der Reihenfolge der Objekte im Erkennungsergebnis-Array. Insgesamt ermöglichen diese Schritte Benutzern, die Web-App basierend auf ihrem spezifischen Anwendungsfall anzupassen und sicherzustellen, dass sie ordnungsgemäß ausgeführt wird.

  • 04:40:00 In diesem Abschnitt zeigt das Video, wie man herausfindet, wo sich Objekte befinden, und wie man das Ergebnis-Array manipuliert. Durch Untersuchen des Codes kann der Benutzer feststellen, dass das Ergebnisarray fünf Werte enthält und jedes Array unterschiedliche Klassen hat, die für eine bestimmte App verfügbar sind. Das Video leitet den Benutzer weiter an, wie er jedes Objektarray richtig verwendet, wie z. B. Objekt drei, bei dem es sich um Nicht-Post-Processing-Box-Klassen handelt, die durch sehr niedrige Zahlen dargestellt werden. Das Video zeigt dann, wie die Konfidenzmetrik und die Score-Werte geändert und der Box-Wert angepasst werden, was der Benutzer schnell tun kann, indem er die Werte des Box-Arrays ändert.

  • 04:45:00 In diesem Abschnitt schließt das Video das zweite Projekt ab und fährt mit dem dritten Projekt fort, bei dem Objekterkennungsmodelle auf einem Raspberry Pi ausgeführt werden. Der Referent merkt an, dass sich das Ausführen von Objekterkennungsmodellen auf dem Raspberry Pi von den beiden vorherigen Projekten unterscheidet, da keine GPU vorhanden ist, und dass sie das Modell daher speziell in ein Tensorflow-Lite-Format konvertieren werden. Sie sammeln Bilder von glücklichen und traurigen Gesichtern und trainieren ihr Modell nach dem gleichen Verfahren wie zuvor. Sie werden jedoch den Raspberry Pi für dieses Projekt verwenden und für die Erkennungen einen Remote-Desktop darauf verwenden. Das Video endet mit der Erwähnung der Möglichkeit, mehrere verschiedene Modelle auf verschiedenen Geräten auszuführen, und ermutigt die Zuschauer, ihre Ideen zu diesem Thema auszutauschen.

  • 04:50:00 In diesem Abschnitt des Videos demonstriert der Kursleiter, wie Bilder für einen Stimmungsdetektor gesammelt und gekennzeichnet werden, der fröhliche und traurige Gesichter erkennt. Der Prozess umfasst das Löschen vorhandener Bilder, das Erstellen von Pfaden für neue Bilder, das Sammeln von fünf Bildern jeder Emotion, das Beschriften der Bilder und das Speichern jedes Objekts. Der Kursleiter erinnert die Zuschauer daran, dass bei der Kennzeichnung die Groß- und Kleinschreibung von entscheidender Bedeutung ist und dass Greenscreens für diese Übung nicht erforderlich sind. Darüber hinaus weist der Kursleiter darauf hin, dass Benutzer jederzeit zum Bildverzeichnis zurückkehren können, um ein Bildetikett zu aktualisieren.

  • 04:55:00 In diesem Abschnitt zeigt der Kursleiter, wie die gesammelten Bilder und Anmerkungen organisiert und in die Schulungs- und Testordner verschoben werden. Sie demonstrieren, wie Sie ein neues benutzerdefiniertes Modell erstellen und die gesammelten Bilder als fröhlich und traurig kennzeichnen, indem Sie die Beschriftungskarte aktualisieren. Anschließend erstellen sie tf-Einträge und kopieren die vorab trainierte Modellkonfiguration in den benutzerdefinierten Modellordner. Nach dem Aktualisieren der Konfiguration trainieren sie das Modell mit dem generierten Befehl, der in der virtuellen Umgebung ausgeführt wird, und warten, bis der Prozess abgeschlossen ist.

Teil 6

  • 05:00:00 In diesem Abschnitt spricht der Kursleiter über einen häufigen Fehler, der während des Trainingslaufs des Sentimentmodells auftreten kann, wenn auf einem GPU-Computer gearbeitet wird. Die Fehlermeldung zeigt an, dass die GPU vollständig verbraucht ist, was dazu führt, dass das System eine schlechte Zeit hat. Um dieses Problem zu lösen, müssen Benutzer zu einem beliebigen Zeitpunkt alles stoppen, was die GPU verwenden könnte, und dann den Trainingslauf erneut starten. Nach Abschluss der Schulung können Benutzer das Betriebssystem und diese Pfade importieren und auch den neuesten Prüfpunkt überprüfen. Der Kursleiter demonstriert auch die Verwendung des Stimmungsmodells in Echtzeit, was ein schneller und einfacher Prozess ist, sobald das System eingerichtet ist.

  • 05:05:00 In diesem Abschnitt erläutert der Kursleiter die erforderlichen Schritte zum Erstellen eines Raspberry Pi-Erkennungsmodells mithilfe der TensorFlow-Objekterkennung. Der erste Schritt besteht darin, die TfLite-Dateien zu erstellen, indem Sie den TensorFlow-Objekterkennungskurs durchlaufen. Als Nächstes sollten Benutzer das Raspberry Pi-Erkennungs-Repository klonen, auf ihren PC herunterladen oder vom Raspberry Pi klonen. Sobald dies erledigt ist, sollten Benutzer die erforderlichen Abhängigkeiten installieren, ihr konvertiertes Modell kopieren und es mit dem vorhandenen lite-Modell von detect.tf ausführen. Der Kursleiter demonstriert auch, wie man mit xrdp einen Remote-Desktop in den Raspberry Pi einfügt, um den Prozess zu vereinfachen.

  • 05:10:00 In diesem Abschnitt führt der Kursleiter durch den Installationsprozess aller notwendigen Abhängigkeiten für die Arbeit mit der Objekterkennungs-API von TensorFlow auf einem Raspberry Pi. Der Kursleiter demonstriert die Installation von OpenCV Python sowie mehrere andere Abhängigkeiten, die erforderlich sind, damit OpenCV auf dem Raspberry Pi funktioniert. Anschließend installiert der Kursleiter die TensorFlow Lite-Laufzeitumgebung, die zum Ausführen von TensorFlow Lite-Modellen auf dem Raspberry Pi erforderlich ist. Sobald alle Abhängigkeiten installiert sind, führen sie ein Beispielobjekterkennungsmodell auf dem Raspberry Pi aus, um zu zeigen, wie es funktioniert. Abschließend erklärt der Kursleiter, wie man dem System ein benutzerdefiniertes Modell und Beschriftungen hinzufügt.

  • 05:15:00 In diesem Abschnitt erläutert der Kursleiter die benutzerdefinierte Objekterkennung und wie der Erkennungsschwellenwert angepasst wird, um bessere Ergebnisse zu erzielen. Die benutzerdefinierte Objekterkennung umfasst zwei Labels; glücklich und traurig. Der Lehrer passt die Reihenfolge der Beschriftungen so an, dass das erste Objekt fröhlich und das zweite Objekt traurig ist. Beim Ausführen des benutzerdefinierten Modells werden keine Objekte erkannt, und der Kursleiter beschließt, den Erkennungsschwellenwert auf 20 % zu senken. Nach der erneuten Ausführung des Befehls erkennt das Modell Objekte; ein großes trauriges und ein fröhliches Objekt. Der Ausbilder betont die Notwendigkeit, das Modell mit mehr Bildern zu trainieren, um bessere Leistungsergebnisse zu erzielen. Der Ausbilder führt eine zusätzliche Leistungsoptimierung durch, indem er mehr Bilder der darstellenden Klassen hinzufügt und das Modell länger trainiert.

  • 05:20:00 In diesem Abschnitt erklärt der Referent, wie er die Leistung seines Stimmungsanalysemodells verbessert hat. Erstens hat er zusätzliche Bilder von sich in verschiedenen Winkeln hinzugefügt, was die Chancen erhöht, dass das Modell gut verallgemeinert. Zweitens trainierte er sein Modell für 5600 weitere Schritte und gab ihm ein brandneues Modell mit einem größeren Index-Checkpoint. Dann ging er und konvertierte dieses neue Modell in ein eingefrorenes tf-lite-Diagramm und brachte es in Raspberry Pi, mit dem er erkannte, ob er glücklich oder traurig war oder nicht. Der Sprecher demonstriert, dass der grüne Bildschirm, der oben oder unten war, die Leistung seines Modells nicht beeinträchtigte und korrekt erkennen konnte, wann er glücklich oder traurig war. Der Redner betont die Kraft der Leistungsoptimierung und wie sie zur Verbesserung der Genauigkeit des Modells verwendet werden kann.

  • 05:25:00 Dieser letzte Auszug schließt den Kurs „Tensorflow-Objekterkennung in 5 Stunden mit Python“ ab, wobei der Kursleiter die Zuschauer daran erinnert, sich in den Kommentaren oder über den Discord-Kanal zu melden, wenn sie weitere Hilfe benötigen. Der Kurs ist für Zuschauer von Vorteil, die etwas über Objekterkennung lernen und sich eingehende Kenntnisse über Tensorflow aneignen möchten, da er drei Projekte innerhalb des Kurses selbst abdeckt.
GitHub - nicknochnack/TFODCourse
GitHub - nicknochnack/TFODCourse
  • nicknochnack
  • github.com
This set of Notebooks provides a complete set of code to be able to train and leverage your own custom object detection model using the Tensorflow Object Detection API. This accompanies the Tensorflow Object Detection course on my YouTube channel. Steps Step 1. Clone this repository: https://github.com/nicknochnack/TFODCourse Step 2. Create a...
 

Reinforcement Learning in 3 Stunden | Vollständiger Kurs mit Python

Code: https://github.com/nicknochnack/ReinforcementLearningCourse



Reinforcement Learning in 3 Stunden | Vollständiger Kurs mit Python

00:00:00 - 01:00:00 Der Videokurs "Reinforcement Learning in 3 Hours" deckt eine Reihe von Themen des Reinforcement Learning ab, darunter die praktische Umsetzung und die Überbrückung der Theorie-Praxis-Kluft. Der Kurs deckt alles ab, von der Einrichtung der RL-Umgebung bis zum Aufbau benutzerdefinierter Umgebungen, mit Schwerpunkt auf dem Training von Reinforcement-Learning-Agenten und deren Bewertung mit verschiedenen Algorithmen und Architekturen. Beliebte RL-Anwendungen wie Robotik und Gaming werden ebenso diskutiert wie die Grenzen von RL, wie die Annahme, dass Umgebungen markovisch sind, und das Potenzial für instabiles Training. Der Kurs verwendet Stable Baselines, eine Open-Source-RL-Bibliothek, und OpenAI Gym, um simulierte Umgebungen zu erstellen. Der Kursleiter erklärt die verschiedenen Arten von Räumen, die zur Darstellung von Aktionen und Werten verwendet werden, die Agenten in einer Umgebung annehmen können, sowie verschiedene RL-Algorithmen wie A2C und PPO. Es wird betont, wie wichtig es ist, die Umgebung vor der Implementierung von Algorithmen zu verstehen, und die Benutzer werden durch die Einrichtung der Rechenplattform für Reinforcement Learning, die Auswahl geeigneter RL-Algorithmen und das Trainieren und Testen des Modells geführt.

01:00:00
- 02:00:00 Dieses YouTube-Video bietet einen dreistündigen Kurs zum Reinforcement Learning mit Python. Der Ausbilder erklärt die Kernkomponenten des bestärkenden Lernens, einschließlich des Agenten, der Umgebung, der Aktion und der Belohnung. In diesem Abschnitt wird erläutert, wie Sie eine Umgebung definieren, ein Modell mithilfe von Reinforcement Learning trainieren und Trainingsprotokolle mithilfe von TensorBoard anzeigen, um den Trainingsprozess zu überwachen. Der Dozent behandelt auch andere Themen, wie das Speichern und erneute Laden eines trainierten Modells, das Testen und Verbessern der Modellleistung, das Definieren einer Netzwerkarchitektur für einen benutzerdefinierten Akteur und eine Wertfunktion in einem neuronalen Netzwerk und die Verwendung von Reinforcement Learning zum Spielen des Atari-Spiels Breakout. Darüber hinaus umfasst der Kurs drei Projekte, die die Lernenden mithilfe von Reinforcement-Learning-Techniken erstellen werden, darunter das Breakout-Spiel in Atari, der Bau eines Rennwagens für autonomes Fahren und die Erstellung benutzerdefinierter Umgebungen mithilfe der OpenAI-Fitnessräume.

02:00:00 - 03:00:00 Dieses YouTube-Video mit dem Titel „Reinforcement Learning in 3 Hours | Full Course using Python“ behandelt verschiedene Themen im Zusammenhang mit Reinforcement Learning. Der Instruktor demonstriert, wie man einen Reinforcement Learning Agent für Atari-Spiele und autonomes Fahren in der Rennwagenumgebung trainiert. Sie stellen auch verschiedene OpenAI-Fitness-Abhängigkeiten, Helfer und stabile Baselines sowie verschiedene Arten von Räumen für verstärkendes Lernen vor. Darüber hinaus behandelt das Video, wie Sie eine benutzerdefinierte Umgebung für Reinforcement Learning erstellen, den Zustand der Umgebung, ihre Beobachtungs- und Aktionsräume definieren, das Modell testen und trainieren und das trainierte Modell nach dem Lernen speichern. Der Ausbilder erörtert auch die Bedeutung des Trainings von Modellen über längere Zeiträume für eine bessere Leistung und ermutigt die Zuschauer, sich zu melden, wenn sie auf Schwierigkeiten stoßen.

  • 00:00:00 In diesem Abschnitt des Videos stellt der Moderator den Reinforcement-Learning-Kurs vor und umreißt die verschiedenen Themen, die während des Kurses behandelt werden. Er erklärt, dass der Kurs darauf ausgelegt ist, die Lücke zwischen Theorie und praktischer Umsetzung zu schließen, und alles von der Einrichtung der RL-Umgebung bis zum Erstellen benutzerdefinierter Umgebungen abdeckt. Der Referent gibt einen allgemeinen Überblick über Reinforcement Learning, seine Anwendungen und einige seiner Einschränkungen. Der Kurs bietet praktische Erfahrungen beim Training von Reinforcement-Learning-Agenten und beim Testen und Bewerten mit verschiedenen Algorithmen und Architekturen. Außerdem werden drei verschiedene Projekte behandelt, die sich auf die Breakout-Umgebung, die selbstfahrende Umgebung und benutzerdefinierte Umgebungen konzentrieren.

  • 00:05:00 In diesem Abschnitt des Videos „Reinforcement Learning in 3 Hours“ erklärt der Dozent die grundlegenden Konzepte des Reinforcement Learning. Ein Reinforcement-Learning-Agent lernt basierend auf den Belohnungen, die er aus der Umgebung erhält, indem er verschiedene Aktionen ausführt. Der Agent beobachtet die Umgebung, um seine Belohnungen im Laufe der Zeit zu maximieren, indem er bestimmte Entscheidungen trifft. Der Kursleiter erörtert auch einige praktische Anwendungen des Verstärkungslernens, wie autonomes Fahren, Wertpapierhandel und die Suche nach neuronalen Netzwerkarchitekturen.

  • 00:10:00 In diesem Abschnitt behandelt das Video einige der beliebten Anwendungen des bestärkenden Lernens, einschließlich der Robotik, bei der simulierte Umgebungen verwendet werden können, um Roboter für die Ausführung bestimmter Aufgaben zu trainieren. Das Video erwähnt auch Spiele als eine weitere beliebte Anwendung, bei der die Belohnungsfunktion jedes Mal anders sein kann, was es zu einer geeigneten Umgebung für bestärkendes Lernen macht. Die Grenzen des bestärkenden Lernens werden ebenfalls diskutiert, einschließlich der Annahme, dass die Umgebung markovisch ist, und die Tatsache, dass das Training zeitaufwändig und instabil sein kann. Das Setup für das Reinforcement-Learning-Modell wird besprochen, was die Installation der stabilen Baselines-Bibliothek von OpenAI und die Nutzung ihrer hilfreichen Leitfäden und Dokumentationen umfasst.

  • 00:15:00 In diesem Abschnitt stellt der Kursleiter den Kurs vor und skizziert die 10 verschiedenen Schritte, die behandelt werden. Der erste Schritt besteht darin, die erforderlichen Abhängigkeiten zu importieren und zu laden, einschließlich stabiler Baselines, einer Open-Source-Bibliothek für Reinforcement Learning. Der Kursleiter erklärt die verschiedenen in der Bibliothek verfügbaren Algorithmen und die Vorteile der Verwendung von PPO (Proximal Policy Optimization). Die Abhängigkeiten umfassen auch OS für die Betriebssystemfunktionalität und Gym für das Erstellen und Arbeiten mit Umgebungen. Insgesamt ist der Prozess unkompliziert und erfordert nur wenige Codezeilen, um mit stabilen Baselines zu beginnen.

  • 00:20:00 In diesem Abschnitt erörtert der Kursleiter die Abhängigkeiten und Umgebungen, die für Reinforcement Learning erforderlich sind. Sie führen Stable Baselines ein, die ein schnelleres maschinelles Lernen durch die Vektorisierung von Umgebungen ermöglichen, und den Dummy Vec Env-Wrapper. Sie erklären auch, wie OpenAI Gym zum Erstellen simulierter Umgebungen verwendet werden kann, was die Kosten senken und eine schnellere Modellerstellung ermöglichen kann. Sie bieten Beispiele für reale Umgebungen, wie z. B. einen Roboter, sowie simulierte Umgebungen, wie OpenAI Gym, das eine Menge Dokumentation und Unterstützung bietet.

  • 00:25:00 In diesem Abschnitt des Videos erläutert der Kursleiter den Standard für die Erstellung von Lernumgebungen zur Verstärkung, nämlich OpenAI Gym. Er erklärt, dass OpenAI Gym vorgefertigte Umgebungen bereitstellt, einschließlich solcher, die auf echten Robotern wie Fetch Robot und Shadow Hand Robot basieren. Er erklärt außerdem die verschiedenen Arten von Räumen, die OpenAI Gym unterstützt, einschließlich Box, Discrete, Tupel, Dict, Multi-Binary und Multi-Discrete. Er stellt fest, dass diese Räume verwendet werden, um die verschiedenen Arten von Werten oder Aktionen darzustellen, die Agenten in der Umgebung ausführen können. Der Ausbilder stellt dann die Classic Control-Umgebung, insbesondere das CartPole-Problem, als Beispiel vor, das er zum Trainieren eines Reinforcement-Learning-Agenten verwenden wird. Ziel ist es, einen Balken auszubalancieren, indem Sie ihn mit zwei Aktionen nach links oder rechts bewegen.

  • 00:30:00 In diesem Abschnitt erklärt der Kursleiter, wie eine Umgebung mit OpenAI Gym geladen und getestet wird. Sie beginnen mit der Instanziierung der CartPole-v0-Umgebung mit zwei Codezeilen. Dann demonstrieren sie, wie die Umgebung getestet wird, indem sie mehrere Episoden durchlaufen und env.reset() verwenden, um die anfänglichen Beobachtungen zu erhalten. Diese Beobachtungen werden später an einen Reinforcement-Learning-Agenten weitergegeben, um die beste Aktion zur Maximierung der Belohnung zu bestimmen. Der Kursleiter weist darauf hin, wie wichtig es ist, die Umgebung zu verstehen, bevor Algorithmen implementiert werden.

  • 00:35:00 In diesem Abschnitt erklärt der Kursleiter den Code, der zum Abtasten einer Umgebung beim Reinforcement Learning verwendet wird. Der Code legt eine maximale Anzahl von Schritten für die Umgebung fest, richtet einen Punktezähler ein und generiert eine zufällige Aktion basierend auf dem von der Umgebung definierten Aktionsraum. Die von der Umgebung nach jeder Aktion zurückgegebenen Beobachtungen werden von einer Belohnung und einem Wert begleitet, der angibt, ob die Episode abgeschlossen ist. Die Ergebnisse werden ausgedruckt und die Umgebung nach dem Test geschlossen. Der Kursleiter erklärt auch das Konzept eines Beobachtungsraums und demonstriert, wie er beprobt werden kann.

  • 00:40:00 In diesem Abschnitt erklärt der Kursleiter die beiden Teile der Umgebung, den Aktionsraum und den Beobachtungsraum, und wie sie in der OpenAI Gym-Dokumentation dargestellt werden. Der Beobachtungsraum besteht aus vier Werten, die die Wagenposition, Geschwindigkeit, Polwinkel und Polwinkelgeschwindigkeiten darstellen. Andererseits hat das Aktionsfeld zwei mögliche Aktionen, Null oder Eins, wobei Null den Karren nach links und Eins den Karren nach rechts schiebt. Der Abschnitt beleuchtet auch die verschiedenen Arten von Algorithmen beim Reinforcement Learning, modellbasierte und modellfreie, und wie sie sich unterscheiden. Der Dozent konzentriert sich auf modellfreies Reinforcement Learning und geht auf die A2C- und PPO-Algorithmen ein, die in der Trainingsphase verwendet werden.

  • 00:45:00 In diesem Abschnitt des Videos erklärt der Ausbilder, wie der geeignete Reinforcement-Learning-Algorithmus basierend auf dem Aktionsraum der verwendeten Umgebung ausgewählt wird. Anschließend erläutert er die verschiedenen Arten von Algorithmen, die in Stable Baselines verfügbar sind, wie A2C, DDPG, DQN, HER, PPO, SAC und TD3, und mit welchen Aktionsräumen sie am besten funktionieren. Der Kursleiter bespricht auch die Trainingsmetriken, die während des Trainings berücksichtigt werden sollten, wie z. B. Bewertungsmetriken, Zeitmetriken, Verlustmetriken und andere Metriken. Er erinnert Benutzer daran, dass Stable Baselines mit oder ohne GPU-Beschleunigung installiert werden können, und gibt Anweisungen zur Installation von PyTorch, wenn GPU-Beschleunigung gewünscht wird.

  • 00:50:00 In diesem Abschnitt erläutert der Kursleiter, wie die Rechenplattform für Reinforcement Learning eingerichtet wird, was für diejenigen von entscheidender Bedeutung ist, die die GPU-Beschleunigung nutzen möchten. CUDA und cuDNN werden nur auf NVIDIA-GPUs unterstützt, daher müssen Benutzer sicherstellen, dass sie über eine NVIDIA-GPU verfügen, um CUDA verwenden zu können, um die Vorteile der GPU-Beschleunigung zu nutzen. Andererseits werden AMD-GPUs von RockM unterstützt, einem Beta-Paket, das nur unter Linux verfügbar ist. Der Kursleiter betont auch, dass traditionelles Deep Learning durch die Verwendung einer GPU möglicherweise eine stärkere Leistungsverbesserung erfährt als Reinforcement Learning. Schließlich definiert der Ausbilder den Protokollpfad und instanziiert den Algorithmus und den Agenten.

  • 00:55:00 In diesem Abschnitt demonstriert der Kursleiter, wie eine nicht vektorisierte Umgebung mithilfe einer Lambda-Funktion in eine Dummy-vektorisierte Umgebung eingeschlossen wird. Anschließend definieren sie das Modell, bei dem es sich um den zu trainierenden Agenten handelt, als PPO und übergeben die Richtlinien-, Umgebungs-, Verbose- und Tensorboard-Protokollpfade als Argumente. Der Kursleiter erklärt anschließend die verschiedenen Hyperparameter, die an den PPO-Algorithmus weitergegeben werden können. Schließlich demonstrieren sie, wie das Modell mit der Funktion model.learn trainiert wird und wie die Anzahl der zu trainierenden Zeitschritte durchlaufen wird, die in diesem Beispiel auf 20.000 festgelegt ist. Nachdem das Modell trainiert wurde, testet der Ausbilder es und überprüft die Trainingsmetriken.


Teil 2

  • 01:00:00 In diesem Abschnitt des Videos zeigt der Ausbilder, wie ein trainiertes Modell gespeichert und neu geladen wird. Das Modell wird mit der Funktion "model.save()" gespeichert und ein Pfad zum Auffinden des gespeicherten Modells wird definiert. Der Ausbilder zeigt dann, wie das gespeicherte Modell gelöscht und mit der Funktion "ppo.load()" neu geladen wird. Der nächste Schritt besteht darin, das trainierte Modell zu testen, um zu sehen, wie es funktioniert. Der Ausbilder erklärt, dass Rollout-Metriken von dem für das Training verwendeten Algorithmus abhängen, und zeigt, dass der „A2C“-Algorithmus diese Metriken während des Trainings bereitstellt, während der „PPO“-Algorithmus einen expliziten Befehl erfordert, um diese Metriken zu generieren.

  • 01:05:00 In diesem Abschnitt erklärt das Video, wie die Methode „evaluate_policy“ verwendet wird, um die Leistung des Modells zu testen und festzustellen, ob das PPO-Modell in diesem speziellen Fall als „gelöst“ betrachtet wird. Die Methode „evaluate_policy“ ist eine Möglichkeit, die Leistung eines Modells zu testen, und das Modell gilt als gelöst, wenn es durchschnittlich 200 oder mehr Punkte erzielt. Die Methode wird durch das Modell, die Umgebung, die Anzahl der zu testenden Episoden und ob ein Rendern erforderlich ist oder nicht, durchlaufen. Die durchschnittliche Belohnung und die Standardabweichung in dieser Belohnung sind die Werte, die Sie ausvaluate_policy erhalten, und das Schließen der Umgebung erfolgt mit emv.close. Schließlich zeigt das Video, wie das Modell in einer gekapselten Funktion bereitgestellt wird.

  • 01:10:00 In diesem Abschnitt demonstriert der Ausbilder, wie die Beobachtungen aus der Umgebung verwendet werden, um die beste Aktion mit dem Agenten vorherzusagen, um die Belohnungen zu maximieren. Der Codeblock zeigt, wie wichtige Änderungen vorgenommen werden, um model.predict anstelle von env.actionspace.sample zu verwenden, um Aktionen mit dem Modell durchzuführen. Der Instruktor zeigt, dass der Agent besser ist als zufällige Schritte und balanciert die Stange aus. Der Code zeigt auch die an die Funktion model.predict übergebenen Beobachtungen mit zwei zurückgegebenen Werten, der Modellaktion und dem nächsten Zustand. Der erste Wert wird hier verwendet, um die beste Aktion für den Agenten zu bestimmen.

  • 01:15:00 In diesem Abschnitt erklärt der Kursleiter die Kernkomponenten des bestärkenden Lernens: den Agenten, die Umgebung, die Aktion und die Belohnung. Er demonstriert, wie man eine Umgebung definiert und ein Modell mithilfe von Reinforcement Learning trainiert, um jedes Mal einen Wert von eins zu akkumulieren, indem man die Stange in einer aufrechten Position hält und nicht herunterfällt. Der Ausbilder zeigt auch, wie die Trainingsprotokolle mit TensorBoard angezeigt werden, um den Trainingsprozess zu überwachen.

  • 01:20:00 In diesem Abschnitt des Videos erklärt der Kursleiter, wie TensorBoard in einem Jupiter-Notebook verwendet wird, um die Trainingsmetriken eines Reinforcement-Learning-Modells anzuzeigen. Er demonstriert, wie der TensorBoard-Befehl mit einem magischen Befehl ausgeführt wird, und zeigt, wie der Trainingsprotokollpfad angegeben wird. Der Kursleiter zeigt auch, wie die Trainingsmetriken wie Frames pro Sekunde, Entropieverlust, Lernrate und Richtliniengradientenverlust in TensorBoard angezeigt werden. Er betont, dass die durchschnittliche Belohnung die wichtigste Metrik ist, die es zu überwachen gilt, wenn die Leistung des Modells optimiert wird. Abschließend bittet er Zuschauer um Feedback und Kommentare.

  • 01:25:00 In diesem Abschnitt behandelt das Video zwei Schlüsselmetriken zur Bestimmung der Leistung eines Reinforcement-Learning-Modells – die Belohnungsmetriken und die durchschnittliche Episodenlänge. Das Video bietet auch drei Strategien zur Verbesserung der Modellleistung, wenn es nicht gut funktioniert, einschließlich Training über einen längeren Zeitraum, Hyperparameter-Tuning und Erforschung verschiedener Algorithmen. Der Abschnitt befasst sich dann mit Rückrufen, alternativen Algorithmen und Architekturen und erörtert insbesondere, wie ein Rückruf eingerichtet wird, um das Training zu beenden, sobald eine Belohnungsschwelle erreicht ist, und untersucht verschiedene neuronale Netzwerkarchitekturen und Algorithmen. Das Video unterstreicht auch die Bedeutung der Verwendung von Rückrufen für große Modelle, die eine längere Trainingszeit erfordern.

  • 01:30:00 In diesem Abschnitt erklärt der Ausbilder, wie Rückrufe beim Reinforcement Learning für ein flexibleres und effizienteres Training verwendet werden. Im Beispiel werden zwei Callbacks verwendet: der Stop-Callback und der Eval-Callback. Der Stop-Callback gibt die durchschnittliche Belohnung an, nach der das Training beendet werden soll, während der Eval-Callback das beste neue Modell bewertet und prüft, ob es die Belohnungsschwelle überschritten hat. Der Kursleiter zeigt auch, wie die Richtlinie geändert werden kann, indem eine neue neuronale Netzwerkarchitektur angegeben wird. Insgesamt bieten Callbacks eine größere Kontrolle über Reinforcement-Learning-Modelle und ermöglichen so ein individuelleres und effektiveres Training.

  • 01:35:00 In diesem Abschnitt erörtert der Referent den Prozess der Spezifikation einer Netzwerkarchitektur für einen benutzerdefinierten Akteur und eine Wertfunktion in einem neuronalen Netzwerk. Dies kann einfach erfolgen, indem die Anzahl der Einheiten und Schichten geändert und an das Modell weitergegeben wird. Der Referent betont auch, dass die benutzerdefinierten Merkmalsextraktoren definiert werden können, und zeigt, wie ein alternativer Algorithmus wie DQN anstelle von PPO verwendet werden kann, und hebt andere Algorithmen hervor, die in Stable Baselines verfügbar sind. Der Referent schließt mit der Präsentation des trainierten DQN-Modells.

  • 01:40:00 In diesem Abschnitt bespricht der Kursleiter die Projekte, die die Lernenden mit Techniken des bestärkenden Lernens erstellen werden. Sie beginnen mit Project One, dem Breakout-Spiel von Atari. Dann werden sie auch Projekt Zwei in Angriff nehmen, wo sie mithilfe von Verstärkungslernen einen Rennwagen bauen werden, um autonomes Fahren zu simulieren. Schließlich werden sie an Projekt Drei arbeiten, bei dem benutzerdefinierte Umgebungen mithilfe der OpenAI-Fitnessräume erstellt werden. Der Dozent erklärt auch, dass der Import notwendiger Bibliotheken und Abhängigkeiten für die Projekte ähnlich wie im Hauptkurs ist und sie nur je nach Projekt unterschiedliche Algorithmen verwenden müssen.

  • 01:45:00 In diesem Abschnitt erklärt der Videolehrer, wie die Atari-Umgebung für Reinforcement Learning in Python eingerichtet wird. Aufgrund der jüngsten Änderungen müssen Benutzer Rohdateien von atarimania.com herunterladen und sie in einen Ordner extrahieren, um die Umgebung verwenden zu können. Nach der Installation der erforderlichen Pakete und Abhängigkeiten können Benutzer die Umgebung mit den Funktionen „emv.reset“ und „emv.action_space“ testen. Der Beobachtungsraum ist ein Kasten, der ein Bild mit den Abmessungen 210x160x3 darstellt. Der Kursleiter zeigt auch, wie ein Modell in der Umgebung getestet wird.

  • 01:50:00 In diesem Abschnitt zeigt der Ausbilder den Code zum Spielen von Breakout mit zufälligen Aktionen und weist darauf hin, dass das Trainieren des Modells lange dauern kann. Um das Training zu beschleunigen, vektorisiert der Ausbilder die Umgebung und trainiert gleichzeitig vier verschiedene Umgebungen. Die verwendete Umgebung ist die bildbasierte Umgebung, im Gegensatz zur RAM-Version von Breakout, da die CNN-Richtlinie verwendet wird. Der Code zum Einrichten des Modells wird angezeigt, einschließlich der Angabe des Protokollpfads und des A2C-Algorithmus mit der CNN-Richtlinie.

  • 01:55:00 In diesem Abschnitt trainiert der Videolehrer mithilfe von Reinforcement Learning ein Modell, das Atari-Spiel „Breakout“ zu spielen. Das Modell verwendet eine CNN-Richtlinie (Convolutional Neural Network), die schneller trainiert werden kann als eine mehrschichtige Perzeptron-Richtlinie. Die Umgebung wird mit der make_atari-Funktion von OpenAI Gym definiert und die Vektorisierung wird verwendet, um den Trainingsprozess zu beschleunigen. Das Modell wird für 100.000 Schritte trainiert, und nach dem Speichern und erneuten Laden des Modells wird es mit der Methode „Evaluate Policy“ evaluiert. Das endgültige Modell erreicht eine durchschnittliche Episodenbelohnung von 6,1 mit einer Standardabweichung von 1,9, eine signifikante Verbesserung gegenüber einem Zufallsagenten. Der Ausbilder informiert auch über ein vortrainiertes Modell, das für 300.000 Schritte trainiert wurde, und wie man es lädt und testet.


Teil 3

  • 02:00:00 In diesem Abschnitt erläutert der Kursleiter, wie Probleme beim Einfrieren bei der Arbeit mit der Umgebung, insbesondere Atari, gehandhabt werden. Wenn die Umgebung einfriert, sollte das Notebook neu gestartet werden, und der Kernel sollte nach dem Speichern des Modells neu gestartet werden. Der Ausbilder demonstriert dann, wie ein Reinforcement-Learning-Agent für Breakout trainiert wird, indem er durch den Prozess des Importierens von Abhängigkeiten, der Installation von Atari-ROMs, der Vektorisierung der Umgebung zum gleichzeitigen Trainieren auf vier Atari-Umgebungen, des Trainierens des Agenten und schließlich des Auswertens und Speicherns des Modells geht. Der Kursleiter zeigt auch die Auswirkungen des längeren Trainierens des Modells und stellt die trainierten Modelle im Github-Repository zur Verfügung, damit die Lernenden sie selbst ausprobieren können.

  • 02:05:00 In diesem Abschnitt des Videos über bestärkendes Lernen in drei Stunden beginnt der Ausbilder damit, die Ergebnisse von Projekt 1 zu zeigen, bei dem es darum ging, ein Modell zu trainieren, um ein Spiel mit bestärkendem Lernen zu spielen. Das Modell schnitt mit einer mittleren Belohnung über 50 Episoden von 22,22 und einer Standardabweichung von 9,1 deutlich besser ab als frühere Modelle. Der Instruktor stellt dann Projekt 2 vor, bei dem es darum geht, Reinforcement Learning für autonomes Fahren unter Verwendung der Rennwagenumgebung zu verwenden. Um die Umgebung einzurichten, erklärt der Kursleiter, dass swig installiert werden muss und zwei neue Abhängigkeiten, box 2d und piglet, installiert werden müssen. Der Kursleiter durchläuft dann den Prozess des Testens der Umgebung und des Imports der erforderlichen Abhängigkeiten.

  • 02:10:00 In diesem Abschnitt diskutiert das Video den Beobachtungs- und Aktionsraum der Autorennen-Umgebung für bestärkendes Lernen. Der Beobachtungsraum ist ein 96 mal 96 mal 3 Bild mit Werten zwischen 0 und 255, während der Aktionsraum zwischen minus eins und eins für drei verschiedene Werte liegt. Die Belohnungsfunktion ist minus 0,1 für jeden Frame und plus 1000 dividiert durch n für jede besuchte Spurkachel. Das Spiel gilt als gelöst, wenn der Agent konstant 900 oder mehr Punkte erzielen kann, was durch Training einige Zeit in Anspruch nehmen kann. Anschließend trainiert das Video ein Modell mit dem PPO-Algorithmus und zeigt, wie die Rennumgebung mit dem trainierten Modell getestet wird.

  • 02:15:00 In diesem Abschnitt richtet der Kursleiter die Umgebung für das selbstfahrende Auto mit OpenAI Gym ein und hüllt es in einen Dummy-Vectorize Environment Wrapper. Anschließend werden der Agent und das Modell mit dem PPO-Algorithmus spezifiziert und das Modell für 100.000 Schritte trainiert. Das gespeicherte Modell wird in der Umgebung geladen und ausgewertet, und trotz fehlender Traktion fährt der PS-Bolide nicht vorwärts, sondern dreht sich und macht Donuts. Schließlich wird die Umgebung geschlossen und der Ausbilder lädt ein für 438.000 Schritte trainiertes Modell zum Testen hoch.

  • 02:20:00 In diesem Abschnitt lädt der Instruktor ein selbstfahrendes Automodell, das für 438.000 Schritte trainiert wurde, auf und testet es auf der Strecke. Obwohl es langsamer ist, folgt es der Strecke und erzielt eine viel höhere Punktzahl als das Vorgängermodell, das auf 100.000 Schritte trainiert wurde. Der Ausbilder erklärt, dass das Training von Reinforcement-Learning-Agenten über einen längeren Zeitraum viel bessere Modelle produzieren kann, und idealerweise sollte dieses Modell für 1-2 Millionen Schritte trainiert worden sein, um optimal zu funktionieren. Er demonstriert das Testen des Modells anhand eines Code-Snippets aus dem Haupt-Tutorial, das zeigt, dass das Modell selbst dann erfolgreich auf der Strecke navigieren kann, wenn es nur mit Bildern trainiert wird. Letztendlich trainierte der Ausbilder dieses Modell für zwei Millionen zusätzliche Schritte, verbesserte seine Leistung und erreichte eine Belohnungsschätzung von etwa 700.

  • 02:25:00 In diesem Abschnitt lädt und fährt der Instruktor ein Modell, das deutlich besser abschneidet als die von ihm trainierten vorherigen Modelle, obwohl es gelegentlich in Kurven ausbricht. Er zeigt in der Bewertungsnote des Modells, die bis zu 800 Punkte erreichte, eine deutliche Verbesserung gegenüber den Vorgängermodellen. Er stellt fest, dass dieses Modell länger trainiert wurde und eine hohe Standardabweichung aufwies. Der Ausbilder stellt dann das letzte Projekt vor, bei dem es darum geht, stabile Baselines für bestärkendes Lernen in benutzerdefinierten Umgebungen zu verwenden. Er importiert notwendige Abhängigkeiten und ermutigt die Zuschauer, sich zu melden, wenn sie auf Schwierigkeiten stoßen.

  • 02:30:00 In diesem Abschnitt des Videos geht der Ausbilder die verschiedenen Gym-Abhängigkeiten oder OpenAI-Fitnessstudio-Abhängigkeiten, Helfer und stabilen Basisdaten durch, die im Reinforcement-Learning-Kurs verwendet werden. Sie importieren Gym, das ist der Standardimport, die Gym-Umgebungsklasse aus env und die verschiedenen Arten von Räumen wie Discrete, Box, Dict, Tuple, Multi-Binary, Multi-Discrete. Der Ausbilder geht durch, wie jeder dieser Räume verwendet wird und wie sie für verschiedene Zwecke verwendet werden können. Der Kursleiter geht auch die verschiedenen importierten Hilfsprogramme durch, wie numpy, random und os, und die stabilen Grundlinien, einschließlich der Funktionen ppo, common.vec_env, dummy_vec_nv und analyze_policy.

  • 02:35:00 In diesem Abschnitt des Videos erörtert der Moderator die verschiedenen Arten von Bereichen, die in OpenAI Gym für bestärkendes Lernen verfügbar sind. Zu diesen Räumen gehören diskret, Box, Tupel, Diktat, multibinär und multidiskret. Der Moderator liefert Beispiele und Erklärungen für jeden dieser Bereiche. Das Video geht dann auf den Aufbau einer simulierten Umgebung ein, um einen Agenten zu trainieren, die Temperatur einer Dusche zu regulieren. Das ultimative Ziel ist es, eine Temperatur zwischen 37 und 39 Grad zu erreichen, aber der Agent weiß dies a priori nicht und muss durch Versuch und Irrtum lernen.

  • 02:40:00 In diesem Abschnitt baut der Ausbilder eine Hülle für eine Duschumgebung, indem er die vier Schlüsselfunktionen implementiert. Diese Funktionen sind init, step, render und reset. Die Init-Funktion initialisiert die Umgebung, indem sie den Aktionsraum, den Beobachtungsraum und den Anfangszustand definiert. Die Schrittfunktion führt eine Aktion aus und wendet sie auf die Umgebung an. Die Renderfunktion zeigt die Umgebung an. Die Reset-Funktion setzt die Umgebung in ihren Ausgangszustand zurück. Der Ausbilder legt auch für die Umgebung eine Episodenlänge von 60 Sekunden fest.

  • 02:45:00 In diesem Abschnitt definiert der Ausbilder die Schrittfunktion für die Duschumgebung, die sechs Codeblöcke enthält. Der erste Block wendet die Auswirkung der Aktion auf den Zustand an, wobei null, eins und zwei die drei möglichen Aktionen sind. Null senkt die Temperatur um ein Grad, Eins lässt die Temperatur gleich und Zwei erhöht die Temperatur um ein Grad. Der zweite Block verkürzt die Duschzeit um eine Sekunde. Der dritte Block definiert die Belohnung, mit einer Belohnung von eins, wenn die Temperatur zwischen 37 und 39 Grad liegt, und -1, wenn sie außerhalb dieses Bereichs liegt. Der vierte Block prüft, ob die Dusche fertig ist und setzt done auf true, wenn die Duschzeit kleiner oder gleich Null ist. Der fünfte Block erstellt ein leeres Informationswörterbuch, und der letzte Block gibt den Status, die Belohnung, ob die Dusche beendet ist, und das Wörterbuch zurück. Die Reset-Funktion setzt die Anfangstemperatur auf ihren Standardwert und die Duschzeit auf 60 Sekunden zurück.

  • 02:50:00 In diesem Abschnitt erklärt der Kursleiter, wie Sie mit Python eine benutzerdefinierte Umgebung für Reinforcement Learning erstellen. Er zeigt, wie man den Zustand der Umwelt und ihrer Beobachtungs- und Handlungsräume definiert. Der Ausbilder zeigt auch, wie das Modell in der definierten Umgebung getestet und trainiert wird und wie das trainierte Modell nach dem Lernen gespeichert wird. Er erwähnt, dass das Trainieren von Spielumgebungen im Vergleich zu einfachen Umgebungen länger dauert, und empfiehlt, dies bei der Planung von Projekten und der Bindung an Kunden zu berücksichtigen.

  • 02:55:00 In diesem Abschnitt demonstriert der Ausbilder, wie das trainierte Modell getestet und gespeichert wird. Sie verwenden die Methode „evaluate policy“, um die Leistung des Modells zu testen, und speichern das Modell dann mit der Methode „model.save“. Darüber hinaus bieten sie eine kurze Zusammenfassung des Kurses, der eine Reihe von Themen abdeckt, vom Einrichten der Umgebung mit stabilen Baselines bis hin zum Trainieren von Modellen mit verschiedenen Algorithmen, einschließlich PPO, A2C und DQN. Sie besprechen auch das Erstellen benutzerdefinierter Umgebungen und Bauprojekte, wie z. B. das Trainieren eines Modells, um Breakout zu spielen oder ein Auto auf einer Strecke zu fahren.

  • 03:00:00 In diesem Abschnitt empfiehlt der Kursleiter zusätzliche Ressourcen für das weitere Lernen, einschließlich des Reinforcement Learning-Kurses von David Silva, ein Buch mit dem Titel Reinforcement Learning: An Introduction von Richard Sutton und Andrew Bartos sowie die Erforschung von Hyperparameter-Tuning und das Erstellen benutzerdefinierter Umgebungen , und Implementierung von End-to-End-Lösungen wie dem Bau eines Cart-Pole-Roboters und dessen Training in einer simulierten Umgebung, bevor er mit einem Raspberry Pi in einer realen Umgebung implementiert wird. Der Kursleiter ermutigt zu Feedback und Fragen von Zuschauern und dankt ihnen für das Einschalten.
GitHub - nicknochnack/ReinforcementLearningCourse
GitHub - nicknochnack/ReinforcementLearningCourse
  • nicknochnack
  • github.com
Contribute to nicknochnack/ReinforcementLearningCourse development by creating an account on GitHub.
 

Automatische Nummernschilderkennung mit Tensorflow und EasyOCR Vollständiger Kurs in 2 Stunden | Python

Letztes Notizbuch: https://github.com/nicknochnack/RealTimeAutomaticNumberPlateRecognition

Basiscode: https://github.com/nicknochnack/TFODCourse



Automatische Nummernschilderkennung mit Tensorflow und EasyOCR Vollständiger Kurs in 2 Stunden | Python

Das YouTube-Video mit dem Titel „Automatic Number Plate Recognition using Tensorflow and EasyOCR Full Course in 2 Hours | Python“ bietet eine umfassende Anleitung zum Aufbau eines genauen und effizienten automatischen Nummernschilderkennungssystems (ANPR) mit Tensorflow und EasyOCR. Das ANPR-System verwendet ein zweiteiliges System, wobei TensorFlow verwendet wird, um den interessierenden Bereich des Nummernschilds zu erkennen, während EasyOCR den Text aus dem erkannten Bereich extrahiert. Das Video behandelt eine Reihe von Themen, von der Einrichtung virtueller Umgebungen und der Installation notwendiger Abhängigkeiten bis hin zur Vorbereitung von Daten für das Training und der Fehlerbehebung bei Fehlern, die während des Trainings auftreten können. Insgesamt können die Zuschauer ein detailliertes Verständnis dafür gewinnen, wie ein produktionstaugliches ANPR-System mit Echtzeit- oder Standard-Bilderkennungsfunktionen aufgebaut wird.

Das YouTube-Tutorial zur automatischen Nummernschilderkennung (ANPR) mit TensorFlow und EasyOCR behandelt, wie Nummernschilder mithilfe der Objekterkennung genau erkannt und die Kennzeichen mithilfe von OCR extrahiert werden. Der Kursleiter erläutert, wie der Text basierend auf Größe und Koordinaten gefiltert werden kann, um nur die relevanten Informationen von der Platte zu extrahieren. Sie zeigen, wie man GPU-Ressourcen zuweist und den Speicherverbrauch für TensorFlow begrenzt, Bildbewertungen, Klassen und Boxen extrahiert, die die Erkennungsschwelle überschreiten, und OCR mit EasyOCR anwendet. Darüber hinaus behandelt das Video, wie die Ausgabeergebnisse sowohl für Echtzeit- als auch für Bildergebnisse in einer CSV-Datei und einem Ordnerpfad gespeichert werden. Der Sprecher betont, dass der Code für die Zuschauer verfügbar ist, und ermutigt sie, um Hilfe zu bitten und ihr Feedback zu teilen.

  • 00:00:00- System ist die OCR oder optische Zeichenerkennung. Dieser Schritt beinhaltet die Verwendung einer Bibliothek namens EasyOCR, um den Text aus dem erkannten Nummernschild-Feed zu extrahieren, sodass wir den Text von Nummernschildern in Echtzeit oder auf Standardbildern lesen und analysieren können. Darüber hinaus behandelt der Kurs auch den Aufbau eines fortschrittlicheren Systems, das vorgefertigte AMPR-Systeme in Produktionsqualität nachahmt, indem zuvor erkannte Platten und ihre Interessenbereiche gespeichert und protokolliert werden. Insgesamt bietet der Kurs eine umfassende Anleitung zum Aufbau eines genauen und effizienten automatischen Kennzeichenerkennungssystems mit Tensorflow und EasyOCR.

  • 00:05:00 In diesem Abschnitt erläutert der Moderator das zweiteilige System zur automatischen Nummernschilderkennung. Der erste Teil verwendet das TensorFlow-Objekterkennungsmodell, um den interessierenden Bereich zu erkennen, bei dem es sich um das Nummernschild handelt. Der zweite Teil verwendet EasyOCR, um den Text aus dem erkannten Bereich zu extrahieren. Der Moderator demonstriert, wie die erforderlichen Komponenten einschließlich TensorFlow und EasyOCR installiert werden, und stellt einen Link zum GitHub-Repository bereit, das die erforderlichen Dateien enthält. Der Moderator erklärt, wie das Repository geklont wird, und zeigt den Inhalt des Ordners, der dadurch erstellt wird. Der Ordner enthält eine Notebook-Datei, die für das Training und die Erkennung des Nummernschilds verwendet wird.

  • 00:10:00 In diesem Abschnitt des Videos führt der Moderator die Schritte zum Einrichten einer virtuellen Umgebung und zum Installieren der erforderlichen Abhängigkeiten zum Ausführen der automatischen Nummernschilderkennung (ANPR) mit TensorFlow und EasyOCR durch. Der Moderator klont zuerst das ANPR-Repository und erstellt eine virtuelle Umgebung mit Python. Anschließend aktiviert er die virtuelle Umgebung und installiert wichtige Abhängigkeiten wie den IPI-Kernel und aktualisiert Pip. Anhand dieser Schritte demonstriert er, wie die virtuelle Umgebung einem Jupyter-Notebook zugeordnet wird, um die volle Leistung von ANPR zu nutzen.

  • 00:15:00 In diesem Abschnitt führt der Kursleiter den Zuschauer durch den Prozess der Verknüpfung seiner virtuellen Umgebung mit seinem Jupyter-Notebook, wobei er die Umgebung „ampr sys“ als Beispiel verwendet. Der Kursleiter merkt an, dass dies wichtig ist, da Personen, die mit virtuellen Umgebungen arbeiten, häufig alles in ihrer Umgebung installieren, aber wenn sie in ihr Jupyter-Notebook gehen, heißt es immer noch, dass es nicht vorhanden ist. Sobald die virtuelle Umgebung mit dem Jupyter Notebook verknüpft ist, führt der Kursleiter den Betrachter durch den Prozess der Installation der TensorFlow-Objekterkennungs-API und der Einrichtung der Ordnerstruktur, um die Objekterkennung mit TensorFlow durchführen zu können.

  • 00:20:00 In diesem Abschnitt erklärt der Kursleiter zunächst das Konzept des Transfer Learning, bei dem ein bereits vorhandenes State-of-the-Art-Modell für einen bestimmten Anwendungsfall verfeinert werden kann, z. B. die Erkennung von Nummernschildern. Der Kursleiter fährt dann damit fort, die vortrainierten Modelle aus dem TensorFlow Model Zoo herunterzuladen und die TensorFlow Object Detection API zu installieren, indem er mehrere Codezellen ausführt. Die API und ihre Komponenten, wie z. B. der Objekterkennungsordner, werden in das TensorFlow-Modellgarten-Repository geklont, und die Installation des TensorFlow-Objekterkennungsmodells wird initiiert. Die Installation umfasst mehrere Abhängigkeiten und Protokolle, das Protokollpuffersystem, und kann einige Zeit in Anspruch nehmen.

  • 00:25:00 In diesem Abschnitt führt der Kursleiter die Installation von TensorFlow und seiner GPU-Version durch. Sie installieren TensorFlow 2.4.1 und TensorFlow GPU 2.4.1, das nur mit Nvidia-GPUs kompatibel ist. Sie zeigen, wie Sie überprüfen können, ob die Installation erfolgreich ist, indem Sie ein Überprüfungsskript ausführen, das am Ende "Ok" ausgeben sollte. Der Kursleiter demonstriert auch, wie alle „Modul nicht gefunden“-Fehler behoben werden können, die während des Installationsprozesses auftreten können, wie z. B. die Installation von Matplotlib- und Pillow-Bibliotheken mit pip. Das Überprüfungsskript stellt sicher, dass alle erforderlichen Abhängigkeiten installiert sind, bevor Sie mit dem nächsten Abschnitt fortfahren.

  • 00:30:00 In diesem Abschnitt des Videos führt der Moderator durch die Installation verschiedener Module, die für den Aufbau eines Objekterkennungsmodells erforderlich sind, insbesondere für die Nummernschilderkennung. Sie stoßen während des Installationsvorgangs auf mehrere Fehler, aber sie erklären, wie sie diese beheben können. Sobald alle erforderlichen Module, einschließlich TensorFlow-Objekterkennung und EasyOCR, installiert sind, geht der Präsentator zum nächsten Schritt über, arbeitet mit Daten und führt einen Kaggle-Datensatz ein, der Autobilder und Anmerkungen für Nummernschilder enthält. Sie demonstrieren, wie der Datensatz heruntergeladen und für die Verwendung im Modell vorbereitet wird.

  • 00:35:00 In diesem Abschnitt erläutert der Ausbilder, wie die erforderlichen Daten für die automatische Nummernschilderkennung (ANPR) heruntergeladen und in Trainings- und Testsets für die Objekterkennung organisiert werden. Die Daten, die Anmerkungen und entsprechende Bilder enthalten, werden von Kaggle heruntergeladen und in den ANPR-Ordner entpackt. Innerhalb des Bilderordners werden zwei neue Ordner erstellt, einer zum Training und einer zum Testen, und die heruntergeladenen Bilder werden in den Zugordner kopiert. Die Anmerkungen werden auch in Trainings- und Testsätze aufgeteilt, wobei die Trainingsanmerkungen neben ihren entsprechenden Bildern im Zugordner platziert werden. Der Zweck dieser separaten Sätze besteht darin, das Objekterkennungsmodell mit einem Datensatz zu trainieren und es mit einem unabhängigen Satz zu testen, um seine Leistung zu bewerten.

  • 00:40:00 In diesem Abschnitt erläutert das Video den Prozess der Vorbereitung der Daten für das Training eines Kennzeichenerkennungsmodells. Der Moderator erklärt, dass sie Nummernschildbilder von Kaggle heruntergeladen und die entsprechenden Anmerkungen in die zwei neuen Ordner „trainieren“ und „testen“ innerhalb ihres TensorFlow-Arbeitsbereichs kopiert haben. Der nächste Schritt besteht darin, das Objekterkennungsmodell zu trainieren, was das Aktualisieren der Labels, das Erstellen von tf-Datensätzen, das Vorbereiten der Konfiguration und schließlich das Trainieren des Modells umfasst. Der Präsentator verwendet eine „Etikettenkarte“, um die eine Bezeichnung zu identifizieren, die er verwenden wird, „Lizenz“, und erstellt dann einen tf-Datensatz, der das vom Objekterkennungsmodell benötigte Format hat. Der Prozess wird als unkompliziert beschrieben, und ein Skript zum Generieren des tf-Datensatzes wird bereitgestellt.

  • 00:45:00 In diesem Abschnitt behandelt das Video, wie die Daten für das Training mit TensorFlow und EasyOCR vorbereitet werden. Das hier besprochene Skript konvertiert die Rohdaten, einschließlich Bilder und Anmerkungen, in ein tf-Datensatzformat, muss jedoch aufgrund des etwas anderen Formats der Anmerkungen im Kaggle-Datensatz aktualisiert werden. Das Video zeigt, wie die Fehler behoben werden, die aufgrund dieser Diskrepanz auftreten, einschließlich der Installation fehlender Module, der Änderung des Indexes, um die korrekten Bounding-Box-Metriken aufzunehmen, und des Kopierens der vorab trainierten Modellkonfiguration in den Schulungsordner.

  • 00:50:00 In diesem Abschnitt geht der Sprecher auf die Details der vortrainierten Modellpipeline ein, die verschiedene Konfigurationszeilen enthält, die vor dem Trainieren des Modells aktualisiert werden müssen. Der Referent demonstriert, wie die aktualisierte Konfigurationsdatei kopiert wird, die sicherstellt, dass die Parameter aktualisiert werden, und den Trainingsbefehl ausführt, um das Modell zu trainieren. Sie erwähnen auch, wie wichtig es ist, den Befehl extern auszuführen, um den Fortschritt richtig zu sehen, und wie eine virtuelle Umgebung zum Ausführen des Befehls aktiviert wird. Abschließend erläutern sie, wie ein Standardfehler behoben werden kann, der bei der Installation des Modells auftreten kann.

  • 00:55:00 In diesem Abschnitt des Kurses behebt der Ausbilder Fehler, die während des Trainings auftreten können. Er demonstriert, wie bestimmte Probleme gelöst werden können, z. B. ein Wertfehler im Zusammenhang mit einer Änderung der numpy-Punkt- und Arraygröße, ein Fehler „Modul nicht gefunden“ für cv2, ein Fehler „Modul nicht gefunden“ für Tensorflow-Add-Ons und ein Fehler „Modul nicht gefunden“ für Gin. Der Kursleiter erklärt, dass diese Fehler nicht ungewöhnlich sind und dass es wichtig ist, die erforderlichen Bibliotheken zu installieren, um sie zu beheben. Sobald das Modell trainiert ist, zeigt der Ausbilder, wie die Verlustmetriken gelesen werden und wie der zuletzt trainierte Modellkontrollpunkt gefunden wird.

  • 01:00:00 In diesem Abschnitt des Video-Tutorials zur automatischen Nummernschilderkennung mit Tensorflow und EasyOCR erklärt der Kursleiter, wie Nummernschilder anhand von Bildern oder in Echtzeit mit demselben Modell erkannt werden. Durch Ändern des Bilddateinamens kann das Modell verschiedene Arten von Platten genau erkennen und klassifizieren. Es wurde festgestellt, dass diese Methode durch die Objekterkennung viel besser funktioniert als die Nutzung herkömmlicher Computer-Vision-Techniken, da die Formate der Platten variieren können. Das Modell kann auch Nummernschilder aus einem Live-Videostream erkennen oder indem es ein Telefon vor das Nummernschild des Autos hält. Der Ausbilder betont, dass die Methode effizient und ein guter Anfang für den Bau eines Nummernschilddetektors ist, und der nächste Schritt wäre, OCR-Komponenten anzuwenden, um aussagekräftige Daten aus dem Bild zu extrahieren.

  • 01:05:00 In diesem Abschnitt erläutert das Video-Tutorial, wie die Open-Source-Bibliothek EasyOCR verwendet wird, um Text aus einem Bild zu erkennen und zu extrahieren, um ein Nummernschild zu identifizieren. Das Tutorial stellt fest, dass zwar genauere OCR-Modelle verfügbar sind, EasyOCR jedoch verwendet wird, während es auf PyTorch ausgeführt wird, sodass der GPU ein wenig Platz gelassen werden muss, um es zusammen mit TensorFlow ausführen zu können, ohne den gesamten GPU-Speicher zu verbrauchen. Das Tutorial zeigt, wie Sie GPU-Ressourcen zuweisen und den Speicherverbrauch für TensorFlow begrenzen, damit EasyOCR reibungslos läuft.

  • 01:10:00 In diesem Abschnitt erklärt der Referent, wie man mit TensorFlow und EasyOCR die notwendigen Dateipfade und Labels für die Automatische Nummernschilderkennung (ANPR) lädt und EasyOCR und PyTorch mit CUDA-Beschleunigung installiert. Sie demonstrieren, dass nach dem Laden eines Beispielbilds und der Durchführung von ANPR Nummernschildnummern und Erkennungsergebnisse in einer Variablen namens "Erkennungen" gespeichert werden, die dann verwendet werden, um OCR mit EasyOCR anzuwenden. Eine Erkennungsschwelle ist auf 0,7 festgelegt, sodass nur Erkennungen mit Werten über 0,7 weiter verarbeitet werden können.

  • 01:15:00 In diesem Abschnitt erklärt der Kursleiter, wie Sie mit wenigen Codezeilen Bildbewertungen, Klassen und Boxen extrahieren, die die Erkennungsschwelle überschreiten. Sie demonstrieren, wie jeder Wert im Erkennungs-Score-Array durchlaufen wird und nur Scores zurückgegeben werden, die den Schwellenwert überschreiten. Sie wenden auch Filter auf die Felder und Klassen an, um sicherzustellen, dass sie die richtige Größe und das richtige Format für die Webcam haben. Schließlich erfassen sie die Breite und Höhe des Bildes, um die Boxkoordinaten neu zu berechnen, und wenden eine Filterung auf das Bild an, um den interessierenden Bereich zu bestimmen.

  • 01:20:00 In diesem Abschnitt zeigt das Video, wie Sie den interessierenden Bereich aus dem Bild extrahieren und die optische Zeichenerkennung (OCR) anwenden, um die Plattenergebnisse zu extrahieren. Zunächst werden die Breiten- und Höhenparameter des Bildes mithilfe von image.shape ermittelt. Um den ROI zu extrahieren, durchlaufen Sie jedes Kästchen in der Kästchenvariablen, die die Koordinaten der Erkennung darstellt, und filtern Sie den interessierenden Bereich heraus. Schließlich wird OCR mit EasyOCR auf den ROI angewendet und die Ergebnisse werden auf der Konsole ausgedruckt. Das Video führt den Betrachter durch den Prozess der Einrichtung des EasyOCR-Lesegeräts, des Durchlaufens der Sprachparameter und des Parsens des Bilds, um die Plattenergebnisse zu extrahieren.

  • 01:25:00 In diesem Abschnitt erläutert der Moderator, wie die gedruckte Platte oder Text mithilfe von OCR (Optical Character Recognition) effektiv aus der Platte extrahiert werden kann. Sie zeigen ein Beispielbild, in dem zusätzlich zur Kennzeichennummer zusätzlicher Text vorhanden ist, der den OCR-Leser verwirren kann. Um dieses Problem zu lösen, schlägt der Moderator vor, die Ergebnisse nach Größe und Koordinaten zu filtern. Sie demonstrieren, wie man eine Funktion für diese Filterung schreibt und sie auf das Bild anwendet, um den entsprechenden Text zu erhalten. Die Ergebnisse zeigen, dass das OCR-Lesegerät die Kennzeichen genau extrahieren kann, obwohl es beim OCR-Modell noch Raum für Verbesserungen gibt.

  • 01:30:00 In diesem Abschnitt stellt der Referent eine neue Funktion namens „Filtertext“ vor. Diese Funktion akzeptiert drei Argumente: Region, das OCR-Ergebnis und den Regionsschwellenwert. Die Region stellt das Bild dar, das OCR-Ergebnis steht für den extrahierten Text aus EasyOCR und der Regionsschwellenwert ist der Größenschwellenwert für die Erkennung der Nummernschildregionen. Die Funktion durchläuft die OCR-Ergebnisse, extrahiert jeweils die Länge und Breite, multipliziert sie und vergleicht sie dann mit dem Bereichsschwellenwert. Wenn es diesen Filter passiert, wird es als Text betrachtet und seine Region wird in einer Variablen namens "plate" gespeichert. Der Referent erklärt auch einige Codeteile, die die Größe der Region berechnen und veranschaulichen, wie der Filter funktioniert.

  • 01:35:00 In diesem Abschnitt zeigt der Autor, wie man mithilfe der OCR-Engine den Text in den Bildern effektiv herausfiltert. Der FilterText-Algorithmus ermöglicht es dem Benutzer, einen Schwellenwert für die Region anzugeben, wodurch nur die Textblöcke herausgefiltert werden, die diesen Schwellenwert erreichen oder überschreiten. Sie verwenden diese Funktion, um die benötigten Komponenten zu extrahieren, anstatt alles von der Platte zu entnehmen. Sie haben auch eine OCR_it-Funktion erstellt, die den OCR-Filter und die OCR-Komponenten kombiniert und auf jedes Bild angewendet werden kann, wenn das Bild bestanden und die entsprechenden Schwellenwerte erkannt werden.

  • 01:40:00 In diesem Abschnitt testet der Kursleiter seine OCR-Methode (Optical Character Recognition), indem er ein Bild durch seine „ocr_it“-Funktion mit festgelegten Erkennungs- und Bereichsschwellenwerten schickt. Das Verfahren ist in der Lage, das Nummernschild und seinen Bereich im Bild genau zu extrahieren. Anschließend demonstrieren sie die Anwendung der OCR-Methode in Echtzeit zur Erkennung von Nummernschildern mit einem Try-Außer-Block und neuem Code, der die OCR-Funktion für jede gültige Erkennung aufruft. Der Ausbilder testet die Echtzeiterkennung auf seinem Telefon und zeigt, dass es den Nummernschildtext genau erkennt und extrahiert, obwohl die Ergebnisse nicht perfekt sind und einige Optimierungen erfordern könnten.

  • 01:45:00 In diesem Abschnitt des Videos erklärt der Ausbilder, wie die Ausgabeergebnisse des von ihm entwickelten OCR-Systems gespeichert werden. Sie erstellen eine neue Funktion namens "save_results", die den Text, die Region, den Dateinamen und den Ordner als Eingabeparameter verwendet. Sie verwenden dann die UUID-Bibliothek, um einen eindeutigen Dateinamen zu generieren, und die CSV-Bibliothek, um die Ausgabeergebnisse in einer CSV-Datei zu speichern. Sie verwenden auch die cv2-Bibliothek, um das Bild in den ausgewählten Ordner zu schreiben. Schließlich verpacken sie den Code und testen ihn.

  • 01:50:00 In diesem Abschnitt des Videos zeigt der Kursleiter, wie man eine CSV-Datei und einen Ordnerpfad einrichtet, um alle Bildergebnisse oder Regionen zu schreiben. Sie erstellen einen neuen Ordner namens detection_images, in den alle Bildergebnisse geschrieben werden. Der Kursleiter zeigt, wie Sie den CSV-Dateinamen und den Ordnerpfad übergeben und dann den Code testen, um die Ergebnisse zu speichern. Sie richteten eine Methode zum Speichern der Ergebnisse ein, um die Ergebnisse in den erstellten Ordner zu schreiben, der den Namen des Bildes sowie das Nummernschild enthält. Der Kursleiter zeigt dann, wie der Code in Echtzeit ausgeführt wird, um die Ergebnisse zu speichern, während die Erkennungen stattfinden. Schließlich testen sie den Code, was zu einer genauen Ausgabe der Bilder führt, während die Ergebnisse in Echtzeit gespeichert werden.

  • 01:55:00 In diesem Abschnitt informiert der Sprecher die Zuschauer darüber, dass ihnen die in Echtzeit erstellte OCR-Funktion und der Filteralgorithmus zur Verfügung stehen. Er ermutigt die Zuschauer, um Hilfe zu bitten, wenn sie auf Schwierigkeiten stoßen, und erwähnt, dass der Code auf GitHub verfügbar sein wird, damit sie ihn verwenden können. Abschließend bedankt er sich bei den Zuschauern fürs Einschalten, bittet sie um Likes, Abos und Kommentare und meldet sich ab.
GitHub - nicknochnack/RealTimeAutomaticNumberPlateRecognition
GitHub - nicknochnack/RealTimeAutomaticNumberPlateRecognition
  • nicknochnack
  • github.com
Contribute to nicknochnack/RealTimeAutomaticNumberPlateRecognition development by creating an account on GitHub.
 

Gebärdenspracherkennung mit ACTION RECOGNITION mit Python | LSTM Deep Learning-Modell

Code: https://github.com/nicknochnack/ActionDetectionforSignLanguage



Gebärdenspracherkennung mit ACTION RECOGNITION mit Python | LSTM Deep Learning-Modell

In diesem YouTube-Video mit dem Titel „Sign Language Detection using ACTION RECOGNITION with Python | LSTM Deep Learning Model“ erklärt der Moderator, wie man mithilfe von Aktionserkennung und Schlüsselmodellen einen Ablauf zur Erkennung von Gebärdensprache in Echtzeit erstellt. Der Moderator verwendet OpenCV und MediaPipe Holistic, um Schlüsselpunkte aus Händen, Gesicht und Körper zu extrahieren, und dann TensorFlow und Keras, um ein LSTM-Modell zu erstellen, das die Aktion vorhersagt, die in einer Folge von Frames gezeigt wird. Der Präsentator durchläuft den Prozess des Zugreifens und Extrahierens wichtiger Punkte von der Webcam, richtet eine Schleife für den Zugriff auf die Webcam ein und vereinfacht die Erkennung der Gebärdensprache, indem er die Orientierungspunkte auf das letzte erfasste Bild von der Webcam anwendet. Sie demonstrieren auch, wie der Code geändert werden kann, um fehlende Schlüsselpunkte zu behandeln, und fügen dem Posenmodell und der Gesichtserkennung eine Fehlerbehandlung hinzu. Abschließend erläutert der Referent die Keypoint-Extraktionsfunktion für die Gebärdenspracherkennung mittels Aktionserkennung mit Python.

Das Video bietet eine detaillierte Erklärung, wie Sie ein Gebärdenspracherkennungsmodell mithilfe der Aktionserkennung mit Python erstellen. Um die Daten zu sammeln, erstellt der Moderator Ordner für jede Aktion und Sequenz und modifiziert die MediaPipe-Schleife, um 30 Schlüsselpunktwerte pro Video für jede Aktion zu sammeln. Die Daten werden vorverarbeitet, indem Labels und Features für das LSTM-Deep-Learning-Modell erstellt werden, und das Modell wird mit TensorFlow und Keras trainiert. Das trainierte Modell wird unter Verwendung einer Multi-Label-Verwirrungsmatrix und einer Genauigkeitsbewertungsfunktion bewertet. Schließlich wird eine Echtzeiterkennung eingerichtet, indem neue Variablen für die Erkennung erstellt, Rahmen verkettet und Vorhersagelogik angewendet wird, wobei eine Schwellenwertvariable implementiert ist, um Ergebnisse oberhalb einer bestimmten Konfidenzmetrik wiederzugeben.

Das Video-Tutorial zeigt, wie Python und ein LSTM-Deep-Learning-Modell für die Erkennung von Gebärdensprache mithilfe der Aktionserkennung verwendet werden. Der Sprecher ging durch die Vorhersagelogik und erklärte den Code, sodass er leicht verständlich wurde. Sie zeigten den Zuschauern auch, wie sie den Code anpassen können, indem sie die Append-Methode verwenden, den Erkennungsschwellenwert erhöhen und eine Wahrscheinlichkeitsvisualisierung hinzufügen, um die Erkennung visuell überzeugend zu machen. Der Referent behandelte auch, wie man überprüft, ob das Ergebnis über dem Schwellenwert liegt, wie man Wahrscheinlichkeiten manipuliert und wie man das Projekt erweitert und modifiziert, indem man zusätzliche Aktionen oder Visualisierungen hinzufügt. Abschließend stellte der Redner die zusätzliche Logik des Modells vor, die Fehlerkennungen minimiert und die Genauigkeit des Modells verbessert, zusammen mit einer Einladung, das Video und den Kanal zu unterstützen.

  • 00:00:00 In diesem Abschnitt des Videos erläutert der Ersteller sein Ziel, mithilfe von Aktionserkennung und Schlüsselmodellen einen Ablauf zur Erkennung von Gebärdensprache in Echtzeit zu erstellen. Sie werden MediaPipe Holistic verwenden, um Schlüsselpunkte aus Händen, Gesicht und Körper zu extrahieren, und dann TensorFlow und Keras verwenden, um ein LSTM-Modell zu erstellen, das die Aktion vorhersagt, die in einer Folge von Frames gezeigt wird. Der Prozess umfasst das Sammeln von Daten zu Schlüsselpunkten, das Trainieren eines neuronalen Netzwerks, das Bewerten der Genauigkeit und das Testen des Modells in Echtzeit mit OpenCV und einer Webcam. Der Ersteller skizziert 11 Schritte, um diesen Prozess zu erreichen, und beginnt mit der Installation und dem Import von Abhängigkeiten.

  • 00:05:00 In diesem Abschnitt erläutert der Moderator die verschiedenen Abhängigkeiten, die im Projekt verwendet werden, einschließlich OpenCV, MediaPipe, scikit-learn, NumPy, Matplotlib und TensorFlow. Nach dem Importieren dieser Abhängigkeiten durchläuft der Präsentator den Prozess des Zugreifens und Extrahierens wichtiger Punkte aus der Webcam mit OpenCV und MediaPipe Holistic. Der Präsentator richtet dann eine Schleife ein, um auf die Webcam zuzugreifen und mehrere Frames auf dem Bildschirm zu rendern, wodurch das Projekt in Echtzeit getestet werden kann. Diese Schleife wird während des gesamten Projekts mehrmals verwendet, einschließlich beim Extrahieren von Frames und Testen des Projekts. Der gesamte im Projekt verwendete Code wird auf Github zur Verfügung gestellt, einschließlich der endgültigen trainierten Gewichte.

  • 00:10:00 In diesem Abschnitt des Videos erklärt der Moderator, wie man mit OpenCV auf die Webcam zugreift und mit dem Durchlaufen aller Frames beginnt. Der Präsentator verwendet die "Videoaufnahme"-Funktion, um den Feed von der Webcam zu lesen, und initiiert eine Schleife, die liest, anzeigt und darauf wartet, dass ein Tastendruck aus der Schleife ausbricht. Der Moderator erklärt auch, wie man die Schleife elegant unterbricht und wie man Probleme mit der Gerätenummer behebt, wenn die Webcam nicht angezeigt wird. Schließlich stellt der Moderator MediaPipe Holistic und MediaPipe Drawing Utilities vor, zwei Python-Module, die zum Herunterladen und Nutzen des Holistic-Modells für die Posenerkennung und zum Zeichnen der Posen-Orientierungspunkte auf einem Bild verwendet werden.

  • 00:15:00 In diesem Abschnitt des Transkripts richtet der Sprecher eine Funktion ein, um die Erkennung der Gebärdensprache zu erleichtern. Die Funktion nimmt ein Bild und ein ganzheitliches Modell einer Medienleitung auf und durchläuft eine Reihe von Schritten, einschließlich der Farbkonvertierung von BGR in RGB, der Erkennung und der Konvertierung des Bilds zurück in BGR, bevor das Bild und die Ergebnisse an die Schleife für zurückgegeben werden Wiedergabe. Die Schritte werden symmetrisch ausgeführt, um sicherzustellen, dass das Bild vor der Erkennung auf nicht beschreibbar und danach wieder auf beschreibbar gesetzt wird. Der Referent erklärt auch die cvtColor-Funktion zur Konvertierung der Bildfarbe und zeigt, wie die Media-Pipe-Erkennungsfunktion in der Schleife aufgerufen wird.

  • 00:20:00 In diesem Abschnitt erläutert der Moderator, wie Sie mithilfe einer „with“-Anweisung auf das MediaPipe-Modell zugreifen und die Anfangs- und Nachverfolgungskonfidenz festlegen. Sie zeigen auch, wie man auf die verschiedenen Arten von Orientierungspunkten zugreift und sie visualisiert: Gesicht, linke und rechte Hand und Orientierungspunkte für Posen. Der Moderator demonstriert dann, wie man MediaPipe Holistic verwendet, um Orientierungspunkte zu erkennen, und zeigt die Ergebnisse auf dem Rahmen an. Schließlich zeigen sie, wie man die Orientierungspunkte auf dem Bildschirm rendert, indem man eine Funktion schreibt.

  • 00:25:00 In diesem Abschnitt richtet der YouTuber eine neue Funktion namens „draw_landmarks“ ein, die Landmarkendaten auf ein Bild rendert, um die Visualisierung der verschiedenen Landmarken zu ermöglichen, die von den im Projekt verwendeten Medienrohrmodellen erkannt wurden. Die Funktion verwendet die Hilfsfunktion „mp.drawing“, die von Media Pipe bereitgestellt wird, um die Orientierungspunkte zu zeichnen, und benötigt außerdem die Bild- und Orientierungspunktdaten als Eingaben. Die Funktion ermöglicht auch die Angabe von Verbindungsplänen und Formatierungsoptionen. Der YouTuber fährt dann fort, um zu demonstrieren, wie man die „plot.imshow“-Funktion von matplotlib verwendet, um das letzte aufgenommene Bild von der Webcam anzuzeigen.

  • 00:30:00 In diesem Abschnitt korrigiert der Sprecher die Farbe des Bildes und wendet die Markierungen auf das Bild an, indem er sie durch die Funktion "Markierungen zeichnen" leitet. Auf die Ergebnisse des Medienleitungs-Erkennungsmodells wird als letzter Frame und Ergebnisse des Durchlaufens der Schleife zugegriffen. Die „mp_drawing.draw_landmarks“-Methoden gelten für das aktuelle Bild, um alle Hand-, Posen- und Gesichtsverbindungen zu rendern. Der Sprecher wendet dann die Funktion "Markierungen zeichnen" auf die Echtzeitschleife an und wendet vor dem Rendern eine Formatierung unter Verwendung der "Markierungsspezifikation" und "Verbindungszeichnungsspezifikation" an, um die Punkte bzw. Verbindungen zu zeichnen. Abschließend erstellt der Sprecher eine neue Funktion mit der Bezeichnung "Stilmarkierungen zeichnen", um die Funktion "Markierungen zeichnen" bei Bedarf anzupassen.

  • 00:35:00 In diesem Abschnitt aktualisiert der Sprecher die Formatierung für die Funktion zum Zeichnen von Orientierungspunkten, indem er zwei zusätzliche Parameter für die Funktion mp_drawing.drawing_spec hinzufügt – Farbe und Kreisradius. Sie demonstrieren die Änderungen für die Gesichtsmarkierung und erklären, dass der erste Parameter die Markierung und der zweite Parameter die Verbindung färbt. Der Sprecher kopiert dann die Änderungen an der Funktion für jedes der Posen- und Handmodelle und gibt jedem Modell einzigartige Farben. Die Änderungen sind rein kosmetischer Natur und wirken sich nicht auf die Leistung aus, aber sie demonstrieren die verschiedenen Modelle in Aktion.

  • 00:40:00 In diesem Abschnitt erklärt das Video-Tutorial, wie Schlüsselpunktwerte aus der Ergebnisvariablen des MediaPipe Holistic-Modells auf robuste Weise extrahiert werden, indem sie zu einem numpy-Array verkettet und Fehler behandelt werden. Das Tutorial führt durch, wie Werte für einen Orientierungspunkt extrahiert und für alle Orientierungspunkte aktualisiert werden, indem eine Schleife und ein Listenverständnis verwendet werden. Das endgültige Array mit allen Orientierungspunkten wird dann abgeflacht, um alle Werte in einem Array anstatt mehrerer Sätze von Orientierungspunkten zu haben.

  • 00:45:00 In diesem Abschnitt erklärt der Präsentator, wie der Code geändert werden kann, um zu handhaben, wenn es keine Schlüsselpunkte gibt, weil die Hand außerhalb des Bildes liegt. Sie beginnen damit, dass sie zeigen, dass die Markierungen auf der linken Seite jeweils drei Werte haben und dass 21 Markierungen für insgesamt 63 benötigte Werte vorhanden sind. Anschließend wenden sie eine if-Anweisung an, die fehlende Werte durch ein leeres numpy-Array ersetzt. Dieselbe Modifikation wird dann auf die Markierungen auf der rechten Seite angewendet, die ebenfalls 63 Werte haben. Der Code extrahiert die verschiedenen Schlüsselpunkte, indem er die x-, y- und z-Werte in einem großen Array verkettet und dann in das richtige Format für die Verwendung im LSTM-Modell reduziert.

  • 00:50:00 In diesem Abschnitt erläutert der Redner, wie dem Posenmodell eine Fehlerbehandlung und die Erkennung von Gesichtserkennungspunkten hinzugefügt werden können, und erstellt eine Funktion namens „extract_key_points“, um die Schlüsselpunkte zu extrahieren, die für die Erkennung von Erkennungspunkten und Aktionen benötigt werden. Die Funktion verwendet numpy-Arrays und Schleifen durch die Ergebnisse, um x-, y- und z-Werte für jeden Orientierungspunkt zu extrahieren, und glättet sie dann in einem Array. Der Sprecher erwähnt auch, dass der Code in der Videobeschreibung verfügbar sein wird, und lädt die Zuschauer ein, in den Kommentaren Fragen zu stellen.

  • 00:55:00 In diesem Abschnitt des Videos erklärt der Sprecher die Schlüsselpunkt-Extraktionsfunktion für die Gebärdenspracherkennung mithilfe der Aktionserkennung mit Python. Die Funktion extrahiert die Schlüsselpunkte für Pose, Gesicht, linke und rechte Hand und verkettet sie zu einem abgeflachten numpy-Array. Diese Schlüsselpunkte bilden die Rahmenwerte, die für die Erkennung von Gebärdensprache unter Verwendung der Erkennung menschlicher Handlungen verwendet werden. Der Sprecher richtet auch Variablen für den exportierten Datenpfad und die zu erkennenden Aktionen ein – hallo, danke und ich liebe dich – und verwendet dabei 30 Datenframes für jede Aktion.
  • 01:00:00 In diesem Abschnitt des Videos erklärt der Moderator den Datenerfassungsprozess zur Erkennung von Gebärdensprache mithilfe der Aktionserkennung mit Python. Sie erklären, dass sie für jede der drei Aktionen, die sie erkennen möchten, Daten im Wert von 30 Videos sammeln werden, wobei jedes Video 30 Frames lang ist. Das sind ziemlich viele Daten, aber der Moderator versichert den Zuschauern, dass sie Schritt für Schritt vorgehen werden. Anschließend erstellen sie Ordner für jede Aktion und jede Aktionssequenz, in denen die 30 Schlüsselpunkte aus jedem Frame jeder Sequenz als numpy-Array gespeichert werden. Der Moderator erwähnt auch, dass er den Zuschauern in Schritt 11 zeigen wird, wie man Wörter zu Sätzen verkettet.

  • 01:05:00 In diesem Abschnitt zeigt der Kursleiter, wie Daten für das Gebärdenspracherkennungsmodell erfasst werden. Er beginnt mit der Erstellung von Ordnern für die drei verschiedenen Zeichenklassen – Hallo, danke und ich liebe dich – und die entsprechenden einzelnen Sequenzordner. Dann modifiziert er die Medien-Pipe-Schleife, um jede Aktion, jedes Video und jeden Frame zu durchlaufen, um die Daten zu sammeln. Damit die Frames nicht zu schnell eingesammelt werden, fügt er mit einer logischen Anweisung zwischen jedem Video eine Pause ein. Auf diese Weise sammelt das Modell 30 Schlüsselpunktwerte pro Video und erstellt effektiv einen gestapelten Satz von drei Aktionen mit jeweils 30 Videos pro Aktion und 30 Frames pro Video.

  • 01:10:00 In diesem Abschnitt erläutert der Videoersteller die Erfassungslogik in einem Python-Skript, das OpenCV und Deep-Learning-Modelle verwendet, um Gesten in Gebärdensprache aus Videos zu erkennen. Die Logik besteht darin, Text auf dem Bildschirm auszugeben und bei jedem zweiten Frame eine Pause einzulegen. Der Videoersteller demonstriert auch die Verwendung von np.save zum Speichern der Frames als numpy-Arrays, die in einem mp_data-Ordner gespeichert werden. Sie stellen dann den endgültigen Codeblock für die Keypoint-Extraktion und das Speichern der Frames in den richtigen Ordnern bereit.

  • 01:15:00 In diesem Abschnitt des Transkripts erklärt der Sprecher die Logik, die angewendet wird, um seine Aktionen und Sequenzen (Videos) zu durchlaufen, die Erkennung von Medienleitungen anzuwenden, gestylte Orientierungspunkte zu zeichnen und verschiedene Schlüsselpunkte zu extrahieren, die in bestimmten Ordnern gespeichert werden sollen. Sie verwenden drei Aktionen (Hallo, danke und ich liebe dich) und sammeln 30 Bilder pro Aktion für 30 Sequenzen. Bevor sie diesen Code ausführen, prüfen sie noch einmal auf Fehler und passen die Linienbreite an, um sicherzustellen, dass die Schriftart nicht verdeckt wird. Sobald der Code ausgeführt wird, sagt das Pop-up „Starting Collection“, sie haben zwei Sekunden Zeit, um sich in Position zu bringen, um die Aktion auszuführen, und sie haben dafür 30 Frames. Der Code sollte in der Lage sein, Daten auf unbestimmte Zeit zu wiederholen und zu sammeln.

  • 01:20:00 In diesem Abschnitt des Videos demonstriert der Moderator, wie Gebärdensprachdaten mit MediaPipe- und OpenCV-Bibliotheken in Python erfasst werden. Der Moderator schlägt vor, verschiedene Winkel von Handzeichen für eine bessere Modellleistung zu erfassen, und erwähnt auch, dass 30 Sequenzen mit jeweils 30 Frames gut funktionieren. Die von MediaPipe gesammelten Schlüsselpunkte werden anstelle des Bildes verwendet, um das Modell in verschiedenen Szenarien widerstandsfähiger zu machen. Der Moderator erklärt auch, dass die gesammelten Daten als Numpy-Arrays für die zukünftige Verwendung gespeichert werden.

  • 01:25:00 In diesem Abschnitt konzentriert sich das Video auf die Vorverarbeitung der Daten und die Erstellung von Bezeichnungen und Merkmalen für das LSTM-Deep-Learning-Modell. Das Video beginnt mit dem Importieren von Abhängigkeiten und dem anschließenden Erstellen einer Label Map, die im Grunde ein Wörterbuch ist, das jede der verschiedenen Aktionen darstellt. Als nächstes werden die Daten eingelesen und zusammengeführt, um sie zu einem großen Array mit 90 Arrays zu strukturieren, die jeweils 30 Frames mit 1662 Werten enthalten, die die Schlüsselpunkte darstellen. Es werden zwei leere Arrays erstellt, Sequenzen und Beschriftungen, wobei Sequenzen die Feature-Daten und Beschriftungen die Beschriftungsdaten darstellen. Der Code durchläuft dann jede der Aktionen und Sequenzen und erstellt ein leeres Array für Fenster, um alle verschiedenen Frames für diese bestimmte Sequenz darzustellen. Schließlich wird numpy.load verwendet, um jeden Frame zu laden.

  • 01:30:00 In diesem Abschnitt durchläuft der Sprecher den Prozess der Vorverarbeitung der Daten, indem er sie in einem numpy-Array speichert und die Labels mithilfe der Funktion „to_categorical“ in eine One-Hot-codierte Darstellung umwandelt. Anschließend verwenden sie die Funktion „train_test_split“, um die Daten in Trainings- und Testdatensätze aufzuteilen. Der Trainingssatz besteht aus 85 Sequenzen und der Testsatz aus fünf Sequenzen. Der Sprecher importiert auch die notwendigen Abhängigkeiten, einschließlich des sequentiellen Modells, der LSTM-Schicht und der dichten Schicht, während er sich darauf vorbereitet, ein neuronales LSTM-Netzwerk mit TensorFlow und Keras zu trainieren.

  • 01:35:00 In diesem Abschnitt erörtert der Referent die notwendigen Abhängigkeiten, die für den Aufbau eines neuronalen Netzwerks erforderlich sind, einschließlich sequenziell, lstm, dicht und tensorboard. Sie erklären, dass sequentiell es einfach macht, Schichten zum Modell hinzuzufügen, und dass lstm für die zeitliche Analyse und Aktionserkennung verwendet wird. Der Referent demonstriert auch, wie man Tensorboard-Callbacks einrichtet, um den Trainingsfortschritt zu überwachen. Anschließend bauen sie die neuronale Netzwerkarchitektur auf, die das Hinzufügen von drei Sätzen von LSTM-Schichten und das Spezifizieren der Aktivierungsfunktionen und der Eingabeform umfasst. Schließlich erwähnen sie, wie wichtig es ist, Sequenzen nicht an die dichte Schicht zurückzugeben, und empfehlen weitere Lernressourcen.

  • 01:40:00 In diesem Abschnitt des Videos geht der Moderator die verschiedenen Ebenentypen durch, die dem LSTM-Modell hinzugefügt wurden, und gibt an, dass die nächsten drei Ebenen alle dichte Ebenen sind. Jede dichte Schicht verwendet 64 und 32 dichte Einheiten oder vollständig verbundene Neuronen mit Aktivierungswerten von ReLU. Die letzte Schicht ist die Aktionsschicht, die die zurückgegebenen Werte als drei neuronale Netzwerkeinheiten unter Verwendung des Aktivierungswerts von Softmax extrahiert. Das Modell sagt eine Aktion wie „Hallo“ voraus, und diese Ausgabe wird durch 30 Frames plus 1.662 Schlüsselpunkte geleitet und vorverarbeitet, um die Aktionen zu extrahieren. Der Moderator erklärt, wie sie zur Verwendung von MediaPipe und der LSTM-Schicht gekommen sind, indem sie die von ihnen durchgeführte Forschung und Entwicklung bespricht. Schließlich wird das Modell unter Verwendung von kategorialer Kreuzentropie als Verlustfunktion kompiliert und mit x train und y train für die angegebene Anzahl von Epochen angepasst und trainiert.

  • 01:45:00 In diesem Abschnitt demonstriert das Video den Prozess des Trainierens eines LSTM-Deep-Learning-Modells für die Erkennung von Gebärdensprache mithilfe der Aktionserkennung mit Python. Das Modell verwendet das Modell von MediaPipe Holistic, das keinen Datengenerator benötigt, da die Daten in den Speicher passen. Das Video zeigt, wie der Trainingsprozess mit TensorBoard eingerichtet wird und wie die Genauigkeit und der Verlust des Modells während des Trainings in TensorBoard überwacht werden. Das Video zeigt auch, wie der Trainingsprozess beendet wird, sobald ein angemessenes Maß an Genauigkeit erreicht wurde, und wie die Struktur des Modells mit der Funktion model.summary überprüft wird.

  • 01:50:00 In diesem Abschnitt trainiert der Sprecher ein Modell und trifft anhand des gespeicherten Modells Vorhersagen. Das Modell verwendet die LSTM-Deep-Learning-Technik, um die Aktionen aus der Gebärdensprache zu identifizieren. Das Modell sagt die höchste Wahrscheinlichkeit einer erkannten Aktion mit einer Softmax-Funktion voraus. Der vorhergesagte Wert wird mit dem tatsächlichen Wert verglichen, um die Leistung des Modells zu bewerten. Der Sprecher speichert das trainierte Modell als action.h5 und lädt es mit einer Compile-and-Load-Funktion neu. Der Sprecher importiert Metriken aus sklearn und bewertet die Leistung der Multi-Label-Verwirrungsmatrix des Modells.

  • 01:55:00 In diesem Abschnitt des Videos erklärt der Moderator, wie die Leistung des trainierten Modells mithilfe einer Konfusionsmatrix mit mehreren Bezeichnungen und einer Genauigkeitsbewertungsfunktion bewertet wird. Die Konfusionsmatrix stellt die wahren Positiven und die wahren Negativen dar, und je höher die Anzahl dieser Werte in der oberen linken und unteren rechten Ecke, desto besser ist die Leistung des Modells. Die Genauigkeitsbewertungsfunktion gibt den Prozentsatz der korrekten Vorhersagen des Modells an. Das trainierte Modell wird dann anhand der Testdaten evaluiert, und die Schleife wird für die Echtzeiterkennung wiederhergestellt, was das Erstellen neuer Variablen für die Erkennung, das Verketten von Frames und das Anwenden von Vorhersagelogik umfasst. Eine Schwellenvariable wird ebenfalls implementiert, um Ergebnisse oberhalb einer bestimmten Konfidenzmetrik wiederzugeben.

  • 02:00:00 In diesem Abschnitt erläutert der Referent seine Vorhersagelogik für die Erkennung von Gebärdensprache mithilfe der Aktionserkennung mit Python und dem LSTM-Deep-Learning-Modell. Sie beginnen damit, Schlüsselpunkte zu extrahieren und sie an eine Sequenz von 30 Bildern anzuhängen. Wenn die Länge der Sequenz gleich 30 ist, führen sie die Vorhersage aus, indem sie model.predict mit den erweiterten Dimensionen der Sequenz aufrufen. Anschließend drucken sie die vorhergesagte Klasse mit np.argmax und den zuvor definierten Aktionen. Der Sprecher fügt auch Schlüsselpunkte am Anfang der Sequenz ein, um die Logik zu sortieren, und fügt dem Code Visualisierungslogik hinzu.

  • 02:05:00 In diesem Abschnitt erklärt der Sprecher den Code, der erklärt, wie das Programm prüft, ob das Ergebnis über dem Schwellenwert liegt, indem es das Ergebnis mit der höchsten Punktzahl mithilfe von „mp.argmax“ extrahiert und „res“ durchläuft. Die Logik des Programms besteht darin, zu überprüfen, ob das letzte Wort mit der aktuellen Vorhersage übereinstimmt. Wenn dies der Fall ist, fügt das Programm die Satzlänge nicht hinzu. Wenn es nicht übereinstimmt, hängt das Programm die aktuell erkannte Aktion an unser Satzarray an. Die Satzlänge sollte nur bis zu fünf Wörter umfassen, damit das Programm nicht versucht, ein riesiges Array zu rendern. Schließlich fügt das Programm Text und ein Rechteck in das Bild ein, um den Satz anzuzeigen.

  • 02:10:00 In diesem Abschnitt zeigt das Video, wie Python und ein LSTM Deep Learning-Modell verwendet werden, um Gebärdensprache mithilfe der Aktionserkennung zu erkennen. Das Tutorial führt Sie durch die Anpassung des Codes zur Verwendung der Append-Methode und die Erhöhung des Erkennungsschwellenwerts für eine bessere Genauigkeit. Das Video zeigt auch, wie die Wahrscheinlichkeiten mit einer Schnellfunktion gerendert werden, um eine Wahrscheinlichkeitsvisualisierung zu erstellen, sodass die Erkennungsausgabe visuell überzeugend aussieht. Insgesamt bietet das Tutorial ein hervorragendes Beispiel für die Verwendung von Deep-Learning-Modellen zur Erkennung von Gebärdensprache mit Python, was es zu einer hervorragenden Ressource für alle macht, die ähnliche Projekte erstellen möchten.

  • 02:15:00 In diesem Abschnitt des Videos demonstriert der Moderator eine Wahrscheinlichkeitsvisualisierungsfunktion, mit der wir die verschiedenen Aktionen und die Berechnung ihrer Wahrscheinlichkeiten in Echtzeit anzeigen können. Die Funktion verwendet cv2.rectangle, um ein dynamisches Rechteck auf dem Ausgaberahmen zu platzieren, und positioniert und füllt es dann basierend auf der Aktion, die wir gerade bearbeiten, die dann die Textmethode cv2.put verwendet, um die Textwerte auszugeben. Der Moderator zeigt, wie diese Funktion in die Schleife eingebunden werden kann, um sie in Echtzeit zu visualisieren, und wir können sehen, dass sie verschiedene Aktionen wie „Hallo“, „Danke“ und „Ich liebe dich“ basierend auf den Wahrscheinlichkeitswerten erkennt und erkennt. Der Moderator hebt hervor, dass es viele Anwendungen für diese Funktion gibt, und zeigt, wie der Code verwendet werden kann, um verschiedene Aktionen in verschiedenen Szenarien zu erkennen und zu erkennen.

  • 02:20:00 In diesem Abschnitt des Videos fasst der Moderator den Prozess seines Projekts zur Erkennung von Gebärdensprache zusammen. Sie richteten Ordner für die Sammlung ein, sammelten wichtige Punkte, verarbeiteten die Daten vor, bauten ein neuronales LSTM-Netzwerk auf, trafen Vorhersagen und testeten es in Echtzeit. Sie waren in der Lage, Erkennungen effektiv in Echtzeit zum Laufen zu bringen, einschließlich der Wahrscheinlichkeitsvisualisierung. Sie demonstrieren, wie sie den Code korrigiert haben, um die richtigen Frames zu erfassen und sie an die Sequenz anzuhängen, indem sie einen Doppelpunkt verschieben und ein Negativ hinzufügen. Sie fügten auch eine Zeile hinzu, um ihre Vorhersagen an ein neues Vorhersage-Array anzuhängen, um mehr Stabilität bei der Vorhersage von Aktionen zu gewährleisten. Schließlich bieten sie Benutzern die Möglichkeit, das Projekt zu erweitern und zu modifizieren, indem sie zusätzliche Aktionen, Farben und/oder Visualisierungen nach eigenem Ermessen hinzufügen.

  • 02:25:00 In diesem Abschnitt demonstriert der Referent, wie das Aktionserkennungsmodell stabiler und widerstandsfähiger geworden ist, indem zusätzliche Logik implementiert wurde. Das Modell ist jetzt in der Lage, Fehlerkennungen zu minimieren und die Erkennung über längere Zeiträume zu halten, wodurch seine Genauigkeit verbessert wird. Der Redner erwähnt auch, dass die trainierten Gewichtungen für das Modell im GitHub-Repository verfügbar sein werden, damit Benutzer sie nutzen können. Das Video endet mit einer Einladung, dem Video einen Daumen nach oben zu geben und den Kanal zu abonnieren.
GitHub - nicknochnack/ActionDetectionforSignLanguage: A practical implementation of sign language estimation using an LSTM NN built on TF Keras.
GitHub - nicknochnack/ActionDetectionforSignLanguage: A practical implementation of sign language estimation using an LSTM NN built on TF Keras.
  • nicknochnack
  • github.com
A practical implementation of sign language estimation using an LSTM NN built on TF Keras. - GitHub - nicknochnack/ActionDetectionforSignLanguage: A practical implementation of sign language estim...
 

Numerik des maschinellen Lernens an der Universität Tübingen im Wintersemester 2022/23. Vortrag 1 - Einführung -- Philipp Hennig



Numerik von ML 1 -- Einführung -- Philipp Hennig

In diesem Video geht Philipp Hennig auf die Bedeutung des Verständnisses numerischer Algorithmen beim maschinellen Lernen ein und stellt die Studieninhalte für das Semester vor. Der erste behandelte numerische Algorithmus ist die lineare Algebra mit einer Anwendung in der Gaußschen Prozessregression. Hennig diskutiert auch die Rolle von Simulation, Differentialgleichungen, Integration und Optimierung beim maschinellen Lernen. Er stellt neue Entwicklungen in numerischen Algorithmen vor, wie z. B. algorithmische Spines, Observables und probabilistische numerische Algorithmen. Während des gesamten Videos betont Hennig die Bedeutung der Aktualisierung klassischer Algorithmen, die beim maschinellen Lernen verwendet werden, um komplexe Probleme zu lösen, und hebt die Rolle des Schreibens von Code in diesem Informatikkurs hervor.

Philipp Hennig stellt seinen Kurs zu Numerik des maschinellen Lernens vor, der darauf abzielt zu erforschen, wie Algorithmen des maschinellen Lernens innerhalb der Box funktionieren und wie sie angepasst oder verändert werden können, um lernende Maschinen zu verbessern. Das hochtechnische Wissen in numerischen Algorithmen und maschinellen Lernalgorithmen ist bei Forschern und Fachleuten aus der Industrie sehr gefragt. Der Kurs besteht aus Theorie und Codierungsarbeit, wobei die Aufgaben nach einem binären System bewertet werden. Hennig betont die Bedeutung numerischer Algorithmen beim maschinellen Lernen und lädt die Studierenden ein, an diesem einzigartigen Lehrexperiment mit neun verschiedenen Dozenten teilzunehmen.

  • 00:00:00 In diesem Abschnitt stellt Philipp Hennig die Bedeutung des Verständnisses numerischer Algorithmen beim maschinellen Lernen vor. Während maschinelle Lernalgorithmen Daten als Eingabe verwenden und Modelle erstellen, die die Welt vorhersagen oder in ihr agieren, beinhaltet der eigentliche Lernprozess numerische Berechnungen. Im Gegensatz zu klassischen KI-Algorithmen verwenden moderne maschinelle Lernalgorithmen numerische Algorithmen wie lineare Algebra, Simulation, Integration und Optimierungsmethoden als Grundelemente für diese Berechnungen. Philipp definiert numerische Algorithmen als Methoden, die eine mathematische Größe schätzen, die keine geschlossene Lösung hat und im Gegensatz zu atomaren Operationen, die immer funktionieren, schief gehen kann. Da numerische Algorithmen für maschinelles Lernen von zentraler Bedeutung sind, ist es wichtig, sie zu verstehen, um sicherzustellen, dass sie korrekt funktionieren.

  • 00:05:00 In diesem Abschnitt erörtert der Sprecher den Unterschied zwischen regulären Funktionen und numerischen Algorithmen, wobei er anmerkt, dass letztere dazu neigen, ihre eigenen Bibliotheken und mehrere Subroutinen zur Auswahl zu haben. Anschließend liefert er ein Beispiel für einen prototypischen numerischen Algorithmus, der 1993 in der Sprache Forth geschrieben wurde und einen Algorithmus implementiert, der 1975 von zwei Mathematikern erfunden wurde. Dies unterstreicht die Tatsache, dass numerische Algorithmen alt sind und über präzise Schnittstellen verfügen, die es schwierig machen, sie zu modifizieren. Ingenieure für maschinelles Lernen stoßen häufig auf numerische Aufgaben und konnten diese alten Algorithmen, die in anderen Bereichen entwickelt wurden, verwenden, aber dies kann problematisch sein, wenn die anstehende Aufgabe nicht genau mit den Fähigkeiten der Methode übereinstimmt. Der Referent weist darauf hin, dass dies beim maschinellen Lernen ein Problem werden kann, wenn versucht wird, Probleme zu lösen, für die die vorhandenen numerischen Methoden nicht ausreichen.

  • 00:10:00 In diesem Abschnitt stellt Philipp Hennig das Thema Numerische Algorithmen und die Studieninhalte des Semesters vor. Lineare Algebra, die Basisschicht des maschinellen Lernens, ist der erste numerische Algorithmus, den sie abdecken. Ein Beispiel für seine Anwendung ist die Gaußsche Prozessregression, bei der zwei Funktionen für die Inferenz verwendet werden: Posteriorer Mittelwert und Posterior-Kovarianzfunktion. Diese Funktionen werden unter Verwendung von Kernel-Methoden definiert, und ihre Implementierung umfasst die Cholesky-Zerlegungsmethode, anstatt die Inverse einer Matrix zu berechnen. Hennig stellt auch ein Python-Code-Snippet vor und erklärt, warum man die Cholesky-Zerlegung verwenden sollte, anstatt die Inverse einer Matrix zu berechnen.

  • 00:15:00 In diesem Abschnitt des Videos geht Referent Philipp Hennig auf das Problem mit Kernel-Maschinen ein, insbesondere im Hinblick auf deren Unfähigkeit, große Datenmengen gut zu skalieren. Er erklärt, dass die für Kernel-Maschinen erforderlichen teuren Berechnungen ihre Verwendung im modernen maschinellen Lernen erschweren. Hennig schlägt jedoch auch vor, dass es andere lineare Algebra-Algorithmen gibt, die verwendet werden können, um Berechnungen zu beschleunigen, indem sie die Datensatzstruktur und Annäherungen nutzen, was letztendlich zu Lösungen mit Gaußscher Prozessregression führt, die auf große Datensätze skalieren.

  • 00:20:00 In diesem Abschnitt stellt Philipp Hennig Simulationsalgorithmen und ihre Rolle beim maschinellen Lernen vor. Simulationsmethoden simulieren die Trajektorie eines dynamischen Systems durch die Zeit und können X schätzen. Sie zeigen sich beim maschinellen Lernen, wenn Agenten wie ein selbstfahrendes Auto gebaut werden oder wenn ein maschineller Lernalgorithmus erstellt wird, der physikalische Erkenntnisse nutzt, wie z. B. wissenschaftliche maschinelles Lernen. Die Differentialgleichungen, wie die Schrödinger-Gleichung, werden typischerweise verwendet, um das Wissen der Natur zu kodieren. Darüber hinaus liefert Hennig ein Beispiel für ein einfaches Vorhersageproblem der COVID-19-Fälle in Deutschland über eineinhalb Jahre, um zu erklären, warum tiefe neuronale Netze und Gaußsche Prozesse bei der Lösung dieses Problems nicht funktionieren.

  • 00:25:00 In diesem Abschnitt diskutiert Philipp Hennig die Verwendung von Differentialgleichungen in Modellierungssystemen, insbesondere die SIR-Modelle, die üblicherweise in Simulationen verwendet werden, und die Herausforderung, reale Dynamiken wie Sperren in diese Modelle einzubeziehen. Er schlägt vor, ein neuronales Netzwerk zu verwenden, um den Koeffizienten Beta zeitabhängig zu machen, weist jedoch auf die Schwierigkeit hin, dies aufgrund des Fehlens von Ableitungen im Code zu tun. Er hebt jedoch die jüngste Entwicklung eines Algorithmus in Jax hervor, der dieses Problem löst.

  • 00:30:00 In diesem Abschnitt diskutiert Philipp Hennig einen Algorithmus namens simulationsbasierte Inferenz, der eine aktuelle Methode zur Lösung komplexer Probleme darstellt. Dieser Algorithmus beinhaltet eine verschachtelte for-Schleife, die die Funktion f mehrmals auswertet und den Gradienten zurückgibt und einen Gradientenabstiegsschritt ausführt. Hennig erklärt, dass wir, um einen flexibleren und schnelleren Algorithmus als diesen primitiven Code zu erstellen, unsere eigene Methode bauen können, die eine Liste von Zahlen innerhalb des Photonencodes auf prozedurale Weise erstellt und anpasst. Diese Methode beinhaltet ein Rückgrat einer Markov-Kette, an das Operatoren wie Wahrscheinlichkeitsverteilungs- und Informationsoperatoren angehängt werden können, um den Algorithmus über unbekannte Faktoren zu informieren. Auf diese Weise können wir diese Probleme lösen, ohne immer wieder eine for-Schleife in einer äußeren Schleife aufzurufen, was zeitaufwändig wäre.

  • 00:35:00 In diesem Abschnitt spricht Philipp Hennig über die Bedeutung der Aktualisierung klassischer Algorithmen des maschinellen Lernens, die über 100 Jahre alt sind. Er stellt die Idee algorithmischer Spines vor, die mit verschiedenen Informationsoperatoren operieren und neue Funktionalitäten schaffen können. Hennig diskutiert dann die Rolle der Integration beim maschinellen Lernen, das eine elementare Operation der Patienteninferenz ist. Die elementare Operation für probabilistisches maschinelles Lernen ist die Berechnung einer A-Posteriori-Verteilung, indem eine gemeinsame Verteilung genommen und durch eine Randverteilung dividiert wird, was eine Integration beinhaltet. Abschließend erörtert Hennig die Bedeutung der Optimierung, die die grundlegende Operation beim maschinellen Lernen darstellt und die Berechnung von Werten zur Minimierung von Verlustfunktionen umfasst. Diese Algorithmen bilden die Grundlage für differenzierbare Programme, für die die Steigung der Funktion automatisch berechnet werden kann.

  • 00:40:00 In diesem Abschnitt geht Philipp Hennig auf Optimierungsalgorithmen und deren Bedeutung beim maschinellen Lernen ein. Während klassische Methoden wie BFGS und Minimize in scipy.optimize hinterlegt sind, gehören neue Methoden wie SGD und Adam mittlerweile zum Standard im Machine Learning. Diese Methoden erfordern jedoch häufig eine Lernrate und viel Überwachung, im Gegensatz zu den älteren Methoden, die auf ein Minimum konvergieren und an jedem differenzierbaren Problem arbeiten können. Um die Einschränkungen dieser neuen Methoden bei großen Datensätzen mit Millionen von Datenpunkten zu umgehen, wird ein Batch-Gradientenabstieg verwendet, um eine viel kleinere Summe zu berechnen, die ein unvoreingenommener Schätzer dessen ist, woran wir interessiert sind. Obwohl diese neuen Methoden es sind Sie sind effizienter und effektiver, basieren aber immer noch auf den gleichen Prinzipien wie die alten Algorithmen, was bei bestimmten Anwendungen zu Problemen führen kann.

  • 00:45:00 In diesem Abschnitt des Videos erörtert der Sprecher die Möglichkeit, in Deep-Learning-Algorithmen zusätzlich zum Gradienten die Varianz zu berechnen. Er argumentiert, dass das Weglassen der Varianzberechnung aus dem Optimierungsprozess darauf zurückzuführen ist, dass die Optimierung immer noch als ein Gradientenberechnungsproblem angesehen wird und nicht als ein Problem der Verwendung von Zufallsvariablen, um Punkte zu finden, die sich gut verallgemeinern lassen. Er betont jedoch, wie wichtig es ist, Unsicherheiten, die sich aus der Zufälligkeit ergeben, in Berechnungen einzubeziehen, und stellt fest, dass dies für den Aufbau besserer Trainingsaufbauten für tiefe neuronale Netze unerlässlich ist. Er schließt mit der Erwähnung bevorstehender Vorlesungen, die sich eingehender mit diesem Thema befassen werden.

  • 00:50:00 In diesem Abschnitt erörtert Philipp Hennig die Verwendung von Observablen, um tiefen neuronalen Netzen neue Funktionen hinzuzufügen, wie z. Er erklärt auch, dass numerische Algorithmen, die zum Trainieren von maschinellen Lernalgorithmen verwendet werden, eigentlich selbst maschinelle Lernalgorithmen sind, da sie eine unbekannte Größe oder latente Variable schätzen, während sie nachvollziehbare, beobachtbare Daten beobachten. Dies ähnelt dem Prozess der Inferenz, bei dem eine latente Menge basierend auf beobachteten Ergebnissen einer Berechnung geschätzt wird.

  • 00:55:00 In diesem Abschnitt stellt Philipp Hennig das Konzept numerischer Algorithmen als lernende Maschinen vor und diskutiert die Idee, numerische Algorithmen von Grund auf als probabilistische numerische Algorithmen zu entwickeln. Dies sind Algorithmen, die eine Wahrscheinlichkeitsverteilung nehmen, die ihre Aufgabe beschreibt, und die CPU oder die GPU als Datenquelle verwenden, um ihre Schätzung der Lösung für die numerische Aufgabe zu verfeinern. Hennig betont, dass der Kurs kein typischer Numerikanalyse-Kurs ist, da der Fokus darauf liegt, Maschinen im Inneren als lernende Maschinen zu verstehen und neue Algorithmen in der Sprache des maschinellen Lernens zu bauen. Die Schüler können damit rechnen, in diesem Informatikkurs viel Code zu schreiben.

  • 01:00:00 In diesem Abschnitt stellt Philipp Hennig seinen Kurs zu Numerik des maschinellen Lernens vor, der seiner Meinung nach der erste dedizierte Kurs dieser Art weltweit ist. Der Kurs zielt darauf ab, sich mit der Funktionsweise von Algorithmen für maschinelles Lernen zu befassen, insbesondere wie sie innerhalb der Box funktionieren und wie sie geändert oder angepasst werden können, um Lernmaschinen zu verbessern. Die hochtechnische Natur numerischer Algorithmen und maschineller Lernalgorithmen bedeutet, dass Wissen in diesem Bereich sowohl von Forschern als auch von Fachleuten aus der Industrie sehr nachgefragt wird. Die Vorlesungen werden von seinem Team aus hocherfahrenen Doktoranden gehalten, die jahrelang über das Innenleben dieser Algorithmen geforscht und nachgedacht haben und daher besser gerüstet sind, um die feineren technischen Details zu diskutieren als ein Professor.

  • 01:05:00 In diesem Abschnitt geht Philipp Hennig auf den Aufbau des Studiums und die Studienvoraussetzungen ein. Der Kurs umfasst sowohl theoretische als auch Programmierarbeiten, da von den Studenten erwartet wird, dass sie numerische Probleme entweder mit Python- oder Julia-Code lösen. Die Aufgaben werden als PDF eingereicht, wobei die Lösungen binär bewertet werden – eine gute Lösung wird mit einem Häkchen, eine ungenügende mit einem Kreuz markiert. Für jedes Kreuz erhalten die Studierenden einen Bonuspunkt, der für das Prüfungsabschlussergebnis angerechnet wird. Die Prüfung findet am 13. Februar oder 31. März nächsten Jahres statt, und es wird empfohlen, die erste Prüfung zu bestehen, da eine Zurücksetzung möglicherweise nicht möglich ist. Schließlich werden Studenten, die an einem höheren Abschluss in numerischen Algorithmen im maschinellen Lernen oder in datenzentrischer Berechnung interessiert sind, ermutigt, diesen Kurs zu belegen, da er zahlreiche Möglichkeiten für angewandte Forschung in verschiedenen Bereichen bietet.

  • 01:10:00 In diesem Abschnitt betont Philipp Hennig die Bedeutung numerischer Algorithmen beim maschinellen Lernen und erklärt, dass sie die Motoren sind, die die lernende Maschine antreiben. Er beschreibt, wie das Verständnis dieser Algorithmen und ihrer Bayes'schen Inferenzsprache zu schnelleren, zuverlässigeren und einfacher zu verwendenden Lösungen für maschinelles Lernen führen kann. Hennig betont, dass klassische numerische Algorithmen zwar wichtig sind, aber durch die Linse des maschinellen Lernens betrachtet werden sollten, wobei die Perspektive lernender Maschinen eingenommen werden sollte, um Simulation und Deep Learning auf ganzheitlichere Weise zu integrieren. Er lädt Studenten ein, an diesem spannenden Experiment zum Unterrichten von maschinellem Lernen mit einem einzigartigen Setup von neun verschiedenen Ausbildern teilzunehmen.
 

Vorlesung 2 -- Numerische lineare Algebra -- Marvin Pförtner



Numerik der ML 2 -- Numerische lineare Algebra -- Marvin Pförtner

Numerische lineare Algebra ist grundlegend für maschinelles Lernen, Gaußsche Prozesse und andere nichtparametrische Regressionsmethoden. Die Vorlesung behandelt verschiedene Aspekte der numerischen linearen Algebra, darunter die Bedeutung des Verständnisses der Struktur einer Matrix für eine effizientere Multiplikation, die Optimierung von maschinellen Lernalgorithmen durch das Lösen von Hyperparameter-Auswahlproblemen und das Berechnen von Kernel-Matrizen sowie die Lösung eines linearen Systems unter Verwendung der LU-Zerlegung, unter anderem. Der Vortrag betont auch die Bedeutung der richtigen Implementierung von Algorithmen, da der für mathematische Operationen verwendete Algorithmus einen erheblichen Einfluss auf die Leistung, Stabilität und den Speicherverbrauch hat.

Im zweiten Teil des Videos geht Marvin Pförtner auf die Bedeutung der numerischen linearen Algebra in Algorithmen des maschinellen Lernens ein. Er behandelt verschiedene Themen, darunter LU-Zerlegung, Cholesky-Zerlegung, Matrix-Inversions-Lemma und Gaußsche Prozessregression. Pförtner betont die Bedeutung der Verwendung von Strukturen, um Algorithmen effizienter zu machen, und hebt die Bedeutung numerischer Stabilität beim Lösen großer Gleichungssysteme in der Regression von Gaußschen Prozessen hervor. Er diskutiert auch Techniken wie aktives Lernen und Annäherungen mit niedrigem Rang, um mit großen Datensätzen und den möglichen Speicherbeschränkungen von Kernel-Matrizen umzugehen. Insgesamt zeigt das Video die entscheidende Rolle, die die numerische lineare Algebra in vielen Aspekten des maschinellen Lernens spielt.

  • 00:00:00 In diesem Abschnitt diskutiert ein Doktorand die Bedeutung der numerischen linearen Algebra beim maschinellen Lernen und bei Gaußschen Prozessen. Numerische lineare Algebra ist grundlegend für maschinelles Lernen und eine Reihe von Werkzeugen, die zur Implementierung von Algorithmen erforderlich sind. Die Vorlesung behandelt grundlegende Aufgaben in der numerischen linearen Algebra, die für maschinelles Lernen wichtig sind, die Erforschung von Strukturen, um numerische lineare Algebra-Algorithmen schnell und zuverlässig zu machen, und die korrekte Implementierung der Gaußschen Prozessregression. Die Vorlesung nennt auch Beispiele für Anwendungen der numerischen linearen Algebra wie grundlegende Wahrscheinlichkeitstheorie, allgemeine lineare Modelle, Hauptkomponentenanalyse und Matrix-Vektor-Produkte zur Dimensionsreduktion.

  • 00:05:00 In diesem Abschnitt diskutiert der Referent die numerische lineare Algebra im Kontext des maschinellen Lernens. Er erklärt, wie Gaußsche Prozesse, eine nichtparametrische Regressionsmethode beim maschinellen Lernen, sich auf ein vorheriges Wahrscheinlichkeitsmaß stützen, bei dem es sich um einen Gaußschen Prozess handelt, der eine symmetrische und positiv definierte Kern-Gram-Matrix generiert. Die generativen Informationen in dieser Matrix ermöglichen effiziente und zuverlässige Algorithmen. Der Redner erwähnt auch, wie ähnliche Gleichungen für eine größere Klasse von Modellen gelten, einschließlich Kernel-Methoden und Ridge-Regression. Er diskutiert auch kurz, wie numerische lineare Algebra verwendet wird, um lineare partielle Differentialgleichungen zu lösen, und in Optimierungsverfahren für die lokale Optimierung von Verlustfunktionen.

  • 00:10:00 In diesem Abschnitt erörtert der Referent die Bedeutung der linearen Algebra beim maschinellen Lernen und liefert Beispiele, um diese Bedeutung zu veranschaulichen. Lineare Algebra-Operationen wie Matrix-Vektor-Multiplikation, lineare Systemlösungen und Matrixzerlegungen sind grundlegend für viele Modelle des maschinellen Lernens. Darüber hinaus stellt er fest, dass viele maschinelle Lernmodelle tatsächlich verrauscht sind, da sie eine verrauschte Schätzung der Matrix verwenden, mit der sie darauf abzielen, lineare Systeme zu lösen. Schließlich betont er, dass logarithmische Determinanten im Fall der Gaußschen Dichte und der GP-Regression wesentlich sind, um maximale Posterior-Schätzungen zu erhalten.

  • 00:15:00 In diesem Abschnitt betont der Referent die Bedeutung einer effizienten Matrix-Vektor-Multiplikation in der numerischen linearen Algebra und im maschinellen Lernen. Sie geben ein Beispiel dafür, wie selbst einfache Aufgaben rechnerisch unmöglich werden können, wenn der mathematische Ausdruck nicht richtig in einen Algorithmus umgewandelt wird. Der Redner betont auch die Bedeutung der Identifizierung der Struktur in der Matrix für eine effizientere Multiplikation. Sie schließen mit der Feststellung, dass der Algorithmus, der eine mathematische Operation implementiert, einen erheblichen Einfluss auf die Leistung, Stabilität und den Speicherverbrauch hat.

  • 00:20:00 In diesem Abschnitt betont der Referent, wie wichtig es ist, die Struktur einer Matrix zu verstehen, um maschinelle Lernalgorithmen zu optimieren. Er erklärt, dass Sie, wenn Sie wissen, dass es innerhalb einer Matrix eine Struktur mit niedrigerem Rang gibt, Methoden verwenden sollten, die auf niedrigere Matrizen spezialisiert sind, um sie zu faktorisieren, anstatt die vollständige Matrix zu multiplizieren. Er erklärt, dass das Absenken nur eine Art von Struktur ist und dass es verschiedene Matrixstrukturen wie Sparse-Matrizen und Kernel-Matrizen gibt, die auch von Nicht-Null-Einträgen und Eingabedimensionen des Regressors abhängen. Der Redner geht auch darauf ein, wie man Kernel-Matrizen speichert, um Speicher zu sparen.

  • 00:25:00 In diesem Abschnitt erläutert der Referent, wie Kernel-Matrizen für Gaußsche Prozesse effizient gespeichert und ausgewertet werden können. Wenn die Datenpunkte eine bestimmte Grenze überschreiten, ist der naive Ansatz, sie zu speichern, aufgrund von Speicherproblemen nicht mehr praktikabel. Es sind Bibliotheken verfügbar, die sehr effiziente CUDA-Kernel schreiben und GPUs verwenden, um Gaußsche Prozesse auf einem Laptop mit Hunderttausenden von Datenpunkten zu berechnen. Der Referent spricht auch über Matrizen mit allgemeiner funktionaler Form, wie Auto-Diff-Graphen, die den gleichen Zeit- und Platzbedarf haben. Schließlich vertieft sich der Sprecher in einen konkreten Algorithmus zur Anwendung der Bayes'schen Regression auf Gauß'sche Prozesse, wobei der Kern des Gauß'schen Maßes die Kovarianz der unbekannten Funktion ist. Der Referent präsentiert ein Diagramm des späteren Maßes über der Funktion in Verbindung mit den beobachteten Daten und wie die Unsicherheitsquantifizierung gut funktioniert. Das Problem tritt jedoch auf, wenn die Inverse berechnet wird, die ziemlich unerschwinglich skaliert, wodurch der naive Ansatz, eine Kernel-Gram-Matrix aus n Datenpunkten zu berechnen, für große n nicht durchführbar ist.

  • 00:30:00 In diesem Abschnitt erörtert der Referent die numerische Komplexität der Berechnung von Kernel-Matrizen in Gaußschen Prozessen, die unerschwinglich teuer werden können. Darüber hinaus gibt es Hyperparameter, die für den Kernel optimiert werden müssen, wie z. B. die Ausgabeskalierung und die Längenskalierung, um die vorherige Erklärung des beobachteten Datensatzes zu optimieren. Der Referent beschreibt einen bayesschen Ansatz zur Lösung dieses Modellauswahlproblems durch Berechnung der logarithmischen Randwahrscheinlichkeit und Minimierung einer Verlustfunktion, die aus einem Kompromiss zwischen Modellanpassung und Komplexität besteht, die durch den Normalisierungsfaktor der Gaußschen Verteilung dargestellt wird. Der Referent zeigt Beispiele für starkes Underfitting und Overfitting und erklärt, wie der Kompromiss zwischen diesen beiden Begriffen gefunden werden kann, um die beste Modellleistung zu erzielen.

  • 00:35:00 In diesem Abschnitt diskutiert Marvin Pförtner die Lösung eines linearen Systems. Die Lösung erfordert M plus eine Lösung, wobei M die Anzahl der Datenpunkte ist, an denen wir unseren Regressor auswerten möchten. Das System ist im allgemeinsten Fall symmetrisch und positiv definit, aber es können zusätzliche Strukturen genutzt werden, da das System normalerweise riesig ist und wir dies normalerweise nicht für sehr große Datensätze lösen können. Eine sehr wichtige Matrixzerlegung ist die Lu-Zerlegung. Der zum Lösen eines unteren Dreieckssystems verwendete Algorithmus ist die Vorwärtssubstitution, die die Matrix in vier Teile zerlegt: Skalar in der unteren rechten Ecke, die Spalte darüber ist Null, ein Zeilenvektor links und ein weiterer dreieckiger Teil namens L minus li minus eins darüber, das auch unteres Dreieck ist.

  • 00:40:00 In diesem Abschnitt erläutert Marvin Pförtner, wie man Systeme löst, bei denen die Systemmatrix ein unteres Dreieck mit der Dimension n minus eins ist. Durch Abspalten der letzten Zeile kann das System mit einem einfachen Algorithmus gelöst werden. Rekursive Methoden werden dann verwendet, um ein System für eine beliebige gegebene Dimension zu lösen. Pförtner erklärt auch, wie man die Matrix in untere und obere dreieckige Teile aufteilt, indem er die sogenannte Lu-Zerlegung verwendet, die eine rekursive Definition unter Verwendung von Teile-und-Eroberer-Techniken ist. Diese Technik ist nützlich, um Matrizen zu invertieren und das Lösen linearer Systeme kostengünstiger zu machen, wobei der Prozess O (N ^ 2) anstelle von O (N ^ 3) ist.

  • 00:45:00 In diesem Abschnitt wird die Lu-Zerlegungsmethode zum Lösen linearer Gleichungssysteme erklärt. Diese Methode zerlegt eine Matrix in eine untere Dreiecksmatrix und eine obere Dreiecksmatrix, was eine schnellere Berechnung von Lösungen für lineare Systeme ermöglicht. Der Prozess umfasst das Setzen der Diagonaleinträge des linken Teils der unteren Dreiecksmatrix auf Eins und das Verwenden von teilweisem Schwenken, um Stabilität und Robustheit sicherzustellen. Trotz der Effizienz der Methode muss der Rechenaufwand von O(n^3) berücksichtigt werden.

  • 00:50:00 In diesem Abschnitt diskutiert Marvin Pförtner die Rechenzeit der UD-Zerlegung und demonstriert, wie man sie vor Ort implementiert. Er erklärt, dass der größte Teil jedes Rekursionsschritts die Berechnung des äußeren Produkts und die Subtraktion ist, was zu einer Summierung über zwei mal (n-1) zum Quadrat führt. Unter Verwendung einer Strategie, die als Gaußsche Elimination bekannt ist, berechnet der Algorithmus effizient die obere Dreiecksmatrix. Pförtner zeigt, wie man eine Beispielrechnung mit einer kleinen Matrix durchführt und demonstriert, dass der nicht-triviale Teil von L in den drei Einträgen unterhalb der Diagonalen enthalten ist und der obere dreieckige Teil die Nicht-Null-Teile von U enthält. Indem man alles behält In Erinnerung präsentiert Pförtner eine Implementierung, die L und U geschickt in derselben Matrix speichert.

  • 00:55:00 In diesem Abschnitt erläutert der Referent den Prozess der LU-Zerlegung in der numerischen linearen Algebra. Er zeigt Schritt für Schritt, wie man den Algorithmus berechnet und wie man damit lineare Systeme löst. Sobald wir die LU-Zerlegung einer Matrix haben, können wir sie anwenden, um mehrere lineare Systeme mit mehreren rechten Seiten effizient zu lösen, was nur 2N zum Quadrat für eine Vorwärts- und Rückwärtssubstitution kostet. Die Umkehrung einer Permutationsmatrix ist nur ihre Transponierte, die billig zu berechnen ist, wodurch es möglich wird, K Lösungen mit derselben Systemmatrix in der Gaußschen Prozessregression durchzuführen.

  • 01:00:00 In diesem Abschnitt erläutert der Referent, wie mehrere lineare Systeme mit derselben Matrix mithilfe einer LU-Zerlegung effizient gelöst werden können, was recheneffizient ist. Darüber hinaus wird eine Methode zur Berechnung der logarithmischen Determinante mit einer LU-Zerlegung vorgestellt, die eine effiziente Darstellung eines linearen Systems und die Durchführung verschiedener Aufgaben der linearen Algebra damit ermöglicht. Der Redner betont die Bedeutung der Verwendung von Strukturen, um Algorithmen effizienter zu machen, und stellt fest, dass die Cholesky-Zerlegung eine spezialisierte Version der LU-Zerlegung ist, die sich die symmetrische und positiv-definitive Natur der Kernel-Gram-Matrix zunutze macht.

  • 01:05:00 In diesem Abschnitt erörtert der Referent die Berechnung des hinteren Mittelwerts und der Kovarianz in Gaußschen Prozessen. Um den hinteren Mittelwert zu erhalten, muss man ein System durch Vorwärtssubstitution und ein anderes durch Rückwärtssubstitution lösen. Der Referent merkt an, dass man mit der Struktur der Cholesky-Faktoren der Kovarianzmatrix eine gute absenkende Annäherung an die Matrix erhalten kann. Darüber hinaus spricht er über das Problem, dass die große Kernel-Matrix möglicherweise nicht in den Speicher passt, und stellt zwei Ansätze zur Lösung dieses Problems vor; Verwenden von Strukturen in den verwendeten Kerneln oder Verwenden von spärlichen Annäherungen.

  • 01:10:00 In diesem Abschnitt erörtert der Referent, wie Matrizen in maschinellen Lernalgorithmen effizient invertiert werden können. Er verwendet einen aus einer Sinusfunktion generierten Datensatz als Beispiel und zeigt, dass man Kernel auswählen kann, die dieses Wissen widerspiegeln und recheneffizient sind, wenn man die generative Struktur des Datensatzes kennt. Das Matrix-Inversions-Lemma ist ein Werkzeug, mit dem Matrizen effizient invertiert werden können, indem sie mit einer kleinen Anzahl von Unterräumen gestört werden. Durch die Verwendung dieses Lemmas kann man Ausdrücke sehr effizient berechnen und muss nicht einmal die gesamte Matrix im Speicher bilden. Der Referent betont, dass es viele verschiedene Ansätze gibt, Strukturen in Algorithmen des maschinellen Lernens zu verwenden.

  • 01:15:00 In diesem Abschnitt diskutiert der Dozent Methoden der numerischen linearen Algebra, die bei Gaußschen Inferenzen und der Hyperparameteroptimierung beim maschinellen Lernen verwendet werden. Ein Verfahren zum Skalieren der GP-Regression (Gaußscher Prozess) auf große Datenmengen ist die approximative Inversion, die eine iterative Konstruktion von Annäherungen mit niedrigem Rang an die in der Kernel-Matrix dargestellte Systemmatrix beinhaltet. Der Dozent demonstriert dieses Verfahren am Beispiel des Cholesky-Algorithmus und zeigt, wie der Low-Rank-Approximator für die Matrix on-the-fly erhalten werden kann, ohne die gesamte Cholesky-Faktorisierung zu berechnen. Die Qualität der Approximation hängt von der Kernmatrix und der Reihenfolge ab, in der die Datenpunkte verarbeitet werden. Insgesamt hebt dieser Abschnitt die Bedeutung der numerischen linearen Algebra in verschiedenen Aspekten des maschinellen Lernens hervor.

  • 01:20:00 In diesem Abschnitt diskutiert Marvin Pförtner, wie man die Reihenfolge der Datenpunkte wählt, in der Cholesky sie behandelt, um sich der Kernel-Matrix anzunähern. Er erklärt, dass die Vormultiplikation der Gramm-Matrix mit der Permutationsmatrix, auch als vollständige Pivotisierung oder Pivot-Cholesky-Zerlegung bekannt, zu einer geringeren Annäherung mit weniger Iterationen führen kann. Die Idee besteht darin, den Prädiktor für die Datenpunkte nach einer Iteration von Todeschini zu beobachten und dann die gesammelten Informationen zu verwenden, um den Datenpunkt auszuwählen, der in der nächsten Iteration beobachtet werden soll. Diese Technik wird als aktives Lernproblem angesehen und kann eine clevere Möglichkeit bieten, Zeilen und Spalten gleichzeitig zu verarbeiten und so die generative Struktur der Matrix online zu erforschen.

  • 01:25:00 In diesem Abschnitt erörtert der Referent die Singulärwertzerlegung (SVD) und wie sie ein Optimierungsproblem löst, um die besten Faktoren für eine Matrixnäherung zu erhalten. Das Abschneiden einer SVD könnte jedoch beliebig schlecht sein, daher wird ein heuristischer Ansatz verwendet, um die SVD zu approximieren und eine Eigenzerlegung zu berechnen. Es besteht auch Bedarf an einer Matrix-Quadratwurzel, die durch die Cholesky-Zerlegung erreicht werden kann. Bei der praktischen Umsetzung von Algorithmen der numerischen linearen Algebra ist es wichtig, die Struktur zu berücksichtigen, da dies den Prozess erheblich beschleunigen kann.

  • 01:30:00 In diesem Abschnitt erläutert Marvin Pförtner, wie sich die Struktur der numerischen linearen Algebra auf die Gaußsche Prozessregression auswirkt. Die Gaußsche Prozessregression ist rechenintensiv und erfordert das Lösen großer Gleichungssysteme, was mit Techniken der numerischen linearen Algebra durchgeführt werden kann. Der Referent betont die Bedeutung der numerischen Stabilität beim Lösen dieser Gleichungssysteme, um Genauigkeitsverluste bei den Endergebnissen zu vermeiden.