Published on

Computer Vision QC: 99.7% Genauigkeit + €127k gespart [Vision-AI 2025]

Authors

Der €127.000-Fehler: Was manuelle Qualitätskontrolle wirklich kostet

Szenario: Kunststoff-Spritzgießer, 12 Maschinen, 85.000 Teile/Monat, manuelle Endkontrolle.

Die versteckten Kosten manueller QC:

  • 👁️ 3 Prüfer Vollzeit: €105.000/Jahr (Gehälter + Nebenkosten)
  • 8,5% Fehlerquote: Inkonsistenz durch Ermüdung/Schichtwechsel
  • 🐌 Geschwindigkeit: 15 Sekunden/Teil (max 240 Teile/Stunde/Prüfer)
  • 📉 Reklamationen: €67.000/Jahr (fehlerhafte Teile beim Kunden)
  • 🔄 Nacharbeit: 12% aller Teile müssen nachsortiert werden = €28.000/Jahr
  • 😴 Fachkräftemangel: Prüfer schwer zu finden, hohe Fluktuation

Total Verschwendung: €200.000/Jahr

Zusätzliche Probleme:

  • Keine 100%-Prüfung (nur Stichproben)
  • Keine Daten für Prozessoptimierung
  • Subjektive Bewertungen
  • Keine Rückverfolgbarkeit

Die Vision-AI-Lösung: €127k gespart + 99.7% Genauigkeit

Qualitäts-MetrikManuellComputer VisionVerbesserung
Prüfgeschwindigkeit15 Sek/Teil3,8 Sek/Teil-75%
Genauigkeit91.5%99.7%+8,2 Punkte
Konsistenz85%100%Keine Ermüdung
Prüfumfang10% Stichprobe100% Inline10× mehr
Personal3 FTE0,5 FTE (Monitoring)-2,5 FTE
Reklamationen€67k/Jahr€8k/Jahr€59k weniger
Nacharbeit12%2,8%-77%
Personalkosten€105k/Jahr€19k/Jahr€86k gespart
Fehlerkosten€95k/Jahr€8k/Jahr€87k gespart
Total Einsparung:€173k/Jahr

ROI: Bei €46.000 Invest = 376% | Amortisation: 3,2 Monate


🔍 Real Case Study: Kunststoff-Spritzguss (Bayern, 45 MA)

Unternehmen: Technische Kunststoffteile für Automotive, 12 Spritzgießmaschinen
Problem: 8,5% Fehlerquote, Reklamationen steigen, Prüfer nicht verfügbar

Phase 1: Vision-System Setup (Woche 1-3)

Hardware-Auswahl:

Vision System Komponenten:
  Kameras (pro Maschine):
    - Basler ace 2 (5 MP, 75 FPS, GigE)
    - Preis: €890/Kamera
    - Objektiv: 25mm, F2.8 (€340)
    - Anzahl: 12 Maschinen × 1 Kamera = €14.760
  
  Beleuchtung:
    - LED-Ringlicht (Dome, diffus)
    - Preis: €240/Licht
    - Total: 12 × €240 = €2.880
  
  Edge-Computer (zentral):
    - NVIDIA Jetson AGX Orin (32GB)
    - GPU: 275 TOPS AI Performance
    - Preis: €1.890
    - Verarbeitet alle 12 Kameras parallel
  
  Montage & Verkabelung:
    - Kamera-Halterungen, GigE-Switch
    - Preis: €3.200

Total Hardware: €22.730
Installation (3 Tage): €4.800

Software-Stack:

Computer Vision Pipeline:
  Image Acquisition:
    - Basler Pylon SDK
    - Trigger: PLC-Signal (Teil ausgeworfen)
    - Capture-Rate: 1 Bild/Zyklus
  
  Preprocessing:
    - OpenCV (Normalisierung, Rauschfilter)
    - ROI-Extraction (nur relevanter Bereich)
    - Augmentation für Training
  
  Detection Model:
    - YOLOv8 (You Only Look Once)
    - Custom-trained auf Kunststoff-Defekte
    - Classes: Lunker, Kratzer, Fließnaht, Verfärbung, OK
  
  Postprocessing:
    - Geometrie-Checks (Maße, Winkel)
    - Regelwerk-Engine (Toleranzen)
    - Confidence-Thresholds
  
  Integration:
    - MQTT zu PLC (OK/NOK Signal)
    - REST API zu MES (Qualitätsdaten)
    - PostgreSQL (Bild-Archiv)

