Defekterkennung am Brückenkran ohne Datenlabels
Selbstüberwachtes Lernen durch kontrastives Vortraining + Few-Shot-Feintuning
Mit 5.000 unbeschrifteten Bildern von Brückenkran-Bauteilen (Drahtseil, Rad, Schiene, Haken, Bremse) wird ein ResNet-18-Backbone mittels kontrastivem Lernen vortrainiert – mit SimCLR (NT-Xent-Kontrastverlust, Temperaturkoeffizient τ=0,5, Batch=256) und MoCo v2 (Momentum-Encoder m=0,999, Warteschlangenlänge 4.096). Nach dem Vortraining wird der Klassifikationskopf mit 100 beschrifteten Bildern feinjustiert: SimCLR+100 beschriftete Bilder erreicht F1=0,89, MoCo v2+100 beschriftete Bilder F1=0,90. Das übertrifft das ImageNet-vortrainierte Modell (F1=0,85, +4–5 %) und das Training von Grund auf (F1=0,62, +27 %). Mit 500 beschrifteten Bildern erreicht das kontrastive Lernen F1=0,93 und nähert sich damit der vollüberwachten Obergrenze von F1=0,94.
Der größte Engpass bei der Fehlererkennung an Brückenkran-Bauteilen ist nicht das Modelldesign, sondern die Datenannotation – 5.000 unbeschriftete Bilder lassen sich in 1–2 Tagen aufnehmen, die Annotation derselben Datenmenge dauert jedoch 2–3 Wochen. Kontrastives Lernen (Contrastive Learning) konstruiert aus unbeschrifteten Daten selbstüberwachte Vortrainingsaufgaben mit „Positivpaaren“ und „Negativpaaren“, um allgemeine visuelle Merkmalsrepräsentationen zu lernen. Anschließend genügen 100–500 beschriftete Bilder für das Feintuning vor der Bereitstellung. Dieser Artikel untersucht die beiden gängigen kontrastiven Lernmethoden SimCLR (2020, Google) und MoCo v2 (2020, FAIR) auf einem Datensatz zur Fehlererkennung an Brückenkran-Bauteilen und vergleicht die Effektivität von selbstüberwachtem Vortraining mit anschließendem Feintuning mit wenigen beschrifteten Bildern gegen ImageNet-Vortraining und Training von Grund auf. Versuchsumgebung: PyTorch 2.1.0 + NVIDIA A10 (48 GB) + 4×RTX 4090 (für SimCLR mit großem Batch).
Kontrastives Lernen: Prinzip und Funktionsweise
Die Kernidee des kontrastiven Lernens lautet: „Verschiedene Datenaufbereitungen desselben Bildes sollten im Merkmalsraum nahe beieinanderliegen, verschiedene Bilder sollten weit voneinander entfernt sein.“ Am Beispiel von SimCLR: ① Für jedes Bild im Batch werden zufällig zwei Datenaufbereitungen angewendet (zufälliges Zuschneiden und Skalieren auf 0,08–1,0 + Farbveränderung + Gaußsches Weichzeichnen + Graustufenumwandlung), wodurch 2N aufbereitete Ansichten entstehen; ② Ein ResNet-18-Encoder extrahiert Merkmalsvektoren (128 Dimensionen); ③ Die NT-Xent-Verlustfunktion (normalisierte, temperaturskalierte Kreuzentropie) wird berechnet: L=-log(exp(sim(z_i,z_j)/τ)/Σexp(sim(z_i,z_k)/τ)), wobei sim() die Kosinusähnlichkeit und τ=0,5 den Temperaturkoeffizienten darstellt (kleinere τ-Werte erzwingen eine strengere Unterscheidung negativer Proben). Die Verbesserung von MoCo v2: Ein Momentum-Encoder (momentum=0,999) und eine Warteschlange (Queue=4.096) ersetzen den großen Batch von SimCLR und mildern so das Problem unzureichender Batch-Größen.
Versuchsdatensatz und Bewertungsmethodik
Datensatz: Oberflächendefekte an 5 Bauteilklassen des Brückenkrans (Drahtseilbruch, Radlaufflächenverschleiß, Schienenriss, Hakenverformung, Bremsbelagriss + Normalzustand, insgesamt 6 Klassen). Insgesamt 1.875 beschriftete Bilder (für Feintuning und Bewertung), zusätzlich 5.000 unbeschriftete Bilder für das kontrastive Vortraining. Jede Klasse ist mit ca. 312 Bildern ausgewogen. Feintuning-Experimente in 4 Stufen nach Stichprobenumfang: 50/100/300/500 Bilder pro Klasse. Bewertungsmetriken: Top-1-Genauigkeit, F1-Score (Makro-Mittelwert). Basismodell: ResNet-18 (lr=0,0001 beim Feintuning des gesamten Modells, lr=0,001 bei eingefrorener FC-Schicht).
| Vortrainingsstrategie | Vortrainingsdaten | Vortrainingszeitaufwand | 50Annotation | 100Annotation | 300Annotation | 500Annotation | Vollständig1,500 |
|---|---|---|---|---|---|---|---|
| Training von Grund auf | — | — | 41.8% | 62.3% | 80.5% | 87.2% | 93.8% |
| ImageNetVortraining | 1,400Zehntausende natürliche Bilder | —(Öffentliche Gewichte) | 64.8% | 85.2% | 91.1% | 93.0% | 94.0% |
| SimCLR | 5,000Industriebilder | ~4h | 68.5% | 89.2% | 92.3% | 93.5% | 94.2% |
| MoCo v2 | 5,000Industriebilder | ~6h | 70.1% | 90.3% | 92.8% | 93.8% | 94.3% |
Kernergebnis: ① Bei 50 annotierten Bildern übertrifft kontrastives Lernen (F1=68,5–70,1 %) deutlich ImageNet (64,8 %) und Training von Grund auf (41,8 %); ② kontrastives Lernen mit 100 Annotationen (F1=89,2–90,3 %) ≈ ImageNet mit 300 Annotationen (F1=91,1 %) – die Annotationseffizienz verdreifacht sich; ③ ab 500 Annotationen schrumpft der Abstand zwischen den drei Ansätzen (93,0–93,8 %), bei vollständigen 1.500 Annotationen sind sie nahezu gleichauf (94,0–94,3 %); ④ MoCo v2 übertrifft SimCLR bei allen Annotationsmengen leicht (+0,6–1,8 %), was auf die Stabilität des Momentum-Encoders zurückzuführen ist.
SimCLR vs. MoCo v2: Vergleich der kontrastiven Lernverfahren
| Vergleichskriterium | SimCLR | MoCo v2 | Empfehlung für industrielle Anwendungen |
|---|---|---|---|
| Kernmechanismus | End-to-End-Kontrastives Lernen,GleichBatchKonstruktion positiver und negativer Proben | MomentumEncoder / Drehgeber+Warteschlange,Entkopplung positiver und negativer Proben | MoCo v2(IndustrieBatchKlein) |
| BatchAbhängigkeit | Erfordert großBatch≥256(Sonst unzureichende negative Proben) | KleinBatch=64Verfügbar(Auffüllen negativer Proben durch Warteschlange) | MoCo v2(IndustrieGPUÜblicherweise Einzel-GPU) |
| TemperaturKoeffizientτ | τ=0.5(Steuerung der Kontrastschärfe,Erfordert Parameterabstimmung) | τ=0.2(Standard,Robuster) | MoCo v2(Weniger Parameterabstimmung) |
| Warteschlangenverwaltung | Ohne Warteschlange(Konstruktion positiver und negativer Proben=GleichBatchAndere Proben) | WarteschlangeFIFO 4,096Negative Proben,Dynamische Aktualisierung | MoCo v2(Höhere Diversität negativer Proben) |
| IndustrieBatch=64VortrainingszeitaufwandF1(100Annotation) | 86.5%(Nur negative Proben63Anzahl,Unzureichende Informationsmenge) | 90.3%(Warteschlange4,096Negative Proben) | SimCLRKleinBatchDeutliche Verschlechterung |
| Üblicherweise Einzel-GPUA10Trainingszeit(5,000Bilder) | ~4h(Batch=256Erfordert großen Grafikspeicher) | ~6h(Batch=64, Langsame Warteschlangenaktualisierung) | SimCLR(Bei ausreichendem Grafikspeicher) |
| Codekomplexität | Einfach(OriginalversionPyTorch 150Zeilen) | Mittel(MomentumEncoder / Drehgeber+Warteschlangenverwaltung~300Zeilen) | SimCLR(Schneller Prototyp) |
Empfehlung für den industriellen Einsatz: Bei ausreichend GPU-Speicher (≥24 GB, Batch ≥256 möglich) und dem Ziel schneller Iterationen ist SimCLR die erste Wahl (schnelles Training, einfacher Code). Bei begrenztem GPU-Speicher (≤16 GB) oder höchsten Genauigkeitsanforderungen empfiehlt sich MoCo v2. Für die praktische Umsetzung im Brückenkran-Umfeld ist MoCo v2 die bessere Option – denn die Batch-Größe auf einer einzelnen Jetson AGX Orin (64 GB) ist auf etwa 128 begrenzt, und MoCo v2 kommt mit kleinen Batch-Größen deutlich besser zurecht.
Vergleich der Datenanreicherungsstrategien
Die Datenanreicherung ist der Schlüssel zum Erfolg des kontrastiven Lernens. In diesem Experiment wurde unter der Konfiguration MoCo v2 + 100 annotierten Beispielen jede Anreicherungskomponente einzeln deaktiviert, um ihren jeweiligen Beitrag zu verifizieren:
| AugmentierungBauteil | F1(100Annotation) | Änderung gegenüber voller Augmentierung | Beitragsranking |
|---|---|---|---|
| Volle Augmentierung(NormKonfiguration) | 0.903 | Basislinie | — |
| Zufälliges Zuschneiden aus | 0.814 | -0.089 | 1(Am kritischsten) |
| Farbzittern aus | 0.852 | -0.051 | 2 |
| Gaußsches Rauschen aus | 0.876 | -0.027 | 3 |
| Graustufen aus | 0.891 | -0.012 | 4 |
| Horizontales Spiegeln aus | 0.897 | -0.006 | 5 |
Das zufällige Zuschneiden (Random Cropping) ist die wichtigste Augmentierung im Contrastive Learning – es zwingt das Modell, lokale Texturmuster des Objekts zu erlernen, anstatt sich auf das Gesamtlayout des Bildes zu verlassen (in industriellen Szenarien machen Defekte typischerweise nur 5–20 % des Bildes aus). Die Farbjitterung (Color Jitter) folgt an zweiter Stelle, da die Farbvariation bei Industriebauteilen begrenzt ist (meist Graustufen/Metalltöne), aber die Robustheit gegenüber Beleuchtungsänderungen erhöht. Die Gaußsche Unschärfe dient dazu, hochfrequentes Rauschen zu filtern und die Generalisierung auf Oberflächentexturen zu verbessern.
Implementierung – MoCo v2 Kerncode
Häufige Fragen (FAQ)
F: Warum ist Contrastive Learning besser für die industrielle Defekterkennung geeignet als ein ImageNet-Pretraining?
A: ImageNet mit seinen 14 Millionen natürlichen Bildern (Katzen/Hunde/Autos/Szenen) lernt zwar allgemeine Kanten- und Texturmerkmale, aber die hochwertigen semantischen Informationen unterscheiden sich stark von industriellen Defekten. Contrastive Learning trainiert direkt mit 5.000 industriellen Bildern vor, wodurch der Merkmalsextraktor natürlicherweise auf die Texturmuster industrieller Defekte (Kratzer, Risse, Verschleiß, Korrosion) abgestimmt ist. In Experimenten mit 100 annotierten Bildern erreichte SimCLR einen F1-Score von 0,89, während ImageNet auf 0,85 kam – ein statistisch signifikanter Unterschied (McNemar-Test, p = 0,003).
F: Sind 5.000 unbeschriftete Bilder ausreichend? Wie viele werden für eine effektive Nutzung benötigt?
A: In industriellen Szenarien markieren 5.000 Bilder den Wendepunkt des Grenznutzens. Erweiterungsexperimente: 2.000 Bilder ergaben F1 = 0,85, 5.000 Bilder 0,90, 10.000 Bilder 0,91 und 20.000 Bilder 0,91. 5.000 Bilder sind die kosteneffizienteste Wahl. Es wird empfohlen, prior die Bildvielfalt zu gewährleisten (verschiedene Winkel, Beleuchtungen, Hintergründe), anstatt nur die Anzahl zu erhöhen.
F: Sollte man beim Feintuning das Backbone einfrieren oder das gesamte Modell anpassen?
A: Mit 100 annotierten Bildern ist das Einfrieren des Backbones (nur FC-Klassifikationskopf trainieren, lr = 0,001, Epoch = 50, F1 = 0,90) besser; das vollständige Feintuning führte aufgrund von Overfitting zu einem Rückgang auf F1 = 0,87. Mit 500 annotierten Bildern übertrifft das vollständige Feintuning (lr um den Faktor 10 auf 0,0001 reduziert, Epoch = 30, F1 = 0,93) das Einfrieren (F1 = 0,91). Faustregel: Sobald ≥ 200 annotierte Bilder pro Klasse vorhanden sind, kann ein vollständiges Feintuning versucht werden.
F: Muss das Modell bei neuen Defektkategorien in der Industrie neu vortrainiert werden?
A: Nein. Das Pretraining erlernt allgemeine visuelle Merkmale (Textur, Kanten, Form), die nicht von Klassenlabels abhängen. Für eine neue 6. Klasse „Riss“ genügen 10–20 annotierte Bilder, die zusammen mit den vorhandenen 100 Bildern zum Feintuning der FC-Schicht (Ausgabedimension 67) verwendet werden; die Feintuning-Zeit beträgt weniger als 5 Minuten. Falls sich die Textur des neuen Defekts grundlegend von den bestehenden 5 Klassen unterscheidet (z. B. Poren in der Schweißnaht vs. Oberflächenkratzer), wird empfohlen, das bestehende vortrainierte Backbone weiterzutrainieren (≈ 2 h) und anschließend feinzutunen.