Optical Material Classifier
Materialklassifikation anhand der optischen Reflexionssignatur mittels Machine Learning
Lässt sich ein Material anhand seiner Reflexionssignatur erkennen, und zwar mit einem günstigen Multispektralsensor statt mit einem teuren Laborspektrometer? Diese Diplomarbeit entwickelt dafür eine vollständige Machine-Learning-Pipeline in Python: von der Kalibrierung der Rohdaten über verschiedene Normalisierungen bis zum Vergleich von drei from scratch implementierten Klassifikatoren. Die zentrale Frage dabei: Erkennt das Modell das Material oder nur seine Farbe?
Ausgangslage
In Recycling und Qualitätskontrolle müssen Materialien optisch unterschieden werden. Dafür kommen heute meist Spektralphotometer zum Einsatz, die deutlich teurer sind als einfache Sensoren und einen aufwendigen Messaufbau im Labor erfordern.
Die Arbeit prüft, ob ein günstiger Multispektralsensor mit 18 Kanälen zwischen 410 und 940 nm (AS7265x) ausreicht, um fünf Materialklassen zu unterscheiden: Holz, Karton, Keramik, Kunststoff und Metall. Geplant ist ein geschlossenes Kontakt-Messgerät mit eigener Lichtquelle. Es schliesst Umgebungslicht aus und fixiert die Geometrie, damit Messungen reproduzierbar sind. Die Arbeit ist bewusst als Proof of Concept angelegt: Gemessen wird die Oberfläche eines Materials, nicht seine chemische Zusammensetzung.
Von der Hardware zur Simulation
Der vorgesehene Sensor war während der ganzen Arbeit nicht lieferbar. In Absprache mit dem Diplomcoach basiert die Arbeit deshalb auf synthetischen Daten. Ein Generator simuliert Messungen mit dem AS7265x, inklusive Rauschen, Drift sowie Dunkel- und Weissreferenz. Der Datensatz umfasst 5 Klassen mit 25 Farbfamilien (z. B. helles, dunkles und verwittertes Holz), 150 Proben und 2'250 Messungen.
Die Farbvariation innerhalb einer Klasse ist dabei Absicht: Ein Modell, das nur Farben lernt, soll daran scheitern.
Vorgehen
Die Pipeline ist modular aufgebaut, jeder Baustein ist mit Tests abgesichert:
- Kalibrierung: Aus Probe, Dunkel- und Weissmessung wird pro Kanal die Reflexion berechnet: R = (Probe − Dunkel) / (Weiss − Dunkel).
- Datenaufteilung ohne Datenleck: Ein nach Probe gruppierter und nach Klasse stratifizierter Split legt 30 Proben als Holdout beiseite. Messungen derselben Probe landen nie gleichzeitig im Training und im Test.
- Normalisierung: Drei Varianten (SNV, L2, erste Ableitung) entfernen die Helligkeit eines Spektrums und lassen nur seine Form übrig. Die Hypothese: So lernt das Modell Material statt Farbe.
- Klassifikatoren: Nearest Centroid, k-Nearest-Neighbors und Softmax Regression, implementiert mit NumPy, ohne Machine-Learning-Bibliotheken. scikit-learn diente nur als Referenz zur Überprüfung der Ergebnisse.
- Evaluation: 44 Varianten werden per 5-facher, gruppierter Kreuzvalidierung verglichen. Die beste Variante wird danach genau einmal auf dem Holdout geprüft.
Ergänzend habe ich an der ZHAW (Institut für Angewandte Mathematik und Physik) echte Materialproben mit einem Laborspektrometer gemessen, um die synthetischen Daten mit realen Spektren zu vergleichen.
Technologie-Stack
- Sprache: Python
- Rechnen: NumPy, pandas
- Tests: pytest
- Analyse: Jupyter Notebooks, Matplotlib
- Dokumentation: Typst, Git/GitHub
- Zielhardware: SparkFun Triad AS7265x und ESP32 (Elektronik rund CHF 100)
Ergebnisse
- Bestes Modell: k-NN (k = 1, euklidische Distanz, ohne Normalisierung) mit 86.8 % ± 6.2 % Genauigkeit in der Kreuzvalidierung und 96.7 % auf dem Holdout (29 von 30 Proben richtig). Der Zufall liegt bei 20 %.
- Vergleich: Softmax Regression erreicht 79.7 %, Nearest Centroid höchstens 47.9 %. Nearest Centroid scheitert, weil eine Materialklasse aus mehreren Farbfamilien besteht, die sich nicht durch einen einzigen Mittelpunkt beschreiben lassen.
- Normalisierung hilft nicht: Keine Variante verbessert das Ergebnis, SNV verschlechtert es sogar. Im Bereich bis 940 nm prägt die Farbe auch die Form des Spektrums, nicht nur die Helligkeit.
- Wo die Fehler liegen: Keramik, Kunststoff und Metall werden nahezu fehlerfrei erkannt. Fast alle Fehler liegen zwischen Holz und Karton, vor allem bei braunem und farbig bedrucktem Karton sowie mittlerem Holz.
- Holdout ehrlich eingeordnet: Dem Holdout fehlen zufällig die schwierigsten Farbfamilien. Die Kreuzvalidierung ist deshalb die zuverlässigere Zahl.
Erfolgskriterien: Die Gesamtgenauigkeit von mindestens 85 % und der Vergleich von mindestens drei Klassifikatoren und zwei Normalisierungen sind erreicht. Die Konsistenz über mehrere Messsitzungen (Ziel 95 %) ist nur auf dem Holdout erreicht, in der Kreuzvalidierung liegt sie bei 80.8 %. Die farbunabhängige Materialerkennung ist nicht erreicht: 5 von 25 Farbfamilien liegen unter 90 %.
Material oder Farbe?
Die wichtigste Erkenntnis der Arbeit: Wo sich zwei Materialien zwischen 410 und 940 nm vor allem durch ihre Farbe unterscheiden, wie Holz und Karton, erkennt das Modell eher die Farbe als das Material. Die Labormessung an echten Proben bestätigt, dass die Farbe das Spektrum im sichtbaren Bereich stark prägt. Sie zeigt ausserdem, wie empfindlich eine Messung ohne Kontakt reagiert: Das Signal der Weissreferenz sank während der Messung auf 61 %. Das stützt die Designentscheidung, im geschlossenen Gehäuse mit Kontakt zu messen.
Alle Zahlen gelten für synthetische Daten und damit unter den Annahmen des Generators.
Ausblick
Die Hardware ist mit rund 100 CHF deutlich günstiger als ein Laborspektrometer (ab ca. 1'800 CHF, ohne Lichtquelle und Auswertung). Der eigentliche Engpass ist aber nicht der Preis, sondern der Wellenlängenbereich. Zwischen 410 und 940 nm prägt vor allem die Farbe das Spektrum. Materialtypische Merkmale entstehen dagegen hauptsächlich im längerwelligen Nah-Infrarot zwischen etwa 1'000 und 2'500 nm, wo Molekülschwingungen charakteristische Absorptionsbanden erzeugen. Für eine Materialklassifikation, die auch bei unterschiedlichen Farben zuverlässig funktioniert, ist dieser Bereich deshalb vermutlich nötig. Für die Sortierung von Kunststoffen nach Harzcode ist er es auf jeden Fall.