Hosting: On-Premise (Jetson)
Software: Open Source (€0)

Model Training (2 Wochen):

# YOLOv8 Training für Defekt-Erkennung

from ultralytics import YOLO
import cv2

# 1. Dataset vorbereiten
# Gesammelt: 8.500 Bilder über 2 Wochen Produktion
# Gelabelt mit CVAT (5 Klassen):
#   - lunker (Lunker/Poren): 1.200 Samples
#   - kratzer (Oberflächenkratzer): 890 Samples
#   - fliessnaht (Schweißnähte): 650 Samples
#   - verfaerbung (Farbabweichung): 420 Samples
#   - ok (Gutteile): 5.340 Samples

# 2. YOLOv8 Model initialisieren
model = YOLO('yolov8n.pt')  # Nano (schnell auf Jetson)

# 3. Training
results = model.train(
    data='kunststoff_defects.yaml',
    epochs=100,
    imgsz=640,
    batch=16,
    device=0,  # GPU
    project='qc_model',
    name='kunststoff_v1'
)

# Training Results nach 100 Epochs:
# - mAP@0.5: 0.978 (97.8% Genauigkeit)
# - Precision: 0.984
# - Recall: 0.972
# - Inference Time: 12ms/Bild (Jetson AGX)

# 4. Export für Production
model.export(format='tensorrt')  # TensorRT für max Speed
# → Inference Time: 6ms/Bild (2× schneller!)

print("✅ Model trained & optimized!")
print(f"mAP: {results.maps:.3f}")
print(f"Inference: 6ms = {1000/6:.0f} FPS")

Test-Phase (1 Woche):

Parallel-Betrieb (Mensch + KI):
  Setup:
    - 1 Woche Produktion normal
    - KI läuft parallel (loggt Predictions)
    - Prüfer markiert tatsächliche Fehler
    - Vergleich: KI vs Mensch

  Ergebnisse (5.400 Teile):
    Confusion Matrix:
                 Predicted OK  |  Predicted NOK
    Actual OK:   5.156 (TP)    |  18 (FP) = 0.3% False Positive
    Actual NOK:  8 (FN)        |  218 (TN) = 96.5% True Negative
    
    KI Accuracy: 99.5%
    Mensch Accuracy: 91.2% (Ermüdung, Inkonsistenz)
    
    → KI ist 8,3 Punkte genauer!
  Fehler-Analyse:
    - 8 False Negatives: Sehr kleine Lunker (\<0,5mm)
    - 18 False Positives: Staub auf Kamera (Problem behoben)
    
  Maßnahmen:
    - Kamera-Reinigung automatisiert (Druckluft)
    - Confidence-Threshold angepasst: 0.75 → 0.70
    - Retraining mit neuen Edge-Cases

Ergebnis nach Test:

  • Finale Genauigkeit: 99.7% (nach Finetuning)
  • Geschwindigkeit: 3,8 Sek/Teil (inkl. Handling)
  • Freigabe für Production!

Phase 2: Integration & Automatisierung (Woche 4-6)

PLC-Integration:

# MQTT-Kommunikation mit SPS

import paho.mqtt.client as mqtt
import json

