Farberkennung von Autos mit neuronalen Netzen und TensorFlow



Hallo, mein Name ist Roman Lapin, ich bin ein Student im zweiten Jahr an der Fakultät der Hochschule für Allgemeine und Angewandte Physik der UNN. Dieses Jahr habe ich es geschafft, durch die Auswahl zu kommen und an der Arbeit der Intel Summer School in Nischni Nowgorod teilzunehmen. Meine Aufgabe war es, die Farbe des Autos mithilfe der Tensorflow-Bibliothek zu bestimmen, an der ich mit meinem Mentor und Ingenieur des ICV-Teams Alexei Sidnev zusammengearbeitet habe.
Und das habe ich bekommen.

Diese Aufgabe hat mehrere Aspekte:

  1. Das Auto kann wie beim KDPV in mehreren Farben lackiert werden. Und in einem der Datensätze hatten wir zum Beispiel ein getarntes Auto.
  2. Abhängig von der Beleuchtung und der Kamera, die Bilder von den Ereignissen auf der Straße macht, sehen Autos derselben Farbe sehr unterschiedlich aus. Die "beleuchteten" Autos können einen sehr kleinen Teil haben, der der "wahren" Farbe des Autos entspricht.

Autofarberkennung


Die Farbe des Autos ist eine ziemlich seltsame Substanz. Der Hersteller hat ein klares Verständnis dafür, welche Farbe das Auto hat, das er produziert, zum Beispiel: Phantom, Eis, schwarze Perle, Pluto, Limette, Krypton, Angkor, Karneol, Platin, Blau. Die Verkehrspolizei hat eine Meinung zu den Farben von Autos eher konservativ und sehr begrenzt. Jede einzelne Person hat eine subjektive Wahrnehmung von Farbe (Sie können sich an die beliebte Geschichte über die Farbe des Kleides erinnern). Daher haben wir uns entschlossen, wie folgt zu markieren.

Auf jedem Bild wurden die Koordinaten der Eckpunkte der angrenzenden Rechtecke um die Autos herum markiert (im Folgenden werde ich die englische Version verwenden - Auto-Begrenzungsrahmen ) und in ihnen befinden sich die Bereiche, die die Farbe der Fahrzeuge am besten beschreiben ( Farbkasten ). Die Anzahl der letzteren entspricht der Farbe des Autos ( n x Farbfeld - n-farbiges Auto).

Im Folgenden werden die Autonummern für die Möglichkeit der Veröffentlichung von Fotos im öffentlichen Bereich verwischt.

Bild

Kennzeichnung des Fahrzeugdatensatzes

In Zukunft haben wir mit zwei Farbräumen - RGB und LAB - mit den Klassen 8 bzw. 810/81 gearbeitet. Um die Ergebnisse verschiedener Ansätze zu vergleichen, haben wir 8 Klassen in RGB verwendet, um die Farbe zu bestimmen, die durch Teilen des BGR-Würfels in 8 gleiche kleine Würfel erhalten werden. Sie können leicht als gebräuchliche Namen bezeichnet werden: weiß, schwarz, rot, grün, blau, pink, gelb, cyan. Um den Fehler einer Methode zu bewerten, haben wir bereits den LAB-Farbraum verwendet, in dem der Abstand zwischen den Farben bestimmt wird.

Es gibt zwei intuitive Möglichkeiten, die Farbe anhand des Farbfelds zu bestimmen: mittlere oder mittlere Farbe. Da sich im Farbfeld jedoch Pixel in verschiedenen Farben befinden, wollte ich wissen, wie genau jeder dieser beiden Ansätze funktioniert.

Für 8 RGB-Farben für jedes Farbfeld jeder Maschine im Datensatz haben wir die durchschnittliche Pixelfarbe und den Median ermittelt. Die Ergebnisse sind in den folgenden Abbildungen dargestellt. Die „wahren“ Farben sind in den Linien markiert, dh die Farben, die in den Spalten als Durchschnitt bzw. als Median definiert sind - Farben, die im Prinzip gefunden werden. Beim Hinzufügen einer Maschine zur Tabelle wurde die Anzahl der Pixel jeder Farbe auf ihre Anzahl normalisiert, d. H. Die Summe aller der Zeile hinzugefügten Werte war gleich eins.

Bild

Untersuchung der Genauigkeit der Bestimmung der Farbe einer Maschine als durchschnittliche Farbe der Pixelfarbe 'abox. Durchschnittliche Genauigkeit: 75%

Bild

