Faltungsnetzwerk zur Klassifizierung, äußerst lichtempfindlich

8

Ich habe ein Faltungsnetzwerk trainiert, um Bilder einer mechanischen Komponente als gut oder fehlerhaft zu klassifizieren. Obwohl die Testgenauigkeit hoch war, stellte ich fest, dass das Modell bei Bildern mit leicht unterschiedlicher Beleuchtung eine schlechte Leistung zeigte.

Die Funktionen, die ich zu erkennen versuche, sind subtil, und die Beleuchtung scheint das Modell dazu zu bringen, viele falsche Negative aufzurufen. Die meisten, wenn nicht alle Trainings- und Testdaten stammten von Bildern, die unter diffusem Licht aufgenommen wurden. Die neuen Bilder, an denen ich das Modell anprobierte, wurden mit fokussierten Lichtern aufgenommen.

In der Hoffnung, dass der Histogrammausgleich ( CLAHE ) helfen würde, habe ich Bilder ausgeglichen , bevor ich sie dem Modell zugeführt habe, und dies sowohl für das Training als auch für Testdaten. Das Problem war dann, dass die Genauigkeit hoch war, aber das Modell schien eine andere Korrelation zwischen den Bildern und Beschriftungen gelernt zu haben. Nach dem Ausgleich fällt alles im Bild auf, die Defekte werden noch subtiler und selbst für das menschliche Auge schwer zu erkennen.

Die Modellvorhersage änderte sich auch dann, wenn dieselbe Komponente mit derselben Beleuchtung, jedoch mit unterschiedlichem Licht aufgenommen wurde. Meine Frage ist also, was kann ich entweder am Datenende oder mit dem Modell tun, damit es gegenüber Änderungen der Beleuchtung (oder der gleichen Art der Beleuchtung, aber Änderungen der Ausrichtung der Beleuchtung) robust wird?

dpk
quelle
Ist es möglich, mehr Daten mit unterschiedlichen Lichtverhältnissen zu sammeln? Der Unterschied zwischen diffuser und direkter Beleuchtung in einer Szene ist schwer zu simulieren oder bei der Vorverarbeitung zu berücksichtigen.
Neil Slater
@NeilSlater Ja, ich kann mehr Daten sammeln. Ich bin mehr daran interessiert, das Modell in angemessenem Maße robust gegenüber Beleuchtungsänderungen zu machen. Eine Sache, die mir auffiel, war, dass sich die Modellvorhersage änderte, selbst wenn dieselbe Komponente unter derselben Beleuchtung, aber mit unterschiedlichen Ausrichtungen aufgenommen wurde. Es kann schwierig sein, das Modell für verschiedene Beleuchtungsarten robust zu machen. Gibt es Techniken, um es für verschiedene Ausrichtungen derselben Beleuchtung robust zu machen?
dpk
Oft hilft es, den Mittelwert von den Bildern zu subtrahieren. Wie gut sind Ihre Daten ausgewogen? Wenn im Trainingsdatensatz 1% Klasse 1 ist, lernt das Modell nichts und klassifiziert alle als Klasse 0.
Alex
@ Alex Ich habe nicht versucht, meine Subtraktion. Danke für den Vorschlag. Außerdem ist mein Datensatz ausgewogen. Ich habe 2 Klassen und jede macht 50% der Daten aus.
dpk

Antworten:

2

Es wird als Überanpassung bezeichnet. Ihr Modell hat gelernt, Beschriftungen anhand von Funktionen vorherzusagen, die nicht für bestimmte Vorhersagen verantwortlich sind. Wenn sie also nicht angezeigt werden, kann es nicht richtig vorhersagen. Obwohl es verschiedene Möglichkeiten gibt, mit Überanpassung umzugehen (z. B. Dropout), benötigen Sie anscheinend eine Bildvergrößerung. Es ist eine einfache, aber sehr leistungsfähige Möglichkeit, ein robustes neuronales Netzwerk zu trainieren. Für Ihren Fall - simulieren Sie einfach verschiedene Lichtverhältnisse, indem Sie beispielsweise die Pixelwerte für Ihre Eingaben für dieselben Beschriftungen zufällig erhöhen / verringern. Es ist auch üblich, zufälliges Rauschen, zufällige Rotationen, Flip usw. hinzuzufügen.

Weitere Informationen finden Sie in dieser Stackoverflow-Antwort.

Außerdem habe ich kürzlich ein Projekt veröffentlicht, in dem ich verschiedene Augmentationsfunktionen verwendet habe, die Sie vielleicht nützlich finden. Siehe: https://github.com/Naurislv/P12.1-Semantic-Segmentation/blob/master/augmentation.py

Nauris Dorbe
quelle