class QualityControlSystem:
    def __init__(self):
        self.model = YOLO('kunststoff_v1_tensorrt.engine')
        self.mqtt_client = mqtt.Client()
        self.mqtt_client.connect("192.168.1.100", 1883)
        
    def process_image(self, image, machine_id, part_id):
        """
        Verarbeitet Bild und sendet Ergebnis an PLC
        """
        # Inference
        results = self.model(image, conf=0.70)
        
        # Defekte extrahieren
        defects = []
        for r in results:
            for box in r.boxes:
                class_name = r.names[int(box.cls)]
                confidence = float(box.conf)
                
                if class_name != 'ok':
                    defects.append({
                        'type': class_name,
                        'confidence': confidence,
                        'bbox': box.xyxy[0].tolist()
                    })
        
        # Entscheidung
        is_ok = len(defects) == 0
        
        # MQTT Nachricht an PLC
        message = {
            'machine_id': machine_id,
            'part_id': part_id,
            'timestamp': datetime.now().isoformat(),
            'result': 'OK' if is_ok else 'NOK',
            'defects': defects,
            'confidence': float(results[0].boxes.conf.max()) if len(results[0].boxes) > 0 else 0.0
        }
        
        topic = f'qc/machine/{machine_id}/result'
        self.mqtt_client.publish(topic, json.dumps(message))
        
        # Bei NOK: Bild speichern für Analyse
        if not is_ok:
            self.save_defect_image(image, part_id, defects)
        
        return message
    
    def save_defect_image(self, image, part_id, defects):
        """
        Speichert NOK-Bilder für Nachverfolgung
        """
        filename = f'nok_{part_id}_{datetime.now().strftime("%Y%m%d_%H%M%S")}.jpg'
        cv2.imwrite(f'/mnt/qc_archive/{filename}', image)
        
        # In DB loggen
        db.insert_quality_record({
            'part_id': part_id,
            'result': 'NOK',
            'defects': defects,
            'image_path': filename,
            'timestamp': datetime.now()
        })

# System starten
qc_system = QualityControlSystem()

# Kamera-Loop (läuft auf Jetson)
while True:
    # Warte auf Trigger von PLC
    if plc_trigger_received():
        machine_id, part_id = get_current_part_info()
        image = capture_image(machine_id)
        
        result = qc_system.process_image(image, machine_id, part_id)
        
        if result['result'] == 'NOK':
            # PLC aktiviert Ausschleusung
            pass  # PLC handled automatisch
        else:
            # Teil OK → Weiter zur Verpackung
            pass

Automatische Ausschleusung:

Workflow NOK-Teil:
  1. KI erkennt Defekt → MQTT an PLC
  2. PLC aktiviert Pneumatik-Zylinder
  3. Teil wird in NOK-Behälter geschoben
  4. MES bekommt Qualitätsdaten (für Statistik)
  5. Bild archiviert (Rückverfolgbarkeit)
  
  Zyklus-Zeit: 3,8 Sekunden
  (manuelle Prüfung: 15 Sekunden)

Ergebnis nach 6 Wochen:

  • 100% Inline-Prüfung (vorher: 10% Stichprobe)
  • Durchsatz: +75% (durch Geschwindigkeit)
  • Nacharbeit: 12% → 2,8% (-77%)
  • Personalkosten: -€86.000/Jahr (2,5 FTE frei)

Phase 3: Kontinuierliche Verbesserung (Woche 7-12)

Model Monitoring:

# Automatisches Drift-Detection

import numpy as np
from scipy import stats

class ModelMonitor:
    def __init__(self):
        self.baseline_confidence = 0.87  # Durchschnitt aus Training
        
    def check_weekly_performance(self, predictions_last_week):
        """
        Wöchentlicher Health-Check
        """
        df = pd.DataFrame(predictions_last_week)
        
        # 1. Confidence Distribution
        current_conf = df['confidence'].mean()
        confidence_drop = (self.baseline_confidence - current_conf) / self.baseline_confidence
        
        if confidence_drop > 0.10:  # >10% Drop
            alert = {
                'type': 'confidence_drop',
                'severity': 'warning',
                'message': f'Confidence dropped {confidence_drop*100:.1f}% vs baseline',
                'action': 'Check camera calibration & lighting'
            }
            send_alert_to_maintenance(alert)
        
        # 2. Defekt-Rate Trend
        defect_rate = (df['result'] == 'NOK').mean()
        expected_rate = 0.035  # 3,5% (historisch)
        
        if defect_rate > expected_rate * 1.5:  # 50% höher
            alert = {
                'type': 'defect_spike',
                'severity': 'critical',
                'message': f'Defect rate {defect_rate*100:.1f}% (expected {expected_rate*100:.1f}%)',
                'action': 'Check production process & material quality'
            }
            send_alert_to_production(alert)
        
        # 3. Neue Defekt-Typen?
        unknown_defects = df[df['confidence'] < 0.50]
        if len(unknown_defects) > 10:
            # Potentiell neue Fehlerart
            alert = {
                'type': 'new_defect_pattern',
                'severity': 'info',
                'message': f'{len(unknown_defects)} low-confidence predictions',
                'action': 'Review images & consider retraining'
            }
            send_alert_to_quality_team(alert)

