Ultralytics YOLO27:

Modellvorhersage mit Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Einleitung#

In der Welt des maschinellen Lernens und der Computer Vision wird der Prozess, visuelle Daten zu verstehen, oft als Inferenz oder Vorhersage bezeichnet. Ultralytics YOLO26 bietet eine leistungsstarke Funktion namens predict mode, die für eine leistungsstarke Inferenz in Echtzeit über eine große Bandbreite von Datenquellen hinweg entwickelt wurde.

Sieh dir die unreleased YOLO27 preview für geplante Inferenzbeispiele an.



Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀

Anwendungen in der Praxis#

FertigungSportSicherheit
Erkennung von FahrzeugersatzteilenErkennung von FußballspielernErkennung stürzender Personen

Warum Ultralytics YOLO für die Inferenz verwenden?#

Hier sind einige Gründe, warum du den Vorhersagemodus von YOLO26 für deine verschiedenen Inferenzanforderungen in Betracht ziehen solltest:

  • Vielseitigkeit: Inferenz auf Bildern, Videos und sogar Live-Streams möglich.
  • Leistung: Für schnelle Verarbeitung in Echtzeit entwickelt, ohne die Genauigkeit zu beeinträchtigen.
  • Benutzerfreundlichkeit: Intuitive Python- und CLI-Schnittstellen für schnelle Bereitstellung und Tests.
  • Hochgradig anpassbar: Verschiedene Einstellungen und Parameter ermöglichen es, das Inferenzverhalten des Modells an deine spezifischen Anforderungen anzupassen.
  • Produktionsbereit: Stelle Modelle als Ultralytics Platform-Inferenzendpunkte mit automatischer Skalierung und Überwachung bereit oder führe die Inferenz lokal aus.

Wichtige Funktionen des Vorhersagemodus#

Der Vorhersagemodus von YOLO26 ist robust und vielseitig ausgelegt und bietet folgende Funktionen:

  • Unterstützung mehrerer Datenquellen: Unabhängig davon, ob deine Daten aus einzelnen Bildern, einer Bildersammlung, Videodateien oder Videostreams in Echtzeit bestehen – der Vorhersagemodus ist dafür geeignet.
  • Streaming-Modus: Verwende die Streaming-Funktion, um einen speichereffizienten Generator von Results-Objekten zu erzeugen. Aktiviere ihn, indem du stream=True in der Aufrufmethode des Predictors setzt. Anders als das Standardverhalten (stream=False), das eine Liste mit allen Ergebnissen zurückgibt, liefert stream=True die Ergebnisse einzeln und eignet sich dadurch besonders für lange Videos und Live-Streams.
  • Stapelverarbeitung: Verarbeite mehrere Bilder oder Videoframes in einem einzigen Stapel und verkürze dadurch die gesamte Inferenzzeit weiter.
  • Einfache Integration: Dank der flexiblen API lässt sich der Modus problemlos in bestehende Datenpipelines und andere Softwarekomponenten integrieren.

Ultralytics YOLO-Modelle geben entweder eine Python-Liste von Results-Objekten oder einen speichereffizienten Generator von Results-Objekten zurück, wenn stream=True während der Inferenz an das Modell übergeben wird:

Vorhersage
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")  # pretrained YOLO26n model

# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"])  # return a list of Results objects

# Process results list
for result in results:
    boxes = result.boxes  # Boxes object for bounding box outputs
    masks = result.masks  # Masks object for segmentation masks outputs
    keypoints = result.keypoints  # Keypoints object for pose outputs
    probs = result.probs  # Probs object for classification outputs
    obb = result.obb  # Oriented boxes object for OBB outputs
    result.show()  # display to screen
    result.save(filename="result.jpg")  # save to disk

Inferenzquellen#

YOLO26 kann, wie in der folgenden Tabelle dargestellt, verschiedene Arten von Eingabequellen für die Inferenz verarbeiten. Dazu gehören statische Bilder, Videostreams und verschiedene Datenformate. Die Tabelle zeigt außerdem, ob jede Quelle mit dem Argument stream=True ✅ im Streaming-Modus verwendet werden kann. Der Streaming-Modus eignet sich für die Verarbeitung von Videos oder Live-Streams, da er einen Generator mit Ergebnissen erstellt, anstatt alle Frames in den Arbeitsspeicher zu laden.

Tipp

Verwende stream=True zur Verarbeitung langer Videos oder großer Datensätze, um den Arbeitsspeicher effizient zu verwalten. Wenn stream=False verwendet wird, werden die Ergebnisse aller Frames oder Datenpunkte im Arbeitsspeicher gespeichert. Bei großen Eingaben kann sich dies schnell summieren und zu Fehlern wegen nicht ausreichenden Arbeitsspeichers führen. Im Gegensatz dazu verwendet stream=True einen Generator, der nur die Ergebnisse des aktuellen Frames oder Datenpunkts im Arbeitsspeicher hält, wodurch der Speicherverbrauch deutlich sinkt und Probleme durch unzureichenden Arbeitsspeicher verhindert werden.

