Maschinelles Lernen und neuronale Netze - Seite 37

 

Vorlesung 11 Sequenzielle Daten: Markov-Modelle, Worteinbettungen und LSTMs



11 Sequenzielle Daten: Markov-Modelle, Worteinbettungen und LSTMs

In diesem Video erörtert der Sprecher die verschiedenen Arten von sequentiellen Daten, die beim maschinellen Lernen auftreten, z. B. numerische oder symbolische Daten, die zeitlich oder nacheinander angeordnet sind. Sie führen Markov-Modelle, Worteinbettungen und LSTMs als Modelle zur Lösung dieser Probleme ein. Das Video skizziert den Prozess des Trainings und der Vorhersage mit sequentiellen Daten, einschließlich des Konzepts der Validierung und des Trainings mit Daten, die vor der spezifischen Sache aufgetreten sind, an der getestet wird. Darüber hinaus erklärt der Referent, wie Sequenzen mit neuronalen Netzen modelliert werden, einschließlich des Umgangs mit Sequenzen unterschiedlicher Länge und Zeitmodellierung, sowie den Prozess des Trainierens eines rekurrenten neuronalen Netzes unter Verwendung der Rückwärtsausbreitung durch die Zeit. Schließlich behandelt das Video Aspekte der Sequenz-zu-Label-Klassifizierung, die mit Markov-Modellen verbessert werden kann, wenn wiederkehrende neuronale Netze Dinge schnell vergessen.

Das Video behandelt eine Reihe von Themen im Zusammenhang mit sequentieller Datenverarbeitung, darunter Markov-Modelle und ihre Einschränkungen, Long-Short-Term-Memory (LSTM)-Netzwerke und ihre Vorteile, die Verwendung von LSTMs für die Text- und Bildgenerierung, Lehrerzwangstechniken und Bildunterschriften. Der Referent gibt detaillierte Erläuterungen zur LSTM-Struktur und den verschiedenen darin enthaltenen Gates sowie zum Trainieren und Abtasten dieser Netzwerke für Aufgaben wie Shakespeare-Textgenerierung und Bildbeschriftung. Die Bedeutung der Verwendung von Einbettungsschichten zur Verbesserung von LSTMs auf Wortebene wird ebenfalls diskutiert, zusammen mit dem Spektrum der verfügbaren Methoden für die Sequenzverarbeitung - von einfacheren Modellen bis hin zu leistungsfähigeren wie LSTMs.

  • 00:00:00 In diesem Abschnitt geht der Referent auf die Bedeutung der Teilnahme an der Nationalen Studierendenbefragung für Informatikstudierende ein, da die Wahlbeteiligung gering war. Als nächstes kündigt der Referent an, dass es nächste Woche keine Hausaufgaben geben wird, da diese durch Übungsprüfungen ersetzt werden. Der Sprecher versichert den Zuschauern, dass der schwierige Teil des Kurses vorbei ist und die verbleibenden Vorträge weniger kompliziert sein werden. Das Thema dieses Vortrags sind sequentielle Daten, und der Referent stellt Markov-Modelle, Worteinbettungen und LSTMs als Modelle zur Bewältigung solcher Probleme vor.

  • 00:05:00 In diesem Abschnitt erörtert der Referent die verschiedenen Arten von sequentiellen Daten, die beim maschinellen Lernen auftreten können, z. B. zeitlich oder sequenziell angeordnete numerische oder symbolische Daten. Die Daten können je nach Art des Problems unterschiedliche Dimensionen haben, z. B. eindimensional oder zweidimensional. Beispielsweise können Sprachdaten als eindimensional betrachtet werden, wobei jedes Wort ein diskreter Wert ist, oder als zweidimensional mit einem Wortart-Tag nach dem Text. Je nach Art und Dimension der Daten nennt der Referent auch mögliche Machine-Learning-Aufgaben wie Klassifikation oder Vorhersage.

  • 00:10:00 In diesem Abschnitt erklärt der Referent, wie Modelle des maschinellen Lernens verwendet werden, um den nächsten Wert einer Sequenz bei gegebenen vorherigen Werten in einer einzelnen Sequenzeinstellung vorherzusagen, indem die Daten in eine Tabelle mit Merkmalen für die vorherigen Werte und einem Ziel umgewandelt werden Wert. Sie schlagen vor, einen Regressionslerner wie lineare Regression oder Regressionsbaum zu verwenden, um ein Modell zu trainieren, aber seien Sie vorsichtig, dass es wichtig ist, die Daten in Trainings-, Validierungs- und Testsets mit einem Walk-Forward-Validierungsprozess aufzuteilen, um sicherzustellen, dass das Modell nur trainiert wird Vergangenheitsdaten und an zukünftigen Daten getestet, was in realen Anwendungsfällen passiert.

  • 00:15:00 In diesem Abschnitt erörtert der Referent verschiedene Methoden zum Trainieren und Vorhersagen mit sequentiellen Daten. Sie betonen die Wichtigkeit der Validierung und Schulung von Daten, die vor der spezifischen Sache, an der getestet wird, aufgetreten sind. Sie stellen das Markov-Modell als probabilistisches Modell für die Modellierung auf Wortebene vor und erläutern, wie die gemeinsame Wahrscheinlichkeitsverteilung mehrerer Zufallsvariablen mithilfe der Kettenregel der Wahrscheinlichkeit zerlegt werden kann. Sie zeigen, wie man den Satz "Herzlichen Glückwunsch, Sie haben einen Preis gewonnen" in eine gemeinsame Wahrscheinlichkeitsverteilung über sechs Zufallsvariablen zerlegt, die sechs separate Zufallsvariablen sind, und die gemeinsame Wahrscheinlichkeitsverteilung in ein Produkt bedingter Verteilungen der Wörter zerlegt, die auf der Bedingung beruhen Worte, die ihm vorangehen.

  • 00:20:00 In diesem Abschnitt erörtert der Sprecher, wie man die Wahrscheinlichkeit eines Satzes berechnet, indem man ihn in ein Produkt bedingter Wahrscheinlichkeiten zerlegt. Die Verwendung von Log-Wahrscheinlichkeiten wird empfohlen, um Unterflüsse zu vermeiden, da die Wahrscheinlichkeit eines bestimmten Wortes sehr gering werden kann, insbesondere bei einem großen Vokabular, daher ist es besser, stattdessen den Logarithmus zu nehmen. Das ideale Sprachmodell sollte nicht nur grammatikalische Regeln, sondern auch gesunden Menschenverstand und Physik beinhalten, aber im Moment verwendet der Sprecher die Markov-Annahme, die davon ausgeht, dass die Wahrscheinlichkeit eines Wortes nur von seinen letzten beiden Wörtern abhängt. Wir können diese Wahrscheinlichkeiten abschätzen, indem wir zählen, wie oft sie in einem großen Sprachdatensatz vorkommen, der als Korpus bezeichnet wird.

  • 00:25:00 In diesem Abschnitt erläutert das Video, wie Markov-Modelle und bedingte Wahrscheinlichkeiten verwendet werden können, um ein Sprachmodell zu erstellen, das Text generiert. Das Markov-Modell ermöglicht die Berechnung von Wahrscheinlichkeiten für eine Folge von Wörtern, die durch sequentielles Abtasten zur Textgenerierung verwendet werden können. Obwohl diese Technik ihre Grenzen hat, ermöglicht sie es, Sprachmodelle auf ihre Leistungsfähigkeit und Genauigkeit zu testen. Darüber hinaus kann das Markov-Modell zur Klassifizierung verwendet werden, was durch einen Bayes'schen Klassifikator erfolgt, der die Wörter mit einem auf Spam oder Ham basierenden Sprachmodell modelliert, um auf eine Wahrscheinlichkeit zu schließen, dass eine E-Mail Spam ist.

  • 00:30:00 In diesem Abschnitt diskutierten die Referenten Markov-Modelle, die verwendet werden, um Sequenzdaten zu modellieren, indem die Wahrscheinlichkeit einer Sequenz bei gegebener Klasse geschätzt und dann die Bayes-Regel verwendet wird, um Klassenwahrscheinlichkeiten zu erhalten. Ein Markov-Modell nullter Ordnung kann für Spam verwendet werden, aber für andere Aufgaben könnte ein Modell höherer Ordnung besser sein. Markov-Modelle behandeln Wörter jedoch als atomare Symbole und berücksichtigen nicht die Tatsache, dass einige Wörter ähnliche Bedeutungen haben. Um dies anzugehen, können Einbettungsmodelle verwendet werden, um jedem Objekt (in diesem Fall Wörtern) einen Gewichtungsvektor zuzuweisen, der die Ähnlichkeiten zwischen den Objekten modelliert. Dies erfolgt durch Lernen der Parameter oder Werte in diesen Vektoren, um latente Faktoren zu berechnen, ähnlich wie beim Codieren von Bildern in Vektordarstellungen.

  • 00:35:00 In diesem Abschnitt wird die Verteilungshypothese eingeführt, die besagt, dass Wörter, die in der Nähe ähnlicher Wörter vorkommen, oft dasselbe bedeuten können. Der Worteinbettungsalgorithmus wird dann als Anwendung dieser Hypothese zur Berechnung einer Einbettung diskutiert. Vor der Anwendung des Algorithmus wird eine Repräsentation der Wörter benötigt, bei der es sich um ein neuronales Netzwerk mit einem One-Hot-Vektor für jedes Wort handelt, das ein sehr einfaches neuronales Netzwerk ermöglicht, in dem das Vokabular auf eine Ausgabe von 300 für den Einbettungsraum abgebildet wird. Der untere Teil des Modells wird als Codierung für den Einbettungsraum verwendet, und obwohl einige Forscher glauben, dass es sich um eine Nachschlagetabelle handelt, ist es im Wesentlichen dasselbe wie eine Zuordnung von einem One-Hot-Vektor zu einer Einbettung.

  • 00:40:00 In diesem Abschnitt diskutiert der Dozent das Konzept der Worteinbettungen, eine Methode, bei der ein diskretes Objekt wie ein Wort als dichter Vektor dargestellt wird. Die Einbettungen werden trainiert, indem eine Matrix einer linearen Abbildung der Einbettungen erstellt wird, die dann verwendet werden kann, um eine Wahrscheinlichkeitsverteilung für den Kontext der Wörter zu finden. Er gibt ein Beispiel dafür, wie das Subtrahieren der Einbettung für „Mann“ von „Frau“ eine Richtung schafft, in der die Dinge weiblicher werden, und wie diese Richtung verwendet werden kann, um Wortvektoren für andere Wörter wie „Königin“ zu berechnen. Der Dozent erklärt, wie diese Einbettungen als Ausgangspunkt für größere neuronale Netze für maschinelles Lernen verwendet werden können und wie eine Vielzahl von Wörterinbettungen, die auf riesigen Mengen von Textdaten trainiert wurden, aus der Open-Source-Modellbibliothek von Google heruntergeladen werden können, um sie in anderen Projekten zu verwenden .

  • 00:45:00 In diesem Abschnitt erörtert der Referent, wie Sequenzen mit neuronalen Netzen modelliert werden, einschließlich der Handhabung von Sequenzen unterschiedlicher Länge und der Zeitmodellierung. Ein Ansatz besteht darin, eine wiederkehrende Verbindung zu verwenden, bei der eine verborgene Schicht die vorherige verborgene Schicht aufnimmt, um einen Zyklus im Netzwerk zu ermöglichen. Dadurch kann das Netzwerk mit Sequenzen unterschiedlicher Länge arbeiten, und Sequenzen können einzeln eingespeist werden, um eine Sequenzausgabe zu erhalten. Der Referent betont auch die Bedeutung von Padding-Sequenzen, um sie für das Batching und Training mit neuronalen Netzen gleich lang zu machen.

  • 00:50:00 In diesem Abschnitt wird der Prozess des Trainierens eines rekurrenten neuronalen Netzwerks unter Verwendung der Rückwärtsausbreitung durch die Zeit erläutert. Die Herausforderung besteht in der Rückwärtsausbreitung durch die wiederkehrende Schicht, während sich die verborgene Schicht ständig ändert. Eine Möglichkeit, dies zu lösen, besteht darin, das Netzwerk aufzurollen, sodass die wiederkehrende Verbindung von der vorherigen Kopie des Netzwerks zur nächsten Kopie geht. Das resultierende Netzwerk wird als großes Feedforward-Netzwerk ohne wiederkehrende Verbindungen behandelt, und die Gewichtungen werden durch Backpropagation aktualisiert. Dieser Trainingsprozess wird Sequenz-zu-Sequenz-Lernen genannt, bei dem die Eingabesequenz auf eine Ausgabesequenz abgebildet wird.

  • 00:55:00 In diesem Abschnitt erklärt der Sprecher Sequenz zu Etikett, wobei das Ausgabeetikett aus Sequenzdaten stammt, wie z. B. einer Bandklassifizierung. Es ist jedoch nicht ideal, nur das letzte Element der Sequenz zur Vorhersage der Ausgabe zu verwenden, da dies zu Asymmetrie führt und zu Problemen mit der Gradientenausbreitung führen kann. Stattdessen ist es besser, die gesamte Ausgabe der Sequenz zu nehmen und zu mitteln, wodurch das Netzwerk jeden Teil der Eingabesequenz berücksichtigen kann, was es zu einem besseren Prädiktor für das Label macht. Darüber hinaus erklärt der Sprecher, dass eine beschriftete Sequenz auf zwei Arten erfolgen kann, entweder durch n-maliges Wiederholen der Eingabebeschriftung und Einspeisen in ein neuronales Netzwerk, um eine Ausgabe zu erzeugen, oder durch Initialisieren des Endzustands mit einer Eingabe und Übergeben von 0-Vektoren an das neuronale Netzwerk zum Generieren der Reihenfolge. Dies ist jedoch nicht effizient, da wiederkehrende neuronale Netze dazu neigen, Dinge schnell zu vergessen, was bedeutet, dass ein Markov-Modell in einigen Fällen die bessere Wahl sein könnte.

  • 01:00:00 In diesem Abschnitt erörtert der Referent die Einschränkungen von Markov-Modellen in Bezug auf das Gedächtnis, insbesondere bei der Entscheidung, welche Informationen es wert sind, sich zu merken. Die Lösung ist das Long Short-Term Memory (LSTM), eine Art rekurrentes neuronales Netzwerk mit mehreren Learn-about-Gates, die entscheiden, welche Informationen zu erinnern oder zu vergessen sind. Die Gatter enthalten zwei Vektoren mit Werten zwischen 0 und 1 oder zwischen -1 und 1, wobei der linke Wert den Teil auswählt, der dem Speicher hinzugefügt werden soll, und der rechte Wert bestimmt, welche Informationen beibehalten werden, je nachdem, wie viel die Eingabeinformationen sein müssen hinzugefügt und wie viel storniert werden muss. Bei der Verwendung des LSTM werden für das Gedächtnis ausgewählte Informationen kontinuierlich hinzugefügt, was für die Beibehaltung längerfristiger Erinnerungen förderlich ist.

  • 01:05:00 In diesem Abschnitt erklärt der Referent die Struktur des Long Short-Term Memory (LSTM)-Netzwerks, das eine Art wiederkehrendes neuronales Netzwerk ist, das aus Zellen aufgebaut ist. Die Zellen nehmen bei jedem Zeitschritt eine Eingabe auf und liefern eine Ausgabe, während sie zwischen den Zeitschritten einen Wert C (Zellenzustand) und einen Wert Y (Ausgabe) weiterleiten. Der Sprecher schlüsselt die visuelle Notation des LSTM-Netzwerks auf und fährt fort, verschiedene Gates zu beschreiben, darunter das Forget-Gate, das die Aktivierung im Gedächtnis reduziert, und das Input-Gate, das entscheidet, welche Teile des Inputs dem Gedächtnis hinzugefügt werden. Der letzte Schritt beinhaltet die Entscheidung über den Ausgabewert, der durch eine weitere Sigmoid-aktivierte Schicht erfolgt. Der Referent hebt den Vorteil der Verwendung von LSTM-Netzwerken hervor – es gibt kein verschwindendes Gefälle entlang der Wirbelsäule oder des Förderbands des Netzwerks, was seine Effizienz verbessert.

  • 01:10:00 In diesem Abschnitt erklärt der Sprecher, wie man von LSTMs abtastet, um einen Sequenzgenerator auf Zeichenebene zu erstellen. Die Ausgabe ist eine Wahrscheinlichkeitsverteilung für das nächste Zeichen basierend auf der Eingabehistorie. Das Modell lernt, Dinge wie Kommas zu setzen, neue Zeilen zu platzieren und ungefähr einen jambischen Pentameter zu setzen, der sich Shakespeare anhört, wenn er laut vorgelesen wird. Das Modell ist darauf trainiert, Daten auf Zeichenebene statt auf Wortebene zu sequenzieren, weil es leistungsfähiger ist, aber es muss mit der gesamten Sequenz gefüttert werden, selbst wenn man nur wenige Zeichen abtastet. Der Redner zitiert ein Experiment, bei dem jemand ein Shakespeare-Modell trainiert und getestet hat, das einen beeindruckenden und ziemlich shakespearischen Text generiert hat, und demonstriert, dass das Modell die Syntax lernen kann, indem es einen Wikipedia-Artikel bearbeitet, der Links und bestimmte Markup-Texte enthält.

  • 01:15:00 In diesem Abschnitt erörtert der Referent die Verwendung von LS DMs bei der Generierung von Text, wie z. B. Wikipedia-Artikeln oder Donald-Trump-Tweets, durch das Training des Netzwerks mit großen Datenmengen. Sie heben die verschiedenen Modi hervor, in denen sich das LS DM manifestieren kann, wie HTML oder XML, und erwähnen, dass das Netzwerk sogar Mathematik erzeugen kann, die wie mathematische Abhandlungen auf hohem Niveau aussieht. Darüber hinaus schlägt der Redner vor, LS DMs zu verwenden, um Zufallsausgaben unter Verwendung eines Zufallsvektors zu erzeugen, der in das Netzwerk eingespeist wird, und eines Encoder/Decoder-Netzwerks, das auf einem Variational Outer Encoder (VAE) basiert, was weiter durch ein Beispiel von Musik demonstriert wird, die durch ein neuronales Netzwerk erzeugt wird auf MIDI-Snippets trainiert.

  • 01:20:00 In diesem Abschnitt erörtert der Moderator, wie Sprache mithilfe einer Lehrerzwangstechnik modelliert werden kann, bei der ein prädiktives Sprachmodell mit sequenzieller Abtastung mit einem äußeren Codierer für eine kompliziertere Sequenz kombiniert wird. Er demonstriert ein Modell namens SketchRNN, das Lehrerzwang verwendet und das verwendet wird, um Skizzen zu modellieren, die Menschen schnell von verschiedenen Themen wie Katzen und Eulen zeichnen. Das SketchRNN verwendet einen Variationssequenz-zu-Sequenz-Encoder, der zu einem latenten Raum führt, der verwendet wird, um reibungslos zwischen verschiedenen Zeichnungen desselben Motivs zu interpolieren. Schließlich zeigt der Moderator, wie dieselbe Technik verwendet werden kann, um reibungslos zwischen menschlichen Sätzen zu interpolieren, was zu einem ziemlich ordentlichen Ergebnis führt.

  • 01:25:00 In diesem Abschnitt diskutiert der Redner den Image COCO-Datensatz, der Bilder aus dem Datensatz namens ImageNet zusammen mit fünf von Menschen geschriebenen Bildunterschriften enthält, die beschreiben, was auf dem Bild passiert. Der Redner schlägt vor, dass ein einfacher Ansatz für die Aufgabe der Bildunterschrift darin besteht, ein vortrainiertes Bildklassifizierungsmodell herunterzuladen und die Klassifizierungsebene zu entfernen. Das resultierende Mapping kann dann in ein LSTM eingespeist werden, um das Modell für die Erzeugung von Untertiteln zu trainieren. Der Referent erklärt auch, wie man LSTM auf Wortebene durch die Verwendung einer Einbettungsschicht verbessern kann, und den Unterschied zwischen LSTMs und Markov-Modellen. Abschließend geht der Referent auf das Spektrum der Methoden ein, die zur Sequenzverarbeitung eingesetzt werden können, von mächtig bis einfach.
 

