Erstellen eines Navigators mit Augmented-Reality-Technologien und Methoden des maschinellen Lernens

In letzter Zeit wächst die Reisefähigkeit einer Person unglaublich schnell und wir können immer mehr Orte entdecken. Es ist jedoch nicht immer einfach, an diesen Orten zu navigieren, und manchmal haben die Gebäude so komplexe architektonische Formen, dass Sie sich sogar an einem unbekannten Ort verirren können.

Zu solchen Gebäuden gehört beispielsweise unsere Ingenieur- und Technologieschule Nr. 777 in St. Petersburg. Wir hatten ein solches Problem, dass es für Gäste und Eltern schwierig ist, das richtige Büro oder einen anderen notwendigen Ort zu finden, wenn Gäste und Eltern unsere Schule besuchen. Jeder findet seinen Weg aus dieser Situation heraus, jemand fragt endlos Bauarbeiter und jemand wandert einfach durch endlose Korridore. Nachdem wir dieses Problem analysiert hatten, beschlossen wir, einen Navigator für unsere Besucher für unsere Schule zu erstellen. Ein einfacher Navigator mit einer Karte im Gebäude ist jedoch nicht relevant, was nicht über eine der neuen und sich schnell entwickelnden Technologien der Augmented Reality (AR) gesagt werden kann. Unser Navigator wurde mit AR-Technologie, Computer Vision und Methoden des maschinellen Lernens entwickelt. Es wird Ihnen helfen, zu navigieren und den genauen Ort zu finden, an den Besucher unserer Schule gehen sollten.

Zweck


Ziel ist es, einen universellen Assistenten für die Gebäudeorientierung zu schaffen.

Hauptziele:

  • Vereinfachung der Orientierung der Schule für neue Schüler, Eltern und Gäste;
  • Machen Sie die Anwendung universell, damit sie später die Navigation nicht nur in unserer Schule, sondern auch in anderen Gebäuden auf der ganzen Welt unterstützt.
  • Benutzerfreundliche Oberfläche, für alle verständlich;

AR - Augmented Reality


Jetzt tauchen jedes Jahr immer mehr neue Technologien auf, eine solche Augmented-Reality-Technologie oder einfach nur AR. Zunächst geschah seine allererste Bekanntschaft, als das bekannte Unternehmen Google beschloss, seine Brille mit Augmented Reality herzustellen. Dann begann sich die AR-Technologie unglaublich schnell zu entwickeln. Als Google sein Google-Glasprojekt aufgab, begann eine neue Ära der Masken, die unser Gesicht erkannte und es zu Prominenten machte. Dann erfasste das Pokémon beide Realitäten und die Menschen reisten Kilometer auf der Suche nach dem coolsten Charakter.

In jüngerer Zeit haben Google und Apple ihre ARC-Engines ARCore bzw. ARKit vorgestellt, aus denen wir schließen können, dass die AR-Technologie für die Entwicklung und Erstellung immer neuer Anwendungen und Spiele noch zugänglicher wird.

Was ist AR?


Augmented Reality ist eine Umgebung, die in Echtzeit die reale Welt ergänzt, wie wir sie mithilfe digitaler Daten sehen, die mit elektronischen Computergeräten und Software verarbeitet werden.

Augmented Reality (AR) muss außerdem von Virtual (Virtual Reality, VR) und Mixed (Mixed Reality, MR) unterschieden werden.

Was sind ihre Hauptunterschiede?


In AR werden virtuelle digitale Objekte im Gegensatz zur virtuellen Realität auf eine reale Umgebung projiziert.

Virtuelle Realität ist eine Welt, die mit digitalen technischen Mitteln geschaffen und über die Sinne auf eine Person übertragen wird.

Mixed Reality ist eine Kreuzung zwischen VR und AR und kombiniert beide Ansätze.

VR schafft eine eigene Welt, in die eine Person eintaucht, und Augmented Reality arbeitet mit der realen physischen Welt und führt virtuelle Objekte in sie ein. Daraus folgt, dass VR ausschließlich mit Benutzern interagiert, während AR mit der Außenwelt interagiert.

Entwicklungsperspektiven


