Automatisierte Sichtkontrolle & Logistik

01 Herausforderung

Die manuelle Sichtprüfung im Wareneingang und bei Retouren – richtiger Artikel, Etikett vorhanden, Verpackung intakt? – kostet massiv Zeit.

02 Ansatz

Ein FastAPI-Endpunkt nimmt Bilder entgegen, lässt sie vom kompakten YOLOv8-Nano-Modell analysieren und liefert das Bild mit markierten Objekten zurück.

03 Ergebnis

Eine lauffähige Objekterkennungs-API mit Live-Demo, die Objekte erkennt und markiert – schlank genug für Edge-Geräte im Lager.

Stack
PythonFastAPIUltralyticsYOLOv8nPillowJavaScript

Im modernen E-Commerce ist die manuelle Prüfung von Waren (z.B. im Wareneingang oder bei Retouren) ein massiver Zeitfresser. Mitarbeiter müssen prüfen: „Ist das der richtige Artikel?“, „Ist das Etikett vorhanden?“, „Ist die Verpackung beschädigt?“.

Dieses Projekt demonstriert eine automatisierte Visuelle Qualitätskontrolle mittels KI. Durch den Einsatz von YOLOv8 (You Only Look Once) können Bilder in Millisekunden analysiert werden, um Objekte zu erkennen, zu zählen und zu verifizieren.

Modellgröße
~6 MB
YOLOv8 Nano (yolov8n.pt)
Inferenz
< 500 ms
auf CPU
RAM-Verbrauch
< 200 MB
Edge-tauglich
Use-Cases
3
Retouren · Etiketten · Inventur

Business Use-Cases

Obwohl dieses Projekt technisch auf einer Objekterkennungs-API basiert, sind die Anwendungsmöglichkeiten im Handel vielfältig:

  1. Retouren-Prüfung: Automatischer Abgleich, ob der zurückgesendete Artikel optisch der Beschreibung entspricht (z.B. „Roter Schuh“ vs. „Blauer Schuh“).
  2. Etiketten-Verifikation: Prüfung, ob Versandlabel oder Barcodes korrekt auf Paketen angebracht sind, bevor sie das Lager verlassen.
  3. Bestandsinventur: Automatische Zählung von Kartons auf Paletten durch Kameras, statt manuellem Zählen.

Manuelle Sichtprüfung

  • Mitarbeiter prüft jeden Artikel mit dem Auge
  • Kartons auf Paletten werden von Hand gezählt
  • Fehlende Labels fallen erst spät auf
  • Zeitaufwand wächst linear mit dem Volumen

KI-gestützte Sichtkontrolle

  • Kamera plus YOLO-Modell analysiert das Bild
  • Objekte werden automatisch erkannt und gezählt
  • Prüfung vor dem Verlassen des Lagers
  • Analyse in Millisekunden pro Bild

Die Technologie: YOLOv8 Nano

Ich verwende das YOLOv8 Nano Modell (yolov8n.pt). Es ist die kleinste und schnellste Version der YOLO-Familie, optimiert für Edge-Devices (wie Handscanner oder Raspberry Pis im Lager). Mit rund 6 MB Modellgröße, einer Inferenz unter 500 ms auf der CPU und weniger als 200 MB RAM-Bedarf braucht es keine GPU-Infrastruktur.

Architektur: FastAPI & Ultralytics

Der Python-Code nutzt FastAPI für den Upload und ultralytics für die KI. Ein einzelner Endpunkt übernimmt den gesamten Ablauf – vom Upload bis zum annotierten Ergebnisbild.

  1. 01UploadBild kommt per POST-Request anUploadFile
  2. 02DekodierenBytes werden als Bild geöffnetPillow
  3. 03InferenzYOLO erkennt Objekte im Bildyolov8n
  4. 04RendernBounding Boxes einzeichnen, BGR → RGBplot()
  5. 05AntwortErgebnisbild zurück an den BrowserJPEG-Stream
Abb. 1 — Ablauf des Endpunkts /detect-objects
# main.py (Erweiterung)
from fastapi import UploadFile, File
from fastapi.responses import StreamingResponse
from ultralytics import YOLO
from PIL import Image
import io

# Modell laden (wird beim ersten Start heruntergeladen)
model = YOLO("yolov8n.pt") 

@app.post("/detect-objects")
async def detect_objects(file: UploadFile = File(...)):
    # 1. Bild aus dem Upload lesen
    image_data = await file.read()
    image = Image.open(io.BytesIO(image_data))

    # 2. YOLO Inferenz durchführen
    results = model(image)

    # 3. Ergebnis-Bild rendern (mit Boxen)
    # plot() gibt ein numpy array zurück (BGR), wir müssen es zu RGB konvertieren
    res_plotted = results[0].plot() 
    res_image = Image.fromarray(res_plotted[..., ::-1]) # BGR zu RGB

    # 4. Bild zurücksenden
    img_byte_arr = io.BytesIO()
    res_image.save(img_byte_arr, format='JPEG')
    img_byte_arr.seek(0)
    
    return StreamingResponse(img_byte_arr, media_type="image/jpeg" )

Live-Demo: Der KI-Detektiv

Laden Sie ein Bild hoch (z.B. ein Foto von einer Straße, einem Büro oder Tieren). Der Server wird versuchen, Objekte zu erkennen und zu markieren.

Objekterkennung testen

Original:
Ergebnis:
Noch kein Ergebnis

Nächste Schritte

Die Demo nutzt das vortrainierte Standardmodell und erkennt damit allgemeine Alltagsobjekte. Für die oben beschriebenen Handels-Use-Cases wären die logischen Erweiterungen:

  • Eigene Klassen trainieren: Das Nano-Modell auf firmenspezifische Objekte wie Versandlabels, Barcodes oder Kartontypen nachtrainieren.
  • Strukturierte Ausgabe: Neben dem annotierten Bild auch erkannte Klassen und Anzahl als JSON zurückgeben – die Grundlage für Zählung und automatische Prüfregeln.
  • Edge-Deployment: Das Modell direkt auf Handscannern oder Raspberry Pis im Lager betreiben, statt Bilder an einen zentralen Server zu senden.