Untersuchung der Genauigkeit der Bestimmung der Farbe einer Maschine als Medianfarbe von Pixeln in einem Farbfeld. Durchschnittliche Genauigkeit: 76%

Wie Sie sehen können, gibt es keinen besonderen Unterschied zwischen den Methoden, was auf ein gutes Markup hinweist. In Zukunft haben wir den Median verwendet, weil er das beste Ergebnis zeigte.
Die Farbe des Fahrzeugs wird anhand des Bereichs innerhalb des Begrenzungsrahmens des Fahrzeugs bestimmt .

Benötigen Sie Netzwerke?


Die Frage ist unvermeidlich: Werden neuronale Netze wirklich benötigt, um eine intuitiv einfache Aufgabe zu lösen? Vielleicht können Sie die mittlere oder mittlere Farbe von Pixeln in einem Auto-Begrenzungsrahmen auf die gleiche Weise nehmen? Die folgenden Abbildungen zeigen das Ergebnis dieses Ansatzes. Wie später gezeigt wird, ist es schlechter als das Verfahren unter Verwendung neuronaler Netze.

Bild

Die Verteilung des Anteils von Fahrzeugen mit dem L2-Fehlerwert im LAB-Bereich zwischen der als Durchschnitt definierten Farbfeldfarbe und der Fahrzeugbegrenzungsfeldfarbe des Wertes dieses Fehlers

Bild

Verteilung des Anteils von Fahrzeugen mit dem L2-Fehlerwert im LAB-Raum zwischen dem als Median definierten Farbfeld und der Farbe des Fahrzeugbegrenzungsrahmens aus dem Wert dieses Fehlers

Beschreibung der Herangehensweise an die Aufgabe


In unserer Arbeit haben wir die Resnet-10-Architektur verwendet, um Funktionen hervorzuheben. Um ein Label- und Multilabel-Problem zu lösen, wurden die Aktivierungsfunktionen von Softmax bzw. Sigmoid ausgewählt.
Ein wichtiges Thema war die Wahl der Metrik, anhand derer wir unsere Ergebnisse vergleichen konnten. Bei Aufgaben mit einem Label können Sie die Klasse auswählen, die der maximalen Antwort entspricht . Eine solche Lösung funktioniert jedoch offensichtlich nicht bei Maschinen mit mehreren Etiketten / Farben, da argmax eine wahrscheinlichste Farbe erzeugt. Die Metrik L1 hängt von der Anzahl der Klassen ab und kann daher auch nicht zum Vergleich aller Ergebnisse verwendet werden. Daher wurde beschlossen, die Flächenmetrik unter der ROC-Kurve (ROC AUC - Fläche unter der Kurve) als universell und allgemein anerkannt zu betrachten.

Wir haben in zwei Farbräumen gearbeitet. Das erste ist Standard- RGB , in dem wir 8 Klassen ausgewählt haben: Wir haben den RGB-Würfel in 8 identische Subwürfel unterteilt: Weiß, Schwarz, Rot, Grün, Blau, Rosa, Gelb, Cyan. Eine solche Aufteilung ist sehr grob, aber einfach.

Bild

Teilen Sie den RGB-Farbraum in 8 Bereiche auf

Darüber hinaus haben wir Studien mit dem LAB-Farbraum durchgeführt, bei denen die Partition in 810 Klassen unterteilt wurde. Warum so viel? LAB wurde eingeführt, nachdem der amerikanische Wissenschaftler David MacAdam festgestellt hatte, dass es Farbbereiche gibt, die für das menschliche Auge nicht sichtbar sind ( MacAdam-Ellipsen ). LAB wurde so gebaut, dass diese Ellipsen darin das Aussehen von Kreisen hatten (im Abschnitt konstanter L - Helligkeit).

Bild

MacAdam-Ellipsen und LAB-Farbraum ( Quelle )

Insgesamt gibt es 81 Kreise im Abschnitt solcher Kreise. Wir haben Schritt 10 in Bezug auf den Parameter L (von 0 bis 100) ausgeführt und 810 Klassen erhalten. Zusätzlich führten wir ein Experiment mit einer Konstanten L und entsprechend 81 Klassen durch.

RGB und LAB


Die folgenden Ergebnisse wurden für das 8-Klassen-Problem und den RGB-Raum erhalten:
AktivierungsfunktionMultilabel-AufgabeROC AUC
Softmax- -0,97
Sigmoid0,88
Farberkennungsergebnistabelle für Maschinen in einem 8-Klassen-Problem

