Objekterkennung

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, Schleifen, Erweiterungen, KI
+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.
    Die Kabel der HuskyLens müssen folgendermassen verbunden werden:
    Schwarz -> Schwarz
    Rot -> Rot
    Grün -> Weiß
    Blau -> Gelb
  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.

Falls Mind+ als Programmiereditor verwendet wird, reicht es, den Calliope mini und die HuskyLens mit dem USB-Kabel zu verbinden. Die Kommunikation zwischen den beiden Geräten erfolgt über die Schnittstelle mit dem Computer.

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.


Objekte merken/anlernen

Im ersten Schritt wird die HuskyLens angelernt, damit sie später unterschiedliche Objekte erkennen kann. Mit dem ausgewählten Algorithmus, der in der HuskyLens integriert ist, werden die eingelesenen Objekte "gemerkt" und wieder erkannt.

  1. Drücke dazu auf das Rädchen (1) an der HuskyLens und drehe es zur Seite, bis der Algorithmus Object Recognition auftaucht. Drücke das Rädchen (1) erneut, um die Objekterkennung auszuwählen.
  1. Alles, was die Kamera als Gegenstand identifiziert, wird jetzt mit einem weißen Rechteck und einem Namen gekennzeichnet. Ungefähr 20 Objekte werden bereits schon von der Kamera dauerhaft erkannt und in englisch betitelt, wie z.B. bird, car, sofa, tvmonitor usw.

Diese Zuordnung ist nicht wirklich akkurat, so ist eine Kaffeetasse schnell ein Schaf oder eine Spiegelreflexkamera ein Hund. Diese Betitelung dient eher als Platzhalter und die Objekte können in der Programmierung neu benannt werden.

Um mehrere Objekte 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.
Im Menü der Objekterkennung finden sich auch weitere Einstellungen, wie z.B. der Recognize Threshold, mit dem der Schwellenwert bestimmt wird, ab wann ein Gegenstand als solcher identifiziert wird.

  1. Damit die KI sich einen Gegenstand merkt, kann der rechte "Lern-Knopf" (2) kurz gedrückt werden, um dem Objekt eine ID zuzuordnen. Der Kasten sollte statt weiß eine Farbe bekommen und hinter dem Namensschild sollte ein :ID1 stehen. Anschließend sollte das gleiche Objekt wiedererkannt werden und dieselbe ID vergeben werden.

Indem der Knopf erneut gedrückt wird, bevor der Countdown abgelaufen ist, kann das Objekt wieder vergessen werden.

Tipp: Suche nach verschiedenen Bildern von Gegenständen im Internet und drucke sie aus oder lass die Objekte in der Klasse anlernen und erkennen. Jedes Mal, wenn statt einem weißen Kasten ein farbiger Kasten mit einer ID auftaucht, wurde dieser Gegenstand bereits gemerkt. Notiere die Namen der Gegenstände 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 mit den folgenden Eigenschaften:

  • Es besitzt zwei Listen mit den Namen der trainierten Gegenstände in deutsch und einer weiteren Fremdsprache
  • Über eine Abfrage wird geprüft, ob das Objekt bereits angelernt wurde und falls ja, wird der zugehörige Name aus der Liste abgerufen sowie ein glücklicher Smiley angezeigt und falls nein, wird ein trauriger Smiley angezeigt
  • Außerdem können mit dem Drücken der Taste A die Namen der gelernten Gegenstände in eine andere Sprache übersetzt werden. Zum Beispiel Taste A für deutsch und Taste B für englisch - es kann aber auch nur ein Umschaltknopf sein, der die Sprache beim erneuten Drücken immer wieder wechselt
+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 "Objekterkennung".

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

  3. Die Blöcke, die verwendet werden können, um den Namen an der jeweiligen Stelle des erkannten Objektes anzugeben, befinden sich unter mehr....

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 Objektnamen aus Listen über die IDs abgerufen werden? Listen starten bei 0, HuskyLens IDs bei 1
  • Wieviele Gegenstände können auf einmal erkannt und abgefragt werden?
  • Welche Gegenstände werden von der Kamera leicht erkannt, welche schwer?
  • Können gleiche Gegenstände unterschiedlicher Farben trotzdem als dieselben identifiziert werden?

Hier gibt es ein großartiges Beispiel von Michael Klein:

Programm Code