12 Matrixmodelle: Empfehlungssysteme, PCA- und Graphenfaltungen



12 Matrixmodelle: Empfehlungssysteme, PCA- und Graphenfaltungen

Im ersten Teil des Videos diskutiert der Referent Matrixmodelle und ihre Anwendungen in Empfehlungssystemen, die für Produktempfehlungen, Nachrichten und soziale Netzwerke verwendet werden können. Empfehlungssysteme beruhen auf explizitem und implizitem Feedback sowie Nebeninformationen und können manipuliert werden, um falsche Informationen zu verbreiten, wenn sie nicht richtig konzipiert sind. Die Matrixfaktorisierung ist eine gängige Methode zur Vorhersage von Bewertungen basierend auf dem Benutzerverhalten, wobei das Optimierungsproblem, U- und M-Matrizen zu finden, um UTM so nah wie möglich an R zu bringen, durch quadratische Fehlermethoden und die Berechnung der Frobenius-Norm gelöst wird. Der Referent diskutiert auch Methoden zur Optimierung dieses Problems mittels Gradientenabstieg und erläutert die Gradientenaktualisierungsregel für kollaboratives Filtern. Darüber hinaus behandelt der Referent fünf Möglichkeiten zur Verbesserung des Matrixfaktorisierungsmodells, einschließlich der Kontrolle von Benutzer- und Filmvorurteilen, der Verwendung impliziter Likes und der Einbeziehung von Website-Informationen. Abschließend erörtert der Referent die Leistungsfähigkeit der Matrixfaktorisierung in der klassischen Umgebung des maschinellen Lernens, Erweiterungen der PCA bei der Matrixfaktorisierung und die Nützlichkeit von Graphmodellen beim Speichern von Daten.

Der zweite Teil des Videos stellt verschiedene Matrixmodelle für Empfehlungssysteme vor, darunter Graphfaltungen für die Knotenklassifizierung und Linkvorhersage. Graphfaltungen mischen Knoteneinbettungen, indem sie die Adjazenzmatrix mit den ursprünglichen Einbettungen multiplizieren, aber dieser Ansatz hat Einschränkungen bei der Darstellung großer sozialer Graphen. Herkömmliche Validierungsmethoden funktionieren nicht für Modelle mit gemischten Merkmalen, die in Empfehlungssystemen verwendet werden, daher ist transduktives Lernen erforderlich, bei dem nur Trainingssatzbezeichnungen zurückgehalten werden, nicht jedoch die Merkmale. Darüber hinaus erfordert die Modellierung von Zeit- und Bewertungsdaten die Berücksichtigung von Zeitstempeldaten und transduktivem Lernen. Das Video schließt mit einer Zusammenfassung des Vortrags und einer Vorschau auf die anschließende Diskussion zum Reinforcement Learning.

  • 00:00:00 In diesem Abschnitt stellt der Referent das Konzept der Matrixmodelle vor, bei denen es sich um verschiedene Ansätze zur Analyse von Datensätzen handelt, die am besten als Matrizen betrachtet werden. Die zu diskutierenden Modelle haben die Eigenschaft, Datensätze als Matrizen zu behandeln. Der Vortrag konzentriert sich auf Empfehlungssysteme, die typischerweise durch Matrixfaktorisierung implementiert werden, und diskutiert das Siegermodell für den Netflix-Wettbewerb. Der Vortrag geht auch kurz auf Hauptkomponentenanalyse und Graphenmodelle ein, bevor er mit einer Diskussion über Validierung endet.

  • 00:05:00 In diesem Abschnitt erläutert der Referent drei Arten von Daten, die in Empfehlungssystemen verwendet werden können: explizites Feedback, implizites Feedback und Nebeninformationen. Explizites Feedback ist, wenn der Benutzer gebeten wird, einen bestimmten Artikel zu bewerten, was sehr wertvoll, aber relativ selten ist. Implizites Feedback kann gesammelt werden, indem man sich ansieht, was der Benutzer tut, wie z. B. Seitenaufrufe, Wunschlisten oder sogar Mausbewegungen. Nebeninformationen sind keine Informationen über die Paarung zwischen Benutzern und Filmen, sondern Informationen über Benutzer selbst und Filme, wie z. B. Länge, Schauspieler und Regisseure. Der Referent merkt an, dass Empfehlungssysteme für verschiedene Einstellungen nützlich sind, einschließlich Produktempfehlungen (z. B. Amazon), Nachrichten (z. B. Google News) und soziale Netzwerke (z. B. Twitter und YouTube).

  • 00:10:00 In diesem Abschnitt geht der Referent auf Empfehlungssysteme und ihre Schwachstellen ein. Empfehlungssysteme werden verwendet, um bestimmten Benutzern Inhalte vorzuschlagen, aber sie können manipuliert werden, um falsche Informationen zu verbreiten. Der Sprecher merkt an, dass jede Situation mit zwei Gruppen von Dingen und einer Beziehung zwischen ihnen als Empfehlungsparadigma betrachtet werden kann. Zum Beispiel Rezepte und Zutaten oder Politiker und Wahlgesetze. Das Problem bei Empfehlungssystemen sind unvollständige Daten, da nicht jeder Nutzer jeden Film bewertet. Der Referent schlägt vor, Einbettungsmodelle zu verwenden, um jedem Benutzer und Film einen Vektor zuzuweisen und die Werte dieser Vektoren basierend auf einer Verlustfunktion zu lernen, um die fehlenden Daten vorherzusagen.

  • 00:15:00 In diesem Abschnitt beschreibt der Referent die Matrixfaktorisierung als eine Methode zur Darstellung von Benutzern und Filmen in einem Modell mit dem Ziel, Filmbewertungen basierend auf dem Benutzerverhalten vorherzusagen. Das Modell weist jedem Benutzer und jedem Film einen Vektor zu, die dann in einer großen Matrix miteinander multipliziert werden. Anhand eines Skalarprodukts erklärt der Sprecher, wie das Modell einen Wert zwischen minus unendlich und positiv unendlich vorhersagt, wobei höhere Werte anzeigen, dass dem Benutzer der Film eher gefallen wird. Die Kategorien des Modells neigen dazu, oberflächliche Annahmen über das Benutzerverhalten zu verstärken, und obwohl das Modell nicht besonders verfeinert ist, kann es dennoch zuverlässige Vorhersagen bieten. Durch Matrixfaktorisierung wird eine Matrix in zwei kleinere Matrizen zerlegt, wobei eine Matrix Benutzer und die andere Filme einbettet und deren Skalarprodukt die Vorhersagen darstellt.

  • 00:20:00 In diesem Abschnitt erklärt der Moderator das Optimierungsproblem, U- und M-Matrizen zu finden, um UTM so nah wie möglich an R zu bringen. Dies wird durch die Verwendung der quadratischen Fehlermethode und die Berechnung der Frobenius-Norm erreicht. Das Problem ist jedoch, dass in der Bewertungsmatrix häufig Werte fehlen. Um dieses Problem zu lösen, wird die Verlustfunktion nur über die Elemente von R berechnet, für die die Bewertung im Trainingssatz bekannt ist, anstatt über alle Elemente von R. Der Moderator erörtert auch die beiden Methoden zur Optimierung dieses Problems, die alternierende Optimierung sind und Steigungsabfahrt. Die Gradientenabstiegsmethode ist flexibler und lässt sich leichter zu Ihrem Modell hinzufügen.

  • 00:25:00 In diesem Abschnitt erläutert der Referent die Gradientenaktualisierungsregel für die kollaborative Filtertechnik mit Matrixfaktorisierung. Er definiert die Fehlermatrix und erklärt den Prozess der Ableitung der Verlustfunktion in Bezug auf die Parameter. Dann demonstriert er, wie die Verlaufsaktualisierungsregel verwendet wird, um die Werte von Benutzer- und Filmeinbettungen zu aktualisieren. Die Aktualisierungsregel beinhaltet die Berechnung des Skalarprodukts zwischen Zeile und Spalte der Fehlermatrix und der jeweiligen Einbettungsmatrix und deren Addition zu dem zu aktualisierenden Parameter.

  • 00:30:00 In diesem Abschnitt erläutert der Referent die Logik hinter der Skalarprodukt-Vorhersagefunktion in Empfehlungssystemen und wie sie mit stochastischem Gradientenabstieg trainiert werden kann. Auch das Problem, nur positive Bewertungen zu haben und wie man es durch Negativstichproben lösen kann, wird diskutiert. Der Referent vertieft sich dann in zwei Möglichkeiten zur Lösung des Problems der nichtnegativen Matrixfaktorisierung, das einige interpretierbare Dimensionen für Filme liefert, ähnlich dem Konzept eines latenten Raums in PCA.

  • 00:35:00 In diesem Abschnitt erörtert der Referent fünf Möglichkeiten zur Verbesserung des Matrixfaktorisierungsmodells für Filmempfehlungen. Zunächst erklärt sie, wie die Kontrolle von Benutzer- und Filmverzerrungen in das Modell integriert werden kann, indem erlernte skalare Parameter hinzugefügt werden. Zweitens wird das Goldstern- oder Kaltstartproblem angegangen, indem implizite Vorlieben wie das Surfverhalten verwendet werden, um eine zweite Benutzereinbettung zu erstellen. Drittens kann das Modell reguliert werden, um eine Überanpassung zu vermeiden, indem der Verlustfunktion ein Strafterm hinzugefügt wird. Viertens kann die Hauptkomponentenanalyse (PCA) angewendet werden, um die Dimensionalität von Benutzer- und Filmeinbettungen zu reduzieren. Abschließend spricht der Referent darüber, wie Graphenfaltungen verwendet werden können, um Informationen über Filmgenres zu integrieren und in das Modell zu gießen.

  • 00:40:00 In diesem Abschnitt erklärt der Referent, wie man implizite Informationen und Standortinformationen zu Empfehlungssystemen hinzufügt. Für implizite Informationen fasst das System alle Filmeinbettungen zusammen, die einem Benutzer gefallen haben, und fügt sie zu seinen bestehenden Einbettungen hinzu. In ähnlicher Weise werden für Standortinformationen Merkmale eines Benutzers in kategoriale Daten codiert und ihre entsprechenden Einbettungen werden summiert, um den dritten Einbettungsvektor zu erzeugen. Der Sprecher merkt auch an, dass die Zeit die Bewertungen beeinflussen kann, daher ist es für gute Vorhersagen notwendig, die Zeit zu kontrollieren. Dies kann durch Aufteilen der Einbettungen in diskrete Zeiträume und Erlernen unterschiedlicher Einbettungen für jeden Zeitraum erfolgen. Der Abschnitt schließt mit einer Zusammenfassung der Matrixfaktorisierung und der Verzerrungen für Empfehlungssysteme.

  • 00:45:00 In diesem Abschnitt erörtert der Referent die Leistungsfähigkeit der Matrixfaktorisierung in Empfehlungssystemen und wie sie in der klassischen maschinellen Lernumgebung angewendet werden kann. Indem eine Matrix aus Merkmalsspalten und Instanzzeilen verwendet wird, kann eine Matrixfaktorisierung durch Backpropagation oder andere Trainingsmethoden eine niederdimensionale Darstellung einer Instanz erstellen, die durch Multiplizieren mit einer C-Vektor-C-Matrix wiederhergestellt werden kann. Dies ähnelt Dimensionsreduktionstechniken wie der Hauptkomponentenanalyse (PCA), kann jedoch der PCA äquivalent gemacht werden, indem angenommen wird, dass die Spalten von C linear unabhängig sind, was zu einem eingeschränkten Minimierungsproblem führt.

  • 00:50:00 In diesem Abschnitt erörtert der Moderator PCA und seine Erweiterungen in der Matrixfaktorisierung. Sie erklären, dass PCA für unvollständige Daten verwendet werden kann, indem die Rekonstruktion nur über die bekannten Werte der Daten maximiert wird. Auf diese Weise ermöglicht es eine niedrigdimensionale Darstellung oder Einbettung der Daten, die für die Klassifizierung oder Regression verwendet werden können. Die Erweiterung von Sparse PCA wird ebenfalls eingeführt, die den L1-Regularizer verwendet, um Sparsity zu erzwingen und die Parameterinterpretation zu vereinfachen. Anschließend erläutert der Referent, wie unterschiedliche Verlustwerte auf das Matrixfaktorisierungsproblem angewendet werden können, z. B. binäre Kreuzentropie für binäre Daten, und zeigt, wie diese Methoden bessere Einbettungen für die Daten erzeugen können. Der Abschnitt schließt mit einer Einführung in Graphenmodelle als nützliche Form von Daten.

  • 00:55:00 In diesem Abschnitt erörtert der Referent die Flexibilität von Graphen beim Speichern von Daten, wie z. B. soziale Netzwerke, Proteininteraktionen, Verkehrsnetzwerke und Wissensgraphen. Der Redner schlägt dann die Idee vor, maschinelle Lernmodelle zu verwenden, die Graphen verwenden können, insbesondere für Verbindungsvorhersage- und Knotenklassifizierungsaufgaben, die als ähnlich zu Empfehlungsproblemen angesehen werden können. Der Referent stellt das Konzept der Knoteneinbettungen vor und diskutiert das Graph Convolutional Neural Network als eine Möglichkeit, tiefer in den Graphen zu schauen und die grundlegende Einbettung zu erweitern.

  • 01:00:00 In diesem Abschnitt erklärt der Referent, wie Graphenfaltungen in Empfehlungssystemen funktionieren. Graphfaltungen weisen jedem Knoten im Graphen eine zufällige dimensionale Einbettung zu, was als Zuweisung einer zufälligen Farbe zu Visualisierungszwecken interpretiert werden kann. Die Intuition hinter Graphfaltungen ist, dass sie diese Einbettungen mischen, was es ermöglicht, Informationen von den Nachbarn des Knotens in seine eigene Einbettung zu ziehen. Nach mehreren Mischschritten haben schließlich alle Knoten die gleiche Darstellung, die den Gesamtgraphen darstellt. Um Knoteneinbettungen zu mischen, wird die Adjazenzmatrix mit den ursprünglichen Einbettungen multipliziert, was neue Einbettungen ergibt, bei denen jede Knoteneinbettung die Summe ihrer Nachbarn plus sich selbst darstellt. Die Einbettungen müssen normalisiert werden, um sicherzustellen, dass die Werte nicht explodieren.

  • 01:05:00 In diesem Abschnitt erläutert der Referent, wie Graphfaltungen für die Knotenklassifizierung und Linkvorhersage verwendet werden. Für die Knotenklassifizierung wird einem einfachen Graphen eine Einbettung für jeden Knoten zugewiesen, und eine Graphfaltung wird angewendet, um neue Einbettungen basierend auf benachbarten Knoten zu erstellen. Dann wird eine weitere Faltung angewendet, um die Einbettungen zur Klassifizierung auf zwei Dimensionen abzubilden. Für die Verbindungsvorhersage werden Knoteneinbettungen durch mehrere Schichten von Graphenfaltungen erzeugt, und ein Matrixfaktorisierungsmodell wird über diesen Einbettungen verwendet. Gradienten werden dann verwendet, um durch die ursprünglichen Graphenfaltungen für eine Verbindungsvorhersage basierend auf einer tieferen Graphenstruktur rückwärts zu propagieren.

  • 01:10:00 In diesem Abschnitt des Videos erörtert der Sprecher die Herausforderungen der Graphenfaltung, bei der es darum geht, einen sozialen Graphen auf selektive und nicht übermäßig umfassende Weise darzustellen. Aufgrund der Small-World-Eigenschaft sozialer Graphen ist die Darstellung des gesamten Graphen in der Darstellung jedes Knotens problematisch, und herkömmliche Graphenfaltungen filtern unnötige Informationen nicht effektiv heraus. Darüber hinaus muss das Training im vollen Batch durchgeführt werden, was die Leistung beeinträchtigen kann. Der Redner schlägt Graphenaufmerksamkeit als einen selektiveren Ansatz vor, aber es ist immer noch ein Bereich aktiver Forschung. Der Referent weist auch darauf hin, dass die Validierung von Graphenfaltungsmodellen eine Herausforderung darstellt und ein Abweichen von Standard-Validierungsmethoden für maschinelles Lernen erfordert.

  • 01:15:00 In diesem Abschnitt erklärt der Referent, dass traditionelle Trainingstest-Validierungsmethoden für gemischte Feature-Ansätze, wie sie in Empfehlungssystemen verwendet werden, nicht funktionieren, da das Zurückhalten von Benutzer-Features oder Film-Features zu einem Verlust von Einbettungen führt. Stattdessen ist transduktives Lernen erforderlich, bei dem nur Trainingsset-Etiketten zurückgehalten werden, nicht jedoch die Merkmale. Dieser Ansatz ist beim Training von Einbettungsmodellen von Bedeutung, bei denen das gesamte Vokabular vorher bekannt sein muss. Allerdings können zufällige Bewertungen oder Links zurückgehalten werden, damit die verbleibenden Daten für Training und Tests verwendet werden können. Abschließend weist der Referent darauf hin, dass die Klassifizierung in der Knoten-ID-Kennzeichnung immer noch unter Verwendung des gesamten Diagramms erfolgen kann.

  • 01:20:00 In diesem Abschnitt erörtert der Referent die Herausforderung der Modellierung von Zeit und Bewertungen in einem Datensatz, bei dem Zeitstempeldaten und transduktives Lernen berücksichtigt werden müssen. Sie erklären, dass es wichtig ist, keine Trainingsdaten aus der Zukunft zu haben, und dass das Test-Set in der Zukunft des Trainings-Sets liegen sollte. Darüber hinaus fasst der Referent den Vortrag zusammen und hebt die Verwendung der Matrixfaktorisierung zur Lösung der abstrakten Empfehlungsaufgabe und die Verallgemeinerung der Empfehlung unter Verwendung von Graphenmodellen und Graphenfaltungen hervor. Der Abschnitt endet mit einer Vorschau auf die folgende Vorlesung zum Reinforcement Learning.
 

