12. März 2020
timer-icon 6 Min.

Künstliche Intelligenz zur Klassifizierung von Kraftfahrzeugen in Bilddaten

In diesem Blog-Post beschreiben wir, wie wir eine künstliche Intelligenz (KI) entwickelt haben, die in Bilddaten Fahrzeuge anhand ihrer Hersteller und den zugehörigen Modellen klassifizieren kann. Dabei möchten wir eine weniger technische Erklärung für alle Schritte der Entwicklung liefern, sondern viel eher das Vorgehen bei der Entwicklung des Projektes und die zu bewältigenden Herausforderungen vorstellen. Zur Umsetzung dieses Projektes verwenden wir Deep Learning. Dies ist eine spezielle Methodik der künstlichen Intelligenz, bei der tiefe neuronale Netzwerke verwendet werden. Neuronale Netzwerke sind mathematische Konstrukte, welche Strukturen im menschlichen Gehirn nachbilden und ihr Wissen aus bestehenden Daten erlernen können, ohne explizit programmiert werden zu müssen. Wie solche Projekte im technischen Detail umgesetzt werden können, haben wir bereits in anderen Blog-Beiträgen wie z.B. Deep Learning for End-to-End Captcha Solving oder aber Image classification with CNNs and small augmented datasets näher erläutert.

Motivation

Bei der Umsetzung dieses Projektes hat uns in erster Linie die Allgegenwärtigkeit von Autos in unserem Leben und unser persönliches Interesse motiviert. Aus einer technischeren Perspektive ist die Erkennung von Fahrzeugen eine sehr anspruchsvolle und spannende Aufgabe, da die einzelnen Fahrzeugbilder sich stark ähneln können. Manche Modelle unterscheiden sich nur im Detail und selbst Menschen haben bereits Schwierigkeiten die Vielfalt verschiedener Fahrzeugmodelle auseinander zu halten. Gerade auch deshalb, gibt es für diese KI eine Vielzahl von Anwendungsmöglichkeiten. Beispielsweise auf Internetplattformen zum Fahrzeugverkauf, können Nutzer durch solch ein KI-System unterstützt werden. Auch, wenn ein Verkäufer meist weiß, welches Fahrzeug er zum Verkauf anbietet, kann die automatische Erkennung dennoch eine Hilfe sein. Statt Fahrzeugsdetails mühsam manuell einzugeben, können diese direkt anhand von den Bildern ermittelt werden.

Andere Anwendungsmöglichkeiten liegen z.B. bei der Produktion von Fahrzeugen, bei der Verkehrsüberwachung oder  aber bei Schadensmeldung an Versicherungen. Aufgrund dieses breiten Spektrums an Einsatzmöglichkeiten, waren wir besonders gespannt, welche Ergebnisse unsere künstliche Intelligenz liefern wird.   

Daten – der Grundstein jedes KI-Projektes

Der Start in ein komplexes Projekt wie dieses, benötigt zunächst einiges an Vorarbeit. Wie in den meisten KI-Projekten, beginnt die Reise mit der Suche nach passenden Daten. Zuerst haben wir dabei Datensätze untersucht, die bereits in der Forschung verwendet werden. Dadurch erhält man einen Einblick in die Datenbeschaffenheit zur Lösung von ähnlichen Problemstellungen, aber auch einen technischen Überblick über Methodiken, die zur Umsetzung verwendet werden können. Da diese Forschungsarbeiten das eigene Problem meist aber nur bis zu einem gewissen Grad lösen und spezielle Anforderungen nicht berücksichtigt werden, ist oft Nacharbeit nötig, um mehrere Datensätze aus verschiedenen Arbeiten zu fusionieren und auf die eigenen Gegebenheiten anzupassen. So war es auch in diesem Fall.