Die AR-Technologie könnte die Nische besetzen, die Science-Fiction den Hologrammen gewidmet hat. Nur Hologramme werden nicht in Kürze verfügbar sein, und Geräte wie Hololens (Microsoft Augmented Reality Glasses) sind technisch einsatzbereit. Die Aussicht, virtuelle interaktive Illustrationen in Schulen zu sehen, die von allen Seiten betrachtet werden können, mit denen Sie interagieren und sofort das Ergebnis Ihrer Erfahrungen sehen können, scheint alles andere als schöne, strahlende Fantasien über die Zukunft zu sein. Die Ausbildung in technischen Fachgebieten kann viel visueller, verständlicher und interessanter werden.

Zusammenfassend ist die zusätzliche Realität nicht nur Spiele und coole Masken für soziale Netzwerke. Dies ist eine Vielzahl von Möglichkeiten für den Einsatz von AR in den Bereichen Bildung, Industrie und Medizin.

Das Wachstum von Augmented Reality ist erstaunlich. Im Gegensatz zu VR muss sie sich nicht auf massive Helme und leistungsstarke Hardware verlassen, sondern nur auf das kompakteste und mobilste Gerät unserer Zeit - ein Smartphone.

Augmented Reality verändert bereits unsere Gegenwart: virtuelle Masken, Jagd nach Pokémon in Städten und Sümpfen, Kinder, die nicht aus Holzstücken, sondern über den Telefonbildschirm aufeinander schießen. Jetzt ist es schon Realität.

Arbeitsplanung


Unser Navigator verfügt über ein System zur Erkennung von Schranknummern. Diese Erkennung funktioniert mit maschinellen Lernmethoden. Insbesondere wurde die Technologie der Faltungs-Neuronalen Netze verwendet. Tauchen wir ein in die Architektur.

Für dieses Modell mussten wir zwei Hauptprobleme lösen:

  • Erkennen von Buchstaben im Bild;
  • Erkennung von Briefen.

Wenn es zum Erkennen von Buchstaben alte - gute LeNet-ähnliche Netzwerke gibt, mussten wir zum Erkennen von Buchstaben im Bild unsere neuronale Netzwerkarchitektur schreiben, eine Datenbank zusammenstellen und das Modell trainieren. Um die Architektur zu erstellen, mussten wir verstehen, welche Art von maschinellem Lernproblem unser Modell lösen würde.

Nach vielen Debatten kamen wir zu einem Konsens - der Textdetektor sollte das Regressionsproblem lösen, d. H. Das Modell sollte vorhersagen, wo sich der Buchstabe möglicherweise befindet. Dann simulierten wir ein neuronales Netzwerk, das aus zwei Schichten ohne die Eingabe- und Ausgabeschichten bestand, aber dann standen wir vor einem Problem: Es gab viele Ausgabedaten, aus diesem Grund hatten wir ein Problem - das Problem der Umschulung, und wir kamen zu dem Schluss, dass wir Wir brauchen eine andere Architektur und Herangehensweise an das Problem. Nach einer langen Diskussion kamen wir zu dem Schluss, dass wir nicht Buchstaben auf einmal erkennen müssen, sondern erst Wörter und erst dann Buchstaben. Und hier haben wir viel Zeit damit verbracht, die Datenbank zu ändern und dann der Kaskade ein weiteres neuronales Netzwerk hinzuzufügen. Aus diesem Grund hat sich unser Koeffizient (wir haben die Metrik des mittleren quadratischen Fehlers gewählt) um 40% verringert, aber das tatsächliche Ergebnis war noch lange nicht erwünscht.Aus diesem Grund haben wir uns entschlossen, die Architektur von zwei neuronalen Netzen neu zu schreiben. Dazu mussten wir das „Ensemble“ zerlegen und verstehen, wie jedes Netzwerk separat funktioniert, und verstehen, warum wir jeden Parameter für jedes Netzwerk benötigen. Dann wurde uns klar, dass wir anstelle der Reduzierung der Anzahl der Parameter den Ansatz für die Aufgabe ändern können, und unser Team hat das Modell geändert: Jetzt ist dies ein Faltungs-Neuronales Netzwerk. Mit diesem Ansatz haben wir die Fehlerrate um 30% reduziert und die Geschwindigkeit des Durchlaufs durch das Netzwerk erhöht.Dies ist nun ein neuronales Faltungsnetzwerk. Mit diesem Ansatz haben wir die Fehlerrate um 30% reduziert und die Geschwindigkeit des Durchlaufs durch das Netzwerk erhöht.Dies ist nun ein neuronales Faltungsnetzwerk. Mit diesem Ansatz haben wir die Fehlerrate um 30% reduziert und die Geschwindigkeit des Durchlaufs durch das Netzwerk erhöht.

