Eine Türklingel gehört fast zu jedem Haus. Doch scheint eine Türklingel wie wir Sie kennen nicht mehr zeitgemäß. In einer Zeit wo wir unser Smartphone immer und überall dabei haben, wo dieses durch Fingerprint und Gesichtserkennung entsperrt wird, wiso sollten ähnliche Funktionalitäten nicht auch für eine Türklingel interessant sein. Aufgabe dieses Projektes war Konzepte bzw. Funktionalitäten zu erarbeiten, welche eine Türklingel im 21. Jahrhundert haben sollte. Dabei sollte erarbeitet werden, wie künstliche Intelligenz, Computer Vision , Sprachausgaben und digitale Vernetzung verwendet werden können.
Anwendungsfälle
Lieferdiensterkennung
Logoerkennung
Hauseigentümererkennung
Gesichtserkennung
Stimmerkennung
Personenerkennung
Homeofficeanwendung
Website
App
Text2Speech
Speech2Text
AI-Erkennung
Personenerkennung
Mithilfe der Personenerkennung können Personen vor dem Türspion erkannt werden. Die Personenerkennung dient als Startpunkt für die weiteren AI-Erkennungen wie Logo und Gesichtserkennung.
Die Personenerkennung wird mit OpenCV umgesetzt. Für die Erkennung wird ein Cascade-Classifier verwendet, Ein Cascade-Classifier ist ein Machine Learning Algorithmus mit dem bestimmte Strukturen/Formen in einem Bild erkannt werden können. Der verwendet Cascade-Classifier reagiert auf die Gesichtsmerkmale. Wird ein Gesicht erkannt, wird ein Bild des jeweiligen Bereiches gemacht. Das Bild wird zusätzlich noch aufbereitet. Dieses Bild wird dann an die Logo bzw. Gesichtserkennung weitergeleitet.
Logoerkennung
Die Logoerkennung ist mithilfe von Python implementiert. Als Basis für das Model werden Tensorflow bzw. Keras verwendet. Als Klassen stehen DHL, Amazon, Die Österreichische Post und UPS unter Verwendung.
Modeltraining
Für das Modell wurden pro Klasse zwischen 700 und 800 Bilder zum Trainieren verwendet. Diese wurden dann noch Augmentiert, sodass man auf etwa 1500 Bilder Pro Klasse kommt. Im Direkttest (Visualisiert in der Konfusionsmatrix) hat das Model eine Genauigkeit dabei bereits eine sehr gute Genauigkeit. In der wirklichen Anwendung ereichen wir eine Genauigkeit von etwa 90%. Diese ließe sich durch mehr Trainingsbilder noch weiter verbessern.
Gesichtserkennung
Die Gesichtserkennung basiert auf der face_recognition Bibliothek aus Python. Darin befindet sich ein vortrainiertes Model, welches Personen erkennen kann. In Kombination mit der Stimmerkennung bildet die Gesichtserkennung die Personenerekennung, und damit eine sicherer 2-Faktor-Authentifizierung um Beispielsweise den Hauseigentümer zu erkennen und ihm die Tür automatisch zu öffnen.
Stimmerkennung
Die Stimmerkennung basiert auf einem Open-Source Codegerüst, dass für unsere Anforderungen erweitert wurde. Zu den Erweiterungen zählt das Umschalten zwischen Trainieren des Modells und der eigentlichen Stimmerkennung. Zum Erkennen einer Stimme wird für 3 Sekunden aufgenommen. Anschließend erfolgt die Ausgabe der erkannten Stimme auf der Website und der App. Um eine gute Qualität und eine hohe Genauigkeit zu garantieren, ist ein gutes Mikrofon nötig, damit Nebengeräusche wie zum Beispiel das eigene Rauschen des Mikrofons nicht in die Stimmerkennung einbezogen wird. Mit einem guten Mikrofon kann somit eine sehr hohe Erfolgswahrscheinlichkeit erziehlt werden, wodurch die Sicherheit der 2-Faktor-Authentifizierung gegeben ist.
Text zu Sprache
Nach erhalten des Textes am Server wird dieser mithilfe der eSpeak Bibliothek in eine Audio-Strom umgwandelt. Die Ausgabe erfolgt anschließend über eine Lautsprecher an der Tür. Um die Deutsche Sprache zu unterstützen, wurde die Sprachausgabe mit den Embrola-Voices Erweiterungen verbessert.
Spracherkennung
Da eine Erstellung eines Spracherkennungsmodells sehr Resourcenaufwändig ist, wurde auf ein bereits vortrainiertes Modell einer Spracherkennung zurückgegriffen. Die Open-Source Codebasis zur Verwendung von Sprachmodellen wurde für die benötigte Anwendung erweitert. Die Erweiterungen umfassen das Erstellen eines Audiostream, welcher für die Spracherkennung angepasst wurde, sowie eine Start-Stop Mechanik welche über einen Knopf gesteuert wird. Da das Modell vorwiegend mit rauschfreien Audiodateien trainiert wurde, funktioniert nur eine vorwiegend rauschfreie Erfassung der Sprache. In der Anwendung dient die Spracherkennung als Kommunikationmittel zwischen Besucher und Bewohner.
Website
Die Website wurde mittels Html und Css realisiert. Dabei wurde mittels Css eine PC-Version und eine Mobile-Version entworfen. Die Home-Seite kann zur Kommunikation zwischen Bewohner und Besucher verwendet werden. Dazu stehen ein Videostrom des Türspions und ein Chatfenster zur Verfügung. Auch vorgefertigte Ausgaben können direkt verwendet werden. Auf der Log-Seite werden alle Einträge welche in die Datenbank eingetragen wurden ausgegeben.
Die diversen Funktionalitäten der Website wurde mittels Javascript und PHP realisiert. Hierzu zählen Designänderungen welche mittels Css nicht realisiert werden konnten, die Verwendung der vordefinierten Nachrichten und der Hauptpunkt, die Ausgabe der Daten der Datenbank auf der Website.
App
Die App für mobile Endgeräte wurde mittels Flutter realisiert. Flutter bietet gegenüber nativer Programmiersprachen, den Vorteil, das mittels einer Codebasis mehrer Plattformen unterstüzt werden. Dadurch ist die App lauffähig auf Android, IoS und auch im Webbrowser. Die App verbindet sich beim Start mit dem Videostrom des Türspions um so das Kamerabild anzuzeigen. Weiters kann die App über die Schnittstelle des Webserver Aktionen am Türspion ausführen, bzw. Nachrichten vom Türspion empfangen. Um den Benutzer der Software auch über Nachrichten zu berichten, sollte er die App nicht gerade aktiv verwenden, wird ein Hintergrundsprozess an das jeweilige Betriebssystem gebunden.
Hardware
Mittels 3D-Druck und einer Schnittstellen Platine wurde ein Prototyp erstellt. Dieser umfasst ein Gehäuse mit folgenden Peripherien:
Klingeltaster um zu läuten
Sprachtaste um akustisch zu kommunizieren
LEDs für eine Außenbeleuchtung bei Nacht
Feuchte und Temperatursensor für Außenwetter
Die Kamera für die visuelle AI sowie die Lautsprecher für die Sprachausgabe sind zusätzlich angebunden
Kommunikation
Jeder Funktionalität des Spions speichert ihre Daten in die Datenbank am Server. Zum Beispiel wenn ein Logo erkannt wird, schreibt der Logoerkennungs-Service mit Zeitstempel und welches Logo erkannt wurde in die Datenbank. Die Webseite bzw. die App kann mittels POST sowie GET Requests die Daten abfragen oder auch das Licht einschalten. Durch die die HTTP-Methoden wird eine zentrale und einheitliche Schnittstelle für beide Zielgeräte geschaffen.