Wenn wir von Datensätzen sprechen, meinen wir in diesem Projekt einzelne Bilder (jpgs, pngs, …), welche zusätzlich, meistens in tabelarischer Form, ergänzende Meta-Informationen enthalten. Diese Meta-Informationen werden oft Annotation oder Label genannt. Diese unterscheiden sich in verschiedenen Datensätzen, sowohl in der Qualität als auch der Form (Groß-Kleinschreibung, Dateiformat, etc.). Die benutzten Datensätze für unser Projekt sind alle gut annotiert, allerdings nicht im selben Stil. Dies bedeutete, dass wir zunächst die Schreibweisen der Marken und Modelle für die verschiedenen Datensätze vereinheitlichen mussten. Dies war nötig, da Computer verschiedene Schreibweisen als unterschiedliche Elemente interpretieren (Case Sensitivity). Ein „Volkswagen Jetta“ und ein „VOLKSWAGEN jetta“ sind für einen Computer beispielsweise zwei völlig unterschiedliche Dinge, obwohl sie für uns Menschen fast identisch aussehen. Es müssen also eindeutige Labels verwendet werden, so dass alle Bilddaten des selben Fahrzeugmodels auch exakt gleich bezeichnet werden.

Der nächste Schritt in der Zusammenstellung unseres Datensatzes war die Anpassung auf die Gegebenheiten des europäischen Marktes. Die von uns genutzten Datensätze enthalten nämlich allerlei verschiedene Hersteller und Modelle von Fahrzeugen, von denen viele in Europa kaum bis gar nicht auftauchen. Um eine dadurch mögliche Verzerrung der künstlichen Intelligenz zu verhindern, machten wir uns Statistiken über die Neuzulassungen in Europa zu nutze. Die European Automobile Manufacturers Association (ACEA) liefert passende Tabellen bis zurück zum Jahr 1990, mit deren Hilfe wir nun einzelne Hersteller entfernen und die Verteilung der Daten anpassen konnten. Mit diesem Schritt konnte die Vorbearbeitung unseren Datensatzes abgeschlossen werden und wir können mit der eigentlichen Entwicklung der künstlichen Intelligenz beginnen.

In der folgenden Abbildung werden beispielhaft einige Fahrzeuge aus dem Datensatz dargestellt. 

Auszug aus dem Datensatz (entnommen aus dem Stanford Car Dataset [1])

Training eines neuronalen Netzwerks

Wie bereits einleitend beschrieben, verwenden wir zur Entwicklung unserer künstlichen Intelligenz ein neuronales Netzwerk. Bei einem neuronalen Netzwerk handelt es sich um einem Verbund aus Neuronen, welche wiederum aus verschiedenen Eingängen, anpassbaren Gewichtungen und speziellen Aktivierungsfunktionen bestehen. So ein neuronales Netzwerk ist zunächst völlig unwissend. Erst durch Training des Netzwerkes mit unseren Daten, kann sich das Netzwerk immer näher an unser gewünschtes Ergebnis annähern. Das Training des Netzwerkes sieht dabei so aus: Dem Netzwerk werden immer wieder Bilder aus dem Datensatz übergeben, auf die es Vorhersagen treffen soll. Diese Vorhersagen sind nichts anderes, als Berechnungen die durch die Neuronenstruktur durchgeführt werden. Diese Vorhersagen werden dann mit der Wahrheit, also den uns bekannten Annotationen für Hersteller und Fahrzeugmodell verglichen und daraus ein Fehlerwert bestimmt. Mit Hinblick auf diesen Fehlerwert werden nun die Gewichte im neuronalen Netzwerk angepasst. Dies geschieht solange bis der Fehler für Netzstruktur und gegebene Daten minimal ist.

