Navsight

Dartmouth CS98 - Winter-Frühling 2019

TL; DR

Wir entwickeln eine Proof-of-Concept-Anwendung, die Deep Learning, Fahrzeugdiagnosetechnologie und Wearable-Technologie verwendet, um Sehbehinderten dabei zu helfen, die Straßen sicherer zu überqueren.

Motivation

Wir sind ein Team von fünf Informatik-Majors am Dartmouth College, die derzeit an einem Schlusssteinprojekt arbeiten. Im letzten Quartal haben wir einige Wochen gebraucht, um über ein Problem nachzudenken, das wir in den nächsten zwei Quartalen mit Technologie lösen wollten. Bei der Untersuchung der Benutzer sprachen wir mit einer Freundin, die sehbehindert ist, und sie erzählte uns aus eigener Erfahrung von einem relevanten Problem: zu wissen, wann das Überqueren von Straßen sicher ist (wenn Blindenhunde nicht dafür ausgebildet sind). Wir haben uns entschieden, eine Technologie zu entwickeln, mit der die Kreuzungen mit Sehbehinderungen sicher überquert werden können.

N.B. Dieses Projekt dient als Proof of Concept. Wir haben nicht die Absicht, unser Endprodukt jetzt der Öffentlichkeit zugänglich zu machen, da es für die Technologie wahnsinnig gefährlich wäre, wenn sie Menschen in den Verkehr führen würde. Wir hoffen jedoch, dass mit fortschrittlicherer Hardware und Technologie einige unserer Ideen eines Tages verwirklicht werden können.

Dies ist ein zweimonatiges Projekt (6 Monate).

Implementierung

Wir möchten den sehbehinderten Kreuzungen helfen, indem wir eine mobile App verwenden, die einfach aus dem Appstore heruntergeladen werden kann.

Zusätzlich zur App haben wir einen haptischen Rückmeldungsgürtel (der über Bluetooth mit der App verbunden ist) eingelötet, den der Benutzer tragen würde. Der Gurt führt den Benutzer in die Richtung, in die er gehen soll, wenn er sein gewünschtes Ziel in die mobile Anwendung eingibt. Wenn der Benutzer beispielsweise nach links abbiegen muss, summt der Gürtel auf der linken Seite seiner Hüfte.

In die App ist auch ein Bildklassifikator integriert. Mit dem Gürtel als Hilfe würde der Benutzer nun wissen, in welche Richtung er sich an einer Straßenkreuzung orientieren sollte. Wenn sie zum Überqueren bereit sind, hält der Benutzer an Kreuzungen und Zebrastreifen die Telefonkamera hoch, um die Bilder zum Klassifizierer zu streamen, der bestimmt, ob das Überqueren der Straße sicher ist oder nicht.

In einer idealen Welt hätten schließlich alle Fahrer ein OBD („On-Board-Diagnose“, ein Hardware-Gerät, das an den Computer ihres Autos angeschlossen wird), das die Geokoordinaten, die Geschwindigkeit und die Richtung ihres Autos verfolgt und an eine Cloud sendet Server. Mit diesen Daten können wir sehbehinderte Benutzer warnen, wenn sich ein Auto ihrem Weg nähert. Dies ist wichtig für Fußgängerüberwege ohne Straßenlaternen wie den folgenden.