13 Reinforcement Learning: Policy Gradients, Q Learning, AlphaGo, AlphaStar (MLVU2019)



13 Reinforcement Learning: Policy Gradients, Q Learning, AlphaGo, AlphaStar (MLVU2019)

Das Video bietet eine Einführung in das Reinforcement Learning und seine grundlegenden Komponenten und diskutiert Beispiele wie das Roboterauto zum Stangenbalancieren und das Tic-Tac-Toe-Spiel. Der Referent geht auf die Herausforderungen des bestärkenden Lernens ein, darunter nicht differenzierbare Funktionen, die Verzögerung beim Erhalt von Belohnungen und das Problem der Kreditzuweisung. Das Kreditzuweisungsproblem wird durch Techniken wie zufällige Suche, Richtliniengradienten und Q-Learning angegangen, bei denen der Sprecher jeden Algorithmus, seine Vorteile und seine Grenzen erklärt. Der Q-Lernalgorithmus wird ausführlicher besprochen, mit einer Erläuterung seiner Funktionsweise unter Verwendung einer großen Zahlentabelle zur Darstellung von Q-Werten. Die Präsentation schließt mit einer Erläuterung, wie Deep Q-Learning und AlphaGo den Bereich des Reinforcement Learning revolutioniert haben.

  • 00:00:00 In diesem Abschnitt führt der Dozent in das Thema Reinforcement Learning ein und erklärt, wie es sich vom Offline-Lernen unterscheidet. Reinforcement Learning beinhaltet die Modellierung eines Agenten, der mit einer Welt interagiert und in Echtzeit aus dem erhaltenen Feedback lernt. Am Beispiel eines Staubsaugerroboters in einer unbekannten Umgebung soll dieses Konzept verdeutlicht werden. Der Dozent erwähnt auch drei Algorithmen zur Lösung der Aufgabe des Reinforcement Learning, nämlich Random Search, Policy Gradients und Q-Learning. Die Diskussion verlagert sich dann auf die jüngsten Entwicklungen im Reinforcement Learning, mit Schwerpunkt auf AlphaGo, AlphaZero und dem anhaltenden Streben, den weltbesten menschlichen Spieler in StarCraft II durch den Einsatz von KI zu schlagen.

  • 00:05:00 In diesem Abschnitt erklärt der Dozent das Grundgerüst des bestärkenden Lernens, das eine Umgebung, ein Modell und einen Lernenden umfasst. Das Modell ergreift Aktionen und erhält sofortige Belohnungen und ändert seinen Zustand entsprechend, während der Lernende das Modell spontan aktualisiert. Der Dozent stellt einfache Beispiele wie das Staubsaugerproblem, Tic-Tac-Toe und Kontrollprobleme vor, um zu veranschaulichen, wie Reinforcement Learning funktioniert. Bei Tic-Tac-Toe- und Staubsaugerproblemen werden Belohnungen nur vergeben, wenn das Modell einen Endzustand erreicht, während die Steuerungsprobleme darin bestehen, zu lernen, wie man einen Roboter oder eine Maschine in einer automatisierten Umgebung steuert.

  • 00:10:00 In diesem Abschnitt erörtert der Referent das Reinforcement Learning im Zusammenhang mit einem Roboterauto, das Stangen balanciert, was ein klassisches Problem der Steuerung im Feld ist. Das Ziel ist es, das Auto aufrecht zu halten, was mit einer einfachen Physik-Engine oder einem physischen Roboter erreicht wird. Das System verwendet eine spärliche Belohnung, wobei die einzige Belohnung gegeben wird, wenn der Wagen von der Schiene fällt oder wenn die Stange senkrecht endet. Das Lernziel ist es, die Belohnung zu maximieren, indem diese Strafe so lange wie möglich vermieden wird. Der Redner zeigt dann eine Demonstration eines ferngesteuerten Helikopters, der mithilfe von Verstärkungslernen trainiert wurde, um Stunts auszuführen, beginnend mit überwachtem Lernen und dem Hinzufügen von Hilfszielen und der Gestaltung von Belohnungen.

  • 00:15:00 In diesem Abschnitt erörtert der Referent, wie Reinforcement Learning das Spiel des Deep Learning verändert hat. Er weist darauf hin, dass Forscher vor AlphaGo Atari-Spiele verwendeten, um Algorithmen dazu zu bringen, von Pixeln zu lernen. Sie schufen ein neuronales Netzwerk namens Deep Reinforcement Learning, das es dem System ermöglichte, viele verschiedene Spiele zu lernen. Dies ist ein leistungsstarkes Konzept, da Forscher ein tiefes neuronales Netzwerk verwendeten, um die Zuordnungen von Zuständen zu Aktionen zu lernen, die wir als Richtlinie bezeichnen. Es gibt drei Hauptprobleme beim Reinforcement Learning: nicht differenzierbarer Verlust, das Kreditzuweisungsproblem und Exploration versus Exploitation.

  • 00:20:00 In diesem Abschnitt diskutiert der Referent die Herausforderungen des bestärkenden Lernens, einschließlich des Problems der nicht differenzierbaren Funktionen innerhalb der Umgebung und des Gleichgewichts zwischen Exploration und Exploitation. Die Verzögerung beim Erhalt der eigentlichen Belohnung aus der Umwelt ist ein weiteres Problem, da es die Anerkennung erfordert, welche vorangegangenen Handlungen zum Endergebnis beigetragen haben. Der Referent liefert auch ein Beispiel für die Herausforderung beim Erlernen des Autofahrens, bei der die unmittelbare Belohnung für das Bremsen zu einer falschen Assoziation mit einem nachfolgenden Crash führen kann. Die Lösung erfordert die Verteilung der Belohnung auf frühere Aktionen und das Lernen, welche zu positiven oder negativen Ergebnissen geführt haben.

  • 00:25:00 In diesem Abschnitt stellt das Video das Kreditzuweisungsproblem beim Reinforcement Learning vor, bei dem die Gewichtungen für ein neuronales Netzwerk bestimmt werden, das die Belohnung maximiert, während es mit der Welt interagiert. Das Video erklärt, wie eine Belohnungsfunktion, Zustandsübergänge und eine Richtlinie die Umgebung für das neuronale Netzwerk bestimmen können. Es stellt drei Ansätze zur Lösung dieses Problems vor, beginnend mit dem einfachsten – der Zufallssuche. Das Konzept der populationsbasierten Black-Box-Optimierungsmethoden wird ebenfalls vorgestellt, mit einem Beispiel einer erfolgreichen Anwendung dieser Methode auf ein Atari-Spiel namens "Frostbite".

  • 00:30:00 In diesem Abschnitt erörtert der Dozent das bestärkende Lernen und verschiedene Techniken, die für das Kreditzuweisungsproblem verwendet werden. Sie empfehlen, mit der Zufallssuche als Basisansatz zu beginnen, was für einige einfache Spiele gut funktioniert. Komplexere Methoden wie Policy Gradients und Q-Learning sind jedoch für tiefere Reinforcement-Learning-Pipelines beliebt. Der Richtliniengradient versucht, jedem Schritt einer Trajektorie in einer Sequenz Belohnungen zuzuweisen, basierend auf der Gesamtbelohnung am Ende. Auch wenn dies kontraintuitiv erscheinen mag, wird es über mehrere Trajektorien gemittelt und eignet sich gut für Situationen, in denen ein Teil der Deep-Learning-Pipeline nicht differenzierbar ist.

  • 00:35:00 In diesem Abschnitt wird das Konzept der Politikgradienten und wie sie verwendet werden können, um die erwartete endgültige Belohnung durch die Schätzung von Gradienten zu optimieren, diskutiert. Der Algorithmus umfasst das Schätzen des Gradienten durch Abtasten einer Reihe von Trajektorien, das Verfolgen jeder dieser Aktionen durch den Rest der Pipeline und das Multiplizieren der endgültigen Belohnung mit dem Gradienten des Logarithmus der Wahrscheinlichkeit dieser Aktion für jede Trajektorie in der Stichprobe. Diese Abschätzung des Gradienten kann dann für die weitere Backpropagation verwendet werden. Dieser Algorithmus wurde auf AlphaGo und AlphaZero verwendet.

  • 00:40:00 In diesem Abschnitt erörtert der Redner Q-Learning, einen beliebten Algorithmus beim Reinforcement Learning, der zur Optimierung der rabattierten Belohnung verwendet wird. Die ermäßigte Prämie ist die Gesamtprämie, die eine Police erhält, wenn sie bestimmte Aktionen in verschiedenen Staaten auswählt. Q-Learning verwendet eine rekursive Funktion, um die diskontierte Belohnung für jeden Zustand basierend auf den Aktionen der Richtlinie zu berechnen. Die optimale Richtlinie, die die diskontierte Belohnung maximiert, wird dann basierend auf dieser Berechnung bestimmt. Der Referent demonstriert am einfachen Beispiel einer Staubsaugerwelt, wie Q-Learning funktioniert.

  • 00:45:00 In diesem Abschnitt erläutert der Referent das Konzept einer optimalen Richtlinie und einer optimalen Wertfunktion beim bestärkenden Lernen. Die optimale Richtlinie führt zum maximalen Wert für einen bestimmten Zustand, während die optimale Wertfunktion die Wertfunktion dieser Richtlinie ist. Diese Werte sind jedoch oft schwer zu berechnen. Der Sprecher stellt dann den Q-Lernalgorithmus vor, der die optimale Richtlinie und die optimale Wertfunktion in Bezug auf eine Funktion namens Q neu definiert. Q ist definiert als die unmittelbare Belohnung multipliziert mit dem diskontierten Wert von Q für den nächsten Zustand, der sich aus einer durchgeführten Aktion ergibt im aktuellen Zustand. Die zirkuläre Definition von Q ermöglicht die Möglichkeit, eine Q-Funktion zu erstellen und zu fragen, ob sie optimal ist, indem die Werte eingetragen werden.

  • 00:50:00 In diesem Abschnitt erörtert der Sprecher die Methode zum Lösen rekurrenter Gleichungen durch Iteration, um die optimale Q-Funktion für das Q-Lernen zu finden. Er vereinfacht die Wiederholungsbeziehung durch Verwendung einer Skalarfunktion und zeigt, dass iterative Berechnungen verwendet werden können, um den stabilen Zustand/die stabile Lösung zu finden. In ähnlicher Weise wird beim Q-Lernen die anfängliche Q-Funktion zufällig initialisiert, und dann wird die Wiederholungsbeziehung als Programm angewendet, und die Q-Funktion wird basierend auf den Werten aktualisiert, die von der Wiederholungsbeziehung bereitgestellt werden. Die Werte der Q-Funktion werden nach jeder Interaktion mit der Umgebung aktualisiert, in der ein Zustand, eine Aktion, eine Belohnung oder ein Folgezustand angetroffen wird, und der Maximalwert über jedem Folgezustand wird verwendet, um die Q-Funktion zu aktualisieren.

  • 00:55:00 In diesem Abschnitt wird der Q-Lernalgorithmus erklärt, bei dem eine große Zahlentabelle zur Darstellung von Q-Werten gelernt wird. Der Algorithmus funktioniert, indem er die unmittelbare Belohnung in jedem Zustand beobachtet und sie durch Wiederholung derselben Flugbahn zurück in den Ausgangszustand propagiert. Der Zustandsraum wird durch epsilon-gierige Exploration erkundet, ein Prozess, bei dem die beste Strategie mit einer geringen Wahrscheinlichkeit befolgt wird, einen Zustand zufällig zu erkunden. Anschließend wird Deep Q Learning eingeführt, bei dem ein neuronales Netzwerk implementiert wird, um die Q-Wert-Funktion zu lernen. Durch Backpropagation wird das Netzwerk mit Informationen von beobachteten unmittelbaren Belohnungen und Nachfolgezuständen aktualisiert. Abschließend wird in den verbleibenden 30 Minuten des Videos eine Erklärung zur Funktionsweise von AlphaGo versprochen, einer Empfehlung der Dokumentation „AlphaGo“ folgend.

  • 01:00:00 In diesem Abschnitt erklärt der Referent das Go-Spiel und räumt mit einigen verbreiteten Missverständnissen über AlphaGo auf. Es stimmt zwar, dass das Go-Spiel einen hohen Verzweigungsfaktor hat, aber es ist nicht nur die Größe des Baums, die das Spiel schwierig macht. Ein tiefer Blick in den Baum, um die beste Bewegungsstrategie herauszufinden, ist ebenfalls ein herausfordernder Aspekt. Der Referent geht auch auf alte Ansätze des Go-Spiels ein, etwa den Minimax-Algorithmus, mit dem alle möglichen Zukünfte aus dem aktuellen Zustand aufgezählt werden.

  • 01:05:00 In diesem Abschnitt erörtert der Referent die Monte-Carlo-Baumsuche, eine Methode zum schnellen und effizienten Erkunden eines Spielbaums, um den Minimax-Algorithmus anzunähern. Bei dieser Methode werden Rollouts durchgeführt, bei denen nach dem Zufallsprinzip Züge ausgewählt und der Wert des Zustands in Bezug auf Reinforcement Learning geschätzt werden. Der Referent spricht darüber, wie die Monte-Carlo-Baumsuche Rollouts mit dem Speichern einer Erinnerung an den lokalen Baum kombiniert, um vielversprechende Regionen des Baums aufzubauen, ohne das Ganze zu erkunden. Der grundlegende Algorithmus umfasst das Erweitern von Knoten, das Ausführen von Rollouts und das Zurückpropagieren von Werten, um die Wahrscheinlichkeiten aller Knoten zu aktualisieren, die dem Blatt folgen. Diese Methode funktioniert gut und beinhaltet kein maschinelles Lernen oder neuronale Netze.

  • 01:10:00 In diesem Abschnitt erörtert der Referent, wie AlphaGo und AlphaZero Beispiele für bestärkendes Lernen sind, das auf das Go-Spiel angewendet wird. AlphaGo verwendet zwei neuronale Netzwerke, ein Richtliniennetzwerk und ein Wertenetzwerk, um Go zu spielen. Das Policy-Netzwerk ordnet einen Zustand des Boards einer Aktion zu, und das Wertenetzwerk ordnet den Zustand der Gewinnwahrscheinlichkeit aus diesem Zustand zu. Sie verwenden Nachahmungslernen, um diese Netzwerke zu trainieren, indem sie aus menschlichen Spielen lernen, und verbessern sich dann durch Selbstspiel unter Verwendung von Policy Gradient Reinforcement Learning. Während des eigentlichen Spiels verwendet AlphaGo die Monte-Carlo-Baumsuche mit dem Wert- und Richtliniennetzwerk, um seine Züge auszuführen. AlphaZero ist eine neuere Version, die keine menschlichen Informationen verwendet, sondern ihr Verständnis des Spiels vollständig durch Selbstspiel aufbaut. AlphaZero kombiniert die Richtlinien- und Wertnetzwerke in einem einzigen Netzwerk, verwendet die Monte-Carlo-Baumsuche als Operator zur Richtlinienverbesserung und fügt Restverbindungen mit Stapelnormalisierung hinzu, um die Leistung zu verbessern.

  • 01:15:00 In diesem Abschnitt wird das Konzept eines „zweiköpfigen Monsters“ diskutiert, bei dem ein Netzwerk über einen gemeinsamen Satz von unteren Ebenen verfügt, die Gradienten sowohl von den Richtlinien- als auch von den Wertausgaben erhalten. Während des Trainings wird das MCTS-Prinzip als Operator zur Richtlinienverbesserung verwendet, so dass sie mit einer anfänglichen Richtlinie beginnen, sie unter Verwendung von MCTS gegen sich selbst spielen lassen und die resultierende Richtlinie als MCTS beobachten. Dieser beobachtete Verbesserungsschritt wird dann als Trainingsziel an das Netzwerk gegeben. Zusätzlich wird eine Kombination aus Restverbindungen und besserer Normalisierung als Trick für das neuronale Netzwerk verwendet, was eine allmähliche Erleichterung beim Erlernen eines immer tieferen neuronalen Netzwerks ermöglicht, das sehr gut funktioniert, insbesondere in Kombination mit der Stapelnormalisierung.

  • 01:20:00 In diesem Abschnitt erörtert der Referent die Bedeutung der Gewichtsinitialisierung und Standardisierung von Daten für das richtige Training von Deep Reinforcement Learning-Netzwerken. Der Sprecher schlägt vor, dass das Initialisieren von Gewichten, so dass die Eingabe mit Mittelwert Null und Varianz Eins standardisiert ist, zu Gradienten mit besserem Verhalten während der Backpropagation führt. Die Stapelnormalisierung ist eine nützliche Ebene bei der Unterstützung dieser Standardisierung, da sie alle Instanzen im Stapel betrachtet, den Mittelwert und die Standardabweichung berechnet und sie standardisiert. Dies kann helfen, das Training zu beschleunigen und viel tiefere Netzwerke zu trainieren; der Sprecher zitiert den Erfolg von AlphaGo und AlphaZero beim Training mit Batch-Normalisierung.

  • 01:25:00 In diesem Abschnitt erörtert der Redner die Entwicklung von AlphaStar, DeepMinds neuestem Durchbruch im maschinellen Lernen, der auf Echtzeit-Strategiespiele angewendet wird. Im Gegensatz zum Go-Spiel, das von DeepMinds AlphaGo als „gelöst“ angesehen wurde, stellte StarCraft das maschinelle Lernen vor einzigartige Herausforderungen, da es einen vielfältigen Aktionsraum, unvollständige Informationen und das Fehlen eines Spielbaums gab. AlphaStar verwendet eine Kombination von Techniken, darunter einen Transformer-Torso, einen tiefen LSDM-Kern, ein Pointer-Netzwerk und Multi-Agenten-Lernen. Obwohl DeepMind noch keine Details zur Funktionsweise von AlphaStar veröffentlicht hat, ist die Demonstration seiner Fähigkeiten gegen Starcraft-Spieler auf Weltniveau beeindruckend und repräsentiert den aktuellen Stand der Technik auf diesem Gebiet.

  • 01:30:00 In diesem Abschnitt erörtert der Referent die Verwendung von Transformatoren, die wie Einbettungen funktionieren und es neuronalen Netzwerken ermöglichen, Beziehungen zwischen Einheiten zu lernen. Dies ist wichtig, da es dem neuronalen Netz ermöglicht, über die Beziehungen zwischen bestimmten Einheiten nachzudenken, zB für die Navigation in einem Spiel. Anschließend erklärt der Referent, wie Reinforcement Learning beim sequentiellen Sampling funktioniert und wie der autoregressive Policy Head dabei hilft, eine kohärentere und effizientere Abfolge von Aktionen zu schaffen. Abschließend erläutert der Referent das Konzept des Lernens mit mehreren Agenten und wie es verwendet wird, um zu verhindern, dass Spieler vergessen, einfache Strategien zu schlagen.

  • 01:35:00 In diesem Abschnitt erörtert der Redner die Kontroverse um AlphaStar, ein von DeepMind entwickeltes KI-System zum Spielen des Spiels StarCraft. AlphaStar war erfolgreich darin, professionelle Spieler von StarCraft zu besiegen, was zu Debatten darüber führte, ob das KI-System tatsächlich menschenähnliche Leistung zeigte oder Fähigkeiten ausnutzte, die Menschen nicht haben. Einer der Hauptvorteile von AlphaStar war, dass es das gesamte Brett auf einmal sehen konnte, im Gegensatz zu menschlichen Spielern, die ständig die Kameraansicht anpassen müssen. Obwohl AlphaStar auf etwa 600 Aktionen pro Minute begrenzt war, waren diese Aktionen von höherer Qualität als die Aktionen menschlicher Spieler, die bis zu 800 Mal pro Minute mit viel Lärm klicken konnten. Eine Schwäche von AlphaStar war jedoch, dass es nicht gut auf neue Strategien reagieren konnte, die während des Spiels angetroffen wurden, was ein Kernproblem des Systems ist, das Einblicke in die Kognition bieten könnte.
 

