Die Technologie von morgen
schon heute erleben
Künstliche Intelligenz verändert die Art und Weise wie wir Leben. Warum also sollte sie vor einem integralen Bestandteil unserer modernen Gesellschaft wie Autos halt machen?
Wir glauben, dass die Lösung für sicheres autonomes Fahren nicht in der Definition von starren Grenzen und Algorithmen liegt, sondern darin, dass Autos wie Menschen fahren lernen – inklusive ihrer natürlichen Reaktionen auf Hindernisse. Algorithmen bilden in diesem Verfahren nur den letzten Schritt und sorgen für das reibungslose Zusammenspiel der KI-Bestandteile.
Um diese Hypothese zu testen haben wir KARL ins Leben gerufen: ein Pilotprojekt um die Grenzen von Künstlicher Intelligenz im Straßenverkehr auszuloten. Hierbei werden sämtliche Tests natürlich auf Verkehrsübungsplätzen oder abgesperrten Privatgebieten durchgeführt.
KARL ist ein Projekt der Satgruppe Langenzenn, die mit mehr als 25 Jahren Bestehen die älteste Schülergruppe in Bayern ist. Unsere ca. 20 Mitglieder haben so die Möglichkeit, selbstbestimmt an Projekten zu arbeiten und dabei finanzielle Unterstützung und Unterstützung durch die Betreuungslehrer und ehemalige Mitglieder zu erhalten.
Die dabei entstehenden Projekte werden anschließend bei Schülerwettbewerben wie Jugend Forscht oder dem VDE Wettbewerb Mittelfranken vorgestellt. In den letzten Jahren konnten wir somit unter anderem einen Sonderpreis und einen 2. Platz im Regionalwettbewerb Jugend Forscht, und weiterhin einen 1. Platz beim VDE Wettbewerb Mittelfranken erreichen.
Die Technologie
hinter K.A.R.L
KARL ist eine Abkürzung für Kameragestütztes Assistenzsystem zur Reaktiven Lenkwinkelbestimmung. Wie der Name schon suggeriert geht es also im Kern darum, anhand von Kameradaten unter Einbezug der äußeren Umstände einen Lenkwinkel zu berechnen, der ein Auto sicher an sein Ziel bringt. Wir haben uns für Kameras als unsere Hauptdatenquelle entschieden, da Lidargeräte – eine Technik die häufig für autonome Autos genutzt wird – sehr teuer und für Schülergruppen wie uns praktisch unzugänglich sind. Im folgenden finden Sie eine Zusammenfassung der Grundprinzipien von KARL, untergliedert in Technik und Informatik. Aktuelle Erfolge finden Sie unter den Menüpunkt „Projektstatus“ am Ende dieser Seite.
Informatik
Gesteuert wird KARL durch eine Mischung aus künstlicher Intelligenz und traditionellen Algorithmen. Wie bereits erwähnt liegt der Fokus hierbei jedoch auf den Modulen mit KI, da vor allem die Grenzen von Machine Learning im Straßenverkehr erkundet werden sollen.Falls wir bei manchen Bausteinen der Steuerung auf Probleme im Einsatz von künstlicher Intelligenz treffen sollten oder dieser schlichtweg nicht praktikabel oder sinnvoll wäre, werden stattdessen händisch definierte Programmroutinen genutzt.
Möglicherweise lässt der obere Paragraf bereits ein weiteres wichtiges Konzept anklingen: Eine modulare Bauweise der Software. Dies ermöglicht uns, die künstliche Intelligenz in viele spezialisierte Teile aufzuspalten, was das Zurückverfolgen von Fehlern massiv vereinfacht und auch allgemein die Nachvollziehbarkeit der Ergebnisse erleichtert.
Denn diese ist normalerweise ein großer Kritikpunkt im Einsatz von Machine Learning: Solche Systeme werden oft als „Black Box“ bezeichnet. Dies liegt geradezu in der Natur von Machine Learning: Denn anstatt selbst zu programmieren basiert es auf der Idee, ein Programm anhand von einigen Beispielen seine innere Struktur selbst so anpassen zu lassen, dass es die optimalen Ergebnisse liefert. Diese Struktur ist für Menschen nur in sehr kleinen neuronalen Netzwerken nachvollziehbar – in unserem Fall zum Beispiel in der Größe eines einzelnen Moduls.
Durch das Ausgliedern von Unteraufgaben behalten wir also die ganze Zeit den Überblick über die einzelnen Module und können diese eingehend bezüglich ihrer erlernten Funktionsweise untersuchen. Die einzelnen Ergebnisse der Module werden dann durch feste Algorithmen zusammengeführt und für die Weiterverarbeitung in anderen Modulen vorbereitet. Dies dient ebenfalls zur besseren Kontrollierbarkeit da wir immer wieder Zwischenstufen zur Verfügung stehen haben, in denen wir Plausibilitätsprüfungen für die Ergebnisse der KI durchführen können.
Auch wenn das eigentliche Prinzip von künstlicher Intelligenz dem Programmierer auf den ersten Blick seine komplette Arbeit abnimmt – schließlich findet eine KI ihre innere Programmstruktur gewissermaßen selbst – ist die ganze Situation auf den zweiten Blick nicht ganz so einfach. Denn auch künstliche Intelligenz basiert im Kern auf grundlegenden mathematischen Prinzipien und besitzt eine Menge Parameter, die durch einen Entwickler angepasst werden müssen. Auch die Architektur der einzelnen neuronalen Netze ist immer unterschiedlich und muss programmiert werden – hier ist außerdem eine gewisse Portion menschliche Intuition im Spiel um herauszufinden was funktioniert und was nicht, da es bisher noch keine Möglichkeit gibt maschinell die perfekte künstliche Intelligenz zu finden, sei es auch nur für sehr beschränkte Aufgaben wie Bilderkennung, wo KI schon heute Fuß fassen kann.
Damit wir nun also nicht das Rad neu erfinden müssen, basiert unsere Arbeit auf etablierten Projekten: Zuerst einmal das Machine Learning-Framework Tensorflow von Google, was den Umgang mit den Grundlegenden mathematischen Konzepten von KI vereinfacht. Außerdem die High-Level-API Keras für Tensorflow, die uns erlaubt schnell über verschiedene KI-Entwürfe zu iterieren um ein Modul möglichst schnell fertig zu entwickeln. Weiterhin berufen wir uns vor allem in den früheren Phasen des Projekts immer wieder auf einen Forschungsbericht von Nvidia, denn der Grafikkartenhersteller hat bereits erfolgreich künstliche Intelligenz als Spurhalteassistent eingesetzt und stellt Teile des Entwicklungsprozesses öffentlich zur Verfügung.
Technik
Aber die Informatik ist nur ein Teil des Projekts: Denn wenn wir nun schließlich Steuerungskommandos erhalten, müssen diese auch in die Tat umgesetzt werden. Normalerweise sind Autos seit 1995 mit einem DriveByWire (DBW) System ausgestattet, das die Steuerung eines Autos nur über elektrische Signale ermöglichen. Diese Systeme sind jedoch häufig nicht von außen zugänglich oder die zu sendenden Kommandos sind für die Öffentlichkeit undokumentiert, was diese Methode für uns unbrauchbar macht.
Geplant ist deswegen das Auto so umzubauen, dass alle wichtigen Fahrfunktionen mechanisch z.b. in Form von Schrittmotoren gesteuert werden. Dies gewährleistet vor allem, das der Fahrer jederzeit unabhängig von Sicherheitssystemen oder der KI die volle Kontrolle über das Fahrzeug erlangen kann und gibt uns einfacheren Zugriff auf die Funktionen des Autos. Geplant ist weiterhin, in den Kofferraum einen Zwischenboden einzubauen, unter welchen die gesamte Hardware verstaut wird, die somit nicht ohne weiteres von außen ersichtlich ist.
Zur Datenerfassung dienen mehrere Kameras, welche in Stoßstangennähe oder hinter den Scheiben angebracht werden und Abstandssensoren um das Auto im Notfall vor Kollisionen zu bewahren. Diese Kameras werden so angeordnet, dass wir zum Beispiel im Bereich vor der Motorhaube stereoskopisches Sehen simulieren können und eine Tiefenwahrnehmung zur Verfügung haben.
Zur Stromversorgung wird zuerst das bereits in das Auto integrierte Stromnetz verwendet. Sollte dieses aus Leistungszwecken nicht ausreichen ist denkbar in den Zwischenboden ein extern aufladbares Akkusystem einzubauen welches durch weitere kleine Umbauten am Auto auch während der Fahrt geladen werden kann.
Das Team
Erik Büttner, 16
Kümmert sich um den technischen Umbau des Autos
Steffen Dillmann, 16
Kümmert sich um den technischen Umbau des Autos
Dennis Reimer, 16
Entwickelt die Software und die Künstliche Intelligenz für das Auto
Sonderpreis „Internet der Dinge“ im Regionalwettbewerb Jugend Forscht 2016
1. Platz beim VDE Wettbewerb Mittelfranken 2016
2. Platz im Regionalwettbewerb Jugend Forscht 2017
Projektstatus
Dennis | 06.01.19
Entwicklung einer Pipeline zur Extraktion und weiteren Verarbeitung von Bildausschnitten. Zusätzlich noch Programmierung einer Schilderkennung mit traditionellen Methoden.
Dennis | 05.01.19
Ausarbeitung von 2 weiteren Seiten und Feintuning der Schildklassifizierung.
Dennis | 03.01.19
Ausarbeitung der nächsten 6 Seiten der Jugend forscht-Arbeit.
Dennis | 02.01.19
Ausarbeitung der ersten 3 Seiten der Jugend forscht-Arbeit.
Dennis | 29.12.18
Konvertierung der Objekterkennung und der semantischen Segmentierung zu tflite-Modellen um die Inferenzgeschwindigkeit zu verbessern.
Dennis | 28.12.18
Test der Objekterkennung auf dem vorbereiteten BDD100K-Datasets, die bisherigen Ergebnisse sind allerdings nicht allzu vielversprechend. Durch weitere Änderungen an dem LSTM-Modul konnte dessen Genauigkeit um ca. 0,5 Grad verbessert werden, außerdem wurde ein Verfahren konzipiert um die Ausgaben der Objekterkennung schnell und effizient mit denen der semantischen Segmentierung abzugleichen.
Dennis | 27.12.18
Vorbereitung des BDD100K-Datasets zum feintunen der Objekterkennung, außerdem manuelle Hyperparameteroptimierung des Zusammenführungsmodells und weitere Entwicklung an der algorithmischen Lösung.
Dennis | 26.12.18
Umprogrammierung eines LSTM-Modells für das Training auf einer TPU (Tensor processing unit).
Dennis | 25.12.18
Test eines Drehgebers und dessen Reaktionsgeschwindigkeit. Das kamerabasierte Lenkwinkelerfassungssystem ist etwas zu langsam für die schnelle Rotation des Motors der Servolenkung, weshalb ein schnellerer Sensor nötig ist. Außerdem weitere Arbeit an dem neuronalen Netzwerk zur Modulkombination. Hier wurden die ersten Schichten zur Vorverarbeitung der Eingabedaten fertig trainiert und die Zwischenausgaben dieser Schichten für jedes der ca. 65000 Testbilder berechnet. Diesen Zwischenergebnissen wird im weiteren Verlauf ein zeitlicher Kontext zugewiesen.
Dennis | 13.12.18
Optimierung der Bildübertragung zwischen dem lokalen Computer im Auto und dem Server für die Berechnungen. Diese Änderung sollte die Verzögerung stark verkleinern.
Dennis | 12.12.18
Konzeption der Verbindungs-KI. Dieser erste Versuch wird ohne temporalen Kontext durchgeführt und dient nur dazu, die ungefähre Architektur zu bestimmen.
Dennis | 07.12.18
Erster Test des gesamten Lenksystems. Hierfür wurde das Lenkwinkelbestimmungssystem mit dem Steuerungssystem verbunden welches anschließend die Aufgabe hatte, von einer gewissen Auslenkung auf die Ausgangsposition zurückzusteuern. Der Test verlief weitgehend zufriedenstellend, allerdings kam es zu einem Hin- und Herschwingen des Lenkrads da der Test im Stehen durchgeführt wurde - denn dabei ist die Reibung zwischen der Straße und den Reifen höher als im Normalbetrieb.
Dennis | 02.12.18
Beginn der Zusammenführung der verschiedenen Module. Die verschiedenen Module werden hierfür zuerst einzeln auf die Bilder eines Datasets angewendet, und anschließend in einem weiteren neuronalen Netzwerk weiterverarbeitet.
Dennis | 26.11.18
Restliche Einrichtung der Lenkwinkelerfassung auf dem Raspberry Pi. Das System läuft mit 15 - 20 FPS, was für uns schnell genug und durchaus erstaunlich für einen Mikrocomputer ist.
Dennis | 25.11.18
Feintuning des Moduls für semantische Segmentierung auf dem Cityscapes coarse - Dataset und Vorbereitung eines Raspberry Pi für die Kombination von Lenkwinkelerkennung und Steuerung des Lenkrads.
Dennis | 24.11.18
Programmierung der ersten API-Server. Die Latenz ist hierbei größer als erwartet, weshalb im Moment mehrere verschiedene Bildübertragungsmöglichkeiten evaluiert werden. Außerdem wurden Vorbereitungen getroffen, um die Objekterkennung und die Semantische Segmentierung auf dem Cityscapes coarse-Dataset feinzutunen.
Dennis | 23.11.18
Kalibrierung der Optoisolatoren und Durchführung von ersten Tests - Die Genauigkeit scheint sehr gut und für unsere Zwecke weit ausreichend zu sein.
Dennis | 21.11.18
Bau von zwei Optoisolatoren, die für Experimente an der Lenkungssteuerung eingesetzt werden sollen.
Dennis | 19.11.18
Einbau des Lenkrad-Tracking-Systems und Umsetzung von leichten Verbesserungen.
Dennis | 17.11.18
Programmierung eines Online-Tools für die Annotierung von Ampelbildern. Diese Annotationen werden dafür genutzt, ein Klassifizierungssystem zu trainineren, das die Daten der Objekterkennung weiterverarbeitet.
Dennis | 16.11.18
Umsetzung des gestern konzipierten Lenkwinkelsensors. Der Algorithmus basiert auf einer Mischung aus einem Hough-Linien-Detektor und einem Konturenerkennungssystem. Anhand dieser Konturen wird das Bild gerade gezogen, um anschließend den Lenkwinkel durch die Steigung der Hough-Linien zu finden.
Dennis | 15.11.18
Durchführung erster Experimente bezüglich eines visuellen Lenkwinkelsensors. Da durch den simulierten Drehmomentsensor nur Rotationen nach links oder rechts gesteuert werden können, muss es eine Möglichkeit geben, während der Ansteuerung den aktuellen Zustand des Lenkrads auszulesen. Die ersten Konzepte basieren auf einem Verfahren, welches dem von QR-Codes ähnelt.
Dennis | 12.11.18
Trainingsbeginn einer Objekterkennung auf Basis von MobilenetV2 und SSD Multibox mithilfe der Tensorflow Object Detection API.
Dennis | 11.11.18
Entwicklung einer Möglichkeit, die pixelweisen Annotationen des Cityscapes-Datasets in Boxen zu konvertieren. Hiermit kann die Fülle an deutschen Straßenschildern, die Cityscapes bietet, auch für die Objekterkennung genutzt werden.
Dennis | 09.11.18
Test der neuen Digital-Analog-Converter. Die Funktionalität bei niedrigen Spannungsdifferenzen ist auch bei der 100 Ohm-Variante beschränkt, was konkret bedeutet dass Digital-Analog-Converter nur mit konstanter Geschwindigkeit drehen können. Hierbei kann es aber zum Überschwingen kommen falls das Lenkrad noch zu viel Geschwindigkeit hat wenn es anhalten sollte, weswegen die Variante mit einem Potentiometer besser geeignet scheint.
Dennis | 06.11.18
Berechnung und Bau von neuen Digital-Analog-Convertern mit geringerem Eigenwiderstand. Statt 2 kOhm beträgt dieser nun 100 Ohm und limitiert daher die Stromstärke nur in kleinerem Maße, was die Signalverarbeitung für den EPS-Controller erleichtern sollte.
Dennis | 04.11.18
Weitere Programmierung der SLAM-Algorithmen, vor allem der Punktabgleichung über mehrere Bilderabfolgen um ein sauberes Tracking von Referenzpunkten zu ermöglichen.
Dennis | 03.11.18
Suche nach Alternativen für eine "You only look once"-Objekterkennung, die in unserem konkreten Anwendungsfall keine zufriedenstellende Performance erreichte. Ein möglicher Kandidat ist eine SingleShotDetector-Architektur, die auf ähnlichen Konzepten aufbaut, aber ein einfacheres Training ermöglicht.
Dennis | 02.11.18
Erschließung von Formeln für ein SLAM-System (Simultaneous Localization and Mapping), außerdem Beginn einer konkreten Implementierung.
Dennis | 01.11.18
Evaluation von Digitalpotentiometern als zweite Option für die Lenkung. Diese bringen unter anderem Vorteile wie höhere Genauigkeit und niedrigeren Materialaufwand mit sich.
Dennis | 31.10.18
Konzeption der Kommunikationsstruktur zwischen den verschiedenen KI-Modulen.
Dennis | 29.10.18
Bau der geplanten modularen Kamerahalterung, Durchführung erster Tests an der Servolenkung mithilfe der gestern gebauten Digital-Analog-Converter und Modelländerungen für die semantische Segmentierung.
Dennis | 28.10.18
Bau von zwei Digital-Analog-Convertern für die Lenkungssteuerung, außerdem Testen der Zugkraft von Servomotoren für die Geschwindigkeitssteuerung und Optimieren des Moduls für semantische Segmentierung.
Dennis | 27.10.18
Durchführung erster Experimente auf Basis des Mapillary-Vistas-Datasets.
Dennis | 25.10.18
Erstellen eines Proof of Concept für eine alternative Servolenkungssteuerung, die nicht auf Digital-Analog-Convertern basiert. Besagtes Konzept wird in den nächsten Tagen auf seine Tauglichkeit geprüft.
Dennis | 24.10.18
Vorbereitung des Mapilary Vistas-Datasets als Alternative zu Cityscapes. Beides sind Datasets für semantische Segmentierung, allerdings wurde ersteres mit verschiedenen Kameras aufgenommen und hilft dem neuronalen Netz deswegen, allgemeine Rückschlüsse zu ziehen, statt sich nur auf ein Bildformat zu konzentrieren.
Dennis | 22.10.18
Konstruktion einer Halterung für das Stereo-Kamerasystem. Mithilfe einer festen Halterung muss das System nicht jedes mal erneut kalibriert werden, sondern verharrt in einer Position.
Steffen | 20.10.18
Durchführung diverser Spannungsmessungen an der elektrischen Servolenkung. Diese bestätigten die aus vorherigen Widerstandsmessungen angenommenen Kabel, an welchen die für das EPS Steuergerät relevanten Spannungen anliegen. Bei einer Rechtsdrehung des Lenkrads liegt an Kabel 1 (Gelb) eine Spannung kleiner 2,5V an, während an Kabel 2 (Grün) eine Spannung größer 2,5V anliegt. Bei einer Linksdrehung ist dies, wie erwartet, invertiert.
Dennis | 20.10.18
Erste Teile der Referenzimplementierung übertragen, die Konvergenzprobleme bleiben jedoch bisher weiterhin bestehen. Außerdem finden eines passenden Kamera-Abstandes für die Stereowahrnehmung - ein System, dass anhand von zwei verschobenen Kameras Tiefendaten errechnen kann welche anschließend für eine Objekterkennung und ein SLAM-System genutzt werden.
Dennis | 18.10.18
Reverse engineering der You only look once - Referezimplementierung. Aufgrund von Problemen mit der Konvergenz der Objekterkennung wird nun zuerst die Referenzimplementierung in die Programmiersprache Python übertragen, um anschließend nach einem Proof of concept mit Optimierungen und Änderungen zu beginnen, die die Leistungsanforderungen senken.
Dennis | 16.10.18
Weiteres Feintuning der Fehlerfunktion und Berechnung von Fehlergewichtungen. Diese Gewichte sorgen dafür, dass beim Training des neuronalen Netzwerks keine ungewollten Tendenzen zu bestimmten Objekten oder gar Größen entstehen, nur weil sie häufiger in einem Dataset vorhanden sind.
Dennis | 15.10.18
Umsetzung des geplanten Objekterkennungsmodells, außerdem Entwicklung einer Fehlerfunktion für diese Aufgabe. Als Feature-Extractor wird eine Architektur genutzt die an Googles MobilenetV2 anlehnt, diese wurde auf dem ImageNet-Dataset bereits vortrainiert.
Dennis | 12.10.18
Ausarbeitung der Modellstruktur für die Objekterkennung auf COCO-Basis. Das Grundprinzip basiert auf der "You only look once"-Architektur von Joseph Redmon et al. 2015 (https://arxiv.org/abs/1506.02640) die so modifiziert wurde, dass sie Bilder mit einer geraden Pixelanzahl verarbeiten kann und somit auch die Erkennung von sehr großen und sehr kleinen Objekten ermöglicht.
Dennis | 11.10.18
Implementierung der Datengeneratoren für das COCO-Dataset. Diese kümmern sich um die modellspezifische Datenvorverarbeitung wie das Filtern von ungenutzten Annotationen, das Finden der besten Ankerbox oder auch die Skalierung von Annotationen auf die Bildgröße.
Dennis | 10.10.18
Entwickeln eines portablen Setup-Skripts für das COCO-Dataset. Hiermit ist es möglich, sowohl lokal als auch auf Servern in der Cloud zu programmieren und trainieren. Außerdem Berechnung von Ankerboxen mithilfe von k-Means-Clustering, diese dienen als Annäherungen an die häufigsten Rahmenboxen des Datasets und erleichtern das Training somit immens.
Dennis | 09.10.18
Vorverarbeitung von Bildern des COCO-Objekterkennungsdatensets durch Skalierung, Komprimierung und Hochladen auf einen Verteilerserver. Hierdurch kann die Objekterkennung auf dem COCO-Dataset vortrainiert werden, was vor allem die Performance bei der Erkennung von Autos und Fußgängern steigern sollte.
12.09.2018 | Das Auto ist da
Dank dem Autohändler pola (www.mobile.de/POLA), der uns ein Auto kostenlos zur Verfügung gestellt hat, können wir nun mit dem Umbau eines echten Fahrzeugs beginnen. Wir bedanken uns vielmals bei dem Autohändler für die unentgeltliche Übergabe des Autos. Es handelt sich hierbei um einen Opel Corsa B, Baujahr 1999.
Dieser eignet sich besonders gut für den Umbau, da in Autos von diesem Typ seit 1997 eine elektronische Servolenkung (EPS) verbaut ist. Durch Anlegen diverser Spannungen können wir den Drehmomentsensor der Servolenkung nachahmen und somit eine Drehung des Lenkrads simulieren. Dies führt dazu, dass die Servolenkung sich dreht und das Auto lenkt.
13.08.2018 | Erste Zusagen für Testgelände
Da das Auto nach dem Umbau, welcher die Steuerung des Fahrzeugs durch die KI ermöglicht, nicht mehr an dem öffentlichen Straßenverkehr teilnehmen darf, müssen wir auf einem abgesperrten Gelände testen. Dieses sollte den realen Straßenbedingungen dennoch möglichst nahe kommen, um das Verhalten der KI auf realen Straßen zu erkennen. Hierzu bieten sich Verkehrsübungsplätze gut an, da diese wie echte Straßen geschaffen sind und dennoch über die Möglichkeit verfügen den Platz zu sperren, um das Auto zu testen.
Kürzlich bekamen wir eine Zusage von dem Verkehrsübungsplatz in Forchheim. Diesen dürfen wir außerhalb der offiziellen Öffnungszeiten als Testgelände nutzen. Da wir nun einen passenden Ort zum testen haben, können wir mit der Suche nach einem passenden Auto beginnen. Dieses sollte so beschaffen sein, dass es einen OBD2 Stecker mit CAN-Bus unterstützt um verschiedene Informationen wie zum Beispiel die Geschwindigkeit auslesen zu können.
09.07.2018 | Vorüberlegungen zur Kamerapositionierung abgeschlossen
Da wir bei der Entwicklung von KARL auf teure Lidargeräte verzichten, benötigen wir eine Alternative um Tiefeninformationen über unsere Umgebung zu erhalten. Hierzu simulieren wir das Verhalten der menschlichen Augen: Indem wir zwei Kameras nebeneinander platzieren, können wir anhand der Verschiebungen zwischen den einzelnen Objekten die Distanz zu diesen bestimmen. Hierbei müssen wir jedoch einen Kompromiss eingehen: Entweder wir platzieren die Kameras weit voneinander entfernt, dann haben wir zwar eine akkuratere Entfernungsbestimmung, jedoch gehen dabei große Teile an Bildmaterial verloren. Oder wir platzieren die Kameras nah aneinander und das Problem liegt umgekehrt vor.
Um dieses Problem zu lösen haben wir Formeln aufgestellt, die in Abhängigkeit vom Bildwinkel, der Distanz zwischen den Kameras, der Auflösung und der Ungenauigkeit der Algorithmen zum Errechnen der Objektdisparitäten jeweils einen Wert für die verbleibende Bildfläche, sowie einen Wert für die durchschnittliche Messungenauigkeit auf 20 m zurückgibt. Hiermit können wir einen optimalen Kompromiss finden. So besitzt im obenstehenden Graphen die Spur von A1 die verbleibende Bildfläche als y-Wert, und die Spur von Punkt R1 die durchschnittliche Ungenauigkeit in m als y-Wert. Der x-Wert ist bei beiden dabei die Distanz der Kameras zueinander in m. Alle Werte basieren auf einem Bildwinkel von 52°.
Weiterhin wurden die Verfeinerungen am neuronalen Netzwerk zur semantischen Segmentierung vorerst eingestellt, um die eigentliche Objekterkennung stärker zu priorisieren.
04.07.2018 | Navigationssystem
Das Navigationssystem ist fertig eingerichtet und bereit zur Datenentnahme. Es basiert auf öffentlichen Openstreetmap-Karten und erlaubt uns auch offline schnell Routen zu finden.
15.06.2018 | Erste Ergebnisse des Moduls für semantische Segmentierung
Dieses Modul ist auf Basis des medizinischen neuronalen Netzes „U-Net“ entstanden und klassifiziert jeden einzelnen Pixel einer Straßenszene. In Kombination mit einer normalen Objekterkennung ergeben sich so zwei unabhängig Datenquellen, welche die Datenerfassung in der Summe genauer machen. Diese Implementierung hat noch Probleme mit dem Erkennen von kleinen Objekten wie Schildern und Ampeln, was in der Zukunft durch eine spezialisierte Fehlerfunktion und den Einsatz von SPP-Modulen (spatial pyramid pooling) verbessert werden soll.
02.05.2018 | Erfolgreiche erste Simulationen
Es ist uns gelungen, mehrere Minuten autonom und ohne Unterbrechung in der Computersimulation „Euro Truck Simulator 2“ zu fahren. Die Lenkwinkel werden dabei durch das Spurhaltemodul bestimmt und durch einen virtuellen Controller ausgegeben. Ein Video folgt bald.
25.04.2018 | Fortschritt beim Spurhalte-Modul
Nach relativ kurzem Training auf einem vergleichsweise kleinem Datenset zeigt das Spurhaltemodul den Umständen entsprechend gute Ergebnisse. Die zugrunde liegende KI ist eine vereinfachte Version desselben Modells das auch Nvidia für sein selbstfahrendes Auto nutzt.
Die größte Schwierigkeit lag darin, eine hohe Performance auf Strecken zu erreichen, die das Programm noch nie gesehen hat: Gelöst wurde dieses Problem durch Regularisierung der Gewichte des neuronalen Netzes mithilfe mehrerer L2-Losses und leichtem Dropout in den letzten Schichten.
Folgendes Video zeigt die vorausgesagten Lenkwinkel auf vorher ungesehenen Straßen, wobei die KI jeweils nur die untere Hälfte von jeweils einem Bild als Eingabewert annimmt. Das bedeutet diese Ergebnisse haben noch keine zeitliche Dimension was die Performance noch weit verbessern sollte. Außerdem haben die berechneten Winkel keinen Einfluss auf das Video (bei einem richtigen Auto würde sich das Bild korrespondierend zum Lenkwinkel ändern), weshalb die Genauigkeit in der Realität höher als im Video wäre.
Denn lenkt das Auto hier zum Beispiel zu weit nach rechts, verschiebt sich das Bild nicht nach links wie in der Realität. Somit hat der Spurhalteassistent nicht einmal die Möglichkeit, seinen eigenen Fehler zu erkennen und zu beheben. Außerdem findet die Evaluation im unteren Video auf deutschen Straßen statt, obwohl die KI nur auf amerikanischen Straßen trainiert wurde und komplett neuen Verkehrssituationen (z.B. Kreisverkehren), einer anderen Kameraperspektive und anderen Wetterbedingungen ausgesetzt ist.