Ultralytics YOLO27:
Get Started

Modellvorhersage mit Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Einführung#

In der Welt des maschinellen Lernens und des maschinellen Sehens wird der Prozess, visuelle Daten zu interpretieren, oft Inferenz oder Vorhersage genannt. Ultralytics YOLO26 bietet eine leistungsstarke Funktion namens Vorhersagemodus, die für leistungsstarke Inferenz in Echtzeit mit einer Vielzahl von Datenquellen ausgelegt ist.

Geplante Inferenzbeispiele findest du in der Vorschau auf das noch nicht veröffentlichte YOLO27.



Ansehen: So extrahierst du Ergebnisse aus Ultralytics YOLO26-Aufgaben für eigene Projekte 🚀

Anwendungen in der Praxis#

FertigungSportSicherheit
Erkennung von FahrzeugersatzteilenErkennung von FußballspielernErkennung von Stürzen

Warum Ultralytics YOLO für Inferenz verwenden?#

Darum solltest du den Vorhersagemodus von YOLO26 für deine verschiedenen Inferenzanforderungen in Betracht ziehen:

  • Vielseitigkeit: Inferenz auf Bildern, Videos und sogar Live-Streams ausführen.
  • Leistung: Für echtzeitfähige Verarbeitung mit hoher Geschwindigkeit entwickelt, ohne Abstriche bei der Genauigkeit.
  • Einfache Bedienung: Intuitive Schnittstellen für Python und CLI ermöglichen eine schnelle Bereitstellung und Prüfung.
  • Umfangreiche Anpassungsmöglichkeiten: Verschiedene Einstellungen und Parameter, mit denen du das Inferenzverhalten des Modells an deine konkreten Anforderungen anpassen kannst.
  • Bereit für den Produktionseinsatz: Stelle Modelle als Inferenzendpunkte der Ultralytics Platform mit automatischer Skalierung und Überwachung bereit oder führe die Inferenz lokal aus.

Wichtige Funktionen des Vorhersagemodus#

Der Vorhersagemodus von YOLO26 ist auf Robustheit und Vielseitigkeit ausgelegt und bietet:

  • Kompatibilität mit verschiedenen Datenquellen: Ganz gleich, ob deine Daten aus einzelnen Bildern, einer Bildersammlung, Videodateien oder Echtzeit-Videostreams bestehen – der Vorhersagemodus ist dafür geeignet.
  • Streaming-Modus: Verwende die Streaming-Funktion, um einen speichereffizienten Generator von Results-Objekten zu erstellen. Aktiviere diese Funktion, indem du stream=True in der Aufrufmethode des Prädiktors setzt. Anders als beim Standardverhalten (stream=False), das eine Liste mit allen Ergebnissen zurückgibt, liefert stream=True die Ergebnisse einzeln. Das ist besonders bei langen Videos und Live-Streams nützlich.
  • Stapelverarbeitung: Verarbeite mehrere Bilder oder Videoframes in einem einzigen Stapel und verkürze so die gesamte Inferenzzeit.
  • Einfache Integration: Dank der flexiblen API lässt sich das System problemlos in bestehende Datenpipelines und andere Softwarekomponenten integrieren.

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

Vorhersagen
from ultralytics import YOLO

# Ein Modell laden
model = YOLO("yolo26n.pt")  # vortrainiertes YOLO26n-Modell

# Stapelweise Inferenz auf einer Liste von Bildern ausführen
results = model(["image1.jpg", "image2.jpg"])  # eine Liste mit Results-Objekten zurückgeben

# Ergebnisliste verarbeiten
for result in results:
    boxes = result.boxes  # Boxes-Objekt für Begrenzungsrahmen-Ausgaben
    masks = result.masks  # Masks-Objekt für Segmentierungsmasken-Ausgaben
    keypoints = result.keypoints  # Keypoints-Objekt für Posenausgaben
    probs = result.probs  # Probs-Objekt für Klassifizierungsausgaben
    obb = result.obb  # Oriented-Boxes-Objekt für OBB-Ausgaben
    result.show()  # auf dem Bildschirm anzeigen
    result.save(filename="result.jpg")  # auf dem Datenträger speichern

Inferenzquellen#

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

Tipp

Verwende stream=True, um den Arbeitsspeicher bei der Verarbeitung langer Videos oder großer Datensätze effizient zu verwalten. Bei stream=False werden die Ergebnisse für alle Frames oder Datenpunkte im Arbeitsspeicher gespeichert. Bei großen Eingaben kann sich der Speicherbedarf schnell summieren und zu Fehlern wegen unzureichenden Arbeitsspeichers führen. stream=True verwendet dagegen einen Generator, der nur die Ergebnisse des aktuellen Frames oder Datenpunkts im Arbeitsspeicher hält. Dadurch sinkt der Speicherverbrauch deutlich und Probleme wegen unzureichenden Arbeitsspeichers werden vermieden.