Das Problem der Zeichenerkennung ist gelöst. Es bleibt das Problem der Zeichenerkennung zu lösen. Die Zeichenerkennung selbst war keine neue Aufgabe für unser Team. Wir haben ein neuronales Faltungsnetzwerk trainiert, das in seiner Architektur dem neuronalen LeNet-Netzwerk ähnlich war, und einen Fehlerkoeffizienten von 99% für den Testdatensatz (d. H. Ein neuronales Netzwerk) erhalten fast kein Fehler). In der Praxis stellte sich jedoch heraus, dass dies eine inakzeptable Lösung war, da ein Bild mit fester Auflösung an den Eingang dieses Netzwerks gesendet werden sollte. In der Praxis können jedoch unterschiedliche Bilder mit unterschiedlichen Auflösungen eingehen. Dann hat unser Team darüber nachgedacht und beschlossen, dasselbe neuronale Netzwerk zu trainieren, jedoch nur in Bildern mit genügend Auflösung eine große Auflösung, die so groß ist, dass genau angenommen werden kann, dass es keine größere Erlaubnis zum Eintritt in das neuronale Netzwerk gibt,Aber dann haben wir diese Idee aufgegeben, weil wir versuchen, die Auflösung des Bildes zu ändern, das an die Eingabe der Architektur geliefert wird, was keine Änderung der Bildauflösung bedeutet. Jetzt müssen wir über die Architektur des Erkennens von Buchstaben nachdenken, und wir haben erkannt, dass die beste Lösung darin besteht, als Grundlage zu dienen Architektur - ein Nachkomme des neuronalen LeNet-Netzwerks - ResNet von Microsoft. Diese Architektur impliziert, dass Bilder mit unterschiedlichen Auflösungen empfangen werden.dass es Bilder mit unterschiedlichen Auflösungen empfängt.dass es Bilder mit unterschiedlichen Auflösungen empfängt.

Nachdem wir das neuronale Netzwerk trainiert hatten, betrug die Fehlerrate für uns 95% - ja, sie ist etwas geringer als bei der LeNet-Architektur, aber sie funktioniert. Dann erinnerten wir uns daran, dass wir nicht alle Buchstaben, sondern nur die Zahlen erkennen mussten, und beschlossen, sie vor der Bestimmung hinzuzufügen Das Symbol ist ein weiteres Modell, das bestimmt, ob das zu bestimmende Symbol eine Zahl oder ein Buchstabe ist. Da dieses Modell das Klassifizierungsproblem löst und nur zwei Klassen klassifiziert, war das neuronale Netzwerk bedeutungslos und daher haben wir die logistische Regression als Grundlage der Architektur genommen, nachdem wir dieses Modell hinzugefügt haben "Ensemble" und Umschulung des neuronalen Netzwerks (nur nach Zahlen), unsere Fehlerrate betrug + - 97%, was nicht sehr schlecht ist. In diesem "Hinweis" haben wir beschlossen, die Arbeit an der Zeichenerkennung zu beenden, und als Ergebnis haben wir ein solches "Ensemble" erhalten:

Originalbild -> Faltungs-Neuronales Netzwerk, das die Position von Wörtern bestimmt -> Faltungs-Neuronales Netzwerk, das die Position von Buchstaben bestimmt -> Logistische Regression, die den Buchstaben im Bild oder in der Zahl bestimmt -> ResNet, das die letzte Ziffer bestimmt