Eine wichtige Rolle spielt hier die Auswahl der Netzstruktur. Nicht jede Netzstruktur ist zur Lösung von jedem Problem geeignet, sondern muss je nach Aufgabe speziell ausgewählt oder entwickelt werden. Beim Lösen von Computer Vision Aufgaben wie dieser, wird dabei oft auf Netzstrukturen zurückgegriffen, die bei anderen Aufgaben bereits sehr gut funktioniert haben. Eine typische Benchmark für Computer Vision Netzwerke ist die sogenannte ImageNet Challenge. Hier geht es darum viele unterschiedliche Bilder in 1000 verschiedene Kategorien einzuordnen. Die Teilnehmer der Challenge erhalten einen Datensatz mit 1,2 Millionen Bildern und zugehörigen Annotationen, um ihr neuronales Netzwerk zu trainieren. Die endgültige Auswertung der Netzqualität erfolgt anschließend mit einem unveröffentlichten Testdatensatz. Ein Netzwerk, welches in den vergangenen Jahren sehr gut abgeschlossen hat, ist das ResNet152. Dieses verwendeten wir daher auch für dieses Projekt. Mit dieser Auswahl kann nun das eigentliche Training unseres neuronalen Netzwerks beginnen – jetzt ist Geduld gefragt.

Ergebnisse

Nach mehreren Tagen Trainingszeit konnten nun die ersten Ergebnisse erzielt und damit auch eine funktionsfähige KI geschaffen werden. Um diese KI auf Ihre Qualität zu überprüfen, gibt es im Deep Learning mehrere Wege und Kennzahlen. Eine mögliche Kennzahl zur Evaluation ist die Accuracy (dt. Genauigkeit). Diese Accuracy sagt aus, wie viele der Vorhersagen im Verhältnis zu allen Vorhersagen korrekt sind. Zur Erhebung dieser Kennzahl werden im Regelfall Vorhersagen auf Daten durchgeführt, welche nicht bereits im Trainingsprozess verwendet wurden. Damit soll überprüft werden, ob die KI auch wirklich gelernt hat eine Klassifikationsaufgabe zu lösen oder aber nur die im Training genutzten Daten auswendig gelernt wurden (Overfitting). Unsere KI konnte in 89% aller Fälle den korrekten Fahrzeugherstellern inklusive Modell auf unsere ungesehenen Testdaten liefern. Das kann sich sehen lassen!

Aufgrund dieses überzeugenden Ergebnisses wurde die KI von uns in eine Weboberfläche implementiert, sodass auch Nicht-Entwickler Vorhersagen auf Bilddaten durchführen können. Die Weboberfläche wird in der folgenden Animation beispielhaft dargestellt. 

Weboberfläche zur Klassifikation von Fahrzeugen in Bilddaten (Bild entnommen aus [1])

Zusammenfassung

Mit diesem Blog-Beitrag haben wir die verschiedenen Schritte zur Umsetzung eines Fahrzeugklassifikators vorgestellt. Im Gegensatz zu unseren anderen Artikeln, haben wir hier versucht eine möglichst abstrakte Beschreibung zu liefern, um auch Leser abzuholen, die selbst keine KI-Entwickler sind. Unser besonderer Fokus bei der Entwicklung lag auf der Nutzung von frei verfügbaren Datensätzen und Netzwerken, um die Machbarkeit des Projekts mit  geringstmöglichem Aufwand zu überprüfen. Die Ergebnisse konnten dabei mit einer Accuracy von 89% auf unseren Testdatensatz durchaus überzeugen. Für den Einsatz in einem Produktivsystem, sollte das neuronale Netzwerk aber je nach konkretem Anwendungsfall noch einmal angepasst und erneut trainiert werden.

Falls Ihnen dieser Blog-Beitrag gefallen hat, dann stöbern Sie doch mal durch unsere anderen Artikel zum Thema künstliche Intelligenz. Bei Fragen zum Artikel und generellen Fragen zum Thema künstliche Intelligenz oder maschinelles Lernen melden Sie sich gerne per Mail unter machine-learning@novatec-gmbh.de

Referenzen

[1] 3D Object Representations for Fine-Grained Categorization
Jonathan Krause, Michael Stark, Jia Deng, Li Fei-Fei
4th IEEE Workshop on 3D Representation and Recognition, at ICCV 2013 (3dRR-13). Sydney, Australia. Dec. 8, 2013.

Artikel kommentieren