QuelleBeispielTypHinweise
image'image.jpg'str oder PathEinzelne Bilddatei.
URL'https://ultralytics.com/images/bus.jpg'strURL zu einem Bild.
screenshot'screen'strScreenshot aufnehmen.
PILImage.open('image.jpg')PIL.ImageHWC-Format mit RGB-Kanälen.
OpenCVcv2.imread('image.jpg')np.ndarrayHWC-Format mit BGR-Kanälen uint8 (0-255).
NumPynp.zeros((640,1280,3))np.ndarrayHWC-Format mit BGR-Kanälen uint8 (0-255).
torchtorch.zeros(16,3,320,640)torch.TensorBCHW-Format mit RGB-Kanälen float32 (0.0-1.0).
CSV'sources.csv'str oder PathCSV-Datei mit Pfaden zu Bildern, Videos oder Verzeichnissen.
video ✅'video.mp4'str oder PathVideodatei in Formaten wie MP4, AVI usw.
directory ✅'path/'str oder PathPfad zu einem Verzeichnis mit Bildern oder Videos.
glob ✅'path/*.jpg'strGlob-Muster zum Abgleichen mehrerer Dateien. Verwende das Zeichen * als Platzhalter.
YouTube ✅'https://youtu.be/LNwODJXcvt4'strURL zu einem YouTube-Video.
stream ✅'rtsp://example.com/media.mp4'strURL für Streaming-Protokolle wie RTSP, RTMP, TCP oder eine IP-Adresse.
multi-stream ✅'list.streams'str oder Path*.streams-Textdatei mit einer Stream-URL pro Zeile; 8 Streams werden beispielsweise mit einer Stapelgröße von 8 ausgeführt.
webcam ✅0intIndex des verbundenen Kamerageräts, auf dem die Inferenz ausgeführt werden soll.

Nachfolgend findest du Codebeispiele für die Verwendung der einzelnen Quellentypen:

Vorhersagequellen

Inferenz auf einer Bilddatei ausführen.

from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Define path to the image file
source = "path/to/image.jpg"

# Run inference on the source
results = model(source)  # list of Results objects

Inferenzargumente#

model.predict() akzeptiert mehrere Argumente, die zur Laufzeit der Inferenz übergeben werden können, um Standardwerte zu überschreiben:

Feste Form im Vergleich zu minimalem Rechteck (rect)#

Standardmäßig verwendet predict rect=True, wodurch nach Möglichkeit eine Auffüllung auf ein minimales Rechteck aktiviert wird. Das Bild wird so skaliert, dass es in imgsz passt, und nur bis zum nächsten Vielfachen des Strides aufgefüllt. Dadurch kann der finale Tensor kleiner als imgsz sein. Die Auffüllung auf ein minimales Rechteck wird nur verwendet, wenn alle Bilder im Stapel dieselbe Form haben und das Backend dies unterstützt (PyTorch .pt oder dynamisches ONNX / Triton). Andernfalls werden die Bilder auf das vollständige Ziel imgsz aufgefüllt.

Verwende rect=False, um immer auf das vollständige Ziel imgsz aufzufüllen. Dies wird empfohlen, wenn du eine feste Eingabegröße benötigst, die zu exportierten Modellen (ONNX, TensorRT usw.) passt.

Ganzzahl im Vergleich zu Tupel imgsz

  • Eine Ganzzahl imgsz=640 wird nach der Anpassung an den Stride zu einem quadratischen Ziel (640, 640).
  • Ein Tupel imgsz=(384, 672) legt ein rechteckiges Ziel fest. Mit rect=True und auto=True kann der tatsächliche Tensor kleiner als dieses Ziel sein.

Training im Vergleich zu predict/export

Das Training akzeptiert nur eine einzelne Ganzzahl imgsz (eine [h, w]-Liste wird auf den größten Wert reduziert). Predict und Export akzeptieren entweder eine Ganzzahl oder ein (height, width)-Tupel.

Beispiel
from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Run inference on 'bus.jpg' with arguments
model.predict("https://ultralytics.com/images/bus.jpg", save=True, imgsz=320, conf=0.25)

Inferenzargumente:

ArgumentTypStandardwertBeschreibung
sourcestr oder int oder NoneNoneGibt die Datenquelle für die Inferenz an. Möglich sind ein Bildpfad, eine Videodatei, ein Verzeichnis, eine URL oder eine Geräte-ID für Live-Feeds. Wenn dieser Wert fehlt, wird eine Warnung protokolliert und das Modell greift auf die integrierten Demo-Ressourcen zurück (ultralytics/assets oder bei OBB eine Demo-URL). Es werden zahlreiche Formate und Quellen unterstützt, sodass eine flexible Anwendung auf verschiedene Eingabetypen möglich ist.
conffloat0.25Legt den Mindestkonfidenzschwellwert für Erkennungen fest. Objekte, die mit einer Konfidenz unterhalb dieses Schwellwerts erkannt werden, werden verworfen. Das Anpassen dieses Werts kann helfen, falsch positive Erkennungen zu reduzieren.
ioufloat0.7Intersection over Union-Schwellwert (IoU) für die Non-Maximum Suppression (NMS). Niedrigere Werte führen zu weniger Erkennungen, da sich überlappende Boxen entfernt werden, was nützlich ist, um Duplikate zu reduzieren.
imgszint oder tuple640Zielgröße für Letterbox. Eine Ganzzahl ergibt ein quadratisches N×N; ein Tupel ergibt (height, width). Bei rect=True kann der tatsächliche Tensor aufgrund der Auffüllung auf das kleinste Rechteck kleiner als dieses Ziel sein. Verwende rect=False für eine feste Größe. Siehe Feste Form gegenüber kleinstem Rechteck.
rectboolTrueBei True wird nach Möglichkeit eine Auffüllung auf das kleinste Rechteck verwendet (gleichförmiger Batch und unterstütztes Backend). Bei False wird immer auf das vollständige imgsz aufgefüllt. Siehe Feste Form gegenüber kleinstem Rechteck.
quantizeint oder strNoneInferenzgenauigkeit: 16/"fp16" und 32/"fp32"/nicht gesetzt wählen FP16- oder FP32-Berechnungen für PyTorch- und TorchScript-Modelle; andere Formate berechnen mit der Genauigkeit, die ihr Artefakt und ihre Laufzeit auswählen. Bei 16 rundet OpenVINO die Eingabe auf dem Client weiterhin auf FP16 und erweitert sie wieder auf FP32, ohne zu ändern, worin die Laufzeit rechnet. Die INT8-/PTQ-Quantisierung wird während des Exports konfiguriert und anschließend durch das Laden des exportierten Modells verwendet. Ersetzt das veraltete half-Flag.
devicestrNoneGibt das Gerät für die Inferenz an (z. B. cpu, cuda:0, 0, npu oder npu:0). Ermöglicht die Auswahl zwischen CPU, einer bestimmten GPU, Huawei Ascend NPU oder anderen Rechengeräten für die Modellausführung.
dnnboolFalseWenn True, wird für die Inferenz von ONNX-Modellen das OpenCV-DNN-Modul anstelle von ONNX Runtime verwendet.
datastrNonePfad zu einer Dataset-YAML-Datei (z. B. coco8.yaml), die nur wegen ihres names gelesen wird und nur dann, wenn das geladene Modell keine eigenen Klassennamen enthält: bei einem Export eines Drittanbieters oder einem von den mitgelieferten Metadaten getrennten Ultralytics-Export. Ein solches Modell meldet ansonsten class0, class1 usw.
batchint1Gibt die Batchgröße für die Inferenz an (funktioniert nur, wenn die Quelle ein Verzeichnis, eine Videodatei oder eine .txt-Datei ist). Eine größere Batchgröße kann einen höheren Durchsatz ermöglichen und dadurch die für die Inferenz benötigte Gesamtzeit verkürzen.
max_detint300Maximale Anzahl zulässiger Erkennungen pro Bild. Begrenzt die Gesamtzahl der Objekte, die das Modell bei einer einzelnen Inferenz erkennen kann, und verhindert übermäßig viele Ausgaben in dichten Szenen.
vid_strideint1Bildschritt für Videoeingaben. Ermöglicht das Überspringen von Bildern in Videos, um die Verarbeitung auf Kosten der zeitlichen Auflösung zu beschleunigen. Ein Wert von 1 verarbeitet jedes Bild, höhere Werte überspringen Bilder.
stream_bufferboolFalseLegt fest, ob eingehende Bilder für Videostreams in eine Warteschlange eingereiht werden. Bei False werden alte Bilder verworfen, um Platz für neue zu schaffen (optimiert für Echtzeitanwendungen). Bei True werden neue Bilder in einem Puffer eingereiht, sodass keine Bilder übersprungen werden, was jedoch zu Latenz führt, wenn die Inferenz-FPS niedriger als die Stream-FPS ist.
visualizeboolFalseSpeichert neben jeder Vorhersage eine Aktivierungskarte der Klassen, die zeigt, welche Pixel die vorhergesagten Klassenwerte erhöht haben. Berücksichtigt conf und classes, sodass classes=[0] nur diese Klasse abbildet. Nur für Ultralytics-PyTorch-Modelle verfügbar.
augmentboolFalseAktiviert Testzeit-Augmentierung (TTA) für Vorhersagen, wodurch sich die Robustheit der Erkennung möglicherweise auf Kosten der Inferenzgeschwindigkeit verbessert. Nur für Ultralytics-PyTorch-Modelle verfügbar.
agnostic_nmsboolFalseAktiviert die klassenagnostische Non-Maximum Suppression (NMS), wodurch überlappende Boxen mit niedrigerem Score über verschiedene Klassen hinweg unterdrückt werden, anstatt nur innerhalb derselben Klasse. Nützlich in Szenarien der Multiklassen-Erkennung, in denen Klassenüberlappungen häufig sind. Bei NMS-freier Inferenz (nms=False auf YOLO26 oder YOLOv10) verhindert dies lediglich, dass dieselbe Erkennung mit mehreren Klassenlabels erscheint (IoU=1.0-Duplikate), und führt keine Schwellenwert-basierte Unterdrückung von IoU zwischen unterschiedlichen Boxen durch.
classeslist[int]NoneFiltert Vorhersagen auf eine Gruppe von Klassen-IDs. Es werden nur Erkennungen zurückgegeben, die zu den angegebenen Klassen gehören. Nützlich, um sich bei Mehrklassenerkennungsaufgaben auf relevante Objekte zu konzentrieren.
retina_masksboolFalseGibt Segmentierungsmasken mit hoher Auflösung zurück. Die zurückgegebenen Masken (masks.data) entsprechen bei Aktivierung der Größe des Originalbilds. Bei Deaktivierung haben sie die während der Inferenz verwendete Bildgröße.
embedlist[int]NoneGibt die Layer an, aus denen Merkmalsvektoren oder Embeddings extrahiert werden sollen. Verwende model.embed(source) für Embeddings des vorletzten Layers oder model.predict(source, embed=[layer]), um bestimmte Layer auszuwählen. Nützlich für nachgelagerte Aufgaben wie Clustering oder Ähnlichkeitssuche. Nur für Ultralytics-PyTorch-Modelle verfügbar.
projectstrNoneName des Projektverzeichnisses, in dem die Vorhersageausgaben gespeichert werden, wenn save aktiviert ist.
namestrNoneName des Vorhersagelaufs. Wird zum Erstellen eines Unterverzeichnisses im Projektordner verwendet, in dem die Vorhersageausgaben gespeichert werden, wenn save aktiviert ist.
streamboolFalseErmöglicht eine speichereffiziente Verarbeitung langer Videos oder zahlreicher Bilder, indem ein Generator von Results-Objekten zurückgegeben wird, anstatt alle Bilder auf einmal in den Speicher zu laden.
verboseboolTrueSteuert, ob detaillierte Inferenzprotokolle im Terminal angezeigt werden, und liefert Echtzeitinformationen zum Vorhersageprozess.
compilebool oder strFalseAktiviert die Graphkompilierung mit torch.compile von PyTorch 2.x über backend='inductor'. Akzeptiert True"default", False → Deaktivierung oder einen Zeichenkettenmodus wie "default", "reduce-overhead", "max-autotune-no-cudagraphs". Bei fehlender Unterstützung wird mit einer Warnung auf den Eager-Modus zurückgefallen.
channels_lastboolNoneVerwendet das Speicherformat channels_last (NHWC) für native PyTorch-Inferenz. None aktiviert es automatisch auf Linux- und Windows-x86-CPUs mit aktiviertem oneDNN und PyTorch 1.13 oder neuer, False deaktiviert es und True fordert es auf unterstützten x86-CPUs oder CUDA-Geräten an. ARM64, MPS, ältere PyTorch-Versionen, CPUs ohne oneDNN sowie exportierte Formate wie TensorRT und ONNX bleiben unverändert.
nmsbool, optionalNoneFührt standardmäßig One-to-Many-Inferenz mit NMS aus (None oder True). Setze False, um den NMS-freien One-to-One-Kopf zu verwenden, sofern verfügbar. Weitere Details findest du im End-to-End Detection guide.