14 Rückblick: Induktive Verzerrung, algorithmische Verzerrung, soziale Auswirkungen des maschinellen Lernens (MLVU2019)



14 Rückblick: Induktive Verzerrung, algorithmische Verzerrung, soziale Auswirkungen des maschinellen Lernens (MLVU2019)

Dieser erste Teil des Videos bietet einen umfassenden Überblick über Themen des maschinellen Lernens, darunter Verlustfunktionen, Deep-Learning-Systeme, induktive und algorithmische Verzerrung und offene Probleme beim maschinellen Lernen. Der Referent betont die Bedeutung von Methodik und Anwendungsfällen aus der Praxis im Data-Science-Prozess und gibt Tipps zum Studium und zur Überwindung von Prokrastination. Der Referent diskutiert auch Strategien zur Verbesserung des Verständnisses von Konzepten des maschinellen Lernens und bietet Ressourcen für das weitere Lernen. Schließlich hebt das Video das Problem der Verallgemeinerung in maschinellen Lernmodellen und die Bedeutung induktiver Verzerrungen bei der Verbesserung der Modellleistung hervor.

Im zweiten Teil des Videos werden verschiedene Probleme im Zusammenhang mit maschinellem Lernen erörtert, darunter induktive Voreingenommenheit, algorithmische Voreingenommenheit und die sozialen Auswirkungen des maschinellen Lernens. In ein neuronales Netzwerk kann eine induktive Vorspannung eingebaut werden, um Kausalitäts-, Kompositions- und Generalisierungsprobleme zu lösen. Dieser Ansatz hat jedoch auch Einschränkungen, einschließlich einer verringerten Robustheit gegenüber nicht modellierten Variablen. Algorithmische Verzerrungen können aufrechterhalten werden, wenn maschinelle Lernmodelle Verzerrungen in Daten verstärken. Dies kann in Fällen problematisch sein, in denen Gesichtserkennungsalgorithmen farbige Personen nicht erkennen oder Algorithmen, die im US-Justizsystem verwendet werden und Vorurteile gegenüber Schwarzen haben. Eine verantwortungsvolle Entwicklung dieser Systeme ist wichtig, um die Aufrechterhaltung von Vorurteilen zu vermeiden und Fairness in Entscheidungsprozessen zu fördern.

  • 00:00:00 In diesem Abschnitt des Videos gibt der Referent einen Überblick über die Themen, die im gesamten Kurs zum maschinellen Lernen behandelt werden, einschließlich des Grundrezepts des maschinellen Lernens, das Standardaufgaben wie Klassifizierung oder Regression, Auswahl von Instanzen und Merkmalen und Auswahl umfasst eine Modellklasse und suchen nach einem guten Modell, das zu den Instanzen und Merkmalen passt. Der Referent betont die Bedeutung der Methodik und die Idee, Daten in ein Trainings- und ein Test-Set aufzuteilen, um eine Überbeanspruchung des Test-Sets zu vermeiden. Er betont, wie wichtig es ist, den realen Anwendungsfall im Auge zu behalten und Entscheidungen im Data-Science-Prozess zu treffen, die diesen Anwendungsfall widerspiegeln. Außerdem gibt der Referent Prüfungsstrategien und einen Ausblick auf den aktuellen Stand und die zukünftigen Auswirkungen des maschinellen Lernens.

  • 00:05:00 In diesem Abschnitt erörtert der Referent verschiedene Verlustfunktionen, die beim maschinellen Lernen verwendet werden können, beginnend mit der Genauigkeit und ihren Einschränkungen. Die logistische Regressionsverlustfunktion wird vorgestellt, die eine Sigmoidfunktion verwendet, um die Ausgaben des Modells als Wahrscheinlichkeiten über Klassen zu interpretieren, und diese Wahrscheinlichkeiten dann unter Verwendung des Maximum-Likelihood-Prinzips und Kreuzentropieverlust optimiert. Andere besprochene Verlustfunktionen umfassen kleinste Quadrate, Entropie und Soft-Margin-SVM. Abschließend stellt der Referent den Algorithmus der Rückwärtsausbreitung vor, der verwendet wird, um den Gradienten für komplizierte Modelle zu berechnen, indem er sie in eine Zusammensetzung von Modulen zerlegt und die Kettenregel verwendet, um ein Produkt lokaler Ableitungen zu erhalten.

  • 00:10:00 In diesem Abschnitt des Videos erläutert der Dozent die Grundlagen von Deep-Learning-Systemen und wie man Gradienten über glatt differenzierbare Funktionen mit Tensoren berechnet. Er spricht auch über versteckte Variablenmodelle und beschreibt den Erwartungsmaximierungsalgorithmus, um Verteilungen auf versteckten Variablen zu finden. Die Vorlesung geht dann weiter zu Generator neuronalen Netzen, die verborgene Variablenmodelle sind, die neuronale Netze enthalten. Der Dozent diskutiert das Anpassen der Parameter durch Daten unter Verwendung von Generative Adversarial Networks und Variational Autoencodern. Schließlich behandelt die Vorlesung Entscheidungs- und Regressionsbaummodelle sowie sequentielle Daten und Modelle wie rekurrente neuronale Netze und Markov-Modelle.

  • 00:15:00 In diesem Abschnitt diskutiert der Redner induktive und algorithmische Verzerrungen beim maschinellen Lernen und schlägt vor, dass Trainingsdaten immer zeitlich vor den Testdaten liegen sollten und dass die Kreuzvalidierung mit Walk-Forward-Kreuzvalidierung erfolgen sollte. Der Redner geht dann auf Empfehlungssysteme ein, die Benutzer- und Filmbewertungen als einzige Datenquelle verwenden, und wie dieses Matrixmodell sowohl für Benutzer als auch für Filme sehr informativ ist. Abschließend erklärt der Referent, dass Reinforcement Learning einen Kompromiss zwischen Exploration und Exploitation erfordert und dass Convolutional Neural Networks mit Dropout kein Exploration versus Exploitation Dilemma darstellen, sondern eher eine Online-Hyperparameter-Optimierungstechnik sind.

  • 00:20:00 In diesem Abschnitt erklärt der Sprecher, dass Konzepte, wenn wir über komplexe Themen sprechen, wie ein Diagramm in unseren Köpfen sind, aber wenn sie erklärt werden, werden sie zu einer Sequenz. Um dabei zu helfen, die Beziehungen auf höherer Ebene zwischen den diskutierten Konzepten zu rekonstruieren, erstellt der Sprecher eine Mindmap von Suche und Modellen. Modelle werden in spezifische Instanzen neuronaler Netze wie lineare Regression, lineare Klassifikation und logistische Regression zusammen mit komplizierteren Modellen wie von J von Ganz und v AE unterteilt. Der Referent diskutiert auch die verschiedenen Arten von Suchverfahren, wobei Gradientenabstieg die generischste und stochastischste Gradientenabnahme ist und Mini-Batch-Gradientenabstieg spezifische Varianten sind. Der Redner merkt an, dass Mini-Batch-Gradientenabstieg das ist, was üblicherweise die meiste Zeit verwendet wird. Abschließend geht der Referent auf die unterschiedlichen Einstellungen und Umgangsweisen mit Daten ein, wie etwa die Grundeinstellung der Aufteilung in Merkmale, Instanzen und Zielwerte und die Reihenfolgeeinstellung des Umgangs mit einzelnen Instanzen in einer bestimmten Reihenfolge.

  • 00:25:00 In diesem Abschnitt diskutiert der Referent die verschiedenen Arten von Datensätzen und Aufgaben beim maschinellen Lernen wie Sequenzdaten, Empfehlungssysteme und Online-Lernen. Sie sprechen auch von Deep Learning als einer Methode, bei der eine End-to-End-Pipeline erstellt wird, ohne dass eine manuelle Feature-Extraktion durchgeführt wird, um den Verlust von Informationen zu vermeiden. Der Referent gibt Tipps zu einigen „Tricks of the Trade“ und gibt einen Überblick über alle in den Vorträgen besprochenen abstrakten Aufgaben und Modelle. Schließlich gibt der Referent Tipps zum Lernen für die Prüfung, die drei Kategorien von Fragen umfasst: Erinnern, Kombinieren und Argumentieren.

  • 00:30:00 In diesem Abschnitt bespricht der Dozent die drei Arten von Fragen, die die Studierenden in der bevorstehenden Prüfung erwarten können: Merk-, Kombinations- und Anwendungsfragen. Er gibt einige Tipps, die den Schülern helfen sollen, mit Aufschub umzugehen, z. B. zu erkennen, dass Aufschub durch Perfektionismus verursacht wird, und das kleinste praktikable Engagement zu finden, um mit einer Aufgabe zu beginnen. Der Dozent schlägt auch vor, einen Fortschrittsbalken zu erstellen, um den Fortschritt zu verfolgen und die Arbeit nicht als endlose Aufgabe zu sehen. Schließlich erinnert er die Schüler daran, keine Perfektionisten zu sein.

  • 00:35:00 In diesem Abschnitt des Videos gibt der Sprecher Tipps, wie man Aufschub überwinden und die Produktivität steigern kann. Eine Technik, die er vorschlägt, ist die Pomodoro-Technik, bei der ein Timer auf 25 Minuten eingestellt und während dieser Zeit mit extremer Konzentration gearbeitet wird, gefolgt von einer fünfminütigen Pause. Er schlägt außerdem vor, sich auf die Vorlesungsinhalte für eine Prüfung zu konzentrieren und Übungsprüfungen zu nutzen, um sich schnell auf eine bevorstehende Prüfung vorzubereiten. Insgesamt betont der Referent, wie wichtig es ist, kleine, erreichbare Schritte zum Ziel zu machen, anstatt auf einmal nach Perfektion zu streben.

  • 00:40:00 In diesem Abschnitt teilt der Referent Strategien zur Verbesserung des Verständnisses von maschinellen Lernkonzepten. Anstatt alles gründlich zu lesen, schlägt er vor, einen schnellen Durchgang zu machen, um Wissenslücken zu identifizieren, und sich dann auf diese spezifischen Bereiche zu konzentrieren. Um diesen Prozess zu unterstützen, empfiehlt er, während des Lernens eine Schlüsselwortliste zu erstellen, auf die später zur Klärung verwiesen wird. Er rät den Schülern auch, ihre eigenen Prüfungsfragen zu entwickeln, um Prioritäten zu setzen, auf welche Themen sie sich konzentrieren sollen, und schlägt vor, aus mehreren Quellen zu lesen, um unterschiedliche Perspektiven auf den Stoff zu gewinnen. Abschließend empfiehlt er den Google Machine Learning Crash Course als umfassende Ressource zum Weiterlernen.

  • 00:45:00 In diesem Abschnitt diskutiert der Moderator die offenen Probleme des maschinellen Lernens, nämlich Kausalität, Kompositionalität und Generalisierung. Kausalität ist ein schwieriges Problem für moderne maschinelle Lernmethoden, da Korrelation keine Kausalität impliziert. Um die Kausalität zu identifizieren, ist ein Eingreifen erforderlich, was durch ein bestärkendes Lernumfeld erfolgen kann, in dem Experimente durchgeführt werden können. Wenn Experimente jedoch aus ethischen oder praktischen Gründen nicht möglich sind, kann man Hintergrundwissen in das Modell einfließen lassen. Der Moderator erwähnt auch das Zeichnen kleiner Diagramme, um die möglichen Ursachen in der Welt zu modellieren.

  • 00:50:00 In diesem Abschnitt spricht der Redner über induktive Voreingenommenheit und algorithmische Voreingenommenheit, während er untersucht, wie menschliches Denken in maschinelle Lernmodelle integriert werden kann. Sie diskutieren, wie auf Kausalität geschlossen werden kann und wie Hintergrundwissen genutzt werden kann, um über Korrelationen nachzudenken. Sie diskutieren auch Probleme mit Kompositionalität und Generalisierung beim maschinellen Lernen, die insbesondere in rekurrenten neuronalen Netzen beobachtet werden. Der Redner schließt mit der Feststellung, dass wir Compounding-Effekte verstehen müssen, um das maschinelle Lernen weiter voranzutreiben.

  • 00:55:00 In diesem Abschnitt erörtert der Referent das Problem der Verallgemeinerung in maschinellen Lernmodellen und wie sie dazu neigen, auseinanderzufallen, wenn sie mit Daten getestet werden, die sich sogar geringfügig von ihren Trainingsdaten unterscheiden. Die Lösung dafür liegt darin, über die induktive Verzerrung nachzudenken, die sich auf die impliziten oder expliziten Einschränkungen bezieht, die einem Modell auferlegt werden, um es in Richtung bestimmter Lösungen in seinem Modellraum zu beeinflussen. Der Referent gibt Beispiele für verschiedene Arten von Modellen und ihre induktiven Verzerrungen und hebt hervor, wie stärkere induktive Verzerrungen, wie sie beispielsweise in neuronalen Faltungsnetzen zu finden sind, die Fähigkeit eines Modells zur Verallgemeinerung verbessern können.

  • 01:00:00 In diesem Abschnitt erörtert der Redner die Idee der induktiven Vorspannung, die in ein neuronales Netzwerk eingebaut werden kann, um bei der Lösung von Kausalitäts-, Kompositions- und Verallgemeinerungsproblemen zu helfen. Durch das Einbringen von Hintergrundwissen und den expliziten Einbau von Kompositionalität in das Modell kann das Netzwerk lernen, Hunderte oder Tausende von Ziffern darzustellen, selbst wenn es nur Ziffern bis zu Hundert gesehen hat. Je mehr ein Modell jedoch eingeschränkt ist, desto weniger robust wird es gegenüber den Dingen, die es nicht modelliert hat. Darüber hinaus stellt sich der Redner vor, dass sich das maschinelle Lernen zu mehr End-to-End-Lernsystemen entwickeln wird, bei denen sich das maschinelle Lernen über das gesamte System ausbreiten wird, was zu etwas führen wird, das als differentielle Programmierung oder „Software 2.0“ bezeichnet wird.

  • 01:05:00 In diesem Abschnitt erörtert der Referent das Potenzial des maschinellen Lernens, zu Primitiven in Programmiersprachen zu werden, und wie dies zu größeren und vorhersagbareren Systemen führen könnte. Der Referent untersucht auch die Auswirkungen des maschinellen Lernens auf kreative Künste, wie das Entwerfen von Schriftarten, und schlägt vor, dass maschinelles Lernen zur Erweiterung der Intelligenz eingesetzt werden könnte, bei der Maschinen bestehende menschliche Prozesse wie Kreativität und Design verbessern. Das Konzept der intelligenten Infrastruktur wird auch als mögliche Lösung für Bedenken hinsichtlich der Entwicklung von Killerrobotern vorgestellt.

  • 01:10:00 In diesem Abschnitt erörtert der Redner die potenziellen Gefahren von Sprachgeneratoren wie GPT, das in der Lage ist, kohärente Sprache zu produzieren und gefälschte Nachrichten in großem Umfang zu generieren. Die Sorge ist, dass diese Art von Technologie erhebliche soziale Auswirkungen haben und möglicherweise nationale Diskussionen und Wahlen beeinflussen könnte, indem sie es Einzelpersonen ermöglicht, Inhalte zu manipulieren. Darüber hinaus wird auch das Problem der algorithmischen Verzerrung diskutiert, da maschinelle Lernmodelle Verzerrungen in den Daten verstärken können, auf denen sie trainiert werden, was negative Folgen haben kann, wenn sie in Produktion gehen.

  • 01:15:00 In diesem Abschnitt erörtert der Referent das Problem der algorithmischen Verzerrung, bei der maschinelle Lernalgorithmen Verzerrungen verstärken können, die bereits in den Daten vorhanden sind, anstatt sie zu beseitigen. Dies kann zu unbeabsichtigten Folgen und schädlichen Auswirkungen auf bestimmte Gruppen führen, wie an Beispielen wie Gesichtserkennungsalgorithmen zu sehen ist, die farbige Menschen nicht erkennen, und Suchmaschinenergebnissen für CEO-Bilder, die überwiegend männlich sind. Der Redner betont auch die Bedeutung von Überwachungssystemen und das Bewusstsein für die Vorurteile, die maschinellen Lernalgorithmen innewohnen.

  • 01:20:00 In diesem Abschnitt diskutiert der Referent das Problem der algorithmischen Verzerrung in maschinellen Lernsystemen und die sozialen Auswirkungen, die dies haben kann. Er erläutert den Fall eines maschinellen Lernsystems, das zur Vorhersage von Rückfällen im US-Justizsystem verwendet wurde, das Vorurteile gegenüber Schwarzen hatte, was zu falschen Vorhersagen führte und gesellschaftliche Vorurteile aufrechterhielt. Er argumentiert, dass selbst wenn die in diesen Systemen verwendeten Daten korrekt sind, die Abhängigkeit von maschinellem Lernen, um Entscheidungen auf der Grundlage der Rasse zu treffen, zu Rassenprofilen führen und systemische Vorurteile aufrechterhalten kann. Er zitiert einen Fall in den Niederlanden, wo Racial Profiling normalisiert und von der Öffentlichkeit akzeptiert wurde. Der Referent plädiert für den ethischen Einsatz von maschinellem Lernen, um Vorurteile zu vermeiden und Fairness in Entscheidungsprozessen zu fördern.

  • 01:25:00 In diesem Abschnitt erörtert der Referent das Thema Racial Profiling und wie es mit dem Missbrauch von Wahrscheinlichkeiten zusammenhängt. Sie erklären das Konzept des Fehlschlusses des Staatsanwalts und wie er fälschlicherweise davon ausgehen kann, dass die Wahrscheinlichkeit eines Ergebnisses unter einer bestimmten Bedingung dieselbe ist wie die Wahrscheinlichkeit der Bedingung unter Berücksichtigung des Ergebnisses. Der Sprecher argumentiert, dass selbst wenn Vorhersagen korrekt sind, dies nicht unbedingt bedeutet, dass Handlungen, die auf diesen Vorhersagen basieren, gerecht oder moralisch sind. Darüber hinaus weisen sie darauf hin, dass bestimmte Attribute wie die ethnische Zugehörigkeit immer noch abgeleitet oder mit anderen Attributen korreliert werden können, was es schwierig macht, rassistische Vorurteile aus maschinellen Lernsystemen vollständig zu beseitigen. Schließlich stellt der Redner fest, dass Einzelpersonen zwar für ihre eigenen Handlungen zur Rechenschaft gezogen werden sollten, es jedoch grundsätzlich unfair ist, sie für die Handlungen anderer bestrafen zu lassen, die ihre Eigenschaften teilen, was negative Auswirkungen wie Mikroaggressionen oder unfaire Zielausrichtung in Situationen haben kann wie Verkehrsstopps.

  • 01:30:00 In diesem Abschnitt diskutiert der Referent die potenziellen sozialen Auswirkungen des maschinellen Lernens und die Notwendigkeit einer verantwortungsvollen Entwicklung dieser Systeme. Da maschinelles Lernen viele Entscheidungen trifft, gibt es ein neues Problem, sich auf eine fehlerhafte Komponente in großem Maßstab zu verlassen, und Chinas Sozialkreditsystem ist ein Beispiel. Politiker und Menschen sind mit der Entwicklung solcher Systeme einverstanden, daher werden Informatiker, Informatiker und Datenwissenschaftler benötigt, die sich mit diesen Problemen auskennen, um diese Systeme verantwortungsbewusst aufzubauen und zu entwickeln. Die Verantwortung für den Aufbau dieser Systeme liegt bei den Studierenden, die diese Bereiche studieren, und der Referent wünscht ihnen viel Erfolg bei ihren Prüfungen und Abschlussarbeiten.
 

