Skip to main content

Modellvorhersage mit Ultralytics YOLO

Ultralytics YOLO ecosystem and integrations

Einführung

In der Welt von Machine Learning und Computer Visionwird der Prozess, visuelle Daten interpretierbar zu machen, oft als Inferenz oder Vorhersage bezeichnet. Ultralytics YOLO26 bietet eine leistungsstarke Funktion namens predict mode, die speziell für hochperformante Echtzeit-Inferenz über eine Vielzahl von Datenquellen hinweg entwickelt wurde.



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

Anwendungen in der Praxis

FertigungSportSicherheit
![Fahrzeugersatzteil-Erkennung][car spare parts]![Fußballspieler-Erkennung][football player detect]![Erkennung von Stürzen][human fall detect]
Fahrzeugersatzteil-ErkennungFußballspieler-ErkennungErkennung von Stürzen

Warum Ultralytics YOLO für die Inferenz nutzen?

Hier erfährst du, warum du den predict mode von YOLO26 für deine verschiedenen Inferenzanforderungen in Betracht ziehen solltest:

  • Vielseitigkeit: In der Lage, Inferenz auf Bildern, Videos und sogar Live-Streams auszuführen.
  • Leistung: Entwickelt für hochgeschwindigkeitsfähige Echtzeitverarbeitung ohne Einbußen bei der Genauigkeit.
  • Benutzerfreundlichkeit: Intuitive Python- und CLI-Schnittstellen für schnelle Bereitstellung und Tests.
  • Hohe Anpassbarkeit: Verschiedene Einstellungen und Parameter, um das Inferenzverhalten des Modells exakt auf deine Anforderungen abzustimmen.
  • Produktionsbereit: Stelle Modelle als API-Endpunkte auf der Ultralytics Platform mit automatischer Skalierung und Überwachung bereit oder führe Inferenz lokal aus.

Hauptmerkmale des Predict Mode

Der predict mode von YOLO26 ist robust und vielseitig gestaltet und bietet:

  • Kompatibilität mit mehreren Datenquellen: Ob deine Daten als einzelne Bilder, eine Sammlung von Bildern, Videodateien oder Echtzeit-Videostreams vorliegen, der predict mode deckt alles ab.
  • Streaming-Modus: Nutze die Streaming-Funktion, um einen speichereffizienten Generator von Results Objekten zu erzeugen. Aktiviere dies, indem du stream=True in der Aufrufmethode des Predictors festlegst.
  • Batch-Verarbeitung: Verarbeite mehrere Bilder oder Videoframes in einem einzigen Batch, was die gesamte Inferenzzeit weiter reduziert.
  • Integrationsfreundlich: Dank der flexiblen API lässt sich das Modell leicht 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 verschiedene Arten von Eingangsquellen für die Inferenz verarbeiten, wie in der folgenden Tabelle dargestellt. Die Quellen umfassen statische Bilder, Videostreams und verschiedene Datenformate. Die Tabelle gibt zudem an, ob jede Quelle im Streaming-Modus mit dem Argument stream=True ✅ verwendet werden kann. Der Streaming-Modus ist vorteilhaft für die Verarbeitung von Videos oder Live-Streams, da er einen Generator für Ergebnisse erstellt, anstatt alle Frames in den Arbeitsspeicher zu laden.

Tipp

Verwende stream=True für die Verarbeitung langer Videos oder großer Datensätze, um den Arbeitsspeicher effizient zu verwalten. Wenn stream=False, werden die Ergebnisse für alle Frames oder Datenpunkte im Speicher abgelegt, was sich schnell summieren und bei großen Eingaben zu Out-of-Memory-Fehlern führen kann. Im Gegensatz dazu stream=True verwendet einen Generator, der nur die Ergebnisse des aktuellen Frames oder Datenpunkts im Speicher behält, wodurch der Speicherverbrauch erheblich gesenkt und Speicherprobleme verhindert werden.