Es scheint, dass das Ergebnis für die Multilabel-Aufgabe bereits recht gut ist. Um diese Annahme zu überprüfen, haben wir eine Fehlermatrix erstellt, die 0,55 als Schwellenwert für die Wahrscheinlichkeit verwendet. Das heißt, Wenn dieser Wert in der Wahrscheinlichkeit für die entsprechende Farbe überschritten wird, gehen wir davon aus, dass die Maschine in dieser Farbe lackiert ist. Trotz der Tatsache, dass der Schwellenwert niedrig genug gewählt wird, können typische Fehler bei der Bestimmung der Farbe des Autos gesehen und Schlussfolgerungen gezogen werden.

Bild

Farberkennungsergebnistabelle für Autos im Problem der 8. Klasse

Schauen Sie sich einfach die Linien an, die den Farben Grün oder Rosa entsprechen, um sicherzustellen, dass das Modell alles andere als perfekt ist. Auf die Frage, warum mit einem großen metrischen Wert ein so seltsames erfolgloses Ergebnis erzielt wird, werden wir zurückkommen und sofort darauf hinweisen: Wenn nur 8 Klassen betrachtet werden, fällt eine große Anzahl von Farben in die Klassen „Weiß“ und „Schwarz“, daher ein solches Ergebnis .

Deshalb werden wir uns dem LAB-Farbraum zuwenden und dort forschen.
AktivierungsfunktionMultilabel-AufgabeROC AUC
Softmax- -0,915
Sigmoid0,846
Maschinelle Farberkennungsergebnistabelle im Problem der 810-Klasse

Das Ergebnis ist geringer, was logisch ist, da die Anzahl der Klassen um zwei Größenordnungen gestiegen ist. Ausgehend vom Sigmoid-Ergebnis haben wir versucht, unser Modell zu verbessern.

LAB: Experimente mit unterschiedlichen Gewichten


Zuvor wurden alle Versuche mit Einheitsgewichten in der Verlustfunktion ( Verlust ) durchgeführt:

Bild


Hier ist GT Grundwahrheit, W ist Gewicht.

Sie können eine Entfernung in den LAB-Farbraum eingeben. Nehmen wir an, wir haben eine Einheit in GT. Dann entspricht es einem rechteckigen Parallelepiped im LAB-Farbraum. Dieses Parallelepiped (genauer gesagt sein Zentrum) wird in einem anderen Abstand von allen anderen Parallelepipeds (wiederum deren Zentren) entfernt. Abhängig von dieser Entfernung können Sie mit den folgenden Skalen experimentieren:

a) Null anstelle einer Einheit in GT, und wenn sie sich von ihr entfernt - eine Gewichtszunahme;

Bild


b) Umgekehrt ist es anstelle einer Einheit in GT eine Einheit, wenn sie entfernt wird, ist es ein Gewichtsverlust;

Bild


c) Option a) plus ein kleines Gaußsches Additiv mit einer Amplitude von ½ anstelle einer Einheit in GT;

Bild


d) Option a) plus ein kleines Gaußsches Additiv mit einer Amplitude von 1 anstelle einer Einheit in GT;

Bild


e) Option b) mit einem kleinen Additiv bei maximalem Abstand von der Einheit in GT.

Bild


Die letzte Version der Skalen, mit denen wir Experimente durchgeführt haben, ist, wie wir es nannten, dreifaches Gauß, nämlich drei Normalverteilungen mit Zentren anstelle von Einheiten im GT sowie in größter Entfernung von ihnen.

Bild

Drei Normalverteilungen konzentrierten sich auf die Einheiten im GT und in größter Entfernung von ihnen

Es muss genauer erklärt werden. Sie können die beiden am weitesten entfernten Parallelepipeds und damit die Klassen auswählen und sie in der Entfernung vom Original vergleichen. Für die Klasse, die der fernen entspricht, wird die Verteilungsamplitude auf 0,8 gesetzt, und für die zweite Klasse ist sie m-mal kleiner, wobei m das Verhältnis der Entfernung von der Quelle zur fernen Ferne zur Entfernung zwischen der Quelle und der nahen ist.