Segmentieren Sie Bilder und Videos in Python mit dem Segment Anything Model (SAM) | YOLOv5 | YOLOv8 und SAM



Segmentieren Sie Bilder und Videos in Python mit dem Segment Anything Model (SAM) | YOLOv5 | YOLOv8 und SAM

Dieses Video stellt das Segment Anything Model (SAM) vor, ein KI-Modell, das Objekte aus Bildern und Videos für verschiedene Aufgaben identifizieren und extrahieren kann. Das SAM wird mit einem riesigen Datensatz von 11 Milliarden Bildern und 1,1 Milliarden Masken trainiert und hat eine starke Leistung bei einer Vielzahl von Segmentierungsaufgaben. Das Video bietet Schritt-für-Schritt-Anleitungen für die Verwendung des SAM auf einem lokalen System, einschließlich der Installation erforderlicher Pakete, des Herunterladens vortrainierter Modellprüfpunkte und der Segmentierung von Bildern und Videos mit Python. Das Video zeigt auch, wie Sie das SAM mit YOLOv5 oder YOLOv8 verwenden, um Begrenzungsrahmen um interessante Objekte zu erstellen. Das SAM hat auch potenzielle Anwendungen in der Animation.

  • 00:00:00 In diesem Abschnitt stellt das Video das Segment Anything Model (SAM) vor, ein kürzlich veröffentlichtes KI-Modell von Meta, das Objekte aus Bildern und Videos für verschiedene Aufgaben identifizieren und extrahieren kann. Das SAM wird mit 11 Milliarden Bildern und 1,1 Milliarden Masken trainiert und verfügt über eine starke Zero-Shot-Verallgemeinerung bei einer Vielzahl von Segmentierungsaufgaben. Das Video demonstriert die Verwendung des SAM anhand einer Demo, die es Benutzern ermöglicht, ein Bild hochzuladen und eine Segmentierung des vollständigen Bildes durchzuführen oder jedes Objekt separat zu schneiden. Benutzer können auch Begrenzungsrahmen zeichnen, Masken hinzufügen und Multi-Masking durchführen. Das SAM hat auch potenzielle Anwendungen in der Animation. Das Video bietet außerdem zusätzliche Informationen über die Architektur des SAM, die Verfügbarkeit von Datensätzen und häufig gestellte Fragen.

  • 00:05:00 In diesem Abschnitt des Videos demonstriert der Moderator, wie das Segment Anything Model (SAM) verwendet wird, um Multimasken für verschiedene Objekte in einem Bild zu erstellen. Das SAM wurde mit einem Datensatz von 11 Millionen Bildern und 1,1 Milliarden Masken trainiert und hat eine starke Leistung bei einer Vielzahl von Segmentierungsaufgaben. Der Moderator zeigt, wie man ein Bild auswählt, die Segmentierung auf dem gesamten Bild durchführt und dann die einzelnen Objekte ausschneidet. Der Moderator zeigt auch, wie man Begrenzungsrahmen um Objekte zieht und wie man die resultierenden Daten herunterlädt und verteilt. Das Video schließt mit Informationen zur Installation von SAM und seiner Verwendung in Python, einschließlich mit YOLOv5 und YOLOv8.

  • 00:10:00 In diesem Abschnitt des Videos erläutert der Moderator die Anforderungen für die Ausführung des Segment Anything-Modells auf einem lokalen System, einschließlich einer GPU und der Installation erforderlicher Pakete wie Torch und Dodge Vision mit CUDA-Unterstützung. Sie demonstrieren, wie man das Segment Anything Model Repository klont und alle erforderlichen Abhängigkeiten mit pip installiert. Das Video behandelt auch, wie man ein Segmentierungsmodell in das ONNX-Format konvertiert und die vortrainierten Modellprüfpunkte für drei verschiedene Backbone-Größen herunterlädt. Der Referent zeigt dann, wie Bilder und Videos mithilfe des Modells segmentiert werden. Das Video enthält auch detaillierte Schritt-für-Schritt-Anleitungen für jede Aufgabe, die es den Zuschauern leicht machen, ihnen zu folgen.

  • 00:15:00 In diesem Abschnitt des Videos importiert der Moderator zunächst alle erforderlichen Bibliotheken, einschließlich Matplotlib, um Eingabe- und Ausgabebilder im Notizbuch der Google-App anzuzeigen. Sie laden dann Beispielbilder von ihrem Laufwerk herunter und zeigen ein Beispielbild von mehreren Personen, die mit Gebäuden im Hintergrund gehen. Als Nächstes laden sie einen vortrainierten Modellprüfpunkt mit Strichkante in das Notizbuch der Google-App und wenden den automatischen Maskengenerator für das Segment-Irgendetwas-Modell auf die Bilder an, um sie zu segmentieren. Der Präsentator stellt Punkte pro Seite der Bilder bereit, die vom SMAM verwendet werden, um das Bild zu scannen und es basierend auf den bereitgestellten Punkten zu segmentieren. Ein Vorhersage-IOT-Schwellenwert von 0,9 wird eingestellt, um die Genauigkeit der Segmentierung zu erhöhen.

  • 00:20:00 In diesem Abschnitt des Videos demonstriert der Moderator, wie das Segment Anything Model (SAM) verwendet wird, um mithilfe von Python eine Objektsegmentierung für Bilder und Videos durchzuführen. Sie demonstrieren, wie der IU-Plan angepasst werden kann, um die Genauigkeit zu erhöhen und die Menge an Junk in der Ausgabe zu reduzieren. Sie wenden das Segmentierungsmodell auf ein Beispielbild an und zeigen, wie es die Person, das Gebäude und den Baum genau segmentiert. Sie verwenden dann dasselbe Modell, um ein Beispielvideo zu segmentieren, indem sie das Meta-Segmentierungspaket installieren und Beispielvideos von Google Drive herunterladen. Der Präsentator kopiert dann Code aus einem GitHub-Repository und wendet ihn auf das Video an, wodurch das SAM effektiv im Video implementiert wird.

  • 00:25:00 In diesem Abschnitt erörtert der Redner das Segment Anything Model (SAM)-Repository, das drei verschiedene Modelle mit unterschiedlichen Backbone-Größen enthält, sodass Benutzer den Modellnamen definieren und das Video aufrufen können, das sie implementieren möchten. Der Sprecher führt dann den Code durch, der erforderlich ist, um das SAM mit YOLOv5 oder YOLOv8 zu integrieren, wobei vorhandene Pakete und Beispielbilder verwendet werden. Der Referent demonstriert, wie das SAM verwendet wird, um Gebäude, Bäume und Autos zu segmentieren, wobei Farbcodes verwendet werden, um die Ausgabe zu entrauschen. Der Referent geht auch auf die verschiedenen Segmentierungsmodellversionen ein und weist darauf hin, dass jedes Modell eine andere Backbone-Größe hat. Die Demonstration unterstreicht die Genauigkeit und Geschwindigkeit des kleinsten YOLOv8 Nano-Modells.

  • 00:30:00 In diesem Abschnitt zeigt der Referent, wie er das Segment Anything Model (SAM) mit YOLOv8 verwenden konnte, um eine Segmentierung durchzuführen und Begrenzungsrahmen um interessante Objekte zu erstellen. Sie demonstrieren die Leistungsfähigkeit des Modells, indem sie einen Begrenzungsrahmen präsentieren, der eine Person umgibt und auch ihr Bild segmentiert. Der Referent beendet das Video-Tutorial, indem er die Integration von YOLOv8 mit SAM hervorhebt und sich von den Zuschauern verabschiedet.
 