QuelleBeispielTypHinweise
Bild'image.jpg'str oder PathEinzelne Bilddatei.
URL'https://ultralytics.com/images/bus.jpg'strURL zu einem Bild.
Screenshot'screen'strErstelle einen Screenshot.
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 ✅'path/*.jpg'strGlob-Muster, um mehrere Dateien abzugleichen. 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, d. h. 8 Streams laufen mit Batch-Size 8.
Webcam ✅0intIndex des angeschlossenen Kamerageräts, um die Inferenz darauf auszuführen.

Unten findest du Codebeispiele für die Verwendung jedes Quelltyps:

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

Inference Arguments

model.predict()akzeptiert mehrere Argumente, die zur Inferenzzeit übergeben werden können, um die Standardeinstellungen zu überschreiben:

Note

Ultralytics verwendet standardmäßig minimales Padding während der Inferenz (rect=True). In diesem Modus wird die kürzere Seite jedes Bildes nur so weit wie nötig aufgefüllt, um sie durch den maximalen Stride des Modells teilbar zu machen, anstatt sie vollständig auf die volleimgszaufzufüllen. Wenn die Inferenz auf einem Batch von Bildern ausgeführt wird, funktioniert das minimale Padding nur, wenn alle Bilder die identische Größe haben. Andernfalls werden die Bilder einheitlich auf eine quadratische Form mit beiden Seiten gleichimgsz.

  • batch=1aufgefüllt, wobei standardmäßigrectPadding verwendet wird.
  • batch>1aufgefüllt, wobei standardmäßigrectPadding nur, wenn alle Bilder in einem Batch identische Größe haben, ansonsten Verwendung von quadratischem Padding aufimgsz.
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)

Inferenz-Argumente:

ArgumentTypDefaultBeschreibung
sourcestr oder int oder NoneNoneGibt die Datenquelle für die Inferenz an. Kann ein Bildpfad, eine Videodatei, ein Verzeichnis, eine URL oder eine Geräte-ID für Live-Feeds sein. Falls weggelassen, wird eine Warnung protokolliert und das Modell greift auf die integrierten Demo-Assets zurück (ultralytics/assets, oder eine Demo-URL für OBB). Unterstützt eine große Bandbreite an Formaten und Quellen, was eine flexible Anwendung überverschiedene Eingabetypen.
conffloat0.25hinweg ermöglicht. Legt den minimalen Konfidenz-Schwellenwert für Erkennungen fest. Objekte, die mit einer Konfidenz unter diesem Schwellenwert erkannt werden, werden ignoriert. Die Anpassung dieses Wertes kann helfen, falsch-positive Ergebnisse zu reduzieren.
ioufloat0.7Intersection Over Union (IoU) Schwellenwert für Non-Maximum Suppression (NMS). Niedrigere Werte führen zu weniger Erkennungen durch das Eliminieren überlappender Boxen, nützlich zur Reduzierung von Duplikaten.
imgszint oder tuple640Definiert die Bildgröße für die Inferenz. Kann eine einzelne Ganzzahl640für quadratische Skalierung oder ein (Höhe, Breite) Tupel sein. Die richtige Größe kann die ErkennungGenauigkeitund Verarbeitungsgeschwindigkeit verbessern.
rectboolTrueFalls aktiviert, wird die kürzere Seite des Bildes minimal aufgefüllt, bis sie durch den Stride teilbar ist, um die Inferenzgeschwindigkeit zu erhöhen. Falls deaktiviert, wird das Bild während der Inferenz quadratisch aufgefüllt.
halfboolFalseAktiviert die Half-precision (FP16) Inferenz, die die Modellinferenz auf unterstützten GPUs beschleunigen kann, bei minimaler Auswirkung auf die Genauigkeit.
devicestrNoneGibt das Gerät für die Inferenz an (z. B.cpu, cuda:0, 0, npu oder npu:0). Ermöglicht Benutzern die Auswahl zwischen CPU, einer spezifischen GPU, Huawei Ascend NPU oder anderen Rechengeräten für die Modellausführung.
batchint1Gibt die Batch-Größe für die Inferenz an (funktioniert nur, wenn die Quelleein Verzeichnis, eine Videodatei oder.txtDateiist). Eine größere Batch-Größe kann einen höheren Durchsatz bieten und die Gesamtzeit für die Inferenz verkürzen.
max_detint300Maximale Anzahl an erlaubten Erkennungen pro Bild. Begrenzt die Gesamtzahl der Objekte, die das Modell in einer einzelnen Inferenz erkennen kann, um übermäßige Ausgaben in dichten Szenen zu verhindern.
vid_strideint1Frame-Stride für Videoeingaben. Ermöglicht das Überspringen von Frames in Videos, um die Verarbeitung auf Kosten der zeitlichen Auflösung zu beschleunigen. Ein Wert von 1 verarbeitet jeden Frame, höhere Werte überspringen Frames.
stream_bufferboolFalseBestimmt, ob eingehende Frames für Videostreams in die Warteschlange gestellt werden sollen. WennFalse, werden alte Frames verworfen, um Platz für neue Frames zu schaffen (optimiert für Echtzeitanwendungen). WennTrue, werden neue Frames in einem Puffer in die Warteschlange gestellt, um sicherzustellen, dass keine Frames übersprungen werden, was jedoch zu Latenz führen kann, wenn die Inferenz-FPS niedriger als die Stream-FPS sind.
visualizeboolFalseAktiviert die Visualisierung von Modellmerkmalen während der Inferenz und bietet Einblicke in das, was das Modell "sieht". Nützlich für Debugging und Modellinterpretation.
augmentboolFalseAktiviert Test-Time Augmentation (TTA) für Vorhersagen, was potenziell die Robustheit der Erkennung auf Kosten der Inferenzgeschwindigkeit verbessert.
agnostic_nmsboolFalseAktiviert die klassenunabhängige Non-Maximum Suppression (NMS), die überlappende Boxen verschiedener Klassen zusammenführt. Nützlich bei Multi-Class-Erkennungsszenarien, in denen sich Klassen häufig überschneiden. Für End-to-End-Modelle (YOLO26, YOLOv10) verhindert dies nur, dass dieselbe Erkennung mit mehreren Klassenlabels erscheint (IoU=1.0 Duplikate) und führt keine IoU-schwellenwertbasierte Unterdrückung zwischen verschiedenen Boxen durch.
classeslist[int]NoneFiltert Vorhersagen auf eine Menge von Klassen-IDs. Nur Erkennungen, die zu den spezifizierten Klassen gehören, werden zurückgegeben. Nützlich, um sich auf relevante Objekte in Multi-Class-Erkennungsaufgaben zu konzentrieren.
retina_masksboolFalseGibt hochauflösende Segmentierungsmasken zurück. Die zurückgegebenen Masken (masks.data) entsprechen der ursprünglichen Bildgröße, falls aktiviert. Falls deaktiviert, haben sie die Bildgröße, die während der Inferenz verwendet wurde.
embedlist[int]NoneGibt die Schichten an, aus denen Merkmalsvektoren oderembeddingsextrahiert werden sollen. Nützlich für nachgelagerte Aufgaben wie Clustering oder Ähnlichkeitssuche.
projectstrNoneName des Projektverzeichnisses, in dem Vorhersageergebnisse gespeichert werden, fallssaveaktiviert ist.
namestrNoneName des Vorhersagelaufs. Wird zur Erstellung eines Unterverzeichnisses innerhalb des Projektordners verwendet, in dem die Vorhersageergebnisse gespeichert werden, fallssaveaktiviert ist.
streamboolFalseAktiviert die speichereffiziente Verarbeitung für lange Videos oder zahlreiche Bilder durch die Rückgabe eines Generators von Results-Objekten, anstatt alle Frames auf einmal in den Speicher zu laden.
verboseboolTrueSteuert, ob detaillierte Inferenzprotokolle im Terminal angezeigt werden sollen, was Echtzeit-Feedback zum Vorhersageprozess bietet.
compilebool oder strFalseAktiviert die PyTorch 2.xtorch.compileGraph-Kompilierung mitbackend='inductor'. AkzeptiertTrue"default", False→ deaktiviert, oder einen String-Modus wie"default", "reduce-overhead", "max-autotune-no-cudagraphs". Greift bei fehlender Unterstützung mit einer Warnung auf Eager-Modus zurück.
end2endboolNoneÜberschreibt den End-to-End-Modus in YOLO-Modellen, die NMS-freie Inferenz unterstützen (YOLO26, YOLOv10). Wenn du ihn aufFalsesetzt, kannst du die Vorhersage mit der traditionellen NMS-Pipeline ausführen und zusätzlich dasiouArgument nutzen. Siehe denEnd-to-End Detection guidefür Details.