Aber dann hatten wir noch ein Problem: das Problem mit der Verfolgung der Geolokalisierung. Zuerst dachten wir, dass dies eine der einfachsten Aufgaben sei und erwiesen uns als falsch. Zunächst gingen wir wie echte Programmierer den Weg des geringsten Widerstands und verfolgten einfach die GPS-Geolokalisierung am Objekt - es funktionierte nicht, der Fehler war so groß, dass er überhaupt nicht zu uns passte. Wir entschieden uns, über andere Optionen zur Bestimmung der Geolokalisierung nachzudenken, und beschlossen, den Dienst vom Unternehmen aus zu verbinden Yandex - Yandex Latitude, aber es stellte sich heraus, dass es nicht funktioniert, d.h. Es ist kein funktionierender Dienst, bei dem Sie die API nicht verbinden können. Unser nächster Gedanke war, das Mapbox-Framework für die Unity-Engine zu verbinden (darauf haben wir beschlossen, unser Projekt zu entwickeln), nachdem wir dieses Framework erfolgreich verbunden, seine Funktionen untersucht und einen einfachen GPS-Tracker geschrieben haben - das Ergebnis war schon besserDer Fehler war jedoch immer noch groß. Aus diesem Grund suchten wir weiter nach Lösungen. Nach sorgfältigem Lesen der Dokumentation stellten wir fest, dass der erhaltene Wert einen Fehler von 15% aufwies. Dies passte nicht zu uns, zumal dieser Ansatz einen sehr großen Nachteil hatte - er verwendete GPS Wenn wir einen Navigator in der Schule erstellen, bedeutet dies, dass das GPS-Signal in Innenräumen entweder sehr schwach oder gar nicht ist. + GPS wird nicht auf allen Geräten unterstützt. Aus diesem Grund haben wir den Ansatz geändert und von der globalen Erkennung zur lokalen Erkennung basierend auf dem Visual Positioning System übergegangen Diese Methode hat auch ihre Nachteile, hat sich jedoch in keiner Weise auf unsere Arbeit ausgewirkt, sodass das Geolocation-Tracking-System bereit war.Dass es einen Fehler von 15% für den erhaltenen Wert gibt, passte nicht zu uns, zumal dieser Ansatz einen sehr großen Nachteil hatte - er verwendete GPS und wir führen den Navigator um die Schule herum, dann drinnen, dann wird das GPS-Signal entweder sehr schwach sein oder nicht Im Allgemeinen wird + GPS nicht auf allen Geräten unterstützt. Aus diesem Grund haben wir den Ansatz geändert und basierend auf dem Visual Positioning System von der globalen Erkennung auf die lokale Erkennung umgestellt. Diese Methode hat auch ihre Nachteile, wirkte sich jedoch in keiner Weise auf unsere Arbeit aus, sodass das Geolocation-Tracking-System bereit war.Dass es einen Fehler von 15% für den erhaltenen Wert gibt, passte nicht zu uns, zumal dieser Ansatz einen sehr großen Nachteil hatte - er verwendete GPS und wir führen den Navigator um die Schule herum, dann drinnen, dann wird das GPS-Signal entweder sehr schwach sein oder nicht Im Allgemeinen wird + GPS nicht auf allen Geräten unterstützt. Aus diesem Grund haben wir den Ansatz geändert und basierend auf dem Visual Positioning System von der globalen Erkennung auf die lokale Erkennung umgestellt. Diese Methode hat auch ihre Nachteile, wirkte sich jedoch in keiner Weise auf unsere Arbeit aus, sodass das Geolocation-Tracking-System bereit war.dann ist das GPS-Signal entweder sehr schwach oder gar nicht + GPS wird nicht auf allen Geräten unterstützt. Aus diesem Grund haben wir den Ansatz geändert und basierend auf dem Visual Positioning System von der globalen Erkennung auf lokal umgestellt. Diese Methode hat auch ihre Nachteile, hat sich jedoch nicht ausgewirkt unsere Arbeit, so war das Geolocation Tracking System bereit.dann ist das GPS-Signal entweder sehr schwach oder gar nicht + GPS wird nicht auf allen Geräten unterstützt. Aus diesem Grund haben wir den Ansatz geändert und basierend auf dem Visual Positioning System von der globalen Erkennung auf lokal umgestellt. Diese Methode hat auch ihre Nachteile, hat sich jedoch nicht ausgewirkt unsere Arbeit, so war das Geolocation Tracking System bereit.

Praktische Bedeutung


Unsere Anwendung dient dazu, Menschen, die zum ersten Mal gekommen sind oder einfach nur ein schlechtes Verständnis für die Struktur der Schule von Menschen in unserer Bildungseinrichtung haben, besser zu orientieren. Sie werden am Eingang einen Stand mit einem QR-Code treffen, wenn sie lesen, welche Anwendung heruntergeladen wird.

Funktionell