YOLOv8-Kurs – Webanwendung zur Objekterkennung in Echtzeit mit YOLOv8 und Flask – Webcam/IP-Kamera


YOLOv8-Kurs – Webanwendung zur Objekterkennung in Echtzeit mit YOLOv8 und Flask – Webcam/IP-Kamera

Der YOLOv8-Kurs ist eine Reihe von Tutorials, die Zuschauer durch die Erstellung einer Echtzeit-Objekterkennungs-Webanwendung mit YOLOv8 und Flask führen. Die Tutorials behandeln die Installation der erforderlichen Software wie Python und PyCharm, das Erstellen einer virtuellen Umgebung, das Installieren von Paketen und das Testen der Objekterkennung auf Bildern und Webcams. Die Tutorials behandeln auch das Konvertieren der Ausgabe von Tensoren in ganze Zahlen, das Beschriften der erkannten Objekte und das Speichern des Ausgabevideos mit Erkennungen. Den Zuschauern wird gezeigt, wie sie YOLOv8 in Flask integrieren und die Echtzeit-Objekterkennungs-Webanwendung sowohl für Video- als auch für Live-Webcam-Feeds ausführen.

Im zweiten Teil des Videos demonstriert der Moderator, wie eine Webanwendung mit Flask und YOLOv8 zur Objekterkennung in Live-Webcam-Feeds und -Videos erstellt wird, und zeigt außerdem das Training und die Inferenz eines benutzerdefinierten Modells für die Erkennung persönlicher Schutzausrüstung. Die Web-App verfügt über eine Homepage, eine Videoseite und eine Live-Webcam-Feed-Seite mit CSS-Stil für jede Seite, und der Moderator geht durch die HTML- und Flask-Dateien, die für das Projekt verwendet werden. Das Video demonstriert den Vorgang des Importierens eines Datensatzes, seiner Vorbereitung zum Trainieren des YOLOv8-Modells, des Trainierens des Modells, der Analyse der Ergebnisse und des Testens des Modells in Demovideos. Insgesamt bietet das Video ein umfassendes Tutorial zum Entwickeln und Testen einer Webanwendung zur Objekterkennung in Echtzeit.

Der Referent erörtert auch Änderungen, die an einer Webanwendung vorgenommen wurden, die das YOLOv8-Modell verwendet, das auf einem Datensatz zu persönlicher Schutzausrüstung (PSA) trainiert wurde. Zu den Änderungen gehört das Modifizieren des Codes, um Begrenzungsrahmen unterschiedliche Farben zuzuweisen und Rechtecke basierend auf Klassennamen zu beschriften, und das Festlegen eines Konfidenzwerts über 0,5, damit Begrenzungsrahmen und Rechtecke angezeigt werden. Der Moderator demonstriert die erfolgreiche Erkennung von PSA-Artikeln in einem Video- und Live-Webcam-Feed und markiert das Ende des Kurses.

  • 00:00:00 Der nächste Schritt besteht darin, Python und PyCharm Community Edition herunterzuladen und zu installieren. Die neueste Version von Python wird nicht empfohlen, da sie möglicherweise Fehler und Fehlerbehebungen enthält. Wir können die neueste Version der Python 3.8-Version herunterladen, die empfohlen wird. Die PyCharm Professional-Version bietet eine 30-tägige kostenlose Testversion, aber die Community Edition reicht für das Tutorial aus. Nachdem wir die erforderliche Software heruntergeladen und installiert haben, können wir einen leeren Ordner mit einem beliebigen Namen unserer Wahl erstellen und ihn dann in PyCharm öffnen, um das Projekt zu starten.

  • 00:05:00 In diesem Abschnitt des YOLOv8-Crashkurses demonstriert der Kursleiter, wie eine neue virtuelle Umgebung in Pycharm erstellt und die erforderlichen Pakete für das Projekt installiert werden. Der Kursleiter zeigt, wie man ein neues Projekt erstellt, den Basisinterpreter auswählt und Pakete über das Paket-Manager-Fenster installiert. Sie zeigen auch, wie Sie eine requirements.txt-Datei erstellen, um alle Pakete aufzuschreiben, die Sie über die Befehlszeile installieren möchten. Das Video betont die Bedeutung der Installation des Ultralytics-Pakets für die Objekterkennung mit YOLOv8.

  • 00:10:00 In diesem Abschnitt zeigt der Kursleiter, wie YOLOv8 installiert wird, die einzige Version von YOLO, die über ein eigenes Paket verfügt. Durch die Verwendung von pip install ultralytics kann YOLOv8 installiert werden, und wenn Änderungen am Erkennungs- oder Trainingsskript vorgenommen werden müssen, kann das Repository geklont werden. Der Kursleiter verwendet dann YOLOv8, um Objekte in einem Bild zu erkennen, indem er das Paket und das YOLOv8-Modell importiert, die vortrainierte Gewichtsdatei angibt und den Eingabebildpfad übergibt. Die Ergebnisse zeigen die erkannten Objekte im Bild.

  • 00:15:00 In diesem Abschnitt zeigt das Video, wie Sie das YOLOv8-Modell an neuen Bildern testen, indem Sie sie zum Bilderordner hinzufügen und das YOLO-Testskript ausführen. Nach dem Importieren der cv2-Bibliothek und dem Hinzufügen einer Verzögerung liefert das Modell recht beeindruckende Ergebnisse bei der genauen Erkennung von Motorrädern und Autos. Das Video befasst sich auch mit dem Problem der Genauigkeit im Vergleich zur Geschwindigkeit bei der Verwendung verschiedener YOLO-Modelle und schlägt vor, das YOLOv8x-Modell für noch genauere Ergebnisse zu verwenden. Das Video fährt dann mit dem Testen des YOLOv8-Modells auf einer Webcam unter Verwendung eines neuen Verzeichnisses fort.

  • 00:20:00 In diesem Abschnitt des Videos erstellt der Moderator eine neue Datei namens „YOLOv8_webcam.py“. Sie importieren YOLOv8, CB2 und math und setzen „cap“ gleich „CV2.videoCapture(0)“, wodurch sie YOLOv8 auf ihrer Webcam ausführen können. Sie berechnen die Bildrate und -höhe, indem sie jeweils "cap.get(5)" und "cap.get(4)" aufrufen. Sie erklären, dass sie das Ausgabevideo mit Erkennungen speichern möchten, also legen sie den Namen der Ausgabedatei mit CB2.VideoWriter() auf „output.avi“ fest. Sie übergeben die Bildrate und Höhe an die Funktion und setzen dann "modern" gleich "YOLOv8". Der Präsentator testet dann, ob seine Webcam einwandfrei funktioniert, indem er „CV2.imshow('image', image)“ und „CV2.waitKey(1)“ für sein Bild aufruft.

  • 00:25:00 In diesem Abschnitt des YOLOv8-Kurses testet der Moderator die Webcam und überprüft, ob das Ausgabevideo ordnungsgemäß gespeichert wird. Anschließend führt er die Erkennungen im Live-Web-Feed mithilfe des YOLOv8-Modells aus und speichert die Ergebnisse in einer Variablen mit dem Namen „Ergebnisse“. Der Code durchsucht jeden der einzelnen Begrenzungsrahmen, um die Leistung zu sehen. Jeder Begrenzungsrahmen hat vier Koordinaten – X1, Y1, X2 und Y2, die von Tensoren zur weiteren Verarbeitung und Erstellung von Begrenzungsrahmen um das erkannte Objekt in eine ganzzahlige Form umgewandelt werden.

  • 00:30:00 In diesem Abschnitt des Videos erläutert der Moderator, wie die Ausgabe von Tensoren in ganze Zahlen umgewandelt wird und wie mit cv2.rectangle ein Rechteck um jedes erkannte Objekt erstellt wird. Die Farbe und Dicke des Begrenzungsrahmens werden zusammen mit dem Start- und Endpunkt für jedes erkannte Objekt definiert. Die Ausgabe der Anwendung zeigt, dass die Begrenzungsrahmen perfekt um die erkannten Objekte gezogen werden. Der Moderator erwähnt jedoch die Notwendigkeit, dass für jedes erkannte Objekt auch die Bezeichnung und der Vertrauenswert angezeigt werden. Der Konfidenzwert wird derzeit in Form von Tensoren angezeigt, aber der Moderator plant, ihn mithilfe von mat.c in eine ganze Zahl umzuwandeln.

  • 00:35:00 In diesem Abschnitt des Video-Tutorials zeigt der Kursleiter den Zuschauern, wie sie den erkannten Objekten Konfidenzwerte hinzufügen, sie in ganze Zahlen umwandeln und sie entsprechend ihrer Klassen-ID kennzeichnen. Die Klassen-ID wird durch den Typ des Objekts bestimmt, wobei 0 eine Person, 1 ein Fahrrad und 2 ein Auto ist. Der Kursleiter demonstriert auch, wie ein Rechteck um das Etikett erstellt und die Ausgabeerkennungen in einer Datei mit dem Namen output.avi gespeichert werden. Die Zuschauer können die Live-Erkennungen Bild für Bild sehen, und der Ausbilder zeigt ihnen, wie sie den Vorgang stoppen können, indem sie auf den Bildschirm klicken. Der Kursleiter zeigt auch die Ausgabevideodatei an und bestätigt, dass die Ergebnisse wie erwartet sind. Schließlich kündigt der Kursleiter an, dass er im nächsten Tutorial YOLOv8 unter Windows ausführen und die Ergebnisse teilen wird.

  • 00:40:00 In diesem Abschnitt des YOLOv8-Kurses demonstriert der Ersteller, wie die Objekterkennung an einem Beispielvideo mit vortrainierten YOLOv8-Gewichten durchgeführt wird. Ziel ist es, sowohl Fahrräder als auch Personen zu erkennen, die Teil des COCO-Datensatzes sind. Der Ersteller zeigt, wie das Skript ausgeführt und der Ordner in den angegebenen Videoordner umgeleitet wird, und erkennt dann erfolgreich Fahrräder, Personen und andere Objekte wie eine Ampel. Der Ersteller demonstriert dann, dass das Ausgabevideo mit Erkennungen im ausgewählten Ordner gespeichert ist, und zeigt die Begrenzungsrahmen um die erkannten Objekte mit Beschriftungen und Konfidenzwerten. Die Funktion Videoerkennung wird erstellt, um den gesamten Code zu enthalten, und eine Datei mit dem Namen letzter App-Punkt Pi wird erstellt.

  • 00:45:00 In diesem Abschnitt des Videos erläutert der Sprecher die Schritte, die zur Integration von YOLOv8 mit Flask erforderlich sind, um eine Webanwendung zur Objekterkennung in Echtzeit zu erstellen. Der erste Schritt ist die Installation von Flask, die mit pip install durchgeführt wird. Als nächstes importiert der Sprecher die erforderlichen Bibliotheken und initialisiert Flask. Dann erstellen sie eine Funktion namens Frame generieren, die den Pfad der Eingabevideodatei aufnimmt und die Ausgabe mit Begrenzungsrahmen um erkannte Objekte generiert. Abschließend geht der Referent auf das Kodieren von Bildern als Bytes und das Konvertieren einzelner Frames in ein Video mit der Löschtastatur ein. Das Endergebnis sind einzelne Rahmen mit Begrenzungsrahmen um das erkannte Objekt, Beschriftungen und Konfidenzwerte.

  • 00:50:00 In diesem Abschnitt erklärt der Videoersteller, wie man YOLOv8 mit Flask integriert, um eine Webanwendung zur Objekterkennung in Echtzeit zu erstellen. Das Video demonstriert das Codieren von Frames und das Konvertieren des Bildes in Bytes, gefolgt von der Schleife einzelner Frames zur Erkennung und anschließenden Frame-Anzeige. Das Video zeigt das Ersetzen visueller Frames mithilfe des Mitteltyps, während der Inhaltstyp zum Anzeigen nachfolgender Frames verwendet wird. Das Video enthält eine Demonstration, bei der die Videodatei als Eingabe für die Erkennung übergeben wird, was zu Begrenzungskästchen um erkannte Objekte führt; in diesem Szenario Menschen, Fahrräder und Ampeln. Das Video schließt mit der Feststellung, dass das nächste Tutorial die Erkennung in Live-Webcam-Feeds behandeln wird, wodurch eine Fly Fast-API erstellt wird.

  • 00:55:00 In diesem Abschnitt demonstriert der Moderator, wie die Echtzeit-Objekterkennungs-Webanwendung YOLOv8 in einem Live-Webcam-Feed ausgeführt wird. Durch Ändern des Videopfads im Skript auf 0 kann das Programm mit einem Live-Webcam-Feed ausgeführt werden. Eine neue URL wird erstellt und mit der Flask-Anwendung verknüpft, was eine Echtzeit-Objekterkennung von Live-Webcam-Feeds ermöglicht. Der Moderator zeigt, dass das Programm Objekte wie eine Person, ein Fahrrad und eine Ampel aus dem Live-Feed genau erkennen kann. Außerdem wird der Videopfad wieder auf die Video-URL geändert und das Programm demonstriert seine Fähigkeit, Objekte auch in einem Video zu erkennen.

  • 01:00:00 In diesem Abschnitt konzentriert sich das Video-Tutorial auf die Erstellung einer vollständigen HTML-Webseite mit HTML und CSS für das Front-End-Design und Flask für das Back-End. Die Web-App besteht aus drei verschiedenen Seiten: einer Startseite, einer Videoseite und einer Live-Webcam-Feed-Seite. Die Startseite enthält eine Kopfzeile, Inhalt und eine Fußzeile mit Beispielergebnissen aus verschiedenen Projekten. Auf der Videoseite kann der Benutzer ein Video hochladen und YOLOv8-Erkennungen für dieses Video ausführen. Die Live-Webcam-Feed-Seite ermöglicht es dem Benutzer, Erkennungen im Live-Webcam-Feed vorzunehmen. Das Video zeigt auch die Punktstapeldatei der Flask-App und die drei HTML-Seiten.

  • 01:05:00 In diesem Abschnitt erklärt das Video-Tutorial, wie Benutzern das Hochladen einer Videodatei in das Objekterkennungsmodell mithilfe des Flask-Formulars ermöglicht wird. Das Tutorial verwendet Validatoren, um sicherzustellen, dass der Benutzer die Videodatei im richtigen Format (MP4 oder .avi) hochlädt. Der Dateipfad der hochgeladenen Videodatei wird in der Dateivariablen mit Klassenform gespeichert. Das Tutorial stellt auch die Funktion Frames generieren vor, die zum Erkennen von Objekten in der Eingabevideodatei verwendet wird. Die Eingabevideodatei wird im Ordner für statische Dateien gespeichert, und der Benutzer kann die Videodatei zur Erkennung senden, indem er auf die Schaltfläche „Senden“ klickt.

  • 01:10:00 In diesem Abschnitt des YOLOv8-Kurses liegt der Schwerpunkt auf der Erkennungsfunktion, die wir in der YOLO Dash-Videodatei haben. Die Videoreduktionsfunktion gibt uns eine Richtung vor und bei der Objekterkennung gibt es Begrenzungsrahmen um die erkannten Objekte mit Beschriftungen und Konfidenzwerten. Die aktuellen Frames werden dann in Bytes konvertiert, wie es für das Eingabebild oder die Frames von Flask erforderlich ist. Die Webfunktion zum Generieren von Frames wird aufgerufen, wenn wir auf die Webcam in der App zugreifen oder sie umleiten möchten, wobei ein Sitzungspunkt gelöscht wird, um Eingabevideodateien aus dem Sitzungsspeicher zu entfernen, sodass die Erkennung bei neuen Videos oder Eingabedateien erfolgen kann, nicht bei den vorherigen Einsen. Die Upload-Dateiformularinstanz wird erstellt, wobei der Videodateipfad in der Sitzungsspeichervariablen gespeichert wird. Der Sitzungsspeicher wird danach gelöscht, um sicherzustellen, dass die Erkennung für die neuen Videos erfolgt, wodurch verhindert wird, dass die App die vorherigen Videos oder Eingabedateien erkennt.

  • 01:15:00 In diesem Abschnitt erläutert der Referent den Code und die HTML-Dateien, die im YOLOv8-Kurs zur Objekterkennung in Echtzeit in einer Webanwendung mit Flask und einer Webcam/IP-Kamera verwendet werden. Der Sprecher demonstriert, wie er den Videoteil im Sitzungsspeicher gespeichert und den Videopfad aufgerufen hat, um die Erkennungen im Video durchzuführen. Sie zeigen auch die Punkt-Pi-Datei der Flask-App für das Projekt. Die HTML-Datei besteht aus der Sprache, dem Titel der Seite, dem Körper und den Kopfzeilen mit ihren Eigenschaften wie Hintergrundfarbe, Schriftfamilie, Textfarbe, Höhe und anderen Elementen. Darüber hinaus erklärt der Sprecher den Zweck des Randradius beim Erstellen einer abgerundeten Rechteckform.

  • 01:20:00 In diesem Abschnitt demonstriert der Sprecher die Hauptseiten der von ihm erstellten Webanwendung. Sie beginnen mit der Anzeige der Dash-Startseiten-URL, die den Benutzer zur Video-Feed-Seite weiterleitet, wo er ein Video hochladen und Objekterkennungen durchführen kann. Dann zeigen sie die Seite UI.html an, auf der Erkennungen im Live-Webcam-Feed stattfinden. Sie demonstrieren auch die Beispielergebnisseite, die drei Bilder zeigt, die sie gespeichert und an den HTML-Code übergeben haben. Schließlich zeigen sie die Fußzeile, die den Benutzer beim Klicken auf ihren YouTube-Kanal weiterleitet. Während der gesamten Demonstration zeigt der Sprecher das CSS-Styling, das er für jede Seite verwendet hat.

  • 01:25:00 In diesem Abschnitt demonstriert der Referent die Echtzeit-Objekterkennungs-Webanwendung mit YOLOv8 und Flask mit einem Live-Webcam-Feed und Video. Der Webseite wird CSS-Styling hinzugefügt, und der Sprecher führt die Cap-Datei der Python-Klasse aus, um die Erkennungen im Video sowie im Live-Webcam-Feed durchzuführen. Der Benutzer kann auch eine Videodatei eingeben, um die Erkennungen zu erhalten. Die Ergebnisse sind beeindruckend, da das YOLOv8-Modell in der Lage ist, Objekte wie Personen, Fahrräder, Ampeln usw. zu erkennen und Begrenzungsrahmen mit den Beschriftungen und dem Vertrauenswert zu erstellen. Abschließend demonstriert der Referent, dass die Erkennungen im Live-Webcam-Feed ebenfalls genau funktionieren.

  • 01:30:00 In diesem Abschnitt des Videos stellt der Moderator eine Flask-Webanwendung vor, die mithilfe von YOLOv8 Objekte sowohl in Video- als auch in Live-Webcam-Feeds erkennen kann. Die App verfügt über eine Startseite, eine Videoseite mit der Möglichkeit, Erkennungen für jedes Eingangsvideo durchzuführen, und eine Live-Webcam-Feed-Seite. Der Moderator zeigt dann, wie YOLOv8 zur Erkennung von persönlicher Schutzausrüstung (PSA) verwendet werden kann, indem er einen auf Roboflow verfügbaren Datensatz verwendet, der aus 3235 Bildern mit 7 verschiedenen Klassen besteht. Der Präsentator benennt die Klassen entsprechend um, um die tatsächlichen Objekte widerzuspiegeln, die von YOLOv8 erkannt werden, und der Präsentator zeigt dann die Dataset-Statistiken an, die eine unausgeglichene Klassenverteilung enthalten. Das für den Datensatz verwendete Teilungsverhältnis ist 70-20-10. Abschließend demonstriert der Moderator, wie das YOLOv8-Modell in ein Collab-Notebook importiert wird.

  • 01:35:00 In diesem Abschnitt des YOLOv8-Kurses erklärt der Kursleiter, wie die erforderlichen Bibliotheken importiert und der Zugriff auf die GPU überprüft werden. Die OS-Bibliothek wird verwendet, um zu verschiedenen Dateien zu navigieren, und die Bildbibliothek wird verwendet, um Eingabe-/Ausgabebilder im Google Colab-Notizbuch anzuzeigen. Der PSA-Datenerkennungsdatensatz wird dann aus Roboflow importiert und in den neu erstellten Ordner „Datensätze“ heruntergeladen. Das YOLOv8-Modell wird mit pip install ultralytics installiert und anschließend mit import ultralytics auf seine Funktionalität für die Installation und den Betrieb überprüft.

  • 01:40:00 In diesem Abschnitt des Videos zeigt der Moderator, wie der PSA-Erkennungsdatensatz für das Training eines YOLOv8-Modells heruntergeladen und vorbereitet wird. Der Datensatz besteht aus Test- und Validierungssätzen sowie einer data.yml-Datei mit Klassennamen für jedes Objekt. Nach dem Herunterladen und Umbenennen des Ordners verwendet der Präsentator die Befehlszeilenschnittstelle für die lokale Implementierung von Training, Validierung und Tests des Modells. Das Training dauert etwa drei Stunden, und der Moderator zeigt die Trainingsergebnisse, einschließlich der besten Gewichtsdatei und der letzten Gewichte der 90. Arbeit. Das Modell wurde an sieben verschiedenen Klassen von PSA-Objekten trainiert.

  • 01:45:00 In diesem Abschnitt werden die Ergebnisse des YOLOv8-Modelltrainings analysiert, einschließlich der mittleren durchschnittlichen Präzision und der Konfusionsmatrix für jede Klasse. Die Trainings- und Validierungsverluste werden ebenfalls untersucht, wobei die Verlustwerte während des gesamten Trainingsprozesses kontinuierlich abnehmen. Die Modellvorhersagen zu Validierungschargen werden ebenfalls angezeigt, was darauf hinweist, dass das Modell gut funktioniert. Die besten Gewichtungen für das Modell werden verwendet, um eine benutzerdefinierte Bestellung zu validieren, wobei die mittleren durchschnittlichen Genauigkeitswerte stark bleiben. Abschließend wird eine Inferenz auf einem Bild ausgeführt, um das Etikett unter Verwendung des benutzerdefinierten Modells zu erkennen. Insgesamt scheint das YOLOv8-Modell bei der Erkennung verschiedener Klassen bei der Objekterkennung in Echtzeit gut zu funktionieren.

  • 01:50:00 In diesem Abschnitt demonstriert der Videoersteller, wie das YOLOv8-Modell auf einem Testdatensatz von Bildern und einem Demovideo ausgeführt wird. Die Ergebnisse des Testdatensatzes werden in der Datei „prediction“ gespeichert, und der Ersteller zeigt die Ausgabe für die ersten fünf Bilder mithilfe des Pakets „ipython.display“ an. Die Ergebnisse zeigen, dass das Modell Objekte wie Schutzbretter, Jacken, Handschuhe, Staubmasken, schützende Mägde und Helme korrekt erkennen kann. Der Ersteller lädt dann ein Demovideo herunter und leitet es durch das Modell, wobei die Ausgabe angezeigt wird, die zeigt, dass das Modell in der Lage ist, Schutzjacken und Dienstmädchen zu erkennen. Der Videoersteller erwähnt auch den Vorteil der Verwendung einer GPU für Training und Vorhersage, da dies weniger Zeit in Anspruch nimmt.

  • 01:55:00 In diesem Abschnitt testet der Moderator das YOLOv8-Modell anhand von Demovideos, um zu sehen, wie es funktioniert. Das Modell kann die Schutzhelme und -jacken erkennen, aber keine Handschuhe. Der Präsentator lädt die ausgegebenen Demovideos herunter und zeigt, wie das Modell auf jedem von ihnen abschneidet. Das Model ist in allen getesteten Demovideos in der Lage, die schützenden Mägde und Jacken zu erkennen. Der Moderator lädt dann die Datei mit den besten Gewichten für das trainierte Modell der persönlichen Schutzausrüstung herunter und erläutert, wie sie mit Flask für eine Webanwendung zur Objekterkennung in Echtzeit integriert werden kann.

  • 02:00:00 In diesem Abschnitt erläutert der Moderator die Änderungen am Code in der Webanwendung, die das Modell Yellow V8 verwendet, das mit einem Datensatz zu persönlicher Schutzausrüstung (PSA) trainiert wurde. Der PPE-Datensatz hat sieben verschiedene Klassen, und ihre Namen sind aufgelistet. Die Datei mit den besten Gewichten wurde aus dem Coco-Datensatz, der aus 80 verschiedenen Klassen besteht, in ppe.pt umbenannt. Der Moderator hat eine Funktion hinzugefügt, um dem Begrenzungsrahmen und dem Beschriftungsrechteck basierend auf dem Klassennamen unterschiedliche Farben zuzuweisen. Der Moderator hat eine Grenze für die Vertrauensbewertung festgelegt und erwähnt, dass der Begrenzungsrahmen und das Rechteck nur angezeigt werden, wenn die Bewertung über 0,5 liegt. Die Flask app.py- und HTML-Dateien bleiben gleich. Abschließend zeigt der Moderator die Ergebnisse der Videodetektion auf dem PSA-Datensatz und einer Webcam. Die Anwendung kann die PSA-Artikel im Video erfolgreich erkennen.

  • 02:05:00 In diesem Abschnitt demonstriert der Moderator die erfolgreichen Erkennungsfähigkeiten des YOLOv8-Modells in Echtzeit mithilfe eines Live-Webcam-Feeds. Das Modell ist in der Lage, eine Person, die einen Schutzhelm und eine Staubmaske trägt, genau zu erkennen, während das Fehlen von Handschuhen und Schilden außer Acht gelassen wird. Die Ergebnisse gelten als zufriedenstellend und markieren das Ende des Kurses.
 

