Computervision mit Deep Learning und OpenCV: Lernen Sie, wie man Lächeln erkennt | Yacine Rouizi | Skillshare

Playback-Geschwindigkeit


1.0x


  • 0.5x
  • 0.75x
  • 1x (normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Computervision mit Deep Learning und OpenCV: Lernen Sie, wie man Lächeln erkennt

teacher avatar Yacine Rouizi

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Einheiten dieses Kurses

    • 1.

      Einführung

      1:53

    • 2.

      Installation

      1:33

    • 3.

      Laden der Daten

      17:15

    • 4.

      Training des Smile

      14:41

    • 5.

      Anwendung unseres Smile auf Bilder

      12:58

    • 6.

      Anwendung unseres Smile auf Videos

      4:56

    • 7.

      Schlussbemerkung

      1:37

  • --
  • Anfänger-Niveau
  • Fortgeschrittenes Niveau
  • Fortgeschrittenes Niveau
  • Jedes Niveau

Von der Community generiert

Das Niveau wird anhand der mehrheitlichen Meinung der Teilnehmer:innen bestimmt, die diesen Kurs bewertet haben. Bis das Feedback von mindestens 5 Teilnehmer:innen eingegangen ist, wird die Empfehlung der Kursleiter:innen angezeigt.

89

Teilnehmer:innen

--

Projekt

Über diesen Kurs

In diesem Kurs erstellen wir eine course, die Lächeln in Bildern und Videos erkennen kann.

Dafür nutzen wir Deep Learning und beginnen mit der Schulung eines revolutionären neuronalen Netzwerks im that, der Gesichter von Menschen enthält, die lächeln und nicht lächeln. Sobald das Netzwerk ausgebildet ist, gehen wir durch die folgenden Schritte, um Lächeln in Bildern und Videos zu erkennen:

  1. Wir verwenden Haar um ein Gesicht in einem Bild zu erkennen.
  2. Wir extrahieren dann die Gesichtsregion aus dem Bild.
  3. dann werden wir die Gesichtsregion zum Klassifizieren an das Netzwerk weitergeben.
  4. Und schließlich werden wir das Bild mit dem Label "lächelnd" oder "nicht lächelnd" in Abhängigkeit von der Ausgabe des Netzwerks kommentieren.

Dieser Kurs wurde für intermediäre Python-Programmierer entwickelt, die sich mit Deep Learning und Computervision vertraut machen.

Am Ende dieses Kurses hast du eine voll funktionsfähige course, die du in deinen eigenen Projekten verwenden kannst.

Triff deine:n Kursleiter:in

Teacher Profile Image

Yacine Rouizi

Kursleiter:in

Hi! My name is Yacine Rouizi. I have a Master's level in physics of materials and components and I am a passionate self-taught programmer. I've been programming since 2019 and I teach on my blog about programming, machine learning, and computer vision.

My goal is to make learning accessible to everyone and simplify complex topics, such as computer vision and deep learning, by following a hands-on approach.

Vollständiges Profil ansehen

Level: Intermediate

Kursbewertung

Erwartungen erfüllt?
    Voll und ganz!
  • 0%
  • Ja
  • 0%
  • Teils teils
  • 0%
  • Eher nicht
  • 0%

Warum lohnt sich eine Mitgliedschaft bei Skillshare?

Nimm an prämierten Skillshare Original-Kursen teil

Jeder Kurs setzt sich aus kurzen Einheiten und praktischen Übungsprojekten zusammen

Mit deiner Mitgliedschaft unterstützt du die Kursleiter:innen auf Skillshare

Lerne von überall aus

Ob auf dem Weg zur Arbeit, zur Uni oder im Flieger - streame oder lade Kurse herunter mit der Skillshare-App und lerne, wo auch immer du möchtest.

Transkripte

1. Einführung: Willkommen in der Klasse „Vielleicht Erkennung mit Deep Learning“, in der wir eine End-to-End-Anwendung erstellen , die Minen in Bildern und Videos erkennen kann . Mein Name ist Arsin und ich werde dein Lehrer in dieser Klasse sein. Ich programmiere seit 2019. Und ich bin der Autor des Blogs, don't repeat yourself.org, wo ich jeden Monat über 5.000 Entwickler habe , um mehr über Python, maschinelles Lernen und Computer Vision zu erfahren . Die Bildklassifizierung ist eine sehr häufige Aufgabe in der Computer Vision. Es ist eine Aufgabe, bei der Sie eine Reihe von Bildern haben und die Einheit haben, um sie in eine Reihe von Kategorien zu klassifizieren. In diesem Kurs werden wir insbesondere Bilder in zwei Kategorien einteilen. Lächelnd und nickend, lächelnd. Wir werden Deep Learning verwenden und zunächst ein neuronales Faltungsnetzwerk für diesen Minus-Datensatz trainieren , der Gesichter von Menschen enthält, die lächeln und nicht lächeln. Sobald das Netzwerk getrocknet ist, werden wir die folgenden Schritte ausführen, um ein Lächeln in Bildern und Videos zu erkennen. Wir werden die harten Kaskaden verwenden, um ein Gesicht, ein Bild, zu erkennen. Wir werden dann den Gesichtsbereich aus dem Bild extrahieren. Dann werden wir die Gesichtsregion zur Klassifizierung an das Netzwerk übergeben . Und schließlich werden wir das Bild mit dem Etikett versehen , das je nach Ausgabe des Netzwerks lächelt oder nicht lächelt . Wenn das aufregend klingt, dann gehen wir in die Klasse und beginnen mit der Entwicklung unserer Geruchserkennungsanwendung. 2. Installation: In diesem ersten Video werden wir sehen, wie die erforderlichen Pakete für dieses Projekt installiert werden. Sie können die Datei requirements.txt aus dem Quellcode entnehmen und installieren, was darin enthalten ist. Oder wenn Sie mir folgen, können Sie eine neue Datei im Projektverzeichnis erstellen. Wir nennen es require's dxdy und fügen die für dieses Projekt benötigten Bibliotheken ein. Also brauchen wir Num Pi. Wir haben gemacht, wie Radfahrer OpenCV lernen. Wir brauchen auch Schlammgerinnsel. Dann brauchen wir endlich, jetzt speichern wir die Datei. Und aus der Terminologie, die wir Text für die Stromversorgungsanforderungen gelernt haben aus dem Text für die Stromversorgungsanforderungen gelernt haben. In meinem Fall sind die Pakete bereits installiert. Hier können wir also sehen, dass die Anforderung alle diese Bibliotheken bereits erfüllt hat. Aber in Ihrem Fall werden Sie sehen, dass die Pakete installiert werden. Und es kann einige Zeit dauern , bis alle installiert sind. 3. Laden der Daten: In diesem Video werden wir diese Mäuse laden. Der Mäuse-Datensatz enthält mehr als 13.000 Graustufenbilder von 64 mal 64 Pixeln in der Krise. lächeln und sie lächeln nicht. Für die nicht lächelnden Gesichter haben wir mehr als 9.000 Bilder. Und für die lächelnden Gesichter haben wir 3.690 Bilder. Das Doctype-Set ist also unausgewogen, was bedeutet, dass es eine gleichmäßige Verteilung der Bilder gibt . Eine gängige Technik für den Umgang mit einem unausgeglichenen Datensatz ist das Anwenden des Klassenwartens. Wir werden sehen, wie das geht , wenn wir unser Modell bauen. Also werden wir zuerst den Datensatz herunterladen. Sie können zu dieser URL navigieren, um sie herunterzuladen. Also klicken wir auf die Schaltfläche Aufnehmen und laden sie im Zip-Format herunter. Wenn die Datei heruntergeladen wurde, entpacken wir sie. Wir löschen diese Datei. Und unser Datensatz ist in diesem Formel-you-smiles-Ordner enthalten. Hier haben wir also zwei Unterordner, positive und negative. Dieser enthält Bilder von Gesichtern mit einem Lächeln, wie Sie hier sehen können. Und der Inhalt des Negative-Ordners, Bilder von nicht lächelnden. Wie Sie sehen können, sind die Bilder in Graustufen und etwas mehr 64 mal 64 groß. Normalerweise können wir unser Modell also mit Kanalproblemen trainieren. Es sollte nicht viele Ressourcen verbrauchen. Vergessen Sie nicht, den Ordner in das Projektverzeichnis zu kopieren. Jetzt können wir unseren Datensatz daraus laden. Beginnen wir also damit, die notwendigen Pakete zu importieren. Wir werden zuerst eine neue Python-Datei erstellen, die Punkt p-y trainiert. Wir beginnen mit dem Import der Zugtest-Split-Funktion aus der scikit-learn got wandering-Auswahl. Heute und in dieser Aufteilung werden wir es verwenden, um unseren Datensatz in einen Trainingssatz, einen Validierungssatz und einen Testsatz aufzuteilen . Dann haben wir die Bild-Array-Funktion. Also keine Impulse in meinem Bild oder Bild zu Array. Und dann haben wir von TensorFlow keras dot load in range, dem wir ein Bild daraus laden werden. Als nächstes haben wir das sequentielle Modell. Also von Flow Keras servieren , sequentiell. Und dann brauchen wir ein paar Anwälte. Wir werden also TensorFlow haben. Keras, Schichten kommen zum Jahr. Dann haben wir den Mönchspool, dann haben wir die abgeflachte Schicht und schließlich die dichte Schicht. Wir brauchen auch das pyplot-Modul, numpy und das OS-Paket. Importieren wir sie also auch. Und jetzt können wir unseren Datensatz laden. Erstellen wir also eine Funktion namens image parts, die den Bot als Argument zum Datensatz bringt. Und es wird die Liste der Pfade zu den Bildern im Datensatz zurückgegeben . Wir können also zuerst eine Liste mit gültigen Erweiterungen erstellen. Wir werden also sagen, dass gültige Formate gleich sind. Gpg wird P und G enthalten . Im Grunde werden wir diese Liste verwenden , um zu überprüfen, ob es sich bei der Dateiendung um ein Bild handelt. Und als Nächstes erstellen wir eine leere Liste namens Bildteile. Entspricht einer leeren Liste, die die Teile der Bilder im Datensatz enthalten wird. Als nächstes schauen wir uns den Wurzelverzeichnisbaum an. Sagen wir mal für deine Pod-Namen in der Wand. Und hier ist der Pfad der Pfad zum aktuellen Verzeichnis im Baum. Und ihre Namen gehören den Unterverzeichnissen des aktuellen Verzeichnisses in den drei, und die fünf Namen sind die Dateien im aktuellen Verzeichnis. Fangen wir also mit dem Drucken an. Hier ist mein Harris und wir werden sehen, was ich hier sagen werde. Ihr habt viele Pflanzen. Hier geht's direkt von diesem leichten Axon. Wir werden unser Skript ausführen. Die Ausgabe hier sind also alle Unterverzeichnisse des smiles-Verzeichnisses. Wie Sie sehen können, haben wir die negativen, positiven, die hier sind, und dann die negativen sieben, positiven, sieben, die hier sind. Und hier. Jetzt werden wir über die letzte Iris schleifen. Also werden wir für Namen in Namen schreiben. Drucken wir auch die Pfeife und den letzten Teil aus, um zu sehen, was los ist. Damit wir schreiben können, dass Sie Ihrem eigenen Farbskript sind. Wie Sie sehen können, haben wir hier diesen Verzeichnis-Topf und dann dieses feine Korn. Und dann hat diese Ebene tatsächlich diesen Dateinamen gekauft , der ein Bild ist, und so weiter. Was wir jetzt tun können, ist die Dateierweiterung zu extrahieren, die entweder This oder this ist, und sie mit unserer, zu dieser Liste zu vergleichen, um zu überprüfen, ob der Dateiname ein Bild ist. Also werden wir hier eine Erweiterung schreiben. Sie möchten Text teilen. Wir geben einen guten Namen. Noah. Dann schreiben wir unsere Erweiterung in die Liste der gültigen Formate. Wir werden den vollständigen Pfad zu unserem Image aufbauen. Wir werden also sagen, dass der Bildteil dem OS Punkt, Punkt, Punkt Join entspricht . Und hier werden wir den Verzeichnisteil beitreten , der dieser ist. Wir definieren den Namen hier Teil. Mit der Finanzierung für dieses besondere Bild. Der vollständige Name des Bildes ist dieser. Und wir müssen auch unser Bild zwei, unsere Liste, anhängen. Wir sind mit dieser Funktion fertig. Gerade Bildteile geschrieben. Bei dieser Funktion haben wir jetzt den vollständigen Pfad zu jedem Bild im Datensatz, der in einer Liste gespeichert ist. Der nächste Schritt besteht also darin, diese Bildteile zu verwenden und den intelligentesten Datensatz zu laden. Wir können also sagen, wir werden eine neue Funktion erstellen. Nennen Sie es Wägezelle. Und hier werden wir zwei Argumente vorbringen. Der erste sind die Bildteile, und der zweite ist die Zielgröße der Bilder. Wir definieren es hier. Nehmen wir an, die Bildgröße entspricht 3232. Bildkörperbild-Pfade. Jetzt können wir zwei leere Listen erstellen. Zuerst werden wir es die Stadt nennen, die die Bilder enthalten wird. Und dann lesen wir es. Das können auch die benannten Beschriftungen, die die Bezeichnung für jedes Bild enthalten , lächelnd oder nicht lächelnd. Als nächstes holen wir uns zunächst die Bilder. Wir können also eine Schleife über die Bildteile ziehen. Wir werden für Image-Teil-Pods sagen. Hier schreiben wir image is equal to, wir werden unser Bild mit der Funktion load image laden. Hier ist das erste Argument der Weg zu unserem Bild. Und dann haben wir den Farbmodus, der Graustufen ist. Und dann ist das letzte Argument die Zielgröße, die wir unsere Zielgröße verwenden können. Als Nächstes müssen wir unser Bild in ein NumPy-Array konvertieren. Wir schreiben einfach Bild zwei. Und schließlich hängen wir unser Bild an die Daten an. Also hier sind wir fertig mit den Bildern. Wir können jetzt die Labels holen. Um das Etikett zu erhalten, können wir es aus dem Bild extrahieren. Aber so drucken wir zum Beispiel hier die Bildteile aus. Und wir werden sagen: Mal sehen, was wir bekommen. Die Daten. Bild-Box bereitstellen. Wie Sie sehen können, haben wir den Bot für jedes Bild in unserem Datensatz. Hier ist zum Beispiel der vollständige Pfad zu diesem bestimmten Bild. Wenn wir also den vollständigen Teil übernehmen, können wir das Etikett aus diesem Teil extrahieren, was hier positiv ist. Für dieses spezielle Bild lächelt die Person. Wir haben ein lächelndes Gesicht auf diesem Bild. Um das Etikett zu bekommen, finden wir hier diese Zeile. Und wir schreiben Label ist gleich Bildbindung und bilden das Bild, aber wir werden es basierend auf dem Verzeichnistrennzeichen aufteilen, das hier dieses Trennzeichen ist. Und wir werden den dritten vom Ende nehmen. Das ist also der erste, minus eins, minus zwei und minus drei. Also hier werden wir das Etikett bekommen, das gleich zwei Positiven ist. Jetzt werden wir sagen, wenn unser Label zwei positiven Werten entspricht, werden wir es als eins codieren. Also werden wir einen schreiben. Wenn num gleich positiv ist, werden wir andernfalls codieren, dass es 0 hat. Schließlich fügen wir unser Label an unsere Liste an. Der letzte Schritt besteht darin, einfach die Daten, die Liste und die Liste zurückzugeben. Wir stellen sicher, dass sie in ein NumPy-Array konvertiert werden. Wir werden sagen, gib num pi dot zurück, schreibe die oberen und die nicht-pi-Punkt-Beschriftungen neu. Wir hören auch, dass die Daten auf den Bereich 01 skaliert werden müssen , indem sie durch 255 dividiert werden. Hier bis hier können wir unsere Datentabellen mit unserer Funktion abrufen. 4. Trainieren des Smile: In diesem Teil werden wir unser Modell aufbauen und mit dem Training beginnen. Das Modell, das wir bauen werden, besteht aus Slack-Off to Curve bis zur Plusmarke, die durch die Blogs gespawnt wird, gefolgt von einer vollständig verbundenen Ebene. Wie Sie in diesem Bild sehen können, haben wir diese dünne Schicht als das maximale Pooling auf der Ebene. Und dann das Gleiche hier, C plus max Pooling-Layer. Und dann haben wir den vollständig verbundenen Block , der aus einer abgeflachten Schicht besteht, und dann eine dichte Schicht und weitere Schicht, die wie nach außen warten wird. Erstellen wir also eine Funktion. Wir werden es das Modell nennen. Und es wird die gute Form eines Arguments annehmen, was der durchschnittlichen Wissenschaft entspricht. Glanz eins für eine Kanaldimension. Aber wir müssten uns nicht ändern. In diesem Thema. Wir werden diese Gleichungsmodelle verwenden, damit wir Murmeln schreiben können, wollen sequentiell. Wir werden alle Filter haben, die Drecksarbeit annehmen. Der Gouverneur unterschreibt. Mal sehen, Drei-mal-Drei-Größe. Für die Aktivierung zur Beobachtungsfunktion. Oder die Kreuzzüge. Gleiche gute Verfassung. Wir werden Alarm Max-Pooling im Urlaub verwenden, die wir kurz für meinen Job verwenden werden. Und dann dasselbe mit der Flüssigkeitsverlustschicht der Filter. Wir werden die Anzahl der Filter verdoppeln. Und dann die abgeflachte Schicht. Mit 256. Du bist ehrlich. Und für die Aktivierung der Ausgangsschicht. Haben wir. Da wir es mit dem Problem der binären Klassifizierung zu tun haben, verwenden wir die Sigmoid-Aktivierungsfunktion und senden Ihnen alle. Du bist also einer für das Aktivierungssignal. Lassen Sie uns auch unser Modell kompilieren. Also werden wir die Verlustfunktion modellieren dot kompilieren. Natürlich nehmen wir das binäre Kreuz beim Kopieren. Das Optimum ist 0. Sagen wir Optimierer oder die Metriken. Nimm wirklich den Parker Awesome. Als nächstes müssen wir die Klassengewichte berechnen. Wie ich bereits sagte, ist unser Datensatz unausgewogen. Wir müssen also dem unterrepräsentierten Glas mehr Gewicht beimessen. In diesem Fall lächelnd plus, damit das Modell diesem Glas mehr Aufmerksamkeit schenkt. Wir können beginnen, indem wir die Nummer jedes Labels mit der Funktion numpy dot unique enthalten . Also sagen wir, ich habe vergessen, das Modell zurückzugeben. Also im Gegenzug das Modell, und wir werden sagen, dass Label Counts der Aufruf von non pi ist. Was auf dem Kopf steht, werden wir mit unseren Labels sein und wir werden sagen zurück, stimmt. Die Rückgabespalten entsprechen show, um die Anzahl der einzelnen Beschriftungen zurückzugeben. Drucken wir die aus. Wir werden sagen, dass wir kein Problem mit Produkten haben werden. Haben wir. Geht hier hin, da wir nicht beschriften müssen, sind alle Beschriftungen auf 0 gesetzt. Jetzt sind wir also bei unserem Drehbuch. Hier. Wie Sie sehen können, haben wir eine beschriftete 01 gebildet, die lächelt oder nicht lächelt. Und für die Zählvariable haben wir 9.475. Entfalten Sie diese Futterschicht. Wir haben 3.690. Jetzt müssen wir also die Klassengewichte berechnen. Dafür. Wir können eine einfachere Operation gebrauchen. Also können wir hier schreiben zählt. Die neuen Konten entsprechen den maximalen Zählungen, die hier sind, und wir teilen sie durch die vorherigen Zählungen. Verschieben wir diese beiden Variablen erneut. Also hier, wie Sie sehen können, ist das Plus MyInt plus plus hat die Gewichte um 0,56 größer als die plus 0. Lassen Sie uns ein Wörterbuch erstellen , das jede Klasse mit ihrem Gewicht abbildet. So können wir schreiben plus Gewicht ist gleich. Wir verwenden die Zip-Funktion. Also das Wörterbuch. Jetzt müssen wir ein Trainingsset, ein Validierungsset und ein Testset erstellen . Wir werden 20% der Daten verwenden, um dieses Set zu beten. Und von den verbleibenden 80% werden wir 20 Prozent für die Erstellung des Validierungssatzes benötigen. Fangen wir also mit dem Testset an. Wir werden dafür die Zugtest-Split-Funktion verwenden. Also hat uns gefallen, dass es versucht, unseren Tag zu versorgen. Und dann folgt mit dieser Größe werden 20 Prozent dauern. Sag, starte den Herbst. Sie folgen ihrer eigenen Demonstration. Oder zu tun. Das Gleiche gilt für den Validierungssatz. Wir haben einfach kopiert und eingefügt. Belastung. Langsam abtropfen lassen Wir bieten. Richtig. Jetzt sind wir bereit, unsere Modelle zu trainieren. Also werden wir das Modell zunächst schriftlich erstellen. Das Modell entspricht dem Modul. Und wir werden das Modell für die 20. Box trainieren. Die Box ist also gleich eins. Kunsthistoriker ist das Quantil würde sagen, es ist das Wunder, warum heute. Der Validierungsdaten-Validierungssatz. Und wir müssen das Plusgewicht für die Chargengröße verwenden das Plusgewicht . Sag 64. Entfaltete die Schachtel, eine Schachtel. Speichern wir das Modell auch für später. So können wir einfach schreiben, dass man nicht sagt und wir werden es benennen, wird einem Glanz schaden. Wartet und wartet auf die Startdatei. Wir benutzen den heute. Also willkommen. Das Training sollte nicht zu lange dauern Sie können also warten, bis das Training beendet ist. So wie Sie sehen können, was unsere Fitnessstudios rund 90 Prozent ausmachen. Aber lassen Sie uns die Lernkurven zeichnen , um unsere Ergebnisse zu visualisieren. Also kopiere ich einfach den Code von hier. Es gibt nichts besonderes. Hier. Wir zeichnen nur die Trainingsgenauigkeit, die Validierungsgenauigkeit. Und dann haben wir den Trainingsverlust und die Validierung. Lassen Sie uns das Skript erneut ausführen. Hier haben wir also den Trainingsverlust, und hier haben wir die Genauigkeit der Trainingsvalidierung von ungefähr 1, 2%. Was Sie feststellen können, dass die Trainings- und Validierungsgenauigkeit ungefähr hier, dann beginnen zu divergieren. Das ist also ein Zeichen von Überanpassung. Wir können die Genauigkeit unseres Modells verbessern , indem wir die Datenerweiterung verwenden. Aber ich werde es in dieser Klasse nicht behandeln. Bewerten wir also unser Modell im Testset. Und wir können unser Modell auf Zusammenfassungen oder welche Bilder anwenden. Also dieser Verlust Genauigkeit. Es gibt ein Quantildiagramm bei dem das Testset verwendet wird. Hier haben wir kürzlich während des Verlust-Operators , Awesome. Wir haben also ein Gras, es ist ungefähr eins zu Person. 5. Anwendung unseres Smile auf Bilder: Jetzt, wo unser Modell trainiert ist, werden wir es auf einige reale Bilder anwenden. Erstellen wir also eine neue Python-Datei. Wir werden es Lächeln, Detektorbild, PY nennen. Und wir können anfangen, Code zu schreiben. Also werden wir oft importieren, sagen v. Dann haben wir von diesen Modellen. Load-Funktion. Brauche auch. Als Nächstes definieren wir einige Variablen. Also werden wir gutschreiben, dass die Breite gleich 800 ist. Nehmen wir an, die Höhe entspricht 600. Wir erstellen auch die blaue Farbe, also entspricht sie 5500. Und jetzt können wir unser Bild laden. Also hier habe ich einen Ordner mit ein paar Bildern. Ich kopiere es einfach von hier. Ich habe zehn Bilder. Wir nehmen das erste, unsere Modelle. Wir werden also mögen, dass das Bild einem Lebenslauf entspricht, der zu hoch ist. Bilder. Wir haben die erste Ahnung. Sie müssen auch die Größe ändern. Wir werden also das TV-Tool mögen, Bildgröße ändern und die Breite und Höhe verwenden. Und schließlich haben wir zu sehr albern konvertiert, um CBT nicht den Haar-Lebenslauf zu konvertieren, um zu lesen, dass Sie grau werden müssen. Als Nächstes können wir mit dem Haar-Kaskaden-Klassifikator Gesichter erkennen . Also hier habe ich unser kaskadiertes Standard-XML für die Frontfläche definiert . Also werde ich es einfach hier platzieren, das Projektverzeichnis, und wir können es mit der Funktion CV laden , um den Kaskadenklassifizierer zu übernehmen. Also schreiben wir, dass unser Gesichtsdetektor gleich CV to Cascade Classifier ist . Und hier geben wir den Namen an, von dem wir auch unser Modell laden müssen . Wir werden also sagen, dass mehr als dem Modell entspricht. Hier haben wir den Namen unseres Modells, der mehr als ist. Jetzt können wir Gesichter mit der Funktion Multiscale erkennen erkennen. So wie diese Rechtecke unserem Gesichtsdetektor entsprechen. Für das erste Argument stellen wir unser Graustufenbild zur Verfügung, und dann haben wir das maßstabsgetäuschte Auto. Wir werden es als 1.1 bezeichnen. Dann müssen wir die Mindestnachbarn definieren, als die wir es angeben können. Diese Parameter funktionieren. Gut in meinem Fall, aber du kannst sie ändern, wenn du willst. Also hier enthält die Variable face rectangles die Flächenbegrenzungsrahmen. Der nächste Schritt besteht also darin, eine Schleife über die Begrenzungsrahmen der Fläche zu ziehen und den Gesichtsbereich zu extrahieren. Wir sagen für x, y, Breite und Höhe. In unserem Fall. Hier werden wir zuerst ein Rechteck um das Gesicht legen. Also wir, wir mögen TV2.com. Hier. Wir kennen unser Image. Und wir werden die MSDN-Konten angeben, die x und y sind. Und dann haben wir zwei verschiedene diagonale Risse, die x plus y plus wären. Und dann haben wir die Farbe Blau und zwei für die Dicke. Und in der nächsten Woche starten Sie die Gesichtsregion aus dem Graustufenbild. Wir haben die Koordinaten des Gesichts hier. Also schreiben wir unserem Helden warum? Der Anruf bei Ray. Und wir werden einfach Slicing verwenden. Wir werden also von y nach y plus x. X plus Breite entstehen . Wir müssen auch die Größe des Gesichtsbereichs ändern und auf 01 branch skalieren , bevor wir ihn unserem Modell zuführen. Also werden wir lügen oder y ist gleich CV , um die Größe anzudocken. Hier lernen wir , es auf 32 mal 32 zu dimensionieren da wir damit unser Modell trainieren. Hier für die Bildgröße haben wir 32 mal 32. Dann skalieren wir es auf 01, Zweig Zwei, 55. Wir müssen das Bild auch zu einem Stapel hinzufügen. werden wir, denn hier die Bildform von zweiunddreißig. Zweiunddreißig. Unser Modell wurde anhand von Bildstapeln trainiert. Die neue Form entspricht also T2, T2 mal T2. Also schreiben wir y ist gleich y. Und wir werden die Funktion non-piped dot verwenden, neuer Zugriff auf diese neue Achse, y-Achse. Und wir werden hier alles beim Alten belassen. Sie können hier das Vorher und Nachher drucken , um zu sehen, was sich hier geändert hat. Die Form. Das Gleiche hier. Hier haben wir einen oder zwei Attributfehler. In den USA ist ein Großbuchstabe. Hier. Wie Sie sehen können, ist ich vor dem Hinzufügen der neuen Achse 32 mal 32. Und nachdem Sie hier die u-Achse hinzugefügt haben, Econ 132 mal 32. Jetzt besteht der letzte Schritt darin, die Region des Gesichts zu passieren , um nicht zu funktionieren. Zur Klassifizierung. Wir entfernen niemals. Wir werden schreiben welche Vorhersage dem vorhersagenden Pfeil entspricht , und lassen uns das Wörterbuch drucken. Normalerweise hat die Vorhersage also einen Wert zwischen 0,1. Hier. Sie können hier den Wert der Vorhersage für dieses bestimmte Bild sehen. Die Prognose ist 0,6. Was wir jetzt tun können , ist , dass unser Label beispielsweise gleich ist, wenn die Vorhersage größer oder gleich 0,5 ist, erstellen wir das Label auf, wir setzen das Etikett auf lächelnd. Sonst setzen wir es so, dass es nicht lächelt. Also werden wir etikettieren ist gleichbedeutend mit Lächeln. Wenn die Vorhersage größer oder gleich 0,5 ist , sonst nicht lächeln. Das ist in die Nacht hineingezogen. Um nach diesem Fall zu suchen, sollte das Etikett Ihren Prozess damit verbringen damit verbringen, für den Tag zu lächeln. Aber das Letzte, was wir tun müssen, ist den Text und das Bild zu schreiben und das Bild anzuzeigen. Wie ein Lebenslauf. Um das x zu setzen. Hier werden wir Text darauf setzen. Und wir würden gerne die Kennzeichnung und das Bild machen. Für den Text der Koordinaten verwenden wir die Koordinaten des Gesichts. Also sagen wir x plus x und y. Und für die Schriftart kann man das wählen, sagen wir mal diese. Und für die Schriftskala sagen wir 0,75, blaue Farbe. Möglichkeiten zur Ansicht und CB2. Ich bin sicher, wir behalten unsere Kolumne. Die Person lächelt nicht, aber unser Modell hat im Bergbau festgestellt. Natürlich ist unser Modell nicht zu 100% genau, daher ist dies eine positive Prognose. Versuchen wir es mit einem anderen Bild. Sagen wir das hier. Dieses Mal. Ich bin Armando hat die Rutsche erfolgreich vorhergesagt. Wir können es so versuchen, wie die Person ist, ohne zu lächeln. Wir würden also nicht diesen nehmen , der auch mit den anderen Bildern testen kann. Und das ist mit dem Bild. Die Person lächelt nicht. Und unser Modell hat erfolgreich erkannt. 6. Anwendung unseres Smile auf Videos: Sie nun wissen, wie Sie Lächeln-Bilder erkennen können, sagen wir, wie Sie unseren Deep-Learning-Smile-Detektor in zwei Videos anwenden . Erstellen wir also eine neue Python-Datei. Nennen Sie es Lach-Detektor, PY. Und lassen Sie uns die Bibliotheken importieren, damit sich der Code daran nicht wesentlich ändert. Ich werde das einfach kopieren, um es hier einzufügen. Dann haben wir die Breite und die Höhe. Bei der blauen Farbe. Hier müssen wir nur die Videoaufnahmeobjekte initialisieren . Also würden wir deine Tasse erneuern. Sicher ist gleich Lebenslauf zu Videoaufnahme. Hier geben wir den Namen für unser Video an. Hier habe ich ein aufgezeichnetes Video von mir, in dem ich einige Tests gemacht habe. Also werde ich es einfach für diesen Teil des Videos hier verwenden. Ich habe ein paar Tests gemacht und gelächelt und viel Geld. Also hier werden wir den Namen des Videos mp4 setzen. Und dann haben wir das Gleiche. Aus diesem Teil. Wir müssen den Gesichtsdetektor, unser vorab trainiertes Wunder, und wir werden Gesichter erkennen, wobei die Multiskalen-Erkennungsfunktion verloren geht. Also werden wir einfach diese drei Zeilen hier kopieren. Also hier ist unser Wörterbuch. Wir lesen die Frames aus dem Browser, damit wir mit der Verarbeitung unserer Frames beginnen können. Wir können sagen, warum ist wahr. Dann holen wir uns hier das nächste Bild aus dem Video. Also, wenn wir laut Videoaufnahme Frame sagen. Und dann werden wir es in verschiedene Kurven umwandeln, CV in CV, CV in BGR. Und hier können wir die Multiscale-Funktion digs verwenden und sie entlang des Graustufenrahmens weitergeben. Jetzt können wir eine Schleife über die Begrenzungsrahmen der Fläche ziehen. Also kopiere ich einfach den Code von hier, weil hier alles beim Alten bleibt. Ich muss nur hier das Bild ändern, Rahmen. Finde einen neuen Weg. Sie schreiben den Text genauso und wir zeigen unseren Rahmen an. Also kopiere einfach den Code von hier. Wie der Lebenslauf hier in der Kopfzeile aussehen soll hier , würden wir nicht sagen, dass Ihr Lebenslauf aussehen soll Warten Sie, warten Sie eine Minute. Strom ist also gleich q. Okay? Wir brechen aus. Schließlich haben wir die Videoaufnahme und die Fenster veröffentlicht. Sehen wir uns das Endergebnis an. Wir werden Python sagen, drei, Smile-Detektor lesen. Hier sehen Sie also, dass der Algorithmus kein Problem damit hat Lächeln und Lächeln aus dem Video zu erkennen. Die Erkennung ist ziemlich stabil. 7. Schlussbemerkung: In diesem Kurs lernen Sie, wie Sie ein neuronales Faltungsnetzwerk trainieren , um ein Lächeln in Bildern und Videos zu erkennen. Als Erstes müssen wir unseren Datensatz von der Festplatte laden und für unser Netzwerk vorbereiten. Als Nächstes haben wir unser neuronales Netzwerk erstellt. Und hier haben wir das Klassengewicht berechnet , um das Klassenungleichgewicht im Datensatz zu berücksichtigen . Und zwingen Sie das Modell so, unterrepräsentierten Klasse mehr Aufmerksamkeit zu schenken. In diesem Teil teilen wir dann einen Datensatz in einen Trainingssatz, Validierungssatz und einen Testsatz auf und trainieren dann unser Netzwerk. Wir haben gesehen, dass wir beim Testgerät eine Genauigkeit von 90 Prozent erreicht haben. Der letzte Schritt bestand darin, unser Modell in Bildern und Videos zu testen . Dafür verwenden wir hier in diesem Teil einen Haar-Kaskaden-Klassifizierer , um das Gesicht im Bild zu erkennen. Und dann haben wir in diesem Teil hier die Gesichtsregion aus dem Bild extrahiert und die Gesichtsregion zur Vorhersage mit unserem Modell verbunden. Und schließlich haben wir das Bild als lächelnd oder nicht lächelnd bezeichnet .