QuelleBeispielTypHinweise
Bild'image.jpg'str oder PathEinzelne Bilddatei.
URL'https://ultralytics.com/images/bus.jpg'strURL zu einem Bild.
Screenshot'screen'strEinen Screenshot 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.
Verzeichnis ✅'path/'str oder PathPfad zu einem Verzeichnis mit Bildern oder Videos.
Glob-Muster ✅'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 Streamingprotokolle wie RTSP, RTMP oder TCP oder eine IP-Adresse.
Mehrere Streams ✅'list.streams'str oder Path*.streams-Textdatei mit einer Stream-URL pro Zeile. Bei 8 Streams wird beispielsweise die Stapelgröße 8 verwendet.
Webcam ✅0intIndex des angeschlossenen Kamerageräts, für das die Inferenz ausgeführt werden soll.

Nachfolgend findest du Codebeispiele zur Verwendung der einzelnen Quelltypen:

Vorhersagequellen

Inferenz auf einer Bilddatei ausführen.

from ultralytics import YOLO

# Ein vortrainiertes YOLO26n-Modell laden
model = YOLO("yolo26n.pt")

# Pfad zur Bilddatei festlegen
source = "path/to/image.jpg"

# Inferenz auf der Quelle ausführen
results = model(source)  # Liste mit Results-Objekten

Inferenzargumente#

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

Feste Form im Vergleich zu kleinstmöglichem Rechteck (rect)#

Standardmäßig verwendet predict rect=True, wodurch nach Möglichkeit eine Auffüllung auf das kleinstmögliche Rechteck aktiviert wird. Das Bild wird so skaliert, dass es in imgsz passt, und nur bis zum nächsten Vielfachen des Strides aufgefüllt. Daher kann der endgültige Tensor kleiner als imgsz sein. Die Auffüllung auf das kleinstmögliche Rechteck wird nur verwendet, wenn alle Bilder im Batch dieselbe Form haben und das Backend dies unterstützt (PyTorch .pt oder ein Export mit dynamischer Form, etwa dynamisches ONNX). Andernfalls werden die Bilder auf die volle Zielgröße imgsz aufgefüllt.

Verwende rect=False, um immer auf die volle Zielgröße 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 ergibt nach der Rundung auf ein Stride-Vielfaches eine quadratische Zielgröße (640, 640).
  • Ein Tupel imgsz=(384, 672) legt eine rechteckige Zielgröße fest. Bei rect=True kann der tatsächliche Tensor kleiner als diese Zielgröße sein.

Training im Vergleich zu predict/export

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

Beispiel
from ultralytics import YOLO

# Ein vortrainiertes YOLO26n-Modell laden
model = YOLO("yolo26n.pt")

# Inferenz auf „bus.jpg“ mit Argumenten ausführen
model.predict("https://ultralytics.com/images/bus.jpg", save=True, imgsz=320, conf=0.25)

Inferenzargumente:

ArgumentTypStandardBeschreibung
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 keine Quelle angegeben ist, wird eine Warnung protokolliert und das Modell greift auf die integrierten Demodateien zurück (ultralytics/assets oder bei OBB eine Demo-URL). Unterstützt eine Vielzahl von Formaten und Quellen und ermöglicht so den flexiblen Einsatz mit verschiedenen Eingabetypen.
conffloat0.25Legt den minimalen Konfidenzschwellwert für Erkennungen fest. Objekte, deren Erkennung unter diesem Schwellwert liegt, werden verworfen. Durch Anpassen dieses Werts lassen sich falsch positive Ergebnisse reduzieren.
ioufloat0.7Schwellwert für Intersection over Union (IoU) bei Non-Maximum-Suppression (NMS). Niedrigere Werte führen zu weniger Erkennungen, da überlappende Boxen entfernt werden. Das ist nützlich, um Duplikate zu reduzieren.
imgszint oder tuple640Zielgröße für Letterboxing. 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 minimale Rechteck kleiner als dieses Ziel sein. Verwende rect=False für eine feste Größe. Siehe Feste Form oder minimales Rechteck.
rectboolTrueWenn True, wird, sofern möglich (bei Batches mit gleicher Form und unterstütztem Backend), auf das minimale Rechteck aufgefüllt. Wenn False, wird immer auf die volle Größe imgsz aufgefüllt. Siehe Feste Form oder minimales Rechteck.
quantizeint oder strNoneInferenzpräzision: 16/"fp16" und 32/"fp32"/unset wählen FP16- oder FP32-Berechnungen für PyTorch- und TorchScript-Modelle aus (FP32 auf der CPU); andere Formate verwenden die Präzision, die ihr Artefakt und ihre Laufzeitumgebung vorgeben. Bei 16 rundet OpenVINO die Eingabe auf dem Client weiterhin auf FP16 und erweitert sie anschließend wieder auf FP32, ohne die Präzision der Laufzeitumgebung zu ändern. Die INT8/PTQ-Quantisierung wird beim Export konfiguriert und anschließend durch Laden des exportierten Modells verwendet. Ersetzt das veraltete Flag half.
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, einer Huawei-Ascend-NPU oder anderen Rechengeräten für die Modellausführung.
dnnboolFalseWenn True verwendet wird, nutzt die Inferenz von ONNX-Modellen das DNN-Modul von OpenCV statt ONNX Runtime.
datastrNonePfad zu einer Dataset-YAML-Datei (z. B. coco8.yaml), die nur für ihre names gelesen wird und nur dann, wenn das geladene Modell keine eigenen Klassennamen enthält: bei einem Export eines Drittanbieters oder bei einem Ultralytics-Export, der von den mitgelieferten Metadaten getrennt wurde. Andernfalls meldet ein solches Modell class0, class1 und so weiter.
batchint1Legt die Batchgröße für die Inferenz fest (funktioniert nur, wenn die Quelle ein Verzeichnis, eine Videodatei oder eine .txt-Datei ist). Eine größere Batchgröße kann den Durchsatz erhöhen und so die insgesamt benötigte Inferenzzeit verkürzen.
max_detint300Maximale Anzahl der pro Bild zulässigen Erkennungen. Begrenzt die Gesamtzahl der Objekte, die das Modell bei einer einzelnen Inferenz erkennen kann, und verhindert übermäßig viele Ausgaben in dicht besetzten Szenen.
vid_strideint1Bildabstand für Videoeingaben. Überspringt bei Videos Bilder, um die Verarbeitung zu beschleunigen, verringert dabei jedoch die zeitliche Auflösung. Der Wert 1 verarbeitet jedes Bild; höhere Werte überspringen Bilder.
stream_bufferboolFalseLegt fest, ob eingehende Bilder für Videostreams in eine Warteschlange gestellt 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 zwischengespeichert, damit keine Bilder übersprungen werden; liegt die Inferenz-FPS jedoch unter der Stream-FPS, entsteht dadurch eine Verzögerung.
visualizeboolFalseSpeichert neben jeder Vorhersage eine Aktivierungskarte, 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. Dadurch kann sich die Robustheit der Erkennung verbessern, allerdings auf Kosten der Inferenzgeschwindigkeit. Nur für Ultralytics-PyTorch-Modelle verfügbar.
agnostic_nmsboolFalseAktiviert klassenunabhängige Nichtmaximalwertunterdrückung (NMS), bei der sich überlappende Boxen mit niedrigeren Konfidenzwerten klassenübergreifend unterdrückt werden, nicht nur innerhalb derselben Klasse. Nützlich bei Mehrklassenerkennungen, bei denen sich Klassen häufig überschneiden. Bei der NMS-freien Inferenz (nms=False mit YOLO26 oder YOLOv10) verhindert dies lediglich, dass dieselbe Erkennung mit mehreren Klassenbezeichnungen erscheint (Duplikate mit IoU=1.0), und unterdrückt keine unterschiedlichen Boxen anhand eines IoU-Schwellenwerts.
classeslist[int]NoneFiltert Vorhersagen nach einer Auswahl von Klassen-IDs. Zurückgegeben werden nur Erkennungen, die zu den angegebenen Klassen gehören. Nützlich, um sich bei Mehrklassenerkennungsaufgaben auf relevante Objekte zu konzentrieren.
retina_masksboolFalseGibt hochauflösende Segmentierungsmasken zurück. Wenn diese Option aktiviert ist, entsprechen die zurückgegebenen Masken (masks.data) der Originalbildgröße. Andernfalls haben sie die bei der Inferenz verwendete Bildgröße.
embedlist[int]NoneLegt fest, aus welchen Schichten Feature-Vektoren oder Einbettungen extrahiert werden. Verwende model.embed(source) für Einbettungen aus der vorletzten Schicht oder model.predict(source, embed=[layer]), um bestimmte Schichten 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. Dient zum Erstellen eines Unterverzeichnisses im Projektordner, in dem die Vorhersageausgaben gespeichert werden, wenn save aktiviert ist.
streamboolFalseErmöglicht eine speichereffiziente Verarbeitung langer Videos oder vieler Bilder, indem ein Generator von Results-Objekten zurückgegeben wird, statt alle Bilder gleichzeitig in den Arbeitsspeicher zu laden.
verboseboolTrueLegt fest, ob ausführliche Inferenzprotokolle im Terminal angezeigt werden, die den Vorhersageprozess in Echtzeit sichtbar machen.
compilebool oder strFalseAktiviert die PyTorch-2.x-Graphkompilierung torch.compile mit backend='inductor'. Akzeptiert True → "default", False → deaktiviert oder einen Zeichenfolgenmodus wie "default", "reduce-overhead", "max-autotune-no-cudagraphs". Bei Nichtunterstützung wird mit einer Warnung auf den Eager-Modus zurückgegriffen.
channels_lastboolNoneVerwendet für die native PyTorch-Inferenz das Speicherformat channels_last (NHWC). None aktiviert es automatisch auf oneDNN-fähigen Linux- und Windows-x86-CPUs mit 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 und exportierte Formate wie TensorRT und ONNX bleiben unverändert.
nmsbool, optionalNoneFührt standardmäßig eine Viele-zu-eins-Inferenz mit NMS aus (None oder True). Setze False, um den NMS-freien Eins-zu-eins-Kopf zu verwenden, sofern verfügbar. Weitere Informationen findest du in der Anleitung zur End-to-End-Erkennung.

Argumente für die Visualisierung:

ArgumentTypStandardBeschreibung
showboolFalseWenn True aktiviert ist, werden die annotierten Bilder oder Videos in einem Fenster angezeigt. Nützlich für unmittelbares visuelles Feedback während der Entwicklung oder beim Testen.
saveboolFalse or TrueAktiviert das Speichern annotierter Bilder oder Videos in Dateien. Nützlich für Dokumentation, weiterführende Analysen oder zum Teilen der Ergebnisse. Bei Verwendung der CLI standardmäßig True, bei Verwendung in Python False.
save_framesboolFalseSpeichert bei der Verarbeitung von Videos einzelne Bilder als Dateien. Nützlich, um bestimmte Bilder zu extrahieren oder einzelne Bilder detailliert zu analysieren.
save_txtboolFalseSpeichert Erkennungsergebnisse in einer Textdatei im Format [class] [x_center] [y_center] [width] [height] [confidence]. Nützlich für die Einbindung in andere Analysewerkzeuge.
save_confboolFalseFügt den gespeicherten Textdateien Konfidenzwerte hinzu. Dadurch stehen mehr Details für die Nachbearbeitung und Analyse zur Verfügung.
save_cropboolFalseSpeichert zugeschnittene Bilder der erkannten Objekte. Nützlich für die Datensatzerweiterung, Analysen oder zum Erstellen gezielter Datensätze für bestimmte Objekte.
show_labelsboolTrueZeigt für jede Erkennung eine Bezeichnung in der visuellen Ausgabe an. So lassen sich erkannte Objekte sofort erkennen.
show_confboolTrueZeigt neben der Bezeichnung den Konfidenzwert jeder Erkennung an. Gibt Aufschluss darüber, wie sicher sich das Modell bei der jeweiligen Erkennung ist.
show_boxesboolTrueZeichnet Begrenzungsrahmen um erkannte Objekte. Unverzichtbar, um Objekte in Bildern oder Videobildern visuell zu identifizieren und zu lokalisieren.
line_widthint or NoneNoneLegt die Linienstärke der Begrenzungsrahmen fest. Bei None wird die Linienstärke automatisch an die Bildgröße angepasst. Ermöglicht eine übersichtliche visuelle Anpassung.

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 Dateiendungen und Beispiele für predict-Befehle.

Bilder#

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

Hinweis

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

BilddateiendungenBeispiel für einen predict-BefehlReferenz
.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.mpoMehrbildobjekt
.pngyolo predict source=image.pngPortable Network Graphics
.tifyolo predict source=image.tifTag-Image-Dateiformat
.tiffyolo predict source=image.tiffTag-Image-Dateiformat
.webpyolo predict source=image.webpWebP

Videos#

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

VideodateiendungenBeispiel für einen predict-BefehlReferenz
.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

Mit Results arbeiten#

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

Results
from ultralytics import YOLO

# Ein vortrainiertes YOLO26n-Modell laden
model = YOLO("yolo26n.pt")

# Eine Inferenz auf einem Bild ausführen
results = model("https://ultralytics.com/images/bus.jpg")
results = model(
    [
        "https://ultralytics.com/images/bus.jpg",
        "https://ultralytics.com/images/zidane.jpg",
    ]
)  # gebündelte Inferenz

Results-Objekte haben die folgenden Attribute:

AttributTypBeschreibung
orig_imgnp.ndarrayDas ursprüngliche Bild als NumPy-Array.
orig_shapetupleDie Form des ursprünglichen Bildes im Format (Höhe, Breite).
boxesBoxes, optionalEin Boxes-Objekt mit den Begrenzungsrahmen der erkannten Objekte.
masksMasks, optionalEin Masks-Objekt mit den Masken der erkannten Objekte.
probsProbs, optionalEin Probs-Objekt mit den Wahrscheinlichkeiten der einzelnen Klassen für die Klassifizierungsaufgabe.
keypointsKeypoints, optionalEin Keypoints-Objekt mit den erkannten Schlüsselpunkten jedes Objekts.
obbOBB, optionalEin OBB-Objekt mit orientierten Begrenzungsrahmen.
semantic_maskSemanticMask, optionalEin SemanticMask-Objekt mit einer dichten Klassenkarte für jedes Pixel.
depthDepthMap, optionalEin DepthMap-Objekt mit einer dichten Tiefenkarte für jedes Pixel.
speeddictEin Wörterbuch mit den Geschwindigkeiten für Vorverarbeitung, Inferenz und Nachverarbeitung in Millisekunden pro Bild.
namesdictEin Wörterbuch, das Klassenindizes den Klassennamen zuordnet.
pathstrDer Pfad zur Bilddatei.
save_dirstr, optionalVerzeichnis zum Speichern der Ergebnisse.

Ergebnisse nach Aufgabe#

Welche der folgenden Felder befüllt werden, hängt von der Aufgabe deines Modells ab — vergleiche Objekterkennung, Segmentierung, semantische Segmentierung, Tiefenschätzung, Klassifizierung, Posenschätzung und OBB, falls du noch keine Aufgabe ausgewählt hast. Für jedes Bild oder jeden Frame gibt jede Vorhersage ein Results-Objekt zurück. Die oben genannten gemeinsamen Felder sind immer verfügbar, während die aufgabenspezifischen Vorhersagedaten in den unten aufgeführten Feldern gespeichert werden. YOLO-Koordinaten- und Konfidenztensoren sind torch.float32; Wahrscheinlichkeitstensoren sind torch.float32, sofern keine FP16-Inferenz (quantize=16) verwendet wird. In diesem Fall sind sie torch.float16. Nach result.numpy() werden Tensoren zu NumPy-Arrays mit den entsprechenden NumPy-Datentypen. Instanzmasken sind binäre torch.uint8-Tensoren, während semantische Masken den kleinstmöglichen geeigneten Ganzzahl-Datentyp für Klassen-IDs verwenden: torch.uint8, torch.int16 oder torch.int32, je nach Anzahl der Klassen.

AttributTypFormBeschreibung
result.boxesBoxes(N)Erkennungsrahmen.
result.boxes.datatorch.float32(N,6/7)Rohe [x1,y1,x2,y2,conf,cls] sowie optionale Tracking-ID.
result.boxes.xyxytorch.float32(N,4)Pixelrahmen xyxy.
result.boxes.conftorch.float32(N,)Konfidenzwerte.
result.boxes.clstorch.float32(N,)Klassen-IDs; wandle sie für die Namen in int um.

Objekte vom Typ Results verfügen über folgende Methoden:

MethodeRückgabetypBeschreibung
update()NoneAktualisiert das Results-Objekt mit neuen Daten wie Boxen, Masken, Wahrscheinlichkeiten, OBB, Schlüsselpunkten, semantischen Masken oder Tiefeninformationen.
cpu()ResultsGibt eine Kopie des Results-Objekts zurück, bei der sich alle Tensoren im CPU-Speicher befinden.
numpy()ResultsGibt eine Kopie des Results-Objekts zurück, bei der alle Tensoren in NumPy-Arrays umgewandelt wurden.
cuda()ResultsGibt eine Kopie des Results-Objekts zurück, bei der sich alle Tensoren im GPU-Speicher befinden.
to()ResultsGibt eine Kopie des Results-Objekts zurück, bei der die Tensoren auf das angegebene Gerät verschoben und in den angegebenen Datentyp umgewandelt wurden.
new()ResultsErstellt ein neues Results-Objekt mit denselben Attributen für Bild, Pfad, Namen und Geschwindigkeit.
plot()np.ndarrayZeichnet Erkennungsergebnisse auf ein BGR-Eingabebild und gibt das annotierte Bild zurück.
show()NoneZeigt das Bild mit annotierten Inferenz-Ergebnissen an.
save()strSpeichert ein Bild mit annotierten Inferenz-Ergebnissen in einer Datei und gibt den Dateinamen zurück.
verbose()strGibt für jede Aufgabe eine Protokollzeichenfolge mit Einzelheiten zu den Erkennungs- und Klassifikationsergebnissen zurück.
save_txt()strSpeichert 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]]Wandelt Inferenz-Ergebnisse mit optionaler Normalisierung in ein zusammengefasstes Wörterbuch um.
to_df()DataFrameWandelt Erkennungsergebnisse in einen Polars DataFrame um.
to_csv()strWandelt Erkennungsergebnisse in das CSV-Format um.
to_json()strWandelt Erkennungsergebnisse in das JSON-Format um.