Objektverfolgung in Echtzeit mit YOLOv8 und DeepSORT | Fahrzeugzählung (ein- und ausfahrende Fahrzeuge)



Objektverfolgung in Echtzeit mit YOLOv8 und DeepSORT | Fahrzeugzählung (ein- und ausfahrende Fahrzeuge)

Das Video demonstriert die Implementierung der Echtzeit-Objektverfolgung mit YOLOv8 und DeepSORT, um die Anzahl der Fahrzeuge zu zählen, die auf eine Autobahn einfahren und diese verlassen. Der Moderator bietet eine Schritt-für-Schritt-Anleitung, beginnend mit dem Klonen des GitHub-Repositorys, der Installation erforderlicher Pakete, dem Festlegen des Verzeichnisses und der Untersuchung des Tracking-Skripts. Das Tutorial behandelt die Verwendung von Double-Ended-Warteschlangen, Vorverarbeitung, Non-Max-Regression und Deep SORT-Funktion, um eindeutige IDs zu generieren und Klassennamen zu bestimmen. Der Moderator erklärt auch, wie eine Fahrzeugzählfunktion mithilfe einer Linie auf dem Bildschirm hinzugefügt wird, und jedes Mal, wenn die Spur eines Fahrzeugs diese Linie schneidet, erhöht sich die Zählung. Die Benutzeroberfläche wird mithilfe einer bestimmten Funktion festgelegt. Abschließend zeigt der Moderator, wie die aktuelle Ausgabe des Skripts Kreuzungen mit der Linie erkennen und die Fahrzeuge zählen kann, die in das Gebiet einfahren und es verlassen.

  • Der Abschnitt 00:00:00 des Videos zeigt eine Demonstration der Implementierung der Objektverfolgung mit Deep Sort in YOLO V8. Das Tutorial behandelt die Erstellung einer Anwendung zum Zählen der Anzahl von Fahrzeugen, die auf eine Autobahn einfahren und diese verlassen. Der Moderator stellt eine Schritt-für-Schritt-Anleitung bereit, die Sie bei der Verwendung von PyCharm IDE befolgen können, und erklärt jeden Schritt im Detail. Der erste Schritt besteht darin, das GitHub-Repository zu klonen und die erforderlichen Pakete zu installieren. Das Video enthält auch einen Abschnitt zum Festlegen des Verzeichnisses und zum Untersuchen des Tracking-Skripts.

  • 00:05:00 In diesem Abschnitt des Videos erklärt der Sprecher, wie die Tracking-Punktdatei eingerichtet und die DeepSORT-Dateien von Google Drive heruntergeladen und im Ordner YOLOv8 abgelegt werden. Die DeepSORT-Dateien sind zu groß, um auf GitHub hochgeladen zu werden, daher müssen sie über den bereitgestellten Google Drive-Link heruntergeladen werden. Das Video zeigt, wie Sie die heruntergeladenen Dateien extrahieren und im entsprechenden Ordner ablegen. Der Referent zeigt auch, wie man ein Beispielvideo herunterlädt und das Skript ausführt. Das Ausführen des Skripts kann einige Zeit in Anspruch nehmen, da es auf der CPU getestet wird, aber der Sprecher erklärt den Code während der Ausführung des Skripts ausführlicher.

  • 00:10:00 In diesem Abschnitt erläutert der Referent die Verwendung einer doppelseitigen Warteschlange (DQ) und warum sie gegenüber einer Liste bevorzugt wird, wenn gleichzeitig Einfügungs- oder Pop-Operationen durchgeführt werden. Der Sprecher verwendet DQ, um Werte in Form von Koordinaten der unteren Mitte des Begrenzungsrahmens anzuhängen, und erklärt, wie die Werte entfernt werden, sobald das Auto aus dem Rahmen verschwindet. Die maximale Länge des DQ ist auf 64 festgelegt, und sobald es diesen Wert erreicht, akzeptiert es keine weiteren Werte. Der Sprecher definiert auch die Farbpalette und die Benutzeroberfläche, um einen stilvollen Rahmen um die erkannten Objekte zu erstellen.

  • 00:15:00 In diesem Abschnitt erläutert das Video den Code zum Erstellen einer Benutzeroberfläche (UI) mit einem abgerundeten Rechteck und einer Textbezeichnung sowie wie das Programm erkannte Objekte an eine doppelseitige Warteschlange anfügt, um sie zu generieren Wanderwege. Der Code enthält auch eine Vorverarbeitung und eine Non-Max-Regression, um die Größe von Frames zu ändern und Erkennungen durchzuführen. Die Deep SORT-Funktion wird aufgerufen, um eindeutige IDs zuzuweisen und Klassennamen zu bestimmen, während set.modern.names dabei hilft, Informationen aus dem COCO-Datensatz abzurufen und Begrenzungsrahmen zu generieren.

  • 00:20:00 In diesem Abschnitt erklärt der Referent seinen Code für die Objekterkennung mit YOLOv8 und DeepSORT und gibt einen Überblick über das Skript und seine Funktionsweise. Sie demonstrieren die aktuelle Ausgabe des Skripts und stellen fest, dass sie ein Nanomodell verwenden, sodass die Objekterkennung noch nicht perfekt ist. Der Redner erwähnt auch, dass er eine Reihe von Computer Vision-Vorträgen für Europa erstellen wird, und ermutigt die Zuschauer, weitere Inhalte zu abonnieren. Schließlich zeigen sie, wie ihr Skript erkennen kann, wenn sich ein Pfad mit einer Linie kreuzt, was anzeigt, wenn ein Objekt vorbeigefahren ist, und die Implementierung einer Fahrzeugzählung für das Ein- und Ausfahren ermöglicht.

  • 00:25:00 In diesem Abschnitt erklärt der Moderator, wie die Fahrzeugzählfunktion zum Echtzeit-Objektverfolgungssystem mit YOLOv8 und DeepSORT hinzugefügt wurde. Das System verwendet eine Linie auf dem Bildschirm, und jedes Mal, wenn die Spur eines Fahrzeugs diese Linie schneidet, erhöht sich die Zählung. Die Zählung kann abhängig von der Bewegungsrichtung des Fahrzeugs zunehmen, ob ein Fahrzeug in den Bereich einfährt oder diesen verlässt. Der Moderator zeigt auch, wie die Benutzeroberfläche durch eine bestimmte Funktion eingestellt wird.
 

Segmentierung und Verfolgung von Objekten in Echtzeit mit YOLOv8 | Fahrzeugzählung (Ein- und Ausfahrt)



Segmentierung und Verfolgung von Objekten in Echtzeit mit YOLOv8 | Fahrzeugzählung (Ein- und Ausfahrt)