Argumente für die Visualisierung:

ArgumentTypStandardwertBeschreibung
showboolFalseWenn True, werden die annotierten Bilder oder Videos in einem Fenster angezeigt. Dies ist nützlich für unmittelbares visuelles Feedback während der Entwicklung oder des Testens.
saveboolFalse or TrueAktiviert das Speichern der annotierten Bilder oder Videos in Dateien. Nützlich für Dokumentation, weitere Analysen oder das Teilen von Ergebnissen. Standardmäßig True bei Verwendung der CLI und False bei Verwendung in Python.
save_framesboolFalseSpeichert bei der Verarbeitung von Videos einzelne Bilder als Dateien. Nützlich zum Extrahieren bestimmter Bilder oder für eine detaillierte Einzelbildanalyse.
save_txtboolFalseSpeichert Erkennungsergebnisse in einer Textdatei nach dem Format [class] [x_center] [y_center] [width] [height] [confidence]. Nützlich für die Integration mit anderen Analysewerkzeugen.
save_confboolFalseFügt Konfidenzwerte in die gespeicherten Textdateien ein. Erhöht den für die Nachverarbeitung und Analyse verfügbaren Detailgrad.
save_cropboolFalseSpeichert zugeschnittene Bilder der Erkennungen. Nützlich für Dataset-Augmentierung, Analysen oder das Erstellen fokussierter Datasets für bestimmte Objekte.
show_labelsboolTrueZeigt Labels für jede Erkennung in der visuellen Ausgabe an. Dies ermöglicht ein unmittelbares Verständnis der erkannten Objekte.
show_confboolTrueZeigt neben dem Label den Konfidenzwert für jede Erkennung an. Dadurch erhältst du Einblick in die Sicherheit des Modells bei jeder Erkennung.
show_boxesboolTrueZeichnet Begrenzungsrahmen um erkannte Objekte. Dies ist für die visuelle Identifizierung und Lokalisierung von Objekten in Bildern oder Videobildern unerlässlich.
line_widthint or NoneNoneGibt die Linienbreite der Begrenzungsboxen an. Bei None wird die Linienbreite automatisch anhand der Bildgröße angepasst. Ermöglicht eine visuelle Anpassung für bessere Übersichtlichkeit.

Bild- und Videoformate#

YOLO26 unterstützt verschiedene Bild- und Videoformate, wie in ultralytics/data/utils.py angegeben. In den folgenden Tabellen findest du die gültigen Endungen und Beispiele für Vorhersagebefehle.

Bilder#

Die folgende Tabelle enthält gültige Ultralytics-Bildformate.

Hinweis

HEIC/HEIF-Formate erfordern pi-heif, das bei der ersten Verwendung automatisch installiert wird. AVIF wird nativ von Pillow unterstützt.

BildendungenBeispiel für einen VorhersagebefehlReferenz
.avifyolo predict source=image.avifAV1-Bilddateiformat
.bmpyolo predict source=image.bmpMicrosoft-BMP-Dateiformat
.dngyolo predict source=image.dngAdobe DNG
.heicyolo predict source=image.heicHocheffizientes Bildformat
.heifyolo predict source=image.heifHocheffizientes Bildformat
.jp2yolo predict source=image.jp2JPEG 2000
.jpegyolo predict source=image.jpegJPEG
.jpgyolo predict source=image.jpgJPEG
.mpoyolo predict source=image.mpoMulti Picture Object
.pngyolo predict source=image.pngPortable Network Graphics
.tifyolo predict source=image.tifTag Image File Format
.tiffyolo predict source=image.tiffTag Image File Format
.webpyolo predict source=image.webpWebP

Videos#

Die folgende Tabelle enthält gültige Ultralytics-Videoformate.

VideoendungenBeispiel für einen VorhersagebefehlReferenz
.asfyolo predict source=video.asfAdvanced Systems Format
.aviyolo predict source=video.aviAudio Video Interleave
.gifyolo predict source=video.gifGraphics Interchange Format
.m4vyolo predict source=video.m4vMPEG-4 Teil 14
.mkvyolo predict source=video.mkvMatroska
.movyolo predict source=video.movQuickTime-Dateiformat
.mp4yolo predict source=video.mp4MPEG-4 Teil 14 – Wikipedia
.mpegyolo predict source=video.mpegMPEG-1 Teil 2
.mpgyolo predict source=video.mpgMPEG-1 Teil 2
.tsyolo predict source=video.tsMPEG-Transportstream
.wmvyolo predict source=video.wmvWindows Media Video
.webmyolo predict source=video.webmWebM-Projekt

Arbeiten mit Ergebnissen#

Alle Ultralytics-Aufrufe von predict() geben eine Liste von Results-Objekten zurück:

Ergebnisse
from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")
results = model(
    [
        "https://ultralytics.com/images/bus.jpg",
        "https://ultralytics.com/images/zidane.jpg",
    ]
)  # batch inference

Results-Objekte verfügen über die folgenden Attribute:

AttributTypBeschreibung
orig_imgnp.ndarrayDas Originalbild als NumPy-Array.
orig_shapetupleDie Form des Originalbilds im Format (Höhe, Breite).
boxesBoxes, optionalEin Boxes-Objekt mit den Begrenzungsrahmen der Erkennungen.
masksMasks, optionalEin Masks-Objekt mit den Erkennungsmasken.
probsProbs, optionalEin Probs-Objekt mit den Wahrscheinlichkeiten jeder Klasse für die Klassifizierungsaufgabe.
keypointsKeypoints, optionalEin Keypoints-Objekt mit den erkannten Schlüsselpunkten für jedes Objekt.
obbOBB, optionalEin OBB-Objekt mit orientierten Begrenzungsrahmen.
semantic_maskSemanticMask, optionalEin SemanticMask-Objekt mit einer dichten Klassenkarte pro Pixel.
speeddictEin Wörterbuch mit den Geschwindigkeiten der Vorverarbeitung, Inferenz und Nachbearbeitung in Millisekunden pro Bild.
namesdictEin Wörterbuch, das Klassenindizes auf Klassennamen abbildet.
pathstrDer Pfad zur Bilddatei.
save_dirstr, optionalVerzeichnis zum Speichern der Ergebnisse.

Ergebnisse nach Aufgabe#

Welche Felder unten ausgefüllt werden, hängt von der Aufgabe deines Modells ab — vergleiche Objekterkennung, Segmentierung, semantische Segmentierung, Tiefenschätzung, Klassifizierung, Pose und OBB, falls du dich noch für keine entschieden hast. Jede Vorhersage gibt ein Results-Objekt pro Bild oder Frame zurück. Die obigen Standardfelder sind immer verfügbar, während die aufgabenspezifischen Vorhersagedaten in den Feldern unten gespeichert werden. YOLO-Koordinaten- und Konfidenztensoren sind torch.float32; Wahrscheinlichkeitstensoren sind torch.float32, es sei denn, es wird Halauflösung verwendet, dann torch.float16. Nach result.numpy() werden Tensor zu NumPy-Arrays mit passenden NumPy-Datentypen. Instanzmasken sind binäre torch.uint8-Tensoren, während semantische Masken den kleinsten praktischen Ganzzahl-Datentypen für Klassen-IDs verwenden: torch.uint8, torch.int16 oder torch.int32, je nach Anzahl der Klassen.

AttributTypFormBeschreibung
result.boxesBoxes(N)Erkennungsboxen.
result.boxes.datatorch.float32(N,6/7)Rohdaten [x1,y1,x2,y2,conf,cls] sowie eine optionale Track-ID.
result.boxes.xyxytorch.float32(N,4)xyxy-Pixelboxen.
result.boxes.conftorch.float32(N,)Konfidenzwerte.
result.boxes.clstorch.float32(N,)Klassen-IDs; für Namen in int umwandeln.

Results-Objekte verfügen über die folgenden Methoden:

MethodeRückgabetypBeschreibung
update()NoneAktualisiert das Results-Objekt mit neuen Daten wie Boxen, Masken, Wahrscheinlichkeiten, OBB, Schlüsselpunkten oder semantischen Masken.
cpu()ResultsGibt eine Kopie des Results-Objekts zurück, bei der alle Tensoren in den CPU-Speicher verschoben wurden.
numpy()ResultsGibt eine Kopie des Results-Objekts zurück, bei der alle Tensoren in NumPy-Arrays konvertiert wurden.
cuda()ResultsGibt eine Kopie des Results-Objekts zurück, bei der alle Tensoren in den GPU-Speicher verschoben wurden.
to()ResultsGibt eine Kopie des Results-Objekts zurück, bei der die Tensoren auf das angegebene Gerät verschoben und in den angegebenen Datentyp konvertiert wurden.
new()ResultsErstellt ein neues Results-Objekt mit denselben Attributen für Bild, Pfad, Namen und Geschwindigkeit.
plot()np.ndarrayZeichnet die Erkennungsergebnisse auf einem BGR-Eingabebild ein und gibt das annotierte Bild zurück.
show()NoneZeigt das Bild mit den annotierten Inferenz-Ergebnissen an.
save()strSpeichert das Bild mit den annotierten Inferenz-Ergebnissen in einer Datei und gibt den Dateinamen zurück.
verbose()strGibt für jede Aufgabe eine Protokollzeichenfolge zurück, in der die Erkennungs- und Klassifizierungsergebnisse detailliert aufgeführt sind.
save_txt()strSpeichert die Erkennungsergebnisse in einer Textdatei und gibt den Pfad zur gespeicherten Datei zurück.
save_crop()NoneSpeichert zugeschnittene Erkennungsbilder im angegebenen Verzeichnis.
summary()List[Dict[str, Any]]Konvertiert die Inferenz-Ergebnisse in ein zusammengefasstes Dictionary, optional mit Normalisierung.
to_df()DataFrameKonvertiert die Erkennungsergebnisse in einen Polars DataFrame.
to_csv()strKonvertiert die Erkennungsergebnisse in das CSV-Format.
to_json()strKonvertiert die Erkennungsergebnisse in das JSON-Format.

Weitere Informationen findest du in der Dokumentation der Klasse Results.

Boxen#

Das Boxes-Objekt kann zum Indizieren, Bearbeiten und Konvertieren von Bounding Boxes in verschiedene Formate verwendet werden.

Boxen
from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.boxes)  # print the Boxes object containing the detection bounding boxes