Weitere Informationen findest du in der Dokumentation zur Klasse Results.

Boxen#

Das Objekt Boxes kann verwendet werden, um Begrenzungsboxen zu indizieren, zu bearbeiten und in verschiedene Formate umzuwandeln.

Boxen
from ultralytics import YOLO

# Ein vortrainiertes YOLO26n-Modell laden
model = YOLO("yolo26n.pt")

# Eine Inferenz auf einem Bild ausführen
results = model("https://ultralytics.com/images/bus.jpg")  # Ergebnisliste

# Ergebnisse anzeigen
for r in results:
    print(r.boxes)  # Gib das Boxes-Objekt mit den erkannten Begrenzungsboxen aus

Hier findest du 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()MethodeWandelt das Objekt in ein NumPy-Array um.
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 (falls 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 Originalbildgröße.
xywhnEigenschaft (torch.Tensor)Gibt die Boxen im xywh-Format zurück, normalisiert anhand der Originalbildgröße.

Weitere Informationen findest du in der Dokumentation zur Klasse Boxes.

Masken#

Das Objekt Masks kann verwendet werden, um Masken zu indizieren, zu bearbeiten und in Segmente umzuwandeln.

Masken
from ultralytics import YOLO

# Lade ein vortrainiertes YOLO26n-seg-Segmentierungsmodell
model = YOLO("yolo26n-seg.pt")

# Eine Inferenz auf einem Bild ausführen
results = model("https://ultralytics.com/images/bus.jpg")  # Ergebnisliste

# Ergebnisse anzeigen
for r in results:
    print(r.masks)  # Gib das Masks-Objekt mit den erkannten Instanzmasken aus

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

NameTypBeschreibung
dataEigenschaft (torch.Tensor)Binärer Maskentensor torch.uint8 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 zur Klasse Masks.

SemanticMask#

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

SemanticMask
from ultralytics import YOLO

# Lade ein vortrainiertes YOLO26n-sem-Semantikmodell
model = YOLO("yolo26n-sem.pt")

# Eine Inferenz auf einem Bild ausführen
results = model("https://ultralytics.com/images/bus.jpg")  # Ergebnisliste

# Ergebnisse anzeigen
for r in results:
    print(r.semantic_mask.data)  # Gib die Klassen-ID-Karte mit den Dimensionen H × W aus
NameTypBeschreibung
dataEigenschaft (torch.Tensor)Klassen-ID-Karte mit der Form (H,W). Der Datentyp ist torch.uint8, torch.int16 oder torch.int32, abhängig von der Anzahl der Klassen.
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.

Schlüsselpunkte#

Das Objekt Keypoints kann verwendet werden, um Koordinaten zu indizieren, zu bearbeiten und zu normalisieren.

Schlüsselpunkte
from ultralytics import YOLO

# Lade ein vortrainiertes YOLO26n-pose-Posemodell
model = YOLO("yolo26n-pose.pt")

# Eine Inferenz auf einem Bild ausführen
results = model("https://ultralytics.com/images/bus.jpg")  # Ergebnisliste

# Ergebnisse anzeigen
for r in results:
    print(r.keypoints)  # Gib das Keypoints-Objekt mit den erkannten Schlüsselpunkten aus

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

NameTypBeschreibung
cpu()MethodeGibt den Schlüsselpunkttensor im CPU-Speicher zurück.
numpy()MethodeGibt den Schlüsselpunkttensor als NumPy-Array zurück.
cuda()MethodeGibt den Schlüsselpunkttensor im GPU-Speicher zurück.
to()MethodeGibt den Schlüsselpunkttensor mit dem angegebenen Gerät und Datentyp zurück.
xynEigenschaft (torch.Tensor)Normalisierte Koordinaten der Schlüsselpunkte mit der Form (N,K,2).
xyEigenschaft (torch.Tensor)Koordinaten der Schlüsselpunkte in Pixeln mit der Form (N,K,2).
confEigenschaft (torch.Tensor)Gibt die Konfidenzwerte der Schlüsselpunkte zurück, falls verfügbar; andernfalls None.

Weitere Informationen findest du in der Dokumentation zur Klasse Keypoints.

Wahrscheinlichkeiten#

Das Objekt Probs kann verwendet werden, um Klassifikationsindizes und -werte top1 und top5 abzurufen.

Wahrscheinlichkeiten
from ultralytics import YOLO

# Lade ein vortrainiertes YOLO26n-cls-Klassifikationsmodell
model = YOLO("yolo26n-cls.pt")

# Eine Inferenz auf einem Bild ausführen
results = model("https://ultralytics.com/images/bus.jpg")  # Ergebnisliste

# Ergebnisse anzeigen
for r in results:
    print(r.probs)  # Gib das Probs-Objekt mit den erkannten Klassenwahrscheinlichkeiten aus

Hier findest du 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 obersten Klasse.
top5Eigenschaft (list[int])Indizes der fünf obersten Klassen.
top1confEigenschaft (torch.Tensor)Konfidenz der obersten Klasse.
top5confEigenschaft (torch.Tensor)Konfidenzen der fünf obersten Klassen.

Weitere Informationen findest du in der Dokumentation zur Klasse Probs.

OBB#

Das Objekt OBB kann verwendet werden, um orientierte Begrenzungsrahmen zu indizieren, zu bearbeiten und in verschiedene Formate umzuwandeln.

OBB
from ultralytics import YOLO

# Ein vortrainiertes YOLO26n-Modell laden
model = YOLO("yolo26n-obb.pt")

# Eine Inferenz auf einem Bild ausführen
results = model("https://ultralytics.com/images/boats.jpg")  # Ergebnisliste

# Ergebnisse anzeigen
for r in results:
    print(r.obb)  # Gibt das OBB-Objekt mit den orientierten Erkennungsbegrenzungsrahmen aus

Hier findest du 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()MethodeWandelt das Objekt in ein NumPy-Array um.
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 (falls verfügbar).
xyxyEigenschaft (torch.Tensor)Gibt die horizontalen Begrenzungsrahmen im xyxy-Format zurück.
xywhrEigenschaft (torch.Tensor)Gibt die gedrehten Begrenzungsrahmen im xywhr-Format zurück.
xyxyxyxyEigenschaft (torch.Tensor)Gibt die gedrehten Begrenzungsrahmen im xyxyxyxy-Format zurück.
xyxyxyxynEigenschaft (torch.Tensor)Gibt die gedrehten Begrenzungsrahmen im xyxyxyxy-Format zurück, normalisiert anhand der Bildgröße.

Weitere Informationen findest du in der Dokumentation zur Klasse OBB.

Ergebnisse visualisieren#

Die Methode plot() in Objekten vom Typ Results erleichtert die Visualisierung von Vorhersagen, indem erkannte Objekte (z. B. Begrenzungsrahmen, Masken, Schlüsselpunkte und Wahrscheinlichkeiten) über das Originalbild gelegt werden. Diese Methode gibt das annotierte Bild als NumPy-Array zurück, das sich einfach anzeigen oder speichern lässt.

Visualisierung
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, mit denen du die Ausgabe anpassen kannst:

ArgumentTypBeschreibungStandard
confboolErkennungs-Konfidenzwerte einblenden.True
line_widthfloatLinienbreite der Begrenzungsrahmen. Wird an die Bildgröße angepasst, wenn None.None
font_sizefloatSchriftgröße des Texts. Wird an die Bildgröße angepasst, wenn None.None
fontstrSchriftart für Textannotationen.'Arial.ttf'
pilboolBild als PIL-Image-Objekt zurückgeben.False
imgnp.ndarray | torch.TensorAlternatives Bild. Tensoren müssen zusammenhängend und im HWC-BGR-uint8-Format vorliegen.None
kpt_radiusintRadius der eingezeichneten Schlüsselpunkte.5
kpt_lineboolSchlüsselpunkte mit Linien verbinden.True
labelsboolKlassenbezeichnungen in den Annotationen einblenden.True
boxesboolBegrenzungsrahmen über das Bild legen.True
masksboolMasken über das Bild legen.True
probsboolKlassifizierungswahrscheinlichkeiten einblenden.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 wird, wenn save den Wert True hat.None
color_modestrFarbmodus angeben, z. B. „instance“ oder „class“.'class'
txt_colortuple[int, int, int]BGR-Textfarbe für Klassifizierungsbezeichnungen.(255, 255, 255)

Threadsichere Inferenz#

Threadsicherheit während der Inferenz ist entscheidend, wenn du mehrere YOLO-Modelle parallel in verschiedenen Threads ausführst. Threadsichere Inferenz stellt sicher, dass die Vorhersagen jedes Threads isoliert bleiben und sich nicht gegenseitig beeinflussen. So werden Race Conditions vermieden und konsistente, zuverlässige Ausgaben gewährleistet.

Wenn du YOLO-Modelle in einer Multithread-Anwendung verwendest, solltest du für jeden Thread ein eigenes Modellobjekt instanziieren oder threadlokalen Speicher nutzen, um Konflikte zu vermeiden:

Threadsichere Inferenz

Instanziiere für threadsichere Inferenz ein einzelnes Modell in jedem Thread:

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)
    # Ergebnisse verarbeiten