Dieses Video-Tutorial konzentriert sich auf die Implementierung von Echtzeit-Objektsegmentierung und -verfolgung mit YOLOv8 und Deep-Sort-Algorithmus. Insbesondere wird gezeigt, wie die verschiedenen Subtypen von Fahrzeugen, die in ein bestimmtes Gebiet einfahren und es verlassen, gezählt und unterschieden werden können. Das Tutorial behandelt verschiedene Aspekte, darunter Geschwindigkeitsschätzung, Richtungsmessung und genaue Segmentierung und Verfolgung jedes Fahrzeugs mit seiner ID und seinen Spuren. Der Präsentator stellt auch die notwendigen Schritte bereit, um dies in verschiedenen IDEs zu implementieren, und bietet den endgültigen Code für seine Patreon-Unterstützer an.

  • 00:00:00 In diesem Abschnitt des Videos erklärt der Moderator, wie Objektsegmentierung mit Tracking mithilfe von YOLOv8 und Deep-Sort-Algorithmus implementiert wird. Das Video demonstriert die Fahrzeugsegmentierung und -verfolgung, einschließlich der Zählung der Anzahl der ein- und ausfahrenden Fahrzeuge sowie der Fahrzeugtypen. Die Implementierung umfasst auch die Geschwindigkeitsberechnung der Fahrzeuge, die Zuordnung einer eindeutigen ID zu jedem Fahrzeug sowie die Definition der Trails. Der Referent stellt die notwendigen Schritte bereit, um dies in verschiedenen IDEs zu implementieren, einschließlich Anaconda Navigator, PyCharm, Spider und Visual Studio. Die erforderlichen Abhängigkeiten, z. B. Bibliotheken, müssen installiert werden, um Fehler beim Ausführen des Skripts „predict.5“ zu vermeiden.

  • 00:05:00 In diesem Abschnitt konzentriert sich das Video-Tutorial auf die Implementierung von Segmentierung und Tracking mit YOLOv8 und Deep Sort. Die Deep-Sort-Dateien werden von Google Drive heruntergeladen und ein Beispielvideo wird zum Testen verwendet. Das Skript wird modifiziert, um die Fahrzeugzählung zum Ein- und Ausfahren zu implementieren, wobei ein Wörterbuch verwendet wird, um die Anzahl der Fahrzeuge nach Untertyp zu speichern. Der Objektzähler 1 wird verwendet, um die Anzahl von Fahrzeugen zu speichern, die nach Untertyp abfahren, während das Prüfzähler-Wörterbuch verwendet wird, um die Anzahl von einfahrenden Fahrzeugen zu speichern. Das modifizierte Skript verfolgt und zählt Fahrzeuge basierend auf ihrem Untertyp und ob sie den Rahmen betreten oder verlassen.

  • 00:10:00 In diesem Abschnitt erläutert das Video, wie man mit YOLOv8 ein Fahrzeugzählsystem mit einem Objektzähler erstellt, der zwischen Untertypen von Fahrzeugen wie Autos, großen Lastwagen und Motorrädern unterscheiden kann, die in einen bestimmten Bereich einfahren und ihn verlassen. Das Video erklärt die Verwendung einer Geschwindigkeitsschätzungsfunktion und wie man eine Linie erstellt, die, wenn sie von einem Fahrzeug passiert wird, den Zähler erhöht. Darüber hinaus definiert das Video den konstanten PPM- oder Bildparameter, der hilft, die Anzahl der Pixel in einem Bild zu messen.

  • 00:15:00 In diesem Abschnitt geht der Referent auf das Konzept der dynamischen Distanzmessung basierend auf der Distanz zwischen einem Objekt und der Kamera ein. Sie erklären, dass dies mit einer Formel erreicht werden kann, bei der die Entfernung in Metern gleich der Entfernung Pixel geteilt durch PPM (Pixel pro Meter) multipliziert mit einer Konstante von 3,6 geteilt durch die Bildrate pro Sekunde ist. Der Sprecher fährt dann fort, eine Funktion zu schreiben, um den Winkel zu berechnen und die Geschwindigkeit basierend auf der Entfernung und der Zeit zurückzugeben. Sie erstellen auch zwei weitere Funktionen - set_d und CCW - und schreiben eine get_direction-Funktion, um die Richtung eines Objekts basierend auf der y-Achse zu berechnen.

  • 00:20:00 In diesem Abschnitt des Videos überprüft der Moderator seinen Code für Echtzeit-Objektsegmentierung und -verfolgung mit YOLOv8. Sie nehmen Änderungen am Skript vor, fügen beispielsweise eine Richtungsstruktur hinzu und berechnen den verbleibenden Code. Der Moderator erläutert auch, wie die Objektgeschwindigkeit berechnet und an die ID-Liste angehängt wird. Anschließend kopieren und fügen sie einen Schnittpunktcode ein und nehmen weitere Anpassungen vor, um Fehler im Code zu beheben.

  • 00:25:00 In diesem Abschnitt des Videos fügt der Moderator einen Zählercode hinzu, um die Anzahl der ein- und ausfahrenden Fahrzeuge zu zählen. Der Zählercode zeigt die Gesamtzahl der Fahrzeuge und die Unterzahl an, die die Anzahl der einfahrenden Autos, Lastwagen und Motorräder umfasst. Der Moderator schlägt außerdem vor, eine Anzeige für die Anzahl der ausfahrenden Fahrzeuge hinzuzufügen. In der Draw-Box-Funktion tritt ein Fehler auf, den der Präsentator behebt, indem er eine globale Variable für den Aufwärts- und den Countdown deklariert. Das Skript wird erfolgreich ausgeführt, und das ausgegebene Demovideo zeigt die geschätzte Geschwindigkeit für jedes Fahrzeug und die Gesamtzahl der Fahrzeuge mit Unterzählungen für jeden eingegebenen Fahrzeugtyp.

  • 00:30:00 In diesem Abschnitt erörtert der Referent die Ergebnisse seiner Echtzeit-Objektsegmentierung und -verfolgung mit YOLOv8 für die Fahrzeugzählung. Sie haben präzise Ergebnisse erzielt und sind sogar in der Lage, die Geschwindigkeit jedes Fahrzeugs zusammen mit der Tracking-ID und den Spuren zu schätzen. Darüber hinaus wurden die Erkennung und Segmentierung jedes Fahrzeugs genau durchgeführt, und die Gesamtzahl der Fahrzeuge wird ebenfalls erwähnt. Sie haben diesen Code exklusiv ihren Patreon-Unterstützern zur Verfügung gestellt, die Zugriff auf alle Codes und Projekte haben, die sie teilen. Schließlich laden sie die Zuschauer ein, die Demovideos zu testen, den Code auf ihren Websites zu implementieren oder ihrer Patreon-Mitgliedschaft beizutreten.
 

Objektverfolgung mit YOLOv8: Fahrzeugverfolgung, Zählung (Ein- und Ausfahrt) und Geschwindigkeitsschätzung



Objektverfolgung mit YOLOv8: Fahrzeugverfolgung, Zählung (Ein- und Ausfahrt) und Geschwindigkeitsschätzung

Das Video-Tutorial beschreibt, wie Sie Objektverfolgung, Fahrzeugzählung und Geschwindigkeitsschätzung mit YOLOv8 und DeepSORT implementieren. Der Moderator teilt einen Link zum GitHub-Repo mit dem Code und geht durch den Prozess des Klonens des Repositorys, des Herunterladens von DeepSORT-Dateien, des Imports relevanter Bibliotheken und der Definition einer Daten-DQ-Liste zur Verfolgung von Objekten. Sie erklären auch, wie die Fahrzeugrichtung bestimmt und die Zählung entsprechend erhöht wird. Darüber hinaus zeigt der Moderator, wie die Geschwindigkeit von Fahrzeugen geschätzt werden kann, indem die euklidische Entfernungsformel basierend auf den X- und Y-Koordinaten von verfolgten Objekten implementiert und ein Bereich für die Zählanzeige eingerichtet wird. Letztendlich zeigt die Ausgabe des Skripts Objektanzahl und -geschwindigkeit und zeigt damit an, dass die Implementierung erfolgreich war.

  • 00:00:00 In diesem Abschnitt des Tutorials erklärt der Moderator, wie Objekterkennungsverfolgung und Geschwindigkeitsschätzung mit YOLOv8 implementiert werden. Zu Beginn stellt der Moderator einen Link zum YOLOv8-Objekttracking mit Deep Sort GitHub-Repository bereit, das eine Google Colab-Datei sowie Schritt-für-Schritt-Anleitungen zum Ausführen des Codes unter Windows enthält. Der Präsentator führt dann die erforderlichen Schritte durch, um das Repository zu klonen, das aktuelle Verzeichnis festzulegen und alle erforderlichen Bibliotheken zu installieren. Danach navigiert der Präsentator zum Erkennungsordner und lädt die Deep Sort-Dateien vom bereitgestellten Google Drive-Link herunter.

  • 00:05:00 In diesem Abschnitt erläutert der Referent die Schritte zum Herunterladen und Implementieren der Objektverfolgung mit YOLOv8 unter Verwendung von DeepSORT. Sie leiten die Betrachter an, den DeepSORT-Ordner herunterzuladen, indem sie den Ordner entpacken und im Hauptordner des Projekts ablegen. Sie erläutern auch die Bibliotheksimporte, die in der Datei „predict.py“ verwendet werden, und beschreiben das Konzept der doppelseitigen Warteschlange (DQ), die verwendet wird, um eindeutige IDs für Objekte zu speichern, die in den Frame eintreten und ihn verlassen. Der Sprecher erwähnt auch, dass das Beispielvideo von Google Drive heruntergeladen und einige Sekunden auf die Ausgabe gewartet wird, da für die Verarbeitung eher die CPU als die GPU verwendet wird.

  • 00:10:00 In diesem Abschnitt erläutert der Referent verschiedene Funktionen des Deep Sort Trackers, eines Tracking-Algorithmus zur Objektverfolgung. Dazu gehören die Punkt-Append-Funktion, die verwendet wird, um Werte am rechten Ende einer Doppelschlange hinzuzufügen, ein Container-Datentyp, der zum Speichern von Objekten verwendet wird, und die Punkt-Append-Links-Funktion, die zum Einfügen von Werten am linken Ende einer Doppelschlange verwendet wird. Der Referent geht auch auf die Funktion „Farbetiketten berechnen“ ein, die Objekten basierend auf ihrem Typ unterschiedliche Farben zuweist. Darüber hinaus werden die Funktionen „Dash Border zeichnen“ und „Dash Boxen zeichnen“ ausführlich erläutert, wo sie eine Benutzeroberfläche mit einem abgerundeten Rechteck erstellen, das die eindeutige ID und den Namen des Objekts sowie eine mit CB2.9 erstellte Verfolgungslinie anzeigt.

  • 00:15:00 In diesem Abschnitt erklärt der Referent, wie er eine Spurlinie erstellt und das Konzept der Daten-DQ zum Verfolgen von Objekten implementiert. Sie initialisieren eine DQ-Liste und hängen die Bodenkoordinaten jedes erkannten Objekts daran an. Wenn ein Objekt den Rahmen verlässt, werden seine Punkte aus der Daten-DQ-Liste entfernt. Sie erstellen auch einen Prädiktor für die Klassenerkennung, verwenden den Deep Sort-Algorithmus, um jedem Objekt eindeutige IDs zuzuweisen, und erhalten ihre Namen. Sie rufen eine Draw-Box-Funktion auf und führen die Vorhersagen aus. Darüber hinaus implementieren sie die Fahrzeugzählung, indem sie eine Datei herunterladen und einfügen und die Richtung als Norden, Süden, Osten oder Westen definieren. Wenn ein Objekt in eine bestimmte Richtung eintritt oder es verlässt, erhöhen sie die Zählung.

  • 00:20:00 In diesem Abschnitt erklärt der Referent, wie er die Objektzählung in seinem YOLOv8-Objektverfolgungsskript implementiert hat. Sie definierten eine Richtung für Objekte, die ein- oder austreten, basierend auf ihrer Bewegung über bestimmte Linien. Sie zeigten auch die Anzahl der ein- oder austretenden Objekte und legten den Bereich fest, in dem die Anzahl angezeigt werden muss. Der Sprecher fügte dann eine Geschwindigkeitsschätzung hinzu, indem er die euklidische Entfernungsformel implementierte und die X- und Y-Koordinaten von verfolgten Objekten verwendete, um ihre Geschwindigkeiten zu berechnen. Sie verwendeten einen Pixel-pro-Meter-Wert, um die Berechnung durchzuführen, die basierend auf der Position der Kamera dynamisch gemacht werden kann. Die Ausgabe des Skripts zeigte Objektanzahl und -geschwindigkeit, was darauf hinweist, dass das Skript korrekt funktionierte.

  • 00:25:00 In diesem Abschnitt erläutert der Referent die Formel zur Berechnung der Geschwindigkeit von Fahrzeugen in Metern pro Stunde, bei der die Entfernung in Pixel durch den Pixel-per-Meter-Wert (PPM) dividiert und das Ergebnis mit einer Zeitkonstante multipliziert wird . Wenn ein Fahrzeug eine durch den vom Benutzer definierten Erkennungsbereich festgelegte Linie überquert, erhöht das Skript die Fahrzeugzählung und erkennt anhand der Fahrtrichtung, ob das Fahrzeug in den Bereich einfährt oder ihn verlässt. Letztendlich werden die Geschwindigkeits- und Fahrzeugzahlschätzungen an die Ausgabeliste angehängt, und der Benutzer kann dieses Projekt implementieren, indem er den Schritten des Lernprogramms folgt.
 

Automatische Kennzeichenerkennung mit YOLOV8 und EasyOCR (Bilder & Videos)



Automatische Kennzeichenerkennung mit YOLOV8 und EasyOCR (Bilder & Videos)

In diesem YouTube-Video erklärt die Moderatorin, wie man die automatische Kennzeichenerkennung mit YOLOV8 und EasyOCR umsetzt. Sie führen die Zuschauer mithilfe eines Google Colab-Notebooks und eines GitHub-Repositorys durch den Implementierungsprozess, bieten schrittweise Anleitungen und erklären, wie Abhängigkeiten installiert und das erforderliche Dataset heruntergeladen werden. Der Moderator demonstriert die Erfolgsrate des Modells und den Validierungsprozess und erklärt auch, wie EasyOCR zum Lesen von Kfz-Kennzeichen verwendet wird. Sie durchlaufen die letzten Schritte der Ausführung des Skripts und stoßen auf einige Fehler, die sie beheben, was zu beeindruckenden Ergebnissen führt. Obwohl das Nummernschilderkennungsskript nur auf dem GitHub-Repo des Moderators für Patreon-Unterstützer bereitgestellt wird, können Zuschauer sich über die Änderungen informieren, die an der Datei „predict.py“ vorgenommen wurden, um ähnliche Ergebnisse zu erzielen.

  • 00:00:00 In diesem Abschnitt des Videos demonstriert der Moderator, wie die Nummernschilderkennung und -erkennung mit YOLOV8 und EasyOCR implementiert wird. Der Moderator verwendet ein Google Colab-Notebook und ein GitHub-Repository, um die Zuschauer durch den Implementierungsprozess zu führen. Das Notebook enthält Schritt-für-Schritt-Anleitungen zum Ausführen des Codes, und das GitHub-Repository bietet Zugriff auf mehrere exklusive Projekte für Patreon-Unterstützer, die fünf Dollar im Monat spenden. Der Moderator erklärt auch, wie Sie die erforderlichen Abhängigkeiten installieren und den erforderlichen Datensatz von Roboflow herunterladen, um ein benutzerdefiniertes Modell für die Nummernschilderkennung zu trainieren. Schließlich zeigt der Moderator die Verwirrungsmatrix, die zeigt, wie gut das Modell mit verschiedenen Klassen umgegangen ist, mit einer Erfolgsquote von 84 % bei der Erkennung von Nummernschildern.

  • 00:05:00 In diesem Abschnitt erörtert der Referent die Ergebnisse des Modells für das Validierungsset, das eine Abnahme des Verlusts und eine Zunahme der mittleren durchschnittlichen Präzision und des Recall-Scores zeigt, wenn die Anzahl der Epochen zunimmt. Der Referent demonstriert auch, wie man das gespeicherte Modell von Google Drive herunterlädt und es auf einem benutzerdefinierten Video validiert, wobei eine mittlere durchschnittliche Genauigkeit von 0,926 mit einem IOU von 50 erreicht wird. Der Schwerpunkt dieses Abschnitts liegt jedoch auf der Implementierung von EasyOCR zum Lesen der Kfz-Kennzeichen von den erkannten Kennzeichen und die an der Datei „predict.py“ vorgenommenen Anpassungen, um das OCR-Lesegerät und die Bildkoordinaten einzubeziehen.

  • 00:10:00 In diesem Abschnitt sehen wir eine Erklärung zur Implementierung der automatischen Nummernschilderkennung mit YOLOv8 und EasyOCR. Das Video erläutert den Prozess des Zuschneidens und Konvertierens des Kennzeichenbildes in Graustufen, um das Lesen des Kennzeichentextes zu erleichtern. Sie zeigen, wie Sie EasyOCR verwenden, um den Text aus dem Graustufenbild des Nummernschilds zu lesen, indem Sie "reader. read_text(gray)" schreiben. Schließlich testen sie das Skript, um festzustellen, ob Fehler auftreten.

  • 00:15:00 In diesem Abschnitt führt der Referent die letzten Schritte zum Ausführen des Nummernschilderkennungsskripts mit den Modellen YOLOv8 und EasyOCR durch. Sie stoßen auf ein paar Fehler im Code, können sie aber beheben und das Skript erfolgreich ausführen. Das Ausgabevideo zeigt beeindruckende Ergebnisse, wobei das Modell Nummernschilder erkennt und Text mit EasyOCR liest. Das Kennzeichenerkennungsskript wird im GitHub-Repo des Sprechers für Patreon-Unterstützer bereitgestellt, aber die Zuschauer können sich weiterhin über die Änderungen informieren, die an der Datei „predict.pi“ im Video vorgenommen wurden, um ähnliche Ergebnisse zu erzielen.
Grund der Beschwerde: