Archiv der Kategorie: RAT

RAT: Neuer Algorithmus Gesichtserkennung

Da das bisherige Verfahren zum Erkennen von Gesichtern doch etwas fehleranfällig war und zu viel Zeit in Anspruch genommen hat, habe ich mir inzwischen einen komplett anderen Ansatz überlegt. Die neue Methode geht davon aus, dass jeder Mensch individuelle, biometrische Merkmale hat, die es erlauben, eine eindeutige Identifikation vorzunehmen. Um diese Identifikation realisieren zu können, durchlaface-recognition1ufe ich folgende Schritte:

RAT: Neuer Algorithmus Gesichtserkennung weiterlesen

RAT: Gesichtserkennung und Stereoskopie

15_2_4Hier abgebildet der 4 Achsen-Robot-ARm von Sainsmart, den ich inzwischen um eine vierte Achse erweitert habe (siehe Fotos unten), der die „Augen“ meines Versuchsaufbaus trägt. Die Bewegung des Arms ist zurzeit deaktiviert, wird später das Tracken eines Objekts ermöglichen.
Zuletzt hatte ich gezeigt, dass es mit OpenCV relativ simpel ist, eine Gesichtserkennung zu realisieren. Jetzt geht es eine kleinen Schritt weiter. Nun soll die Software erkennen, welche konkrete Person gerade vor der Linse ist. Dazu habe ich einen Algorithmus entworfen, der aus dem aktuellen Frame die relevanten Bildteile herausschneidet, normaliusiert und mit einer Datenbank von bekannten Mustern vergleicht. Logischerweise sollte dieser Abgleich performant sein. Momentan habe ich knapp 800 Thumbnails in der Datenbank, die je Identifizierung einmal komplett durchlaufen werden. Deshalb habe ich die Muster und das Live-Bild auf 100×100 Pixel heruntergerechnet. Der Abgleich selbst läuft zurzeit (auf dem PC) in 0.17 Sekunden durch. Noch akzeptabel! Mal schauen, wie später der Raspberry damit klar kommt. Der Vergleich ist reine Mathematik. Das Ergebnis wird anhand des besten Wertes und eines zu erreichenden Schwellwertes entschieden.

face_thumbsDanach gibt es noch ein Zuverlässigkeits-Gate, dass die Fehlerlesungen nach Möglichkeit herausfiltert und so die Erkennung glättet. Die Treffergenauigkeit lässt noch zu wünschen übrig, wird aber mit der Zahl der divergierenden Musterdateien besser. (siehe Video)
Zusätzlich gibt es einen Reorg-Lauf, der dafür sorgt, dass mathematisch redundante Muster entfernt werden.

Stereoskopie

Mein Versuchsaufbau besitzt 2 parallel angeordnete Kameras. Die Idee dahinter ist, dass die Kameras als zusätzliche Möglichkeit zur Orientierung benutzt werden.
Ein Aspekt dabei ist die Stereoskopie. Vereinfacht: Beide Bilder werden miteinander verglichen, die sich durch die unterschiedlichen Perspektiven ergebenden Unterschiede ergeben eine so genannte Depthmask, letztlich ein Bild, dass etwas darüber aussagt, wie weit ein Gegenstand entfernt ist. In diesem Beispiel bedeutet das, je heller eine Fläche, umso näher ist sie an den Kameras.

IMG_0856
4 Axis Arm mit installierten Stereo-Kameras
IMG_0854
Die zusätzliche 5. Achse zum Neigen der Kamera-Ebene

 IMG_0855

RAT: putting it all together

Projekt-Psychologie: Es ist vielleicht die unbewusste Angst vor dem finalen Schritt. Je näher ich dem Ziel komme, umso langsamer erscheinen mir selbst die Fortschritte. In diesem Beitrag widme ich mich dem Thema Multitasking. Die Ressourcen des Raspbery sind begrenzt, so viel ist mal klar. Mit den sehr rechenintensiven visuellen Komponenten heißt es also haushalten. In der Software laufen mehrere unabhängige Tasks und meine Devise lautet, durch Umverteilung von Rechenzeit, den jeweils wichtigen Tasks zu unterstützen.

  1. Die Haupt-Ereignisschleife (rat_controller), in der alle events zusammenlaufen und verarbeitet werden.
  2. Der Sensortask, der fortlaufend den Arduino abfragt und von dort die Meßwerte der Ultraschall-Abstands-Sensoren, des Kompass usw. bekommt.
  3. Der Video-Tasks, der die Kamerabilder auswertet und nach „interessanten“ Objekten fahndet (mein kleiner gelber Ball)
  4. Darüber hinaus gibt es noch den Audio-Task, der zurzeit aber noch nicht aktiv ist (,weil noch nicht so wichtig).

Das alles spielt zusammen. Die Frage, ob die Meßfrequenz im Zusammenspiel mit der Videoauswertung akzeptable Ergebnisse liefert, erhoffe ich mir von den nächsten Experimenten.