Sofortantwort
Object Detection einfach erklärt
KI erkennt und lokalisiert Objekte in Bildern mit Bounding Boxes.
- Kurz gesagt
- Kombiniert Klassifikation (Was?) und Lokalisierung (Wo?) in einem Schritt
- Typischer Einsatz
- Autonomes Fahren, Qualitätskontrolle, Retail Analytics
- Wichtig zu wissen
- YOLO, Faster R-CNN und DETR sind die dominanten Architekturen
Object Detection im Überblick
Object Detection ist eine der grundlegendsten Aufgaben in Computer Vision: Ein Modell bekommt ein Bild und gibt für jedes erkannte Objekt eine Bounding Box (Rechteck mit Koordinaten), ein Klassen-Label (“Auto”, “Person”, “Hund”) und einen Konfidenz-Score zurück. Das klingt einfach, ist aber technisch anspruchsvoll – das Modell muss gleichzeitig erkennen, was im Bild ist und wo genau es sich befindet.
Der Unterschied zur reinen Bildklassifikation ist entscheidend: Klassifikation sagt “Im Bild ist ein Hund”. Object Detection sagt “Im Bild sind 3 Hunde: einer oben links (92% Konfidenz), einer in der Mitte (87%) und einer unten rechts (79%)”. Diese Lokalisierung macht Object Detection zur Grundlage für autonomes Fahren, Robotik, Videoüberwachung und industrielle Qualitätskontrolle.
Technisch betrachtet
Architekturen im Überblick
| Architektur | Ansatz | Stärke |
|---|---|---|
| YOLO (v5–v11) | Single-Shot, ein Durchlauf | Echtzeit, einfaches Deployment |
| Faster R-CNN | Two-Stage, Region Proposals | Hohe Genauigkeit, langsamer |
| DETR | Transformer-basiert | Kein Anchor-Design nötig |
| SSD | Single-Shot, Multi-Scale | Guter Speed/Accuracy-Kompromiss |
Metriken
mAP (mean Average Precision): Hauptmetrik für Object Detection
- mAP@0.5: IoU-Schwellwert 50% (lockerer)
- mAP@0.5:0.95: Durchschnitt über IoU 50%–95% (strenger, COCO-Standard)
IoU (Intersection over Union):
IoU = Schnittmenge(predicted, ground_truth) / Vereinigung(predicted, ground_truth)
YOLOv8 Quickstart
from ultralytics import YOLO
# Vortrainiertes Modell laden
model = YOLO('yolov8n.pt') # nano = kleinste/schnellste Variante
# Inferenz auf Bild
results = model('bild.jpg')
# Ergebnisse ausgeben
for r in results:
for box in r.boxes:
print(f"Klasse: {r.names[int(box.cls)]}")
print(f"Konfidenz: {box.conf:.2f}")
print(f"Bounding Box: {box.xyxy}") # x1, y1, x2, y2
Fine-Tuning auf eigene Daten
# Training auf eigenem Datensatz
model = YOLO('yolov8n.pt')
results = model.train(
data='dataset.yaml', # Pfad zu Datensatz-Config
epochs=100,
imgsz=640,
batch=16
)