Die Ergebnisse sind in der Tabelle aufgeführt. Aufgrund der Tatsache, dass es in den Skalen von Option a) keine Gewichte gab - nur für Einheiten in GT war das Ergebnis noch schlechter als der Startpunkt, da das Netzwerk erfolgreiche Farbdefinitionen nicht berücksichtigte und schlechter lernte. Die Varianten der Gewichte b) und e) stimmten praktisch überein, daher stimmte das Ergebnis auf ihnen überein. Der größte Anstieg der Prozentpunkte gegenüber dem ursprünglichen Ergebnis wurde durch die Variante der Gewichte f) - Dreifachgauß gezeigt.
AktivierungsfunktionAnzahl der KlassenGewichtetypROC AUC
Sigmoid810a)0,844
b), e)0,848
c)0,888
d)0,879
f)0,909
Farberkennungsergebnisse von Maschinen der Klasse 810 mit unterschiedlichen Gewichtsoptionen

LAB: Experimentieren mit neuen Labels


Also haben wir Experimente mit unterschiedlichen Gewichtsgewichten durchgeführt. Dann haben wir uns entschlossen, die Gewichte als eins zu belassen und die Beschriftungen zu ändern, die auf die Verlustfunktion übertragen werden und zur Optimierung des Netzwerks verwendet werden. Wenn vorher die Bezeichnungen mit GT übereinstimmten, entschieden sie sich jetzt, wieder Gaußsche Verteilungen mit Zentren an der Stelle von Einheiten in GT zu verwenden:

Die Motivation für diese Entscheidung ist wie folgt. Tatsache ist, dass mit normalen Etiketten alle Autos in Datensätzen in eine feste Anzahl von Klassen fallen, weniger als 810, sodass das Netzwerk lernt, die Farbe von Autos nur dieser Klassen zu bestimmen. Mit neuen Etiketten fallen Werte ungleich Null in alle Klassen, und wir können eine Erhöhung der Genauigkeit bei der Bestimmung der Farbe des Autos erwarten. Wir haben mit zwei Sigma (Standardabweichungen) für die obigen Gaußschen Verteilungen experimentiert: 41,9 und 20,9. Warum so? Das erste Sigma wird wie folgt gewählt: Der Mindestabstand zwischen den Klassen (28) wird genommen und das Sigma wird aus der Bedingung bestimmt, dass die Verteilung in der Klasse neben dem GT'noye zweimal abnimmt. Und das zweite Sigma ist nur zweimal kleiner als das erste.

Bild

Verteilung von Autos mit Trainingsdatensätzen nach Klassen mit unterschiedlichen Verlustbezeichnungen

In der Tat war es möglich, das Ergebnis mit einem solchen Trick weiter zu verbessern, wie in der Tabelle gezeigt. Als Ergebnis erreichte die Bestimmungsgenauigkeit 0,955!
AktivierungsfunktionAnzahl der KlassenEtikettentypGewichtetypROC AUC
Sigmoid810üblichdiejenigen0,846
üblichdrei Gauß0,909
neu, σ 1drei Gauß0,955
neu, σ 20,946
Farberkennungsergebnisse für Maschinen der Klasse 810: mit normalen Etiketten und Einheitsgewichten, mit normalen Etiketten und Gewichten in Form von dreifachem Gauß, mit neuen Etiketten und Einheitsgewichten

LAB: 81


Wenn wir über erfolglose Experimente sprechen, müssen wir den Versuch erwähnen, ein Netzwerk mit 81 Klassen und einem konstanten Parameter L zu trainieren. Bei früheren Experimenten haben wir festgestellt, dass die Helligkeit vom Netzwerk ziemlich genau bestimmt wird, und wir haben beschlossen, nur die Parameter a und b zu trainieren (so) nannte die anderen beiden Koordinaten in LAB). Leider war die Idee, den Parameter L am Ausgang des Netzwerks als Durchschnitt für den Begrenzungsrahmen des Autos festzulegen, abgestürzt, und die tatsächliche Farbe und damit die definierte Farbe waren sehr unterschiedlich, obwohl das Netzwerk in der Lage war, perfekt im Flugzeug zu trainieren und einen größeren Wert in Bezug auf die Metrik zu zeigen.

Vergleich mit der Lösung eines Problems ohne Verwendung neuronaler Netze


Kehren wir jetzt zum Anfang zurück und vergleichen wir, was mit uns passiert ist, mit der Erkennung der Farbe des Autos ohne Verwendung neuronaler Netze.
Die Ergebnisse sind in den folgenden Abbildungen dargestellt. Es ist zu sehen, dass der Peak dreimal so hoch geworden ist und die Anzahl der Autos mit einem großen Fehler zwischen der wahren und einer bestimmten Farbe erheblich abgenommen hat.

Bild