Visualisierungsargumente:

ArgumentTypDefaultBeschreibung
showboolFalseWennTrue, werden die annotierten Bilder oder Videos in einem Fenster angezeigt. Nützlich für sofortiges visuelles Feedback während der Entwicklung oder beim Testen.
saveboolFalse or TrueAktiviert das Speichern der annotierten Bilder oder Videos in Dateien. Nützlich für Dokumentation, weitere Analysen oder zum Teilen von Ergebnissen. Standardmäßig True bei Verwendung der CLI & False bei Verwendung in Python.
save_framesboolFalseSpeichert bei der Verarbeitung von Videos einzelne Frames als Bilder. Nützlich für das Extrahieren spezifischer Frames oder für eine detaillierte Frame-für-Frame-Analyse.
save_txtboolFalseSpeichert Erkennungsergebnisse in einer Textdatei im Format[class] [x_center] [y_center] [width] [height] [confidence]. Nützlich für die Integration mit anderen Analysetools.
save_confboolFalseBeinhaltet Konfidenz-Scores in den gespeicherten Textdateien. Verbessert die für die Nachbearbeitung und Analyse verfügbaren Details.
save_cropboolFalseSpeichert zugeschnittene Bilder von Erkennungen. Nützlich für die Datensatz-Augmentierung, Analyse oder das Erstellen fokussierter Datensätze für spezifische Objekte.
show_labelsboolTrueZeigt Beschriftungen für jede Erkennung in der visuellen Ausgabe an. Bietet sofortiges Verständnis der erkannten Objekte.
show_confboolTrueZeigt den Konfidenzwert für jede Erkennung neben der Beschriftung an. Gibt Einblick in die Sicherheit des Modells für jede Erkennung.
show_boxesboolTrueZeichnet Begrenzungsrahmen (Bounding Boxes) um erkannte Objekte. Essenziell für die visuelle Identifizierung und Lokalisierung von Objekten in Bildern oder Videoframes.
line_widthint or NoneNoneLegt die Linienbreite der Begrenzungsrahmen fest. Wenn None, wird die Linienbreite automatisch basierend auf der Bildgröße angepasst. Bietet visuelle Anpassung für bessere Klarheit.

Bild- und Videoformate

YOLO26 unterstützt verschiedene Bild- und Videoformate, wie in ultralytics/data/utils.py spezifiziert. Siehe die Tabellen unten für die gültigen Endungen und Beispiel-Predict-Befehle.

Bilder

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

Note

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

Bild-SuffixeBeispiel-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.heicHigh Efficiency Image Format
.heifyolo predict source=image.heifHigh Efficiency Image Format
.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.

Video-SuffixeBeispiel-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 Part 14
.mkvyolo predict source=video.mkvMatroska
.movyolo predict source=video.movQuickTime File Format
.mp4yolo predict source=video.mp4MPEG-4 Part 14 - Wikipedia
.mpegyolo predict source=video.mpegMPEG-1 Part 2
.mpgyolo predict source=video.mpgMPEG-1 Part 2
.tsyolo predict source=video.tsMPEG Transport Stream
.wmvyolo predict source=video.wmvWindows Media Video
.webmyolo predict source=video.webmWebM Project