Was unsere Anwendung kann:

  • Erkennen Sie die Schranknummer an der Platte,
  • detaillierte Schulkarte,
  • eine Person in sein Büro führen,
  • Suche nach einem Büro anhand seiner Nummer,
  • Suchen Sie nach dem Klassenzimmer in der Liste und nach Typ (alle Klassenzimmer sind in bestimmten Gruppen verteilt, je nachdem, welches Fach in diesem Raum unterrichtet wird).

Anwendungsimplementierung


Die Anwendung wurde auf einer der beliebtesten Engines namens "Unity" geschrieben, wobei die Programmiersprache C # sowie Python und die TensorFlow-Bibliothek verwendet wurden. Außerdem wurde der Anaconda-Paketmanager verwendet.

Wie benutze ich diese Anwendung?


Angenommen, ich bin ein Elternteil und zu einer Elternversammlung gekommen. Ich muss in Raum 339, ein Informatikbüro, gehen. Ich ging zur Schule und muss scannen, während ich den QR-Code vom Tablet wiederhole. Nach dem erfolgreichen Laden der Anwendung komme ich zum Hauptmenü:

Bild

Danach kann ich im Anweisungsmenü herausfinden, wie die Anwendung verwendet wird: In

Bild

dieser Anweisung wird detailliert beschrieben, wie die Klasse gefunden wird, d. H. Zuerst klicken wir im Hauptmenü auf "Klasse suchen", dann werden die folgenden Menüs angezeigt: Der

Bild

Pfeil in der oberen rechten Ecke ermöglicht es uns, zum Hauptmenü zurückzukehren. Wenn das System die Schranknummer erkannt hat, erscheint ein Rahmen um die Platte und dann ein Bestätigungsfenster:

Bild

Wenn das Modell den Schrank korrekt erkannt hat, klickt unser bedingter „Elternteil“ auf „Ja“. Wenn die Schranknummer nicht korrekt erkannt wird, klicken Sie auf „Nein“ und machen Sie das Bild erneut. Die Anwendung wird also verstehen, wo wir uns im Schulbereich befinden.

Als nächstes muss der „Elternteil“ ein Ziel auswählen und hier hat er zwei Möglichkeiten: Geben Sie entweder die Nummer des Büros ein oder wählen Sie den Typ aus und finden Sie ihn später in der Liste:

Bild

Bild

Danach muss der „Elternteil“ den Zeichen auf der Kamera folgen.

Wenn Sie an Ihrem Ziel ankommen, werden Sie vom Navigator darüber informiert.

Es gibt eine andere Option, die vertrauter ist: "Eltern" klickt auf das Hauptmenü - "Schulplan" und ein detaillierter Plan wird geöffnet, in dem Sie unabhängig navigieren können, wie Sie zum gewünschten Ort gelangen.

Grundriss 1

Bild


Grundriss 2

Bild

Im Moment ist dies die gesamte Funktionalität der Anwendung. In Zukunft ist geplant, die Anwendung fertigzustellen und noch interessantere Funktionen hinzuzufügen.

Sie können das Video unter dem folgenden Link ansehen:


Fazit


Mit gut koordinierter Teamarbeit, genügend Zeit und Fähigkeiten, um Soft Skills anzuwenden, kann jedes Projekt umgesetzt werden.

Arbeitete an der Anwendung:

Ilya Vasilenko - Programmierer (Backend)

Demid Parfenyev - Designer

Lunev Daniil - Unity-Entwickler (Frontend)

Mikhail Purtov - Data Miner, Schöpfer

Dank unseres Projekts hat jedes Mitglied unseres Teams viele neue Dinge gelernt. Vom Design über die Programmierung bis hin zur Bildverarbeitung.

Unser PYC-Team glaubt, dass Habr unser Projekt lieben wird.

Grüße, PYC-Team

Werkzeuge


Unity + C #

Python + Anaconda-Paketmanager + TensorFlow-Bibliothek zum Erstellen neuronaler Netze + Bibliothek zum Erstellen von Modellen für maschinelles Lernen scikit-learn

Immersal - Eine Bibliothek, die VPS implementiert

Referenzliste


Tensorflow-
Website Immersal-
Website C #
-Website Python-Website * Diese Veröffentlichung gibt nicht vor, für unsere Anwendung zu werben, da sie nicht einmal in Open Source

verfügbar ist und nur innerhalb der Schule funktioniert

All Articles