Gesichtserkennung

Die HuskyLens ist eine KI-Kamera , die sieben verschiedene Computer Vision Algorithmen beinhaltet. Die Kamera wurde von DFRobots entwickelt und bietet einen einfachen Einstieg in die komplexe Thematik der künstlichen Intelligenz.

Kategorie Erweiterung
Schulstufe SEK1
Material HuskyLens,
Micro-USB-Kabel, Grove 4-Pin-Stecker, optional USB-Powerbank, ggf. M3-Schrauben und Muttern zum Befestigen
Schwerpunkte Variablen, Listen, Erweiterungen
+Los geht's

Vorbereitung

Bevor es mit der HuskyLens losgeht, müssen ein paar Dinge vorbereitet werden und die Firmware auf den neuesten Stand gebracht werden.

Verkabelung:

  1. Verbinde die HuskyLens mithilfe des Micro-USB-Kabels (1) mit dem Computer, um im nächsten Schritt die Firmware zu aktualisieren.
  2. Der Calliope mini wird über den Grove-Konnektor A0 mit dem Grove-Port (2) verbunden.
  3. Um die HuskyLens transportabel zu machen, kann sie sowohl über den USB- als auch dem Grove-Port mit 3,3 - 5 V versorgt werden. Es empfiehlt sich, eine USB-Powerbank zu verwenden, um die HuskyLens möglichst lange zu betreiben.

Ein automatischer Schaltkreis sorgt dafür, dass bei gleichzeitiger Grove und USB-Verbindung allerdings nur die Stromversorgung über den USB-Port verwendet wird.

Firmware installieren:

  1. Die neueste Firmware kann mit dem Firmwareuploader auf die HuskyLens geladen werden. Hier klicken zum Herunterladen.

  2. Lade den USB - UART Gerätetreiber herunter, damit die HuskyLens mit dem USB-Kabel verbunden werden kann.
    Hier klicken, um den Treiber herunterzuladen.
    Öffne den Gerätemanager und klicke mit Rechtsklick auf den "SiliconLabs CP210x" USB-Port.

    Klicke auf "Treiber aktualisieren", anschließend auf "auf meinem Computer nach Treiber suchen" und wähle den Downloadpfad des Treibers aus.
  1. Lade die neueste Firmware herunter und öffne den HuskyLens-Uploader.
    Download Firmware

Wähle die Datei aus und klicke auf "Upload".
Nach einer kurzen Zeit ist die Firmware auf die HuskyLens geladen. Jetzt ist sie einsatzbereit!

Alle einzelnen Schritte können in dem Wiki (Englisch) von DFRobots nachgelesen werden.


Gesichter merken/anlernen

Im ersten Schritt wird die HuskyLens angelernt, damit sie später unterschiedliche Gesichter erkennen kann. Mit dem ausgewählten Algorithmus, der in der HuskyLens integriert ist, werden eingelesene Gesichter verarbeitet und die Gesichtserkennung trainiert.

  1. Drücke dazu auf das Rädchen (1) an der HuskyLens und drehe es zur Seite, bis der Algorithmus Gesichtserkennung auftaucht. Drücke das Rädchen (1) erneut, um die Gesichtserkennung auszuwählen.
  1. Alles, was die Kamera als Gesicht identifiziert, wird jetzt mit einem farbigen Rechteck gekennzeichnet. Um mehrere Gesichter gleichzeitig zu erkennen, halte das Rädchen etwas länger gedrückt, bis das zweite Menü auftaucht. Wähle dort Multiple Select aus und speichere die Einstellungen.
  1. Damit die KI sich ein Gesicht merkt, kann der rechte "Lern-Knopf" (2) kurz gedrückt werden, um dem Gesicht eine ID zuzuordnen. Anschließend sollte das Gesicht der gleichen Person als gleiches Gesicht wiedererkannt werden.

Indem der Knopf erneut gedrückt wird, gibt es die Option, das Gesicht wieder zu vergessen. Wenn der Knopf länger gedrückt wird, kann ein Gesicht oder Objekt aus verschiedenen Winkeln und Entfernungen angelernt werden.

Tipp: Suche nach Bildern im Internet, drucke sie aus oder lass die Gesichter deiner Mitschüler:innen anlernen und erkennen. Jedes Mal, wenn statt "Face" ein farbiger Kasten mit einer ID auftaucht, wurde dieses Gesicht bereits gemerkt. Notiere die Namen der Personen in einer Tabelle und ordne sie der jeweiligen ID zu. Diese Zuordnung benötigst du für die Programmierung.


Programm entwickeln

Schaue in den Programmablaufplan und entwickle ein Programm, das…

  • ...eine Liste mit den Namen beinhaltet, die zuvor tabellarisch nach den trainierten Gesichtern aufgeschrieben wurden.
  • ...eine Abfrage, die prüft, ob das Gesicht erkannt wurde und falls ja, den zugehörigen Namen abruft und einen glücklichen Smiley zeigt und falls nicht, einen traurigen Smiley zeigt.
+Tipps und Hilfestellungen

Die grafische Darstellung in Form eines PAP dient als Grundlage der Entwicklung eines Programms. Ein PAP beschreibt den Ablauf und die Zusammenhänge von einzelnen Operationen zur Lösung einer Aufgabe.

PDF

Als erstes muss die HuskyLens Bibliothek importiert werden. Dazu muss in MakeCode auf die fortgeschrittenen Blöcke Erweiterungen geklickt und der folgende Link in die Suchzeile eingegeben werden: https://github.com/calliope-edu/pxt-huskylens

Link kopieren

Jetzt stehen die HuskyLens-Blöcke (orange) in der Bibliothek zur Verfügung.

  1. Um zu starten, muss die HuskyLens erst im Startblock initialisiert und der jeweilige Algorithmus ausgewählt werden - in diesem Fall "Gesichtserkennung".

  2. Um die Daten der HuskyLens für die trainierten Gesichter(IDs) dauerhaft abzurufen, wird der Block "HuskyLens Daten abrufen und in ‘Ergebnis’ speichern" verwendet.

  3. Um die ID des nächstliegenden Gesichtes der Bildmitte der HuskyLens abzufragen, kann der folgende Block verwendet werden.

Denke daran, dass der Index einer Liste immer bei 0 anfängt. Die ID der HuskyLens allerdings immer bei 1!

+Ausprobieren und Weiterentwickeln
  • Sind die HuskyLens und der Calliope mini mit Strom versorgt und richtig mit dem Grove-Kabel verbunden? Ist die Firmware der HuskyLens auf dem neuesten Stand (siehe Los geht's)?
  • Wurde der richtige Algorithmus ausgewählt und konnte mit dem ausgewählten Algorithmus im Editor die Einstellung auf die HuskyLens übertragen werden?
  • Konnten IDs trainiert und abgerufen werden?
  • Wurde der richtige Index ausgewählt, wenn Namen aus Listen über die IDs abgerufen werden? Listen starten bei 0, HuskyLens IDs bei 1.
  • Teste die Kamera aus. Welcher Winkel, welche Belichtung, Distanz und Einstellungen funktionieren gut, welche nicht?
  • Wieviele Gesichter können auf einmal erkannt und abgefragt werden?
  • Gibt es Zwillinge in der Klasse oder ein Beispiel? Können diese von der Kamera auseinandergehalten werden?

Gibt es eine Möglichkeit, dass mehrere Namen der Gesichter gleichzeitig auf der HuskyLens angezeigt werden, statt immer das Gesicht, welches in der Bildmitte der Kamera ist?

Weiter geht's mit dem nächsten Projekt:

Farberkennung