# Threads starten, die jeweils eine eigene Modellinstanz haben
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 Erläuterung zur threadsicheren Inferenz mit YOLO-Modellen und schrittweise Anleitungen findest du in unserem Leitfaden zur threadsicheren YOLO-Inferenz. Dieser Leitfaden enthält alle nötigen Informationen, um häufige Fehler zu vermeiden und einen reibungslosen Ablauf deiner Multithread-Inferenz sicherzustellen.

Streaming-for-Schleife#

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

Streaming-for-Schleife
import cv2

from ultralytics import YOLO

# Das YOLO-Modell laden
model = YOLO("yolo26n.pt")

# Videodatei öffnen
video_path = "path/to/your/video/file.mp4"
cap = cv2.VideoCapture(video_path)

# Videobilder durchlaufen
while cap.isOpened():
    # Ein Videobild einlesen
    success, frame = cap.read()

    if success:
        # YOLO-Inferenz auf dem Bild ausführen
        results = model(frame)

        # Ergebnisse auf dem Bild visualisieren
        annotated_frame = results[0].plot()

        # Annotiertes Bild anzeigen
        cv2.imshow("YOLO Inference", annotated_frame)

        # Schleife beenden, wenn „q“ gedrückt wird
        if cv2.waitKey(1) & 0xFF == ord("q"):
            break
    else:
        # Schleife beenden, wenn das Video zu Ende ist
        break

# Videoaufnahmeobjekt freigeben und Anzeigefenster schließen
cap.release()
cv2.destroyAllWindows()

Dieses Skript führt für jedes Videobild Vorhersagen aus, visualisiert die Ergebnisse und zeigt sie in einem Fenster an. Durch Drücken von „q“ kannst du die Schleife beenden.

Wie geht es weiter?#

Möchtest du über ein vortrainiertes Modell hinausgehen? Prüfe, ob deine Aufgabe zu deinem Problem passt, formatiere deine Daten mithilfe des Leitfadens zu Datensätzen und trainiere anschließend damit.

Häufig gestellte Fragen#

  • Ultralytics YOLO ist ein hochmodernes Modell für Objekterkennung, Instanzsegmentierung, semantische Segmentierung, Tiefenschätzung, Klassifizierung, Posenschätzung und die Erkennung orientierter Begrenzungsrahmen (OBB) in Echtzeit. Im Vorhersagemodus können Nutzer mit hoher Geschwindigkeit Inferenz auf verschiedenen Datenquellen wie Bildern, Videos und Live-Streams ausführen. Der auf Leistung und Vielseitigkeit ausgelegte Modus bietet außerdem Stapelverarbeitung und Streaming. Weitere Einzelheiten zu den Funktionen findest du im Ultralytics-YOLO-Vorhersagemodus.

  • Ultralytics YOLO kann eine Vielzahl von Datenquellen verarbeiten, darunter einzelne Bilder, Videos, Verzeichnisse, URLs und Streams. Du kannst die Datenquelle im Aufruf model.predict() angeben. Verwende zum Beispiel 'image.jpg' für ein lokales Bild oder 'https://ultralytics.com/images/bus.jpg' für eine URL. Ausführliche Beispiele für verschiedene Inferenzquellen findest du in der Dokumentation.

  • 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 Prädiktors setzt. Im Streaming-Modus wird ein speichereffizienter Generator von Results-Objekten erstellt, anstatt alle Bilder in den Arbeitsspeicher zu laden. Der Streaming-Modus eignet sich besonders für die Verarbeitung langer Videos oder großer Datensätze. Erfahre mehr über den 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, Bildgröße und das für die Berechnung verwendete Gerät festlegen. Ausführliche Beschreibungen dieser Argumente findest du im Abschnitt Inferenzargumente.

  • Verwende model.embed(source), um Merkmalseinbettungen 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)  # Ergebnisobjekte
    embeddings = model.embed(source)  # Liste von torch.Tensor-Einbettungen
  • Nach der Inferenz mit YOLO enthalten die Results-Objekte Methoden zum Anzeigen und Speichern annotierter Bilder. Mit Methoden wie result.show() und result.save(filename="result.jpg") kannst du die Ergebnisse visualisieren und 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