Arbeiten mit Ergebnissen

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

Results
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 haben die folgenden Attribute:

AttributTypBeschreibung
orig_imgnp.ndarrayDas Originalbild als numpy Array.
orig_shapetupleDie ursprüngliche Bildform im Format (Höhe, Breite).
boxesBoxes, optionalEin Boxes Objekt, das die Erkennungs-Bounding-Boxes enthält.
masksMasks, optionalEin Masks Objekt, das die Erkennungsmasken enthält.
probsProbs, optionalEin Probs Objekt, das die Wahrscheinlichkeiten jeder Klasse für die Klassifizierungsaufgabe enthält.
keypointsKeypoints, optionalEin Keypoints Objekt, das erkannte Schlüsselpunkte für jedes Objekt enthält.
obbOBB, optionalEin OBB Objekt, das orientierte Bounding Boxes enthält.
speeddictEin Wörterbuch mit Vorverarbeitungs-, Inferenz- und Nachverarbeitungsgeschwindigkeiten in Millisekunden pro Bild.
namesdictEin Wörterbuch, das Klassen-Indizes auf Klassennamen abbildet.
pathstrDer Pfad zur Bilddatei.
save_dirstr, optionalVerzeichnis zum Speichern der Ergebnisse.

Results Objekte haben die folgenden Methoden:

MethodeRückgabetypBeschreibung
update()NoneAktualisiert das Results Objekt mit neuen Erkennungsdaten (Boxes, Masks, Probs, OBB, Keypoints).
cpu()ResultsGibt eine Kopie des Results Objekts zurück, wobei alle Tensoren in den CPU Speicher verschoben wurden.
numpy()ResultsGibt eine Kopie des Results Objekts zurück, wobei alle Tensoren in numpy Arrays konvertiert wurden.
cuda()ResultsGibt eine Kopie des Results Objekts zurück, wobei alle Tensoren in den GPU Speicher verschoben wurden.
to()ResultsGibt eine Kopie des Results Objekts zurück, wobei Tensoren auf das spezifizierte Gerät und den Datentyp verschoben wurden.
new()ResultsErstellt ein neues Results Objekt mit denselben Bild-, Pfad-, Namens- und Geschwindigkeitsattributen.
plot()np.ndarrayPlottet Erkennungsergebnisse auf ein Eingabe-RGB-Bild und gibt das annotierte Bild zurück.
show()NoneZeigt das Bild mit annotierten Inferenzergebnissen an.
save()strSpeichert das annotierte Inferenzergebnisbild in eine Datei und gibt den Dateinamen zurück.
verbose()strGibt einen Log-String für jede Aufgabe zurück, der Erkennungs- und Klassifizierungsergebnisse detailliert beschreibt.
save_txt()strSpeichert Erkennungsergebnisse in eine Textdatei und gibt den Pfad zur gespeicherten Datei zurück.
save_crop()NoneSpeichert zugeschnittene Erkennungsbilder im angegebenen Verzeichnis.
summary()List[Dict[str, Any]]Konvertiert Inferenzergebnisse in ein zusammengefasstes Wörterbuch mit optionaler Normalisierung.
to_df()DataFrameKonvertiert Erkennungsergebnisse in ein Polars DataFrame.
to_csv()strKonvertiert Erkennungsergebnisse in das CSV Format.
to_json()strKonvertiert Erkennungsergebnisse in das JSON Format.

Für weitere Details siehe die Results Klassendokumentation.

Boxes

Boxes Objekt kann verwendet werden, um Bounding Boxes zu indizieren, zu manipulieren und in verschiedene Formate zu konvertieren.