Unser Prototyp besteht aus 3 Teilen:

  1. Mobile Navigation mit einem tragbaren Gürtel, der in die Richtung vibriert, in die sich der Benutzer drehen muss.
    1. Gehsignal-Klassifikator auf einem Mobiltelefon mit Alarm-Benutzeroberfläche und zugänglichen Farben (grün = Los, rot = nicht sicher, blau = Berechnen)
    2. Echtzeit-Verfolgung von Fahrzeugen, um Geschwindigkeit und Orientierung von Fahrzeugen in der Nähe des Benutzers zu erhalten
    3. Das folgende Diagramm beschreibt den Ablauf der 3 Teile:

      Haptische Gürtelnavigation

      Für die Hardware des Gürtels gibt es ein Arduino-Gerät, das Bluetooth-fähig ist. Dieses Gerät ist direkt an einen Multiplexer angeschlossen. Sowohl der Arduino als auch der Multiplexer befinden sich auf einem Steckbrett. Direkt mit dem Multiplexer verbunden sind fünf haptische Feedback-Controller, an die jeweils ein Summer angeschlossen ist. Die Summer sind an der Vorderseite des Rückens der Gürteltasche abgeklebt, sodass Benutzer die Träger anpassen können, ohne die Positionen der Summer zu verschieben.

      Für die Software verfügt das Bluetooth-fähige Arduino-Board über Code, der im eingeschalteten Zustand ausgeführt werden kann. Das Board wartet ständig darauf, dass ein Gerät eine Verbindung zu sich selbst herstellt. Nachdem eine Verbindung mit dem Mobilgerät hergestellt wurde, wartet der Arduino auf einen Zahlenbereich von 1 bis 5, der einen bestimmten Summer auslöst. Wenn das Mobilgerät zum ersten Mal eine Verbindung zum Arduino herstellt, sendet es die Nummer 9, um die Kommunikation herzustellen. Wenn sich das mobile Gerät von der Arduino-Platine trennt, sendet es die Nummer 9, um das Brummen aller Summer zu stoppen.

      Bluetooth Arduino und Multiplexer im Steckbrett

      Rückseite des haptischen Rückkopplungsgürtels. Am Gürtel sind fünf Summer mit grünem Klebeband befestigt

      Vorderseite des haptischen Rückkopplungsgürtels. Das Brot (Mutter) Brett saß vorne im Beutel.

      Demo der Gurtfunktionalität

      Da das Bluetooth Arduino-Gerät die einzige Hardware ist, die programmiert werden musste, gibt es kein GitHub-Repo. Es gibt jedoch einen GitHub Gist, der den gesamten Code für das Gerät enthält. Hinweis: Dies ist keine Standardlösung. Es gibt Bibliotheken und Dateien, die in der Arduino IDE enthalten sein müssen, damit der Code funktioniert. Um diese Dateien zu erhalten, folgen Sie dieser Anleitung.

      Hier ist eine Live-Demo des haptischen Feedback-Gürtels

      Testen Sie unser Navigationssystem in Aktion! Das unten im GIF gezeigte Kompassbild dient hier der visuellen Darstellung und dient demselben Zweck wie der Gürtel und weist den Benutzer an, wohin er als Nächstes abbiegen soll.

      Modellerkennungsgenauigkeit

      Um zu entscheiden, ob eine Kreuzung sicher zu überqueren ist oder nicht, haben wir ein Modell zum Erkennen von Fußgängerlichtern im Gegensatz zu Fußgängerlichtern trainiert. Zu diesem Zweck haben wir uns für YOLO entschieden, einen hochmodernen Echtzeit-Objektdetektor, der unseren Anforderungen zu entsprechen schien und bei der Objektklassifizierung als einer der besten in der Branche gilt. Das besondere YOLO-Modell ist "tiny-yolo", eine kleinere Version der YOLOv2-Architektur mit weniger Parametern, die leichter auf einem Smartphone ausgeführt werden kann.

      Die Architektur besteht aus einem Faltungscodierer mit acht Faltungsschichten, gefolgt vom YOLO-Codierer, der aus zwei Faltungsschichten besteht, um die Anzahl der Filter auf die Anzahl der vorherzusagenden Klassen zu reduzieren. Dies läuft schließlich durch eine Regionsebene, die YOLOs „geheime Sauce“ ist, die die Vorhersage des Begrenzungsrahmens erstellt.

      Um unser benutzerdefiniertes Modell zu trainieren, haben wir 1162 Bilder mit Fußgängerbeleuchtungen gesammelt und von Hand markiert. Unser letztes Modell kann "Gehen" und "Nicht Gehen" erkennen und unterscheiden.

      YOLO ist jedoch auf Darknet geschult, das nicht direkt in unsere iOS-App integrierbar ist. Um ein CoreML-Modell aus unserem Darknet-Modell zu erstellen, haben wir zunächst versucht, YAD2K und Keras zu verwenden, aber unser Keras-Modell konnte keine Fußgängersignale klassifizieren. Daher haben wir uns für Darkflow entschieden, das unser Darknet-Modell in ein TensorFlow-Modell umwandelt. Die Konvertierung war erfolgreich!

      Anschließend haben wir das Modell mithilfe unseres benutzerdefinierten Skripts mit tf-coreml in CoreML konvertiert.

      Mit dem in unsere Anwendung integrierten CoreML-Modell können wir dann Fußgängersignale klassifizieren und unseren Benutzern mitteilen, ob sie sicher Straßen überqueren dürfen!

      Demo der Modellfunktionalität

      Video in voller Länge

      Klicken Sie hier, um das Demo-Video in voller Länge zu sehen.

      OBD-Autodaten in Echtzeit

      In den Fällen, in denen es Fußgängerüberwege ohne Straßenbeleuchtung gibt, mussten wir erneut überprüfen, ob der Benutzer sicher überquert. Was wäre, wenn wir wissen könnten, dass ein Auto mit hoher Geschwindigkeit auf den Zebrastreifen zufährt, und den Benutzer benachrichtigen würden? Wir entschieden uns, ein Auto zu hacken, um zu sehen, ob wir Echtzeit-Geschwindigkeits- und GPS-Daten abrufen können, damit die App über Autos in einem bestimmten Umkreis des Benutzers informiert wird. Dies würde voraussetzen, dass in allen Autos dieses Trackingsystem eingebaut ist. Da dies jedoch ein Proof-of-Concept ist, wollten wir sehen, wie weit wir die Grenzen verschieben können, um eine solide Lösung zu schaffen.

      Das OBD war ein kompliziertes System, um mit der Implementierung und Codierung zu beginnen. Hier ist ein Überblick auf hoher Ebene, mit was wir gearbeitet haben:

      Architektur High Level View

      Terminologie / Tech Stack:

      • CAN-Bus - Netzwerk, in dem das Fahrzeugsystem abhören und Befehle senden kann
      • OBD-II-PIDs (On-Board-Diagnoseparameter-IDs) sind Codes, mit denen Daten von einem Fahrzeug angefordert und als Diagnosetool verwendet werden.
      • Carloop - ein Open Source-Entwicklungskit, mit dem Sie Ihr Auto über 3G, WLAN oder Bluetooth mit der Cloud verbinden können.
      • Teilchen - eine vollständig integrierte IoT-Plattform, die alles bietet, was Sie zum Bereitstellen eines IoT-Produkts benötigen
      • Electron - das integrierte Angebot von Hardware, Mobilfunknetz und Cloud in einem kleinen Paket

      Weitere Informationen zur technischen Funktionsweise finden Sie hier

      Die Implementierung besteht im Wesentlichen aus der OBD-Hardware von carloop, die an den Auto-CAN-Bus angeschlossen ist und auf vom Auto gesendete CAN-Nachrichten wartet. Wir analysieren die PIDs, um die gewünschten Daten zu erfassen (Geschwindigkeit). Für GPS stellt carloop ein GPS-Plug-In zur Verfügung, mit dem die Längen- und Breitengradkoordinaten des Fahrzeugs auch in Echtzeit erfasst werden können.

      Demo-Videos

      Hier ist ein Video des OBD, in dem die Geschwindigkeit des Fahrzeugs in Echtzeit an die Cloud-Plattform von Partikel gesendet wird, auf der die mobile App diese Informationen abrufen kann.

      Testen Sie auch unsere OBD-Komponente in Aktion!

      Demo der OBD-Funktionalität

      Testen & Validieren

      Wir bauen dieses Projekt auf einem kleinen College-Campus in einer Stadt mit etwa 14.000 Einwohnern. Da wir nur begrenzt in der Lage sind, echte Benutzer in unserer Zielgruppe zu testen, haben wir uns auf verschiedene Arten für eine Validierung entschieden:

      Reddit Community-Validierung

      Zuerst haben wir uns entschlossen, in der subreddit-Community r / Blind zu posten. Unser Beitrag ist hier zu finden.

      Wir haben einige nützliche Kommentare von Leuten erhalten, die dem Problem näher sind als wir.

      Hauptgerichte

      • Jede Verzögerung in unserem System würde gefährliche Probleme aufwerfen
      • Bedenken hinsichtlich der Privatsphäre der Menschen und des mangelnden Wunsches, nachverfolgt zu werden
      • Eine 100-prozentige Übernahme der ODB wäre ideal, aber es wäre schwierig, eine öffentliche Anziehungskraft zu erzielen
      • Völlig blinde Benutzer würden die mobile Anwendung mit deutlich geringerer Wahrscheinlichkeit verwenden
      • Allgemeine Unterstützung des Projekts, aber starke Bedenken hinsichtlich der Sicherheit und der Privatsphäre von Sehbehinderten

      Testen der vollständigen Suite

      Zweitens haben wir uns entschlossen, uns an einigen realen Menschen zu testen, während wir einige Grundbedingungen geschaffen haben:

      Haptische Gürtelnavigation

      1. Wir haben vier zufällige Testpersonen gesammelt
      1. Alle Probanden wurden gebeten, für die folgenden Tests die Augen zu schließen
      1. Wir baten die Probanden, drei verschiedene Tests zu absolvieren

      Kalibrierungstest

      1. Wir haben ein unbekanntes Ziel in die mobile App eingegeben
      1. Wir baten die Probanden dann, auf den Summer zu zeigen, dem das Signal gesendet wurde
    4. Sie würden beschreiben, was sie fühlten
    5. Wir haben ihre Kommentare zur Kenntnis genommen
    6. Orientierungstest

      1. Wir haben ein unbekanntes Ziel in die mobile App eingegeben
      1. Wir positionieren die Probanden in eine bestimmte Richtung
        1. Basierend auf dem aktiven Summer wurden die Testpersonen gebeten, sich umzudrehen, bis der mittlere Summer signalisiert wurde
        2. Führungstest

        3. Wir haben ein unbekanntes Ziel in die mobile App eingegeben
      2. Wir begannen unseren Spaziergang vor Sudikoff
        1. Die Testpersonen wurden gebeten, mit geschlossenen Augen und dem haptischen Feedbackgürtel zum Ziel zu gehen
          • Der Weg würde nur ungefähr 5 Minuten dauern
            • Die Probanden konnten den Anweisungen mit einem beachtlichen Maß an Anleitung folgen
            • Die Maße für diesen Test sind die Zeit, die das Subjekt benötigt, um zum Ziel zu gelangen, und wie oft es Hilfe vom Beobachter benötigt.

              Hinweis: Die enorme Einschränkung dieses Tests besteht darin, dass die Probanden nicht regelmäßig sehbehindert sind, sodass sie nicht die gleichen Fähigkeiten wie jemand haben, der jeden Tag mit der Krankheit lebt. Wir waren jedoch der Ansicht, dass diese Tests Aufschluss darüber geben, ob die vollständige Anwendung für die Benutzer von Vorteil und intuitiv ist.

              Ergebnisse

              Unser Kalibrierungstest ergab sehr gute Ergebnisse. Alle vier Teilnehmer konnten die verschiedenen Summer mit hoher Genauigkeit fühlen und unterscheiden. Insgesamt ergab sich eine Genauigkeitsrate von 89%, wobei die Teilnehmer die Summer korrekt unterschieden. Wir erhielten jedoch die Bemerkung, dass die Stärke des Summens nicht bei allen Summern gleichbleibend war, was wir mit besserer Hardware und besserem Löten verbessern möchten.

              Auch beim Orientierungstest schnitten die Teilnehmer gut ab. Die durchschnittliche Zeit für jede Person, sich in die richtige Richtung zu orientieren, betrug sechs Sekunden. Alle vier Teilnehmer empfanden den Gürtel als bequem und einfach zu bedienen.

              Für die Leitmetrik wurden nur zwei Teilnehmer dieser Prüfung unterzogen. Trotz dieser geringen Stichprobengröße konnten beide Probanden der Richtung des Gürtels mit einer gewissen Unterstützung folgen. Wenn der Benutzer jedoch keinerlei Unterstützung erhalten würde, wäre es erheblich schwieriger, sich ausschließlich auf den Gürtel zu verlassen.

              Modellerkennungsgenauigkeit

              Für die Modellgenauigkeit haben wir die gleichen Probanden mit ihren Augenbinden auf Fußgängerüberwege gehen lassen und versucht, je nach Modellerkennungssignal 5 verschiedene Zeiten zu überqueren. Wir ließen einen Beobachter neben dem Subjekt folgen, um das Subjekt einzufangen, wenn das Modell falsch war und sie in Gefahr waren.

              Das Maß wäre, wie oft der Benutzer die Straße sicher überqueren konnte, und wie oft wir das Motiv aufgrund falscher Erkennung einfangen mussten.

              Ergebnisse

              Unser Modell hat sich für Standard-Fußgängerzonen bewährt. Eine Standardumgebung besteht aus einem Fußsignal, das optisch überhaupt nicht behindert wird. Das normale Fußsignal, das wir in Hannover gesehen haben, ist ein Weißlichtsymbol für eine Person, die sicher ist zu gehen, und eine rote Hand (mit oder ohne roten Countdown-Zahlen) für „nicht sicher“. In diesen Fällen hat unser Modell die Sicherheit des Hannover-Fußsignals immer korrekt erkannt.

              Obwohl unsere Modellerkennung größtenteils genau war, war sie definitiv nicht perfekt. Wir bemerkten einige Umstände, unter denen das Erkennungsverhalten von der richtigen abwich:

              • Ein Auto fährt vor und blockiert einen Teil des Fußsignals.
              • Manchmal gibt es Bäume oder Büsche, die die Sicht auf das Fußsignal behindern. In diesen Fällen kann die Detektion etwas variabel sein.
              • Fußsignale sind in einer Stadt nicht standardisiert, geschweige denn im Land. Zum Beispiel zeigte ein Laufsignal, das unserem Modell Probleme bereitete, ein laufsicheres Personensymbol, aber auch rote Countdown-Zahlen. Unser Modell stufte dies manchmal als nicht sicher ein, obwohl diese Instanz sicher sein sollte.

              Da das Überqueren der Straße eine lebensbedrohliche Situation sein kann, ist es unerlässlich, dass die zukünftige Arbeit darauf abzielt, das Modell für alle Randfälle korrekt zu erkennen. Angesichts der Zeit und des begrenzten Umfangs der Walk-Signal-Bilder, die wir mit unseren Erkennungsergebnissen erhalten haben, sind sie jedoch für spätere Iterationen vielversprechend.

              OBD Auto Genauigkeit

              Wir haben 3 verschiedene Kreuzungsorte mit 5 Läufen für jeden Ort (insgesamt 15 Läufe) ausprobiert, um zu messen, wie oft die mobile App das Auto korrekt erkennen würde. Eine korrekte Erkennung bedeutet, dass die App rot wird und zweimal summt, während sich das Auto ungefähr 400 Fuß entfernt befindet, und rot bleibt, bis das Auto vorbeifährt. An diesem Punkt wird es wieder grün.

              Ergebnisse

              Insgesamt war unsere OBD-Autoerkennungsleistung äußerst vielversprechend. Unsere App warnte die Nutzer schnell und effektiv vor dem herannahenden Auto.

              • Location 1: Hop to Green Crosswalk (keine Straßenbeleuchtung) → 5/5 Erfolge
              • Standort 2: LSC bis North Park Intersection → 5/5 Erfolge
              • Location 3: Hanover Inn bis Collis Intersection → 4/5 Erfolge
              • Endgültige Demos

                Wir haben unsere endgültige Lösung auf einer großen Veranstaltung der Dartmouth Computer Science mit dem Namen Technigala vorgestellt, bei der viele Menschen an unserem Stand vorbeikamen, um sich über unser Projekt zu informieren. Wir haben viele positive Rückmeldungen von Menschen erhalten und viele waren beeindruckt von den verschiedenen Sicherheitsprüfungen, die wir durchgeführt haben, um eine umfassende Hilfe für Sehbehinderte beim Überqueren von Straßen zu schaffen.

                Fazit

                Es gibt eine Reihe von Dingen, die wir in zukünftigen Iterationen verbessern möchten. Erstens möchten wir das Benutzererlebnis und die Haltbarkeit des Riemens verbessern. Während der gesamten Laufzeit hatten wir mit vielen Komplikationen zu kämpfen. Mit der Zeit würden wir in stärkere Summer und einen ästhetischeren / bequemeren Gürtel investieren.

                Wie bei jedem maschinellen Lernprojekt wäre die Hauptverbesserung des Modells zur Erkennung von Kreuzungssignalen die Verwendung von viel mehr Daten. Wir würden nicht nur einfach mehr Bilder jeder Klasse verwenden, sondern auch eine Vielzahl von Bildern von verschiedenen Kreuzungssignalen im ganzen Land oder sogar auf der ganzen Welt. Es besteht kein Zweifel, dass das Modell angesichts unserer Trainingsdaten an den Kreuzungen in Hannover stark überarbeitet war, was nur funktionierte, weil auch unsere Testdaten von dort stammten. Wir könnten unser Modell möglicherweise auch so trainieren, dass neben Fußsignalen auch Sicherheitsfaktoren erkannt werden, z. B. Hindernisse für Autos.

                Unser OBD hat für die Zwecke unseres Projekts sehr gut funktioniert, aber im Idealfall könnten wir Daten von allen Autos abrufen. Dazu müssten wir unseren OBD-Algorithmus für mehrere Autos verfeinern und uns mit robusterer Hardware befassen.

                Schließlich ist es unerlässlich, dass wir unser Projekt gründlich an unserer eigentlichen Zielgruppe testen: sehbehinderte Benutzer. Angesichts der Zeitbeschränkungen, die wir hatten, haben wir nicht genügend Benutzer-Feedback von Personen erhalten, die diese App möglicherweise verwenden könnten. Wenn wir fortfahren, könnten wir uns an eine lokale Community wie Kendal Senior Living wenden, um herauszufinden, ob Interesse besteht, unsere App zu testen.

                Wir haben dieses Projekt mit der Hoffnung begonnen, einen Proof of Concept für ein Problem zu entwickeln, das aufgrund seiner enormen Sicherheitsrisiken nicht rigoros angegangen wurde. Anstatt an diesem Projekt mit dem Gedanken zu arbeiten, es an echte Benutzer zu versenden, besteht dieser Proof-of-Concept darin, zu untersuchen, wie gut Technologie das Problem lösen kann. Mit den vorhandenen Ressourcen konnten wir ein technisches Ökosystem entwickeln, das die Navigation verbessert und die Sicherheit von Kreuzungen und Zebrastreifen in angemessenem Maße erkennt. Unsere Lösung ist zwar nicht perfekt, zeigt jedoch vielversprechende Ergebnisse und kann in Zukunft weiter verfeinert und wiederholt werden. Da Technologie und Hardware immer weiter fortgeschritten sind, hoffen wir, dass unser Projekt Inspiration für ein echtes Produkt liefern kann, das eines Tages Sehbehinderten hilft.

                Teammitglieder

              • Allison Chuang
              • Annie Ke
            • Jane Lee
            • Ijemma Onwuzulike
            • Adam Rinehouse

            Danksagung

            Besonderer Dank geht an Tim Tregubov (Professor) und Kate Salesin (Leiterin TA) für die Unterstützung und Hilfe bei unseren beiden Arbeitsbedingungen und an unsere Mitschüler von CS98!