Die Verteilung des Anteils von Fahrzeugen mit dem L2-Fehlerwert im LAB-Raum zwischen dem als Median definierten Farbfarbbegrenzungsrahmen und der Fahrzeugbegrenzungsrahmenfarbe des Wertes dieses Fehlers

Bild

Verteilung des Anteils von Fahrzeugen mit dem L2-Fehlerwert im LAB-Raum zwischen der Farbe am Ausgang des neuronalen Netzes und der Farbe des Fahrzeugbegrenzungsrahmens des Werts dieses Fehlers

Beispiele


Das Folgende sind Beispiele für die Erkennung von Fahrzeugfarben. Das erste ist, dass die schwarze Maschine (ein typischer Fall) als schwarz erkannt wird und der Abstand im LAB-Raum zwischen der wahren Farbe und der spezifischen (18.16) geringer ist als der Mindestabstand zwischen den Klassen (28). In der zweiten Abbildung konnte das Netzwerk nicht nur feststellen, dass das Auto beleuchtet war (es besteht eine hohe Wahrscheinlichkeit, dass es einer der Klassen weißer Farben entspricht), sondern auch seine tatsächliche Farbe (Silber). Die ebenfalls beleuchtete Maschine aus der folgenden Abbildung wurde vom Netzwerk jedoch nicht als rot erkannt. Das Netzwerk konnte die Farbe des in der folgenden Abbildung gezeigten Autos nicht bestimmen, was sich aus der Tatsache ergibt, dass die Wahrscheinlichkeiten für alle Farben zu klein sind.

In vielerlei Hinsicht war die Aufgabe auf die Notwendigkeit zurückzuführen, mehrfarbige Autos zu erkennen. Die letzte Abbildung zeigt ein zweifarbiges schwarz-gelbes Auto. Das Netzwerk erkannte am wahrscheinlichsten die schwarze Farbe, was wahrscheinlich auf das Überwiegen von Maschinen dieser und ähnlicher Farben im Trainingsdatensatz zurückzuführen ist, und die gelbe Farbe, die nahezu wahr ist, stieg in die Top 3 ein.
BildBild
BildBild
BildBild
BildBild
BildBild

ROC-Kurve: Visualisierung und Probleme


Am Ausgang haben wir also ein ziemlich hohes metrisches Ergebnis erhalten. Die folgende Abbildung zeigt ROC-Kurven zum Lösen eines Problems mit 8 Klassen und für ein Problem mit 810 Klassen sowie Lösungen ohne Verwendung neuronaler Netze. Es ist ersichtlich, dass das Ergebnis geringfügig von dem zuvor ausgeschriebenen abweicht. Die vorherigen Ergebnisse wurden mit TensorFlow erhalten, die folgenden Grafiken wurden mit dem Scikit-Learn-Paket erhalten.
Bild
Bild
ROC-Kurve für verschiedene Optionen zur Lösung des Problems. Rechts ist die obere linke Ecke des linken Diagramms

Sie können beliebige feste Zahlen als Schwellenwerte verwenden (z. B. nimmt Tensorflow, wenn Sie den entsprechenden Parameter auf 50 setzen, in gleichen Intervallen die gleiche Anzahl von Schwellenwerten von 0 bis 1 an), Sie können die Werte am Ausgang des Netzwerks verwenden oder sie von unten einschränken, um sie nicht zu berücksichtigen zum Beispiel Werte in der Größenordnung von 10 -4 . Das Ergebnis des letzteren Ansatzes ist in der folgenden Abbildung dargestellt.

Bild

ROC-Kurve für mehrere Optionen zur Lösung des Problems mit einem Schwellenwert von 10 -4

Es ist ersichtlich, dass alle Kurven, die der Lösung des Problems unter Verwendung neuronaler Netze entsprechen, charakteristischerweise besser (höher) sind als die Lösung des Problems ohne sie, aber Sie können nicht die definitiv beste Kurve zwischen den ersten wählen. Je nachdem, welchen Schwellenwert der Benutzer wählt, entsprechen unterschiedliche Kurven unterschiedlichen optimalen Lösungen für das Problem. Daher haben wir einerseits einen Ansatz gefunden, der es uns ermöglicht, die Farbe der Maschine genau zu bestimmen und eine hohe Metrik zu zeigen, andererseits haben wir gezeigt, dass die Grenze noch nicht erreicht wurde und die Metrik der Fläche unter der ROC-Kurve ihre Nachteile hat.

Bereit, Fragen zu beantworten und Kommentare in den Kommentaren anzuhören.

Source: https://habr.com/ru/post/de422689/


All Articles