Boxes
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 für die Boxes Klassenmethoden und Eigenschaften, 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 (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 durch die Originalbildgröße.
xywhnEigenschaft (torch.Tensor)Gibt die Boxen im xywh Format zurück, normalisiert durch die Originalbildgröße.

Für weitere Details siehe die Boxes Klassendokumentation.

Masks

Masks Objekt kann verwendet werden, um Masken zu indizieren, zu manipulieren und in Segmente zu konvertieren.

Masks
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 für die Masks Klassenmethoden und Eigenschaften, einschließlich Name, Typ und Beschreibung:

NameTypBeschreibung
cpu()MethodeGibt den Masken-Tensor im CPU Speicher zurück.
numpy()MethodeGibt den Masks-Tensor als numpy-Array zurück.
cuda()MethodeGibt den Masks-Tensor im GPU-Speicher zurück.
to()MethodeGibt den Masks-Tensor mit dem angegebenen Gerät und Datentyp zurück.
xynEigenschaft (torch.Tensor)Eine Liste normalisierter Segmente, dargestellt als Tensoren.
xyEigenschaft (torch.Tensor)Eine Liste von Segmenten in Pixelkoordinaten, dargestellt als Tensoren.

Für weitere Details siehe die Masks Klassendokumentation.

Keypoints

Keypoints-Objekt kann verwendet werden, um Koordinaten zu indizieren, zu manipulieren und zu normalisieren.

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 für die Keypoints Klassenmethoden und Eigenschaften, 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, dargestellt als Tensoren.
xyEigenschaft (torch.Tensor)Eine Liste von Keypoints in Pixelkoordinaten, dargestellt als Tensoren.
confEigenschaft (torch.Tensor)Gibt Konfidenzwerte der Keypoints zurück, falls verfügbar, andernfalls None.

Für weitere Details siehe die Keypoints Klassendokumentation.

Probs

Probs-Objekt kann verwendet werden, um top1 und top5 Indizes und Scores der Klassifizierung zu erhalten.

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, die die Methoden und Eigenschaften für die Probs-Klasse zusammenfasst:

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.

Für weitere Details siehe die Probs Klassendokumentation.

OBB

OBB-Objekt kann verwendet werden, um orientierte Bounding Boxes zu indizieren, zu manipulieren und in verschiedene Formate zu konvertieren.

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 für die OBB Klassenmethoden und Eigenschaften, 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 (falls verfügbar).
xyxyEigenschaft (torch.Tensor)Gibt die horizontalen Boxen im xyxy-Format zurück.
xywhrEigenschaft (torch.Tensor)Gibt die rotierten Boxen im xywhr-Format zurück.
xyxyxyxyEigenschaft (torch.Tensor)Gibt die rotierten Boxen im xyxyxyxy-Format zurück.
xyxyxyxynEigenschaft (torch.Tensor)Gibt die rotierten Boxen im xyxyxyxy-Format zurück, normalisiert auf die Bildgröße.

Für weitere Details siehe die OBB Klassendokumentation.

Ergebnisse plotten

Die plot()-Methode 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, was eine einfache Anzeige oder Speicherung ermöglicht.

Plotting-
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")

plot()Methodenparameter

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

ArgumentTypBeschreibungDefault
confboolKonfidenz-Scores der Erkennung einbeziehen.True
line_widthfloatLinienbreite der Bounding Boxes. Skaliert mit der Bildgröße, falls None.None
font_sizefloatSchriftgröße für Text. Skaliert mit der Bildgröße, falls None.None
fontstrSchriftname für Textannotationen.'Arial.ttf'
pilboolBild als PIL Image-Objekt zurückgeben.False
imgnp.ndarrayAlternatives Bild zum Plotten. Verwendet das Originalbild, falls None.None
im_gputorch.TensorGPU-beschleunigtes Bild für schnelleres Masken-Plotten. Form: (1, 3, 640, 640).None
kpt_radiusintRadius für gezeichnete Keypoints.5
kpt_lineboolKeypoints mit Linien verbinden.True
labelsboolKlassen-Labels in Annotationen einbeziehen.True
boxesboolBounding Boxes auf das Bild legen.True
masksboolMasken auf das Bild legen.True
probsboolKlassifizierungswahrscheinlichkeiten einbeziehen.True
showboolAnnotiertes Bild direkt über den Standard-Bildbetrachter anzeigen.False
saveboolAnnotiertes Bild in einer durch filename.False
filenamestrangegebenen Datei speichern. Pfad und Name der Datei zum Speichern des annotierten Bildes, falls save gleich True.None
color_modestrist. Farbmodus angeben, z. B. 'instance' oder 'class'.'class'
txt_colortuple[int, int, int]RGB-Textfarbe für Bounding Box und Bildklassifizierungs-Label.(255, 255, 255)

Thread-sichere Inferenz

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

Wenn du YOLO-Modelle in einer Multithread-Anwendung verwendest, ist es wichtig, separate Modellobjekte für jeden Thread zu instanziieren oder Thread-lokalen Speicher zu nutzen, um Konflikte zu vermeiden:

Thread-sichere Inferenz

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

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()

Für einen detaillierten Einblick in thread-sichere Inferenz mit YOLO-Modellen und Schritt-für-Schritt-Anleitungen lies bitte unseren YOLO Thread-Safe Inference Guide. Dieser Leitfaden bietet dir alle notwendigen Informationen, um häufige Fehler zu vermeiden und sicherzustellen, dass deine Multithread-Inferenz reibungslos läuft.

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 notwendigen Pakete bereits installiert hast (opencv-python und ultralytics).

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 Vorhersagen auf jedem Frame des Videos aus, visualisiert die Ergebnisse und zeigt sie in einem Fenster an. Die Schleife kann durch Drücken von 'q' beendet werden.

FAQ

Was ist Ultralytics YOLO und dessen Predict-Modus für Echtzeit-Inferenz?

Ultralytics YOLO ist ein hochmodernes Modell für Echtzeit-Objekterkennungs, Segmentierung und Klassifizierung. Sein predict mode ermöglicht es Benutzern, Hochgeschwindigkeits-Inferenz auf verschiedenen Datenquellen wie Bildern, Videos und Live-Streams durchzuführen. Entwickelt für Leistung und Vielseitigkeit, bietet es zudem Batch-Verarbeitung und Streaming-Modi. Weitere Details zu den Funktionen findest du im Ultralytics YOLO Predict-Modus.

Wie kann ich Inferenz mit Ultralytics YOLO auf verschiedenen Datenquellen ausführen?

Ultralytics YOLO kann eine Vielzahl von Datenquellen verarbeiten, einschließlich einzelner Bilder, Videos, Verzeichnisse, URLs und Streams. Du kannst die Datenquelle im model.predict()-Aufruf angeben. Verwende zum Beispiel 'image.jpg' für ein lokales Bild oder 'https://ultralytics.com/images/bus.jpg' für eine URL. Sieh dir die detaillierten Beispiele für verschiedene Inferenzquellen in der Dokumentation an.

Wie optimiere ich YOLO-Inferenzgeschwindigkeit und Speicherauslastung?

Um die Inferenzgeschwindigkeit zu optimieren und Speicher effizient zu verwalten, kannst du den Streaming-Modus verwenden, indem du stream=True in der Call-Methode des Predictors setzt. 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. Erfahre mehr über den Streaming-Modus.

Welche Inferenzargumente unterstützt Ultralytics YOLO?

Die model.predict()-Methode in YOLO unterstützt verschiedene Argumente wie conf, iou, imgsz, device und mehr. Diese Argumente ermöglichen es dir, den Inferenzprozess anzupassen und Parameter wie Konfidenzschwellen, Bildgröße und das für die Berechnung verwendete Gerät festzulegen. Detaillierte Beschreibungen dieser Argumente findest du im Bereich Inferenzargumente.

Wie kann ich die Ergebnisse von YOLO-Vorhersagen visualisieren und speichern?

Nachdem du die Inferenz mit YOLO ausgeführt hast, 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")). Für eine vollständige Liste dieser Methoden siehe den Arbeiten mit Ergebnissen.

Kommentare