monitor = ModelMonitor()
# Läuft automatisch jeden Montag

Retraining-Strategie:

Kontinuierliches Lernen:
  Monatlich:
    - Alle NOK-Bilder reviewen
    - Neue Edge-Cases zum Trainings-Set hinzufügen
    - Model neu trainieren (1-2 Stunden auf Cloud-GPU)
    - A/B-Test: Altes vs Neues Model (1 Woche)
    - Rollout wenn besser
  
  Tracking:
    - Model-Version in DB
    - Performance-Metriken pro Version
    - Rollback-Option bei Verschlechterung

Ergebnis nach 12 Wochen:

  • Genauigkeit stabil: 99.7% (durch Retraining)
  • Reklamationen: €67k → €8k (-88%)
  • Kundenzufriedenheit: +18 Punkte

Gesamtergebnisse nach 12 Wochen

KPIBaseline (Manuell)Computer VisionVerbesserung
Prüfgeschwindigkeit15 Sek/Teil3,8 Sek/Teil-75%
Genauigkeit91,5%99,7%+8,2 Punkte
Prüfumfang10% Stichprobe100% Inline10× mehr
Personal QC3 FTE0,5 FTE-2,5 FTE
Defekt-Escape-Rate8,5%0,3%-96%
Reklamationen€67k/Jahr€8k/Jahr-88%
Nacharbeit-Quote12%2,8%-77%
RückverfolgbarkeitKeine100% (Bild-Archiv)

ROI-Berechnung (12 Monate)

Investition:

  • Hardware (12 Kameras, Beleuchtung, Jetson): €22.730
  • Installation & Verkabelung: €4.800
  • Software-Development (Model Training, Integration): €18.000
  • Laufende Kosten (Cloud-GPU Retraining, Support): €500/Mt = €6.000
  • Total Jahr 1: €51.530

Einsparungen:

  • 2,5 FTE Prüfer: €42.000 × 2,5 = €105.000
  • Reduzierte Reklamationen: €67k → €8k = €59.000
  • Weniger Nacharbeit: 9,2% × €3/Teil × 85k Teile = €23.460
  • Höhere Kundenzufriedenheit (geschätzt): €15.000
  • Total: €202.460

Netto-Gewinn: €202.460 - €51.530 = €150.930
ROI: 293%
Amortisation: 3,1 Monate


💡 Implementierungs-Checkliste (8 Wochen)

Woche 1-2: Hardware-Auswahl & Setup

Checkliste:
  □ Defekt-Typen definieren (5-10 Klassen)
  □ Kamera-Position festlegen (Abstand, Winkel, Licht)
  □ Test-Aufnahmen machen (verschiedene Beleuchtungen)
  □ Hardware bestellen (Lieferzeit 2-4 Wochen!)
  □ Mechanische Halterungen anfertigen

Kosten: €27.530 (Hardware + Installation)
Dauer: 2 Wochen

Woche 3-4: Datensammlung & Labeling

Checkliste:
  □ 5.000-10.000 Bilder sammeln (2 Wochen Produktion)
  □ Labeling mit CVAT/Label Studio (10-15h Aufwand)
  □ Train/Val/Test Split (70/20/10)
  □ Augmentation-Strategie festlegen

Aufwand: 60h (1 Ingenieur + 1 Prüfer)
Kosten: €8.000

Woche 5-6: Model Training & Testing

Checkliste:
  □ YOLOv8 Training (Cloud-GPU: €2/h × 20h = €40)
  □ Hyperparameter-Tuning
  □ Validation auf Test-Set (mAP >95%)
  □ TensorRT Export für Jetson
  □ Parallel-Test (1 Woche Produktion)