Hier ist eine Tabelle mit den Methoden und Eigenschaften der Klasse Boxes, einschließlich Name, Typ und Beschreibung:

NameTypBeschreibung
cpu()MethodeVerschiebt das Objekt in den CPU-Speicher.
numpy()MethodeKonvertiert das Objekt in ein NumPy-Array.
cuda()MethodeVerschiebt das Objekt in den CUDA-Speicher.
to()MethodeVerschiebt das Objekt auf das angegebene Gerät.
xyxyEigenschaft (torch.Tensor)Gibt die Boxen im xyxy-Format zurück.
confEigenschaft (torch.Tensor)Gibt die Konfidenzwerte der Boxen zurück.
clsEigenschaft (torch.Tensor)Gibt die Klassenwerte der Boxen zurück.
idEigenschaft (torch.Tensor)Gibt die Track-IDs der Boxen zurück, sofern verfügbar.
xywhEigenschaft (torch.Tensor)Gibt die Boxen im xywh-Format zurück.
xyxynEigenschaft (torch.Tensor)Gibt die Boxen im xyxy-Format zurück, normalisiert anhand der ursprünglichen Bildgröße.
xywhnEigenschaft (torch.Tensor)Gibt die Boxen im xywh-Format zurück, normalisiert anhand der ursprünglichen Bildgröße.

Weitere Informationen findest du in der Dokumentation der Klasse Boxes.

Masken#

Das Masks-Objekt kann zum Indizieren, Bearbeiten und Konvertieren von Masken in Segmente verwendet werden.

Masken
from ultralytics import YOLO

