Vom Labor in den produktiven Einsatz
Installiere Ultralytics, führe YOLO26 mit deinen eigenen Bildern aus, prüfe die Ausgabe anhand deiner Spezifikation und wähle deinen nächsten Schritt.
Zehn Minuten mit einem vortrainierten Modell beantworten die Frage, von der dein gesamter Plan abhängt: Deckt ein handelsübliches Modell deine Klassen und deine Kamera bereits ab, oder brauchst du eigene Daten? In dieser Lektion installierst du Ultralytics, führst YOLO26 mit realen Bildern aus und prüfst das Ergebnis anhand der Spezifikation, die du in der ersten Lektion erstellt hast.
Praxisnah
Installieren#
pip install ultralytics
yolo checksDie erste Zeile installiert das Python-Paket ultralytics und den Befehl yolo sowie PyTorch, falls es noch nicht installiert ist. Mit yolo checks werden deine Python-, PyTorch- und CUDA-Versionen sowie die von Ultralytics verwendete Hardware angezeigt. So kannst du die Einrichtung überprüfen, bevor du etwas ausführst. Verwende eine neue virtuelle Umgebung; die Schnellstartanleitung behandelt conda-, Docker- und GPU-Einrichtungen.
Das Paket ultralytics lässt sich mit Python 3.8 und neuer installieren, aktuelle PyTorch-Versionen benötigen jedoch Python 3.10 oder neuer. Wenn deine Umgebung älter ist, erstelle zuerst eine neue virtuelle Umgebung mit einer aktuellen Python-Version.

Symptom: yolo checks zeigt CPU an, obwohl der Rechner eine NVIDIA-GPU hat, und die Inferenz ist langsam. Ursache: Ein PyTorch-Build ohne GPU-Unterstützung – zum Beispiel das standardmäßige pip-Wheel unter Windows. Lösung: Wähle oben in der PyTorch-Auswahl dein Betriebssystem, deinen Paketmanager und deine CUDA-Version aus, führe den angezeigten Befehl aus und installiere anschließend ultralytics erneut. Auf einem Mac ist wie im Screenshot der Standard-Build richtig; Ultralytics läuft auf der CPU, sofern du nicht device=mps übergibst, um die Apple-GPU zu verwenden.
Eine erste Vorhersage#
from ultralytics import YOLO
model = YOLO("yolo26n.pt") # lädt das etwa 5 MB große Nano-Modell bei der ersten Verwendung herunter
results = model("https://ultralytics.com/images/bus.jpg", save=True)
for box in results[0].boxes:
print(model.names[int(box.cls)], round(float(box.conf), 2))Beide Befehle geben für jedes Bild eine einzeilige Zusammenfassung aus und speichern das annotierte Bild unter runs/detect/predict:
image 1/1 .../bus.jpg: 640x480 4 persons, 1 bus, 19.7ms
Speed: 0.9ms preprocess, 19.7ms inference, 0.4ms postprocess per image at shape (1, 3, 640, 480)
Results saved to runs/detect/predictZeile für Zeile: Das Bild wurde für die Inferenz auf 640×480 verkleinert; das Modell hat vier Personen und einen Bus gefunden; die Inferenz dauerte auf einer Laptop-CPU etwa 20 ms. Die Zeile Speed zeigt dir erstmals die Latenz. Vergleiche sie mit der Bildrate in der Eingabezeile deiner Spezifikation. Öffne das gespeicherte Bild: Jeder Begrenzungsrahmen zeigt die Klasse, den Rahmen und die Konfidenz aus der Lektion zur Objekterkennung.
Die Ausgabe anhand deiner Spezifikation prüfen#
| Frage | Wenn ja | Wenn nein |
|---|---|---|
| Gehören deine Klassen zu den 80 COCO-Klassen, die das Modell kennt? | Einen Prototyp ohne Training erstellen | Du brauchst beschriftete Daten und eine Feinabstimmung (Anleitung zur Feinabstimmung) |
| Sitzen die Begrenzungsrahmen über deinem Schwellenwert auf deinen Bildern auf den richtigen Objekten? | Aufgabe und Perspektive stimmen überein | Rechne mit einer Domänenlücke: Sammle Daten von deinen Kameras |
| Entspricht der Ausgabetyp den Anforderungen deiner Entscheidungsregel? | Die Aufgabe beibehalten | Gewichte wechseln: -seg, -sem, -depth, -pose, -obb oder -cls |
| Ist das Modell auf der Zielhardware schnell genug für deine Bildrate? | Weitergehen | Ein kleineres Modell oder ein optimiertes Exportformat ausprobieren |
Die erste Frage lässt sich eindeutig beantworten: model.names listet alle Klassen auf, die das vortrainierte Modell kennt. In der Gabelstapler-Spezifikation ist person eine COCO-Klasse, forklift jedoch nicht. Daher kann kein Schwellenwert das vortrainierte Modell dazu bringen, einen Gabelstapler zu erkennen. Das ist das häufigste Ergebnis beim ersten Durchlauf: Das Modell deckt nur einen Teil der Spezifikation ab. Sinnvoll ist es, die Entscheidungslogik zunächst mit den abgedeckten Klassen als Prototyp zu testen und gleichzeitig den Datensatz für die übrigen Klassen aufzubauen.
Was sich im produktiven Einsatz ändert#
Ein eingesetztes Modell trifft auf Bedingungen, die in seinem Datensatz nie vorkamen: neue Kameras, Jahreszeiten, Produkte und Uniformen. Ohne erneutes Training nimmt die Genauigkeit ab. Mit regelmäßigem Training anhand der Daten aus dem laufenden Betrieb erholt sie sich wieder:

Jede Lektion in diesem Kurs ist Teil dieses Kreislaufs: Die Spezifikation beschreibt einen Fehlerfall, die Abdeckungsprüfung zeigt, wo du suchen musst, und der Beschriftungsprüfer sowie die Richtlinie sorgen dafür, dass neue Daten nützlich sind. Saubere Datensatzaufteilungen und aussagekräftige Metriken zeigen dir, ob das erneut trainierte Modell tatsächlich besser ist. Zwei Gewohnheiten helfen von Anfang an: Protokolliere eine Stichprobe von Eingaben und Vorhersagen, auch solche mit niedriger Konfidenz, und behalte den eingefrorenen Testsatz bei, damit alle Modelle anhand derselben Bilder verglichen werden. Unter Beobachtbarkeit und Drift findest du eine ausführliche Anleitung zur Überwachung von Datendrift.
Wie es weitergeht#
| Kurs | Mach den Kurs, wenn |
|---|---|
| Leistungsstarke YOLO-Datensätze erstellen | Deine Klassen sind nicht vortrainiert oder deine Szenen unterscheiden sich von COCO |
| Trainiere dein erstes YOLO-Modell | Du hast einen beschrifteten Datensatz und möchtest das Modell feinabstimmen |
| Ultralytics YOLO im produktiven Einsatz | Du hast ein Modell und brauchst Export, Tracking und Überwachung |
| Mit der Ultralytics Platform entwickeln | Du möchtest Datenverwaltung, Beschriftung, Training und Bereitstellung an einem Ort erledigen |
Möchtest du lieber im Browser arbeiten? Die Ultralytics Platform ermöglicht denselben Ablauf – hochladen, annotieren, trainieren, bereitstellen – ganz ohne lokale Installation:
Lösung anzeigen
from pathlib import Path
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
# 1. Which classes in your output line does the pretrained model already know?
spec_classes = {"person", "forklift"}
known = set(model.names.values())
print(f"pretrained: {sorted(spec_classes & known)} needs your own data: {sorted(spec_classes - known)}")
# 2. What does it find on your images?
sources = [
"https://ultralytics.com/images/bus.jpg", # replace with your own images
"https://ultralytics.com/images/zidane.jpg",
]
for source, result in zip(sources, model.predict(sources, conf=0.25, save=True, verbose=False)):
names = [result.names[int(c)] for c in result.boxes.cls]
print(f"{Path(source).name}: {len(names)} detections -> {sorted(set(names))}")pretrained: ['person'] needs your own data: ['forklift']
bus.jpg: 5 detections -> ['bus', 'person']
zidane.jpg: 3 detections -> ['person', 'tie']Für die Gabelstapler-Spezifikation gilt: person ist abgedeckt, forklift nicht. Nächster Schritt: Erstelle jetzt mit dem vortrainierten Modell einen Prototyp für die Zonenregel mit Personen und beginne mit Leistungsstarke YOLO-Datensätze erstellen, um Gabelstapleraufnahmen von den Lagerkameras zu sammeln und zu beschriften.