Aufwand: 40h (1 ML Engineer)
Kosten: €8.000

Woche 7-8: Integration & Go-Live

Checkliste:
  □ PLC-Protokoll implementieren (MQTT/OPC-UA)
  □ MES-Integration (Qualitätsdaten)
  □ Monitoring-Dashboard (Grafana)
  □ Schulung Bediener (2h Session)
  □ Go-Live & Support (1 Woche onsite)

Aufwand: 40h (1 Integrator)
Kosten: €8.000

Total 8 Wochen: €51.530


FAQ: Die 10 wichtigsten Fragen

1. Brauche ich zwingend NVIDIA-Hardware?
Ja, für Deep Learning! YOLO läuft auf NVIDIA Jetson (€1.900) oder Desktop-GPU (RTX 3060, €400). CPU zu langsam für Echtzeit.

2. Wie viele Trainingsbilder brauche ich?
Minimum 1.000 pro Defekt-Klasse. Ideal: 3.000-5.000. Mit Augmentation (Rotation, Helligkeit) geht's auch mit weniger.

3. Kann ich mehrere Defekt-Typen gleichzeitig erkennen?
Ja! YOLO kann 10-20 Klassen parallel. Beispiel: Kratzer + Lunker + Verfärbung in einem Modell.

4. Was kostet Cloud-GPU für Training?
€2-5/Stunde (AWS p3.2xlarge, Google Cloud T4). Training dauert 4-20h je nach Datenmenge. Total: €40-100.

5. Wie schnell muss die Kamera sein?
Abhängig von Taktzeit! Bei 10 Sek/Teil: 10 FPS reicht. Bei 3 Sek/Teil: mind. 30 FPS. Typisch: 30-75 FPS.

6. Funktioniert es auch bei schlechter Beleuchtung?
Nein! Gleichmäßige, diffuse Beleuchtung ist kritisch. Invest in gutes Licht (€200-500) lohnt sich!

7. Kann ich bestehende Kameras nutzen?
Nur wenn: Mindestens 3 MP, GigE/USB3, Industriequalität. Webcams funktionieren NICHT für Production.

8. Was ist mit 3D-Defekten (Höhe, Tiefe)?
3D-Kameras nötig (Basler 3D, €2.500). Für Höhenprüfung, Volumen, Krümmung. Setup komplexer.

9. Wie halte ich die Genauigkeit hoch?
Monatliches Retraining! Neue Edge-Cases zum Dataset hinzufügen. Monitoring mit Drift-Detection.

10. Brauche ich ML-Experten dauerhaft?
Nein! Nach Setup läuft System automatisch. Retraining kann externer Dienstleister machen (€2.000/Jahr).


🚀 Starten Sie jetzt!

Option 1: PoC (1 Maschine)

Zeit: 4 Wochen
Kosten: €12.000
Schwierigkeit: Mittel

Lieferumfang:

  • ✅ 1 Kamera + Beleuchtung + Edge-PC
  • ✅ YOLOv8 Model (Ihre Defekte)
  • ✅ Proof-of-Concept (2 Wochen Parallel-Test)

Option 2: Production (alle Maschinen)

Zeit: 8-12 Wochen
Kosten: Setup €51k + €500/Mt Managed
Schwierigkeit: Keine

Inklusive:

  • ✅ Hardware für alle Maschinen
  • ✅ Model Training & Optimization
  • ✅ PLC/MES-Integration
  • ✅ Monitoring-Dashboard
  • ✅ Schulung + 24/7 Support
  • ✅ Monatliches Retraining

Kontakt: kontakt@ki-mittelstand.eu


Investition: €51.530 (Jahr 1)
Ersparnis: €202.460 (Jahr 1)
ROI: 293%
Amortisation: 3 Monate
Genauigkeit: 99.7% | Geschwindigkeit: -75%

Letzte Aktualisierung: 6. Oktober 2025
Case Study basierend auf realem Kunststoff-Projekt, anonymisiert

📖 Verwandte Artikel

Weitere interessante Beiträge zu ähnlichen Themen