Warum Kanten- und Textur-Detektoren neu lernen, die schon tausendmal gelernt wurden? Transfer Learning nimmt ein auf ImageNet vortrainiertes Netz und tauscht nur den Klassifikator aus. Und am Ende dieser Lektion wartet die wichtigste Erkenntnis des ganzen Themas — die PlantVillage-Falle.
Rezept: Vortrainierte Basis einfrieren → eigenen Kopf (Pooling + Dense 38) drauf → Kopf trainieren → optional die obersten Basis-Schichten mit Mini-Lernrate auftauen (Fine-Tuning).
MobileNetV2 als gefrorene Basis
PYTHONtransfer.py
from tensorflow import keras
from tensorflow.keras import layers
basis = keras.applications.MobileNetV2( input_shape=(128,128,3), include_top=False,# ImageNet-Klassifikator (1000 Klassen) weg weights="imagenet",)basis.trainable =False# Phase 1: Basis komplett einfrierenmodell = keras.Sequential([ keras.Input(shape=(128,128,3)), layers.RandomFlip("horizontal"), layers.RandomRotation(0.1),# MobileNetV2 erwartet Pixel in [-1, 1] — NICHT Rescaling(1/255)! layers.Lambda(keras.applications.mobilenet_v2.preprocess_input), basis, layers.GlobalAveragePooling2D(), layers.Dropout(0.3), layers.Dense(38, activation="softmax"),])modell.compile( optimizer=keras.optimizers.Adam(1e-3), loss="sparse_categorical_crossentropy", metrics=["accuracy"],)modell.fit(train_ds, validation_data=val_ds, epochs=10)
Phase 2: Fine-Tuning (optional, vorsichtig)
PYTHONfinetuning.py
basis.trainable =Truefor layer in basis.layers[:-30]:# nur die obersten ~30 Schichten auftauen layer.trainable =Falsemodell.compile( optimizer=keras.optimizers.Adam(1e-5),# 100x kleinere Lernrate! loss="sparse_categorical_crossentropy", metrics=["accuracy"],)modell.fit(train_ds, validation_data=val_ds, epochs=5)
Mit eingefrorener Basis trainieren nur ~49.000 Kopf-Parameter — das geht auch ohne große GPU in Minuten und erreicht auf PlantVillage schnell 97 %+. Fine-Tuning legt oft noch ein bis zwei Punkte drauf, kann aber bei zu großer Lernrate das vortrainierte Wissen zerstören.
Overfitting erkennen — die Lernkurven lesen
Gesund: Training- und Validation-Loss sinken gemeinsam, kleiner Abstand.
Overfitting: Training-Loss sinkt weiter, Validation-Loss dreht nach oben — ab da lernt das Netz auswendig. Gegenmittel: mehr Augmentation, mehr Dropout, früher stoppen, kleineres Netz.
Underfitting: Beide Kurven stagnieren hoch — das Netz ist zu klein, die Lernrate falsch oder die Daten kaputt (Rescaling-Bug!).
Die PlantVillage-Falle
Jetzt die unbequeme Wahrheit. Mohanty et al. trainierten 2016 CNNs auf PlantVillage: 99,35 % Accuracy. Dieselben Modelle auf Blatt-Fotos aus anderen Quellen getestet: die Accuracy stürzte auf etwa 31 % ab. Das Modell hatte nicht nur Krankheiten gelernt, sondern auch Aufnahmebedingungen: einheitlicher Hintergrund, Beleuchtung, Kamera. Im Feld — andere Hintergründe, Schatten, mehrere Blätter — bricht das alles weg.
🤔Warum eigentlich? — Warum hilft ImageNet-Wissen bei Blättern?›
ImageNet enthält kaum kranke Blätter — aber die frühen und mittleren Schichten eines darauf trainierten Netzes lernen universelle Bild-Bausteine: Kanten, Texturen, Farbübergänge, einfache Formen. Diese Bausteine sind für Hunde, Autos und Blattflecken dieselben. Nur die späten, aufgaben-spezifischen Schichten müssen neu — genau die tauschen wir aus. Je näher die Zielaufgabe an natürlichen Fotos liegt, desto besser funktioniert der Transfer; bei Röntgenbildern oder Spektrogrammen ist der Gewinn deutlich kleiner.
⚠️Häufiger Denkfehler — 99 % melden und fertig›
Für die Projektabgabe die Versuchung schlechthin: 99 % auf dem PlantVillage-Test-Set berichten und den Deckel draufmachen. Aber das Test-Set teilt die Aufnahmebedingungen mit dem Training — es misst Generalisierung innerhalb des Labors, nicht in der Welt. Wer es ernst meint, beschafft eine Handvoll Feldfotos (eigene Kamera, echter Garten) als Zweit-Test-Set und berichtet beide Zahlen. Die Diskrepanz ist kein peinlicher Makel, sondern das interessanteste Ergebnis der Arbeit.
🔬Tiefer rein — Domain Shift — das eigentliche Problem benennen›
Die Falle hat einen Namen: Domain Shift. Training- und Einsatzverteilung unterscheiden sich — P(Bild) im Labor ≠ P(Bild) im Feld. Gegenmittel in aufsteigender Aufwandsstufe: härtere Augmentation (zufällige Hintergründe, Beleuchtung), Mischen mehrerer Datasets, Domain-Adaptation-Verfahren, oder schlicht Felddaten sammeln und nachtrainieren. Merksatz für jede ML-Arbeit: Ein Modell ist so gut wie die Ähnlichkeit zwischen Trainingsverteilung und Einsatzverteilung.
🔗Hängt zusammen mit… — Hängt zusammen mit…›
Der Pipeline-Lektion (das Test-Set misst nur, was es repräsentiert), der Features-Lektion (auch Histogramme funktionieren nur im Labor-Setting) und dem großen Vergleich — wo diese Erkenntnis in die Gesamtbewertung der vier Verfahren einfließt.