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).

Fehlererkennung am Brückenkran ohne annotierte Daten trainieren? Kontrastives Lernen + Feintuning mit wenigen Bildern – Praxiserfahrung

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.

SimCLR
NT-Xent-Verlust · Temperaturkoeffizient τ=0,5 · Batch=256 · benötigt große Batches (≥256) · keine Warteschlange erforderlich
MoCo v2
Momentum-Encoder m=0,999 · Warteschlangenlänge 4.096 · kleine Batches (64) ausreichend · Entkopplung positiver und negativer Proben
Datenaufbereitung
Zufälliges Zuschneiden (0,08–1,0) · Farbveränderung · Gaußsches Weichzeichnen · Graustufenumwandlung · horizontales Spiegeln (0,5) · 5 Aufbereitungskombinationen
Vortrainingsdauer
SimCLR ~4 h (Batch=256, A10) · MoCo v2 ~6 h (Queue=4096, RTX 4090) · 5.000 Bilder × 200 Epochen

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).

VortrainingsstrategieVortrainingsdatenVortrainingszeitaufwand50Annotation100Annotation300Annotation500AnnotationVollständig1,500
Training von Grund auf41.8%62.3%80.5%87.2%93.8%
ImageNetVortraining1,400Zehntausende natürliche Bilder—(Öffentliche Gewichte)64.8%85.2%91.1%93.0%94.0%
SimCLR5,000Industriebilder~4h68.5%89.2%92.3%93.5%94.2%
MoCo v25,000Industriebilder~6h70.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

VergleichskriteriumSimCLRMoCo v2Empfehlung für industrielle Anwendungen
KernmechanismusEnd-to-End-Kontrastives Lernen,GleichBatchKonstruktion positiver und negativer ProbenMomentumEncoder / Drehgeber+Warteschlange,Entkopplung positiver und negativer ProbenMoCo v2(IndustrieBatchKlein)
BatchAbhängigkeitErfordert 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)
WarteschlangenverwaltungOhne Warteschlange(Konstruktion positiver und negativer Proben=GleichBatchAndere Proben)WarteschlangeFIFO 4,096Negative Proben,Dynamische AktualisierungMoCo 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ätEinfach(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:

AugmentierungBauteilF1(100Annotation)Änderung gegenüber voller AugmentierungBeitragsranking
Volle Augmentierung(NormKonfiguration)0.903Basislinie
Zufälliges Zuschneiden aus0.814-0.0891(Am kritischsten)
Farbzittern aus0.852-0.0512
Gaußsches Rauschen aus0.876-0.0273
Graustufen aus0.891-0.0124
Horizontales Spiegeln aus0.897-0.0065

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.

Verwandte Beiträge

contact

contact us

phone:
+86 13903802779

mail:3915269@qq.com

Working hours: Monday to Friday

Wechat
Wechat
SHARE
TOP