Objekterkennung mit Deep Learning und OpenCV | Yacine Rouizi | Skillshare

Playback-Geschwindigkeit


1.0x


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

Objekterkennung mit Deep Learning und OpenCV

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.

      ÜBERSICHT

      1:22

    • 2.

      Installation

      1:40

    • 3.

      Objekterkennung in Bildern

      14:10

    • 4.

      Objekterkennung in Videos

      4:41

  • --
  • 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.

63

Teilnehmer:innen

--

Projekt

Über diesen Kurs

In diesem Kurs werden wir sehen, wie man Objekte in Bildern und Videos mithilfe von Deep Learning und OpenCV entdeckt.

Wir verwenden das Single kombiniert mit der MobileNet als unseren Deep learning-based Objektdetektor.

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: Beginner

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. ÜBERSICHT: Hallo! In diesem Kurs werden wir sehen, wie Objekte in Bildern und Videos mithilfe von Deep Learning und Open CV erkannt werden. Mein Name ist Yossi und ich werde dein Lehrer in dieser Klasse sein. Ich programmiere seit 2019. Und ich bin der Autor des Vlogs. Wiederhole nicht yourself.org, wo ich jeden Monat über 5.000 Entwicklern helfe jeden Monat über 5.000 Entwicklern , mehr über Python, maschinelles Lernen und Computer Vision zu erfahren . Was ist Objekterkennung? Objekterkennung ist der Prozess des Lokalisierens von Objekten mit Begrenzungsrahmen, einem Bild oder einem Video. Es ist eine der wichtigsten Aufgaben in der Computer Vision. Und es hat viele Anwendungen in verschiedenen Bereichen, wie Überwachung, Personen, Zählen, selbstfahrende Autos usw. Jetzt gibt es einen Unterschied zwischen Objekterkennung und Bildklassifizierung. Objekterkennung ist also im Grunde der Prozess, bei dem Objekte in einem Bild lokalisiert werden. Bei der Bildklassifizierung handelt es sich um den Prozess, bei dem Bildern anhand ihres Inhalts Beschriftungen zugewiesen werden. Also lasst uns in die Klasse und mit dem Aufbau unseres Projekts beginnen. 2. Installation: Das erste, was wir tun müssen, ist die Installation der erforderlichen Pakete, die für die Bildverarbeitung nützlich sind. Also werden wir OpenCV und die Non-Pipe installieren. Beginnen wir zunächst mit OpenCV, öffnen ein neues Terminalfenster und führen den Befehl pip, Install OpenCV polygon aus. In meinem Fall können Sie sehen, dass ich Open CV bereits installiert habe. Anforderung, bereits erfüllt. Aber ich möchte nur eine virtuelle Umgebung schaffen. So kann das Trio sehen, was Sie erhalten, wenn Sie es installiert haben. Erstellen wir also die virtuelle Umgebung. Wir beneiden. Reden wir über Fernsehen. Lassen Sie uns jetzt Open CV vorinstalliert haben. Cv. Hier können Sie sehen, dass OpenCV zusammen mit einem offenen CV ohne Pipe erfolgreich installiert wurde . Also muss ich NumPy nicht installieren. Hier können Sie sehen, dass ich eine offene CV 4.54.5 Version von OpenCV habe und die Version von non pi air 1.22 zu eins ist. 3. Objekterkennung in Bildern: In diesem Video werden wir nun den Single-Shot-Detektor aus der Arbeit in Kombination mit der MobileNet-Architektur als unseren Deep-Learning-basierten Objektdetektor verwenden aus der Arbeit in Kombination mit der MobileNet-Architektur als . Das erste, was wir tun müssen, ist unsere Bibliotheken zu importieren. Also werden wir sagen Import CB2. Und wir können auch unser Bild laden. Also sagen wir hier Marine, der Topf für unser Image. Und wir können es auch skalieren. Wenn wir also CV sagen , um die Größe des Bildes zu ändern, sagen wir 644 der Breite. Und für 84 die Höhe. Lassen Sie uns nun die Höhe aus dem Bild und die Breite ermitteln. Wir würden also nicht Bildpunktform 0 sagen. Und für die Höhe wird Form eins sagen. Jetzt benötigen wir die Gewichte und die Konfigurationsdatei für unser Modell. Sie haben dieses Phi aus der OpenCV-Dokumentation heruntergeladen . Wir haben also zwei Akten hier. Ich werde in der Textversion dieses Teils einen Link zu diesen Leuten setzen . Jetzt, da wir alle Dateien haben, die wir benötigen, können wir unser Modell laden. Also können wir hier unser Netzwerk schreiben. Wir werden also nicht sehen, dass V2 dot DNN dot auf einer Art Flow gelesen wird. Und in der Kopfzeile geben wir die Gewichte und die Konfigurationsdatei an. Also können wir diese beiden Variablen hier nicht schreiben. Wenn Sie sagen, dass das Gewicht gleich ist und wir den Weg zu unserem Gewicht angeben. Das ist also die Datei, die die Gewichte für das Modell enthält . Man kann Modell sagen. Dies ist die Architektur unseres Modells. Was wir jetzt tun können, ist das, also hier haben wir die Cocoa-Namensdatei. Wenn du es hier in das Projekt steckst. Im Grunde enthält diese Datei also die Klauseln, die wir erkennen können. So können wir die Datei öffnen und die Klassenbezeichnungen in der Liste installieren . Wir können den Context Manager für Erwachsene verwenden, also sagen wir mit offen. Und hier bieten wir den Weg zu unserem Kakaonamen in Ordnung. Kopiere es einfach von hier. Hier sagen wir Datei lesen. Hier speichern wir die Klassenbeschriftungen in der Liste, in der wir Namen benennen werden. Also werden wir hier sagen dass Clusternamen einer leeren Liste entsprechen . Hier können wir f, lot, rained, stripped und dots schreiben . Und wir werden uns basierend auf der neuen Linie trennen. Jetzt müssen wir unser Bild vorverarbeiten und wir haben eine Funktion, die die gesamte Vorverarbeitung für uns erledigt. Also können wir hier sagen, blob ist gleich c v2 dot DNN. Und hier werden wir das funktionale Hüllkurvenbild verwenden. Hier stellen wir unser Bild zur Verfügung. Und jetzt haben wir hier ein paar Parameter, die standardmäßig eingestellt sind. Diese sind der Dokumentation zu entnehmen. Also im Grunde ist hier der erste der Skalierungsfaktor. Wir können 1 setzen, wir teilen durch 127,5. Und dann haben wir hier die Größe für das Ausgabebild. Wir können nicht 320 schreiben. Und das letzte Argument hier sind die Mittel der Produktionswerte. Wir können jetzt eins zu eins auf 7.5 schreiben. Das Gleiche hier und das Gleiche hier. Als nächstes können wir den, diesen Blob als Eingabe für das Netzwerk setzen diesen Blob als Eingabe für und die Ausgabevorhersage erhalten. Also können wir hier sagen, nicht viel. Eingabe. Und wir werden unseren Blob zur Verfügung stellen. Um die Vorhersage zu treffen. Wir werden sagen, dass die Ausgabe gleich vier ist. Jetzt haben wir unsere Vorhersagen. Lassen Sie uns also die Form dieser Variablen ausdrucken. Wir werden sagen, dass die Ausgabeform darin besteht, unseren Code zu schreiben. Wie Sie sehen können, haben wir hier eine Form von 11107. Also hier haben wir die Entdeckungen, die Haare sieben, wir haben die Bounding Boxes, das Vertrauen und einige andere Informationen. Was wir jetzt tun können, können wir diese Variable durchgehen, um die Erkennungen zu erhalten. Wir werden also für die Erkennung in der Ausgabe sagen. Hier sagen wir 00. Und hier nehmen wir alles. Und hier nehmen wir auch alles mit. Jetzt erhalten wir hier das Vertrauen des Modells für die aktuelle Erkennung. Wir können also sagen, dass Pro Really t dem zweiten Argument aus dem zweiten Element unserer Entdeckung entspricht dem zweiten Argument . Jetzt können wir die Fehlererkennungen filtern. Wir können jetzt binden, wenn unsere Wahrscheinlichkeit oder das Vertrauen des Modells beispielsweise unter 0,5 liegt , wir werden weiter schleifen. Also werden wir nichts tun. Und wenn nicht, holen wir uns den Begrenzungsrahmen von der Entdeckung. Die Begrenzungsbox befindet sich also. Sie können die Erkennung von drei bis sieben sehen. Nun, dieser Begrenzungsrahmen, oder relativ in Bezug auf die Breite und die Höhe des Bildes gegeben . Drucken wir also unsere Schachtel aus. Und die Haare. Wie Sie sehen können, haben wir 0.30.350.5. Wir müssen sie also mit der Breite und der Höhe des Bildes multiplizieren sie also mit der Breite und der Höhe des , um die tatsächlichen x - und y-Koordinaten des Begrenzungsrahmens zu erhalten . Hallo, was wir tun können, wir können die Zip-Funktion verwenden und wir werden kein Listenverständnis schreiben. Wenn wir also die ZIP schreiben, nehmen wir die Erkennungen von drei auf sieben. Und das zweite Argument hier geben wir die Breite, die Höhe, die Breite und die Höhe an. Und hier sagen wir Für a, b in dieser Zip-Funktion nehmen wir die Multiplikation dieser beiden Elemente. Hier. Die erste Koordinate ist das x der oberen linken Ecke des Begrenzungsrahmens. Wir multiplizieren es mit der Breite. Dann haben wir das y. Wir multiplizieren es mit der Höhe. Und dann haben wir das x unten, rechts mal die Breite. Und dann die Y-Koordinaten unten, rechts mal die Höhe. Also brauchen wir das nicht mehr. Und wir müssen unsere Liste auch in ein Tupel umwandeln. Jetzt können wir die Rechtecke zeichnen, also sagen wir c v2 Punktrechteck. Hier. Lass mich Bild sagen. Für die Koordinaten des Rechtecks verwenden wir den Begrenzungsrahmen. Nehmen wir als Ausgangspunkt die ersten beiden Elemente aus der Begrenzungsbox. Dann werden wir hier die letzten beiden Elemente sagen. Der Grund für den Aufruf zur Dicke. Lassen Sie uns nun die Cluster-ID des erkannten Objekts extrahieren und die Klassenbezeichnung abrufen. Also können wir in Ordnung sein, Klassen-ID ist gleich und hier die Cluster-ID. Wir können so darauf zugreifen. Für den Klassennamen können wir hier das Label schreiben. Die Bezeichnung, die der Textpunkt ist, den wir in das Bild einfügen werden, das wir schreiben werden, entspricht einer f-Zeichenfolge. Das erste Element. Wir nehmen das Klassenlabel. Wir haben also unsere Klassennamen. Und unsere Klassennamen sind eine Liste. Es beginnt bei 0. Wir müssen also einen von der Cluster-ID subtrahieren. Also schreiben wir die Zulassungs-ID und subtrahieren eine. Jetzt können wir auch hören, wie die Wahrscheinlichkeit zusammen mit den Klassenbeschriftungen angezeigt wird . Also sagen wir Wahrscheinlichkeit mal 100. Und schließlich können wir unseren Text auf das Bild zeichnen. Wir werden also sagen, dass Lebenslauf angenommen werden soll, Text hier einfügen, Bild. Hier für den Text haben wir das Etikett für den Ursprung. Wir können unsere Boxen benutzen. Also 0 hier und die Box eins. Aber hier fügen wir einige Pixel , um sicherzustellen, dass sich der Text innerhalb des Begrenzungsrahmens befindet. Fügen wir 15 Pixel hinzu. Jetzt können wir für die Schrift die Schrift verwenden. Sucht einfach nach der Haut, sagen wir 0,5 grüne Farbe. Und zwei, für die Dicke. Ich denke, wir sind fertig, damit wir unser Bild zeigen können. Also sagen wir V2 Punkt IM zeige Bild und Bild. Und CB2-Punktgewicht 0. Lass uns unseren Code ausführen. Und hier wird der Begrenzungsrahmen nicht angezeigt. Hier müssen wir die letzten beiden Elemente in der Begrenzungsbox nehmen . Wenn wir das noch einmal ausführen, wurde die Person hier, wie Sie sehen können , erkannt, aber hier ist der Text etwas komisch. Wir können uns ändern. Die Schrift wird sagen, Frauen sagen hier. Auf Tertiär sieht es einfach aus. Wie Sie sehen können, wurde die Person hier korrekt erkannt. Und hier haben wir das Vertrauen, das bei 78% liegt 4. Objekterkennung in Videos: Fahren wir nun mit dem nächsten Schritt fort, nämlich Objekte in einem Video zu erkennen. Also hier müssen wir zuerst die Videoaufnahme initialisieren. Wir werden schreiben, dass v d u gleich CV ist , um die Videoaufnahme zu übernehmen. Und hier habe ich ein Video , das ich in diesem Beispiel verwenden werde . Also werden wir hier schreiben, sagen wir wiederholen einen Punkt mp4. Jetzt bleibt hier alles beim Alten. Aber zweitens kann es eine Liste zufälliger Farben erstellen , um jede Klasse darzustellen. Also können wir jetzt hier schreiben. Zuerst müssen wir numpy importieren. Und hier brauchen wir diese beiden Pakete eigentlich nicht. Also hier werden wir einen zufälligen Seed ohne Pi-Punkt für T2 und T4 schreiben . Die Farben werden wir sagen, nicht pi, nicht um sie herum. der Nähe. Für den niedrigen Wert sagen wir 0 und für den hohen Wert 255. Es werden also Werte zwischen diesen beiden Werten generiert. Die Größe, die wir verwenden werden, ist die Länge unserer Klassennamen. Und hier werden wir drei sagen , um die RGB-Farben zu erzeugen. Als nächstes können wir mit der Verarbeitung unserer Forams beginnen. Also zwar wahr. Und hier werden wir ein Up-Frames machen. Also werden wir hier sagen, warum das stimmt. Wenn der Becher und wenn wir das in die ganze Schleife legen. Hier haben wir uns vorgenommen, um die Höhe unserer Rahmen zu ermitteln. Also für ihn, nicht geformt 0. Und auch die Breite und die Haare, alles bleibt beim Alten. Wir werden also Frame sagen hören. Das einzige, was wir tun wollen, ist das Farbforum zu bekommen, die aktuelle Erkennung. Wir werden also sagen, dass Farben gleich unseren sind. Und hier müssen wir die ID der Entdeckung angeben. Also können wir diese Linie vor den Parkplatz stellen. Und hier können wir Klasse sagen. Jetzt müssen wir die Farbe in eine Ganzzahl umwandeln. Wir werden also sagen, dass r gleich der Ganzzahl der Farbe ist , der ersten Farbe. Das Gleiche gilt für die BGF. Und die Kopfzeile, wir können unsere benutzerdefinierte Farbe verwenden. Wir sagen B, G und R. Und hier der Name und Rahmen. Und hier müssen wir einen für eine Millisekunde für das Gewicht k verwenden , sonst wird unser Rahmen eingefroren. Also können wir jetzt unseren Code ausführen. Also los geht's. Unser Auto wurde auf dem Video erfolgreich erkannt. Jetzt können Sie verschiedene Videos verwenden, um zu sehen, ob dies Dies wird gut funktionieren. Aber ich hoffe, dass Sie auf die Idee der Objekterkennung kommen.