Erste Erfahrungen mit Deep Learning

Maschinelles Lernen und insb. tiefe neuronale Netze revolutionieren gerade die Art wie Software entwickelt wird. Sie erlauben Mustererkennung auf einem neuen Niveau und ermöglichen damit viele Anwendungen, die vor 10 Jahren undenkbar waren. Um deren Möglichkeiten und Grenzen auszuloten können Studierende in der Forschungsgruppe Systemintegration von Prof. Peinl kleine Projekte umsetzen, die Spaß machen und überschaubar sind.

Spracherkennung für Smart Speaker

Smart Speaker Prototyp Sepp mit Raspberry Pi, Verstärker, Lautsprecher und Fernfeldmikrofon ReSpeaker (siehe Video)

So haben wir schon 2018 unser Smart Speaker ohne Cloud gebaut. Er benutzt zur Spracherkennung DeepSpeech von Mozilla und setzt auf OSGi als Basis für eigene Skills, die zur Laufzeit nachgerüstet werden können. Auf diese Art und Weise konnten wir die Steuerung des Smart Home mittels OpenHAB, Musikwiedergabe und Steuerung von MP3 Dateien von der lokalen Festplatte oder in der eigenen ownCloud/NextCloud, sowie ToDo und Einkaufslisten realisieren. Damit ist er von der Funktion her vergleichbar mit dem neuen Smart Speaker der Telekom. Im Gegensatz zu diesem ist er aber erweiterbar und verarbeitet die Befehle komplett lokal auf dem Gerät, statt die Sprachaufnahmen in die Cloud zu schicken, wo die US-Anbieter sich wenig um Datenschutz kümmern.

Bilderkennung für Formula Student

Student beim Aufnehmen von Trainingsbildern mit unserem Modellfahrzeug

In einer Bachelorarbeit hat ein Student Pylonen auf Bildern erkennen lassen, um die Basis für autonomes Fahren in der Klasse „driverless“ der Formula Student zu liefern. Dazu wurde die bekannte Machine Learning Library Tensorflow eingesetzt, für die es bereits eine Reihe von vortrainierten Modellen gibt. Diese hat der Student evaluiert und die vielversprechendsten mit eigenen Trainingsdaten verbessert. Um die Pylonen vor unterschiedlichsten Hintergründen zu erkennen hat der Student mit einem Skript Pylonen und Hintergründe immer neu kombiniert. Dadurch hat sich die Anzahl der Trainingsdaten so erhöht, dass sich die Erkennungsrate deutlich verbessert hat.

Parkplatzerkennung

2019 baute ein Student unserer Partneruniversität in Cairo, Äqypten am iisys eine Lösung, die Autos auf Bildern des Parkplatzes erkennt und darauf aufbauend freie Parkplätze als Grundlage für ein Parkplatzleitsystem berechnet. Auch hierfür kam wieder Tensorflow zum Einsatz. Im Gegensatz zur Formula Student war hier Geschwindigkeit nicht so wichtig. Ein Bild pro Minute würde völlig reichen, um den Anwendungsfall abzudecken. Aus Datenschutzgründen sollte das Bild direkt auf dem Gerät ausgewertet werden, das die Fotos macht und nur die Information über freie Parkplätze an den Server weitergeleitet werden. Unsere Wahl fiel auf einen Raspberry Pi Zero W der ein Faster RCNN resnet 50 verwendet. Dieses ist mit dem COCO Datensatz vortrainiert und wir haben es mit eigenen Trainingsdaten weiter verbessert. Die Erkennungsrate war jedoch nur unter guten Lichtbedingungen brauchbar. Sowohl bei starker Sonneneinstrahlung als auch bei wenig Licht am Morgen oder Abend wurden zu viele Autos „übersehen“.

Spracherkennung, die zweite

Ein anderer Student aus Cairo verbesserte die Spracherkennung unseres Smart Speaker, indem er aus vier frei verfügbaren Modellen das beste ermittelte. Untersucht wurden Mozilla DeepSpeech, Baidu Deep Speech 2, Facebook Wav2Letter und dem Spracherkennungsveteran Kaldi. Die Modelle wurden anschließend mit zusätzlichen Trainingsdaten für unseren Anwendungsfall verbessert. Wo immer möglich griff er dabei auf die hervorragend vortrainierten Modelle zurück, die Zamia Speech bereitstellt. Erstaunlicherweise schnitt Kaldi in unserem Test am besten ab. Leider ist die Erkennungsrate auf realitätsnahen Daten jedoch immer noch deutlich schlechter, als die sehr guten Ergebnisse im häufig zitierten Testdatensatz Libri Speech test clean vermuten lassen (siehe dazu auch die Ergebnisse von Baidu).

Stromzähler ablesen

Eine Studentengruppe hat die Zählerstände von Stromzählern auf Bildern im Smartphone erkannt und ausgewertet. Nach den guten Ergebnissen in den diversen Abschlussarbeiten davor war dieses Experiment eher ein Rückschlag. Die verfügbare Zeit innerhalb einer Projektarbeit im Semester ist wenig, um sich sowohl in Deep Learning einzuarbeiten, als auch es sofort erfolgreich auf ein Gebiet anzuwenden, für das es keine direkt vortrainierten Modelle gibt. Da die Studierenden weder in Python nich in Tensorflow oder Android Entwicklung großes Vorwissen mitbrachten, wurde das Ziel, am Ende des Semesters eine funktionierende Smartphone App zu haben, die den Zählerstand auf einem Bild erkennt nicht erreicht. Das verfügbare Bildmaterial war aber auch nicht einfach zu verarbeiten (Kontraste, Drehung, andere Zahlen, …).

Human Pose Estimation

Im gerade startenden Wintersemester wird ein Student aus Pakistan im neuen Master Applied Research in Computer Science aus 2D Bildern die 3D Köperhaltung (Pose) des abgebildeten Menschen ableiten, um damit einen Avatar in Virtual Reality Anwendungen zu steuern. Der Fachbegriff nennt sich Human Pose Estimation. Damit sollen unsere bereits sehr eindrucksvollen VR-Demos der letzten beiden Semester systematisch weiter verbessert werden. Hierbei ist wieder die Performance entscheidend, da die Nutzer Latenzen über 20 ms für das Head Tracking in VR bereits als störend empfinden. Für die Darstellung der virtuellen Beine sind evtl. etwas höhere Latzenzen akzeptabel. Wir hoffen trotzdem Videobilder mit 30 fps auswerten zu können. Falls das auf unseren normalen PCs nicht klappt, dann schaffen wir es hoffentlich zumindest auf unserer neuen Workstation. Die ist mit Ryzen 9 3900X, 32 GB RAM, 2 TB SSD und Nvidia Titan RTX speziell für VR und Machine Learning Anwendungen gut gerüstet.