# Load a pretrained YOLO26n-seg Segment model
model = YOLO("yolo26n-seg.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.masks)  # print the Masks object containing the detected instance masks

Hier ist eine Tabelle mit den Methoden und Eigenschaften der Klasse Masks, einschließlich Name, Typ und Beschreibung:

NameTypBeschreibung
dataEigenschaft (torch.Tensor)Binärer Maskentensor des torch.uint8-Objekts mit der Form (N,H,W) und den Werten 0 oder 1.
cpu()MethodeGibt den Maskentensor im CPU-Speicher zurück.
numpy()MethodeGibt den Maskentensor als NumPy-Array zurück.
cuda()MethodeGibt den Maskentensor im GPU-Speicher zurück.
to()MethodeGibt den Maskentensor mit dem angegebenen Gerät und Datentyp zurück.
xynEigenschaft (list[np.ndarray])Eine Liste normalisierter Maskenpolygone.
xyEigenschaft (list[np.ndarray])Eine Liste von Maskenpolygonen in Pixelkoordinaten.

Weitere Informationen findest du in der Dokumentation der Klasse Masks.

SemanticMask#

Das SemanticMask-Objekt speichert für die Ergebnisse der semantischen Segmentierung eine dichte Klassenkarte. Anders als Masks enthält es keine binäre Maske pro Objekt und stellt keine Hilfsfunktionen für Polygone bereit.

SemanticMask
from ultralytics import YOLO

# Load a pretrained YOLO26n-sem Semantic model
model = YOLO("yolo26n-sem.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.semantic_mask.data)  # print the H x W class-ID map
NameTypBeschreibung
dataEigenschaft (torch.Tensor)Klassen-ID-Karte mit der Form (H,W). Der Datentyp ist torch.uint8, torch.int16 oder torch.int32 und wird anhand der Klassenanzahl ausgewählt.
shapeEigenschaft (tuple)Form der Klassenkarte, die normalerweise result.orig_shape entspricht.
cpu()MethodeGibt den Tensor der semantischen Maske im CPU-Speicher zurück.
numpy()MethodeGibt den Tensor der semantischen Maske als NumPy-Array zurück.
cuda()MethodeGibt den Tensor der semantischen Maske im GPU-Speicher zurück.
to()MethodeGibt den Tensor der semantischen Maske mit dem angegebenen Gerät und Datentyp zurück.

Keypoints#

Das Keypoints-Objekt kann zum Indizieren, Bearbeiten und Normalisieren von Koordinaten verwendet werden.

Keypoints
from ultralytics import YOLO

# Load a pretrained YOLO26n-pose Pose model
model = YOLO("yolo26n-pose.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.keypoints)  # print the Keypoints object containing the detected keypoints

Hier ist eine Tabelle mit den Methoden und Eigenschaften der Klasse Keypoints, einschließlich Name, Typ und Beschreibung:

NameTypBeschreibung
cpu()MethodeGibt den Keypoints-Tensor im CPU-Speicher zurück.
numpy()MethodeGibt den Keypoints-Tensor als NumPy-Array zurück.
cuda()MethodeGibt den Keypoints-Tensor im GPU-Speicher zurück.
to()MethodeGibt den Keypoints-Tensor mit dem angegebenen Gerät und Datentyp zurück.
xynEigenschaft (torch.Tensor)Eine Liste normalisierter Keypoints, die als Tensoren dargestellt werden.
xyEigenschaft (torch.Tensor)Eine Liste von Keypoints in Pixelkoordinaten, die als Tensoren dargestellt werden.
confEigenschaft (torch.Tensor)Gibt die Konfidenzwerte der Keypoints zurück, sofern verfügbar, andernfalls None.

Weitere Informationen findest du in der Dokumentation der Klasse Keypoints.

Probs#

Das Probs-Objekt kann verwendet werden, um die Klassifizierungsindizes und -scores top1 und top5 abzurufen.

Probs
from ultralytics import YOLO

# Load a pretrained YOLO26n-cls Classify model
model = YOLO("yolo26n-cls.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg")  # results list

# View results
for r in results:
    print(r.probs)  # print the Probs object containing the detected class probabilities

Hier ist eine Tabelle mit einer Zusammenfassung der Methoden und Eigenschaften der Klasse Probs:

NameTypBeschreibung
cpu()MethodeGibt eine Kopie des Probs-Tensors im CPU-Speicher zurück.
numpy()MethodeGibt eine Kopie des Probs-Tensors als NumPy-Array zurück.
cuda()MethodeGibt eine Kopie des Probs-Tensors im GPU-Speicher zurück.
to()MethodeGibt eine Kopie des Probs-Tensors mit dem angegebenen Gerät und Datentyp zurück.
top1Eigenschaft (int)Index der Top-1-Klasse.
top5Eigenschaft (list[int])Indizes der Top-5-Klassen.
top1confEigenschaft (torch.Tensor)Konfidenz der Top-1-Klasse.
top5confEigenschaft (torch.Tensor)Konfidenzen der Top-5-Klassen.

Weitere Informationen findest du in der Dokumentation der Klasse Probs.

OBB#

Das OBB-Objekt kann zum Indizieren, Bearbeiten und Konvertieren von orientierten Bounding Boxes in verschiedene Formate verwendet werden.

OBB
from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n-obb.pt")

# Run inference on an image
results = model("https://ultralytics.com/images/boats.jpg")  # results list

# View results
for r in results:
    print(r.obb)  # print the OBB object containing the oriented detection bounding boxes

Hier ist eine Tabelle mit den Methoden und Eigenschaften der Klasse OBB, einschließlich Name, Typ und Beschreibung:

NameTypBeschreibung
cpu()MethodeVerschiebt das Objekt in den CPU-Speicher.
numpy()MethodeKonvertiert das Objekt in ein NumPy-Array.
cuda()MethodeVerschiebt das Objekt in den CUDA-Speicher.
to()MethodeVerschiebt das Objekt auf das angegebene Gerät.
confEigenschaft (torch.Tensor)Gibt die Konfidenzwerte der Boxen zurück.
clsEigenschaft (torch.Tensor)Gibt die Klassenwerte der Boxen zurück.
idEigenschaft (torch.Tensor)Gibt die Track-IDs der Boxen zurück, sofern verfügbar.
xyxyEigenschaft (torch.Tensor)Gibt die horizontalen Boxen im xyxy-Format zurück.
xywhrEigenschaft (torch.Tensor)Gibt die gedrehten Boxen im xywhr-Format zurück.
xyxyxyxyEigenschaft (torch.Tensor)Gibt die gedrehten Boxen im xyxyxyxy-Format zurück.
xyxyxyxynEigenschaft (torch.Tensor)Gibt die gedrehten Boxen im xyxyxyxy-Format zurück, normalisiert anhand der Bildgröße.

Weitere Informationen findest du in der Dokumentation der Klasse OBB.

Ergebnisse darstellen#

Die Methode plot() in Results-Objekten erleichtert die Visualisierung von Vorhersagen, indem erkannte Objekte wie Bounding Boxes, Masken, Keypoints und Wahrscheinlichkeiten über das Originalbild gelegt werden. Diese Methode gibt das annotierte Bild als NumPy-Array zurück, sodass es einfach angezeigt oder gespeichert werden kann.

Darstellung
from PIL import Image

from ultralytics import YOLO

# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")

# Run inference on 'bus.jpg'
results = model(["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/zidane.jpg"])  # results list

# Visualize the results
for i, r in enumerate(results):
    # Plot results image
    im_bgr = r.plot()  # BGR-order numpy array
    im_rgb = Image.fromarray(im_bgr[..., ::-1])  # RGB-order PIL image

    # Show results to screen (in supported environments)
    r.show()

    # Save results to disk
    r.save(filename=f"results{i}.jpg")

Parameter der Methode plot()#

Die Methode plot() unterstützt verschiedene Argumente zur Anpassung der Ausgabe:

ArgumentTypBeschreibungStandardwert
confboolErkennungskonfidenzen einbeziehen.True
line_widthfloatLinienbreite der Bounding Boxes. Wird an die Bildgröße angepasst, wenn None.None
font_sizefloatSchriftgröße des Textes. Wird an die Bildgröße angepasst, wenn None.None
fontstrSchriftname für Textannotationen.'Arial.ttf'
pilboolBild als PIL-Image-Objekt zurückgeben.False
imgnp.ndarray | torch.TensorAlternatives Bild. Tensoren müssen als zusammenhängendes HWC-BGR-uint8 vorliegen.None
kpt_radiusintRadius der eingezeichneten Keypoints.5
kpt_lineboolKeypoints mit Linien verbinden.True
labelsboolKlassenbezeichnungen in die Annotationen aufnehmen.True
boxesboolBounding Boxes über das Bild legen.True
masksboolMasken über das Bild legen.True
probsboolKlassifizierungswahrscheinlichkeiten einbeziehen.True
showboolDas annotierte Bild direkt mit dem standardmäßigen Bildbetrachter anzeigen.False
saveboolDas annotierte Bild in der durch filename angegebenen Datei speichern.False
filenamestrPfad und Name der Datei, in der das annotierte Bild gespeichert werden soll, wenn save gleich True ist.None
color_modestrDen Farbmodus angeben, z. B. „instance“ oder „class“.'class'
txt_colortuple[int, int, int]BGR-Textfarbe für die Bounding-Box- und Bildklassifizierungsbezeichnung.(255, 255, 255)

Thread-sichere Inferenz#

Die Gewährleistung der Thread-Sicherheit während der Inferenz ist entscheidend, wenn du mehrere YOLO-Modelle parallel in verschiedenen Threads ausführst. Thread-sichere Inferenz stellt sicher, dass die Vorhersagen jedes Threads isoliert sind und sich nicht gegenseitig beeinflussen. Dadurch werden Race Conditions vermieden und konsistente, zuverlässige Ausgaben gewährleistet.

Wenn du YOLO-Modelle in einer Multithreading-Anwendung verwendest, ist es wichtig, für jeden Thread ein eigenes Modellobjekt zu instanziieren oder thread-lokalen Speicher zu verwenden, um Konflikte zu vermeiden:

Thread-sichere Inferenz

Instanziiere für eine thread-sichere Inferenz ein einzelnes Modell innerhalb jedes Threads:

from threading import Thread

from ultralytics import YOLO

def thread_safe_predict(model, image_path):
    """Performs thread-safe prediction on an image using a locally instantiated YOLO model."""
    model = YOLO(model)
    results = model.predict(image_path)
    # Process results

# Starting threads that each have their own model instance
Thread(target=thread_safe_predict, args=("yolo26n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo26n.pt", "image2.jpg")).start()

Eine ausführliche Betrachtung der thread-sicheren Inferenz mit YOLO-Modellen und schrittweise Anleitungen findest du in unserem Leitfaden zur thread-sicheren YOLO-Inferenz. Dieser Leitfaden enthält alle erforderlichen Informationen, um häufige Fehler zu vermeiden und sicherzustellen, dass deine Inferenz mit mehreren Threads reibungslos ausgeführt wird.

Streaming-Quelle for-Schleife#

Hier ist ein Python-Skript, das OpenCV (cv2) und YOLO verwendet, um Inferenz auf Videoframes auszuführen. Dieses Skript setzt voraus, dass du die erforderlichen Pakete (opencv-python und ultralytics) bereits installiert hast.

Streaming-for-Schleife
import cv2

from ultralytics import YOLO

# Load the YOLO model
model = YOLO("yolo26n.pt")

# Open the video file
video_path = "path/to/your/video/file.mp4"
cap = cv2.VideoCapture(video_path)

# Loop through the video frames
while cap.isOpened():
    # Read a frame from the video
    success, frame = cap.read()

    if success:
        # Run YOLO inference on the frame
        results = model(frame)

        # Visualize the results on the frame
        annotated_frame = results[0].plot()

        # Display the annotated frame
        cv2.imshow("YOLO Inference", annotated_frame)

        # Break the loop if 'q' is pressed
        if cv2.waitKey(1) & 0xFF == ord("q"):
            break
    else:
        # Break the loop if the end of the video is reached
        break

# Release the video capture object and close the display window
cap.release()
cv2.destroyAllWindows()

Dieses Skript führt für jedes Videobild Vorhersagen aus, visualisiert die Ergebnisse und zeigt sie in einem Fenster an. Die Schleife kann durch Drücken von „q“ beendet werden.

Wie geht es weiter?#

Möchtest du über ein vortrainiertes Modell hinausgehen? Bestätige, dass deine Aufgabe zu deinem Problem passt, formatiere deine eigenen Daten mit dem Datenset-Leitfaden und trainiere anschließend damit.

FAQ#

  • Ultralytics YOLO ist ein hochmodernes Modell für Objekterkennung, Instanzsegmentierung, semantische Segmentierung, Tiefenschätzung und Klassifizierung in Echtzeit. Sein Vorhersagemodus ermöglicht dir eine schnelle Inferenz mit verschiedenen Datenquellen wie Bildern, Videos und Livestreams. Der Modus wurde für Leistung und Vielseitigkeit entwickelt und bietet außerdem Stapelverarbeitung und Streaming-Modi. Weitere Informationen zu den Funktionen findest du im Vorhersagemodus von Ultralytics YOLO.

  • Ultralytics YOLO kann eine große Bandbreite an Datenquellen verarbeiten, darunter einzelne Bilder, Videos, Verzeichnisse, URLs und Streams. Du kannst die Datenquelle im Aufruf model.predict() angeben. Verwende beispielsweise 'image.jpg' für ein lokales Bild oder 'https://ultralytics.com/images/bus.jpg' für eine URL. In der Dokumentation findest du ausführliche Beispiele für verschiedene Inferenzquellen.

  • Um die Inferenzgeschwindigkeit zu optimieren und den Speicher effizient zu verwalten, kannst du den Streaming-Modus verwenden, indem du stream=True in der Aufrufmethode des Predictors festlegst. Der Streaming-Modus erzeugt einen speichereffizienten Generator von Results-Objekten, anstatt alle Frames in den Speicher zu laden. Für die Verarbeitung langer Videos oder großer Datensätze ist der Streaming-Modus besonders nützlich. Weitere Informationen findest du im Abschnitt zum Streaming-Modus.

  • Die Methode model.predict() in YOLO unterstützt verschiedene Argumente wie conf, iou, imgsz, device und weitere. Mit diesen Argumenten kannst du den Inferenzprozess anpassen und Parameter wie Konfidenzschwellenwerte, die Bildgröße und das für die Berechnung verwendete Gerät festlegen. Detaillierte Beschreibungen dieser Argumente findest du im Abschnitt Inferenzargumente.

  • Verwende model.embed(source), um Feature-Embeddings aus der vorletzten Schicht zu extrahieren, oder übergib embed=[layer_index] an model.predict(), um bestimmte Schichten auszuwählen.

    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    source = "https://ultralytics.com/images/bus.jpg"
    
    results = model.predict(source)  # Results objects
    embeddings = model.embed(source)  # list of torch.Tensor embeddings
  • Nach der Inferenz mit YOLO enthalten die Results-Objekte Methoden zum Anzeigen und Speichern annotierter Bilder. Du kannst Methoden wie result.show() und result.save(filename="result.jpg") verwenden, um die Ergebnisse zu visualisieren und zu speichern. Fehlende übergeordnete Verzeichnisse im Dateipfad werden automatisch erstellt, z. B. result.save("path/to/result.jpg"). Eine vollständige Liste dieser Methoden findest du im Abschnitt Arbeiten mit Ergebnissen.

Kommentare