Modellvorhersage mit Ultralytics YOLO
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
| Fertigung | Sport | Sicherheit |
|---|---|---|
| ![Fahrzeugersatzteil-Erkennung][car spare parts] | ![Fußballspieler-Erkennung][football player detect] | ![Erkennung von Stürzen][human fall detect] |
| Fahrzeugersatzteil-Erkennung | Fußballspieler-Erkennung | Erkennung 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
ResultsObjekten zu erzeugen. Aktiviere dies, indem dustream=Truein 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:
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 diskInferenzquellen
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.
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.
| Quelle | Beispiel | Typ | Hinweise |
|---|---|---|---|
| Bild | 'image.jpg' | str oder Path | Einzelne Bilddatei. |
| URL | 'https://ultralytics.com/images/bus.jpg' | str | URL zu einem Bild. |
| Screenshot | 'screen' | str | Erstelle einen Screenshot. |
| PIL | Image.open('image.jpg') | PIL.Image | HWC-Format mit RGB-Kanälen. |
| OpenCV | cv2.imread('image.jpg') | np.ndarray | HWC-Format mit BGR-Kanälen uint8 (0-255). |
| numpy | np.zeros((640,1280,3)) | np.ndarray | HWC-Format mit BGR-Kanälen uint8 (0-255). |
| torch | torch.zeros(16,3,320,640) | torch.Tensor | BCHW-Format mit RGB-Kanälen float32 (0.0-1.0). |
| CSV | 'sources.csv' | str oder Path | CSV-Datei mit Pfaden zu Bildern, Videos oder Verzeichnissen. |
| Video ✅ | 'video.mp4' | str oder Path | Videodatei in Formaten wie MP4, AVI usw. |
| Verzeichnis ✅ | 'path/' | str oder Path | Pfad zu einem Verzeichnis mit Bildern oder Videos. |
| Glob ✅ | 'path/*.jpg' | str | Glob-Muster, um mehrere Dateien abzugleichen. Verwende das * Zeichen als Platzhalter. |
| YouTube ✅ | 'https://youtu.be/LNwODJXcvt4' | str | URL zu einem YouTube-Video. |
| Stream ✅ | 'rtsp://example.com/media.mp4' | str | URL 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 ✅ | 0 | int | Index des angeschlossenen Kamerageräts, um die Inferenz darauf auszuführen. |
Unten findest du Codebeispiele für die Verwendung jedes Quelltyps:
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 objectsInference Arguments
model.predict()akzeptiert mehrere Argumente, die zur Inferenzzeit übergeben werden können, um die Standardeinstellungen zu überschreiben:
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.
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:
| Argument | Typ | Default | Beschreibung |
|---|---|---|---|
source | str oder int oder None | None | Gibt 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. |
conf | float | 0.25 | hinweg 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. |
iou | float | 0.7 | Intersection 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. |
imgsz | int oder tuple | 640 | Definiert 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. |
rect | bool | True | Falls 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. |
half | bool | False | Aktiviert die Half-precision (FP16) Inferenz, die die Modellinferenz auf unterstützten GPUs beschleunigen kann, bei minimaler Auswirkung auf die Genauigkeit. |
device | str | None | Gibt 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. |
batch | int | 1 | Gibt 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_det | int | 300 | Maximale 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_stride | int | 1 | Frame-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_buffer | bool | False | Bestimmt, 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. |
visualize | bool | False | Aktiviert die Visualisierung von Modellmerkmalen während der Inferenz und bietet Einblicke in das, was das Modell "sieht". Nützlich für Debugging und Modellinterpretation. |
augment | bool | False | Aktiviert Test-Time Augmentation (TTA) für Vorhersagen, was potenziell die Robustheit der Erkennung auf Kosten der Inferenzgeschwindigkeit verbessert. |
agnostic_nms | bool | False | Aktiviert 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. |
classes | list[int] | None | Filtert 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_masks | bool | False | Gibt 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. |
embed | list[int] | None | Gibt die Schichten an, aus denen Merkmalsvektoren oderembeddingsextrahiert werden sollen. Nützlich für nachgelagerte Aufgaben wie Clustering oder Ähnlichkeitssuche. |
project | str | None | Name des Projektverzeichnisses, in dem Vorhersageergebnisse gespeichert werden, fallssaveaktiviert ist. |
name | str | None | Name des Vorhersagelaufs. Wird zur Erstellung eines Unterverzeichnisses innerhalb des Projektordners verwendet, in dem die Vorhersageergebnisse gespeichert werden, fallssaveaktiviert ist. |
stream | bool | False | Aktiviert 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. |
verbose | bool | True | Steuert, ob detaillierte Inferenzprotokolle im Terminal angezeigt werden sollen, was Echtzeit-Feedback zum Vorhersageprozess bietet. |
compile | bool oder str | False | Aktiviert 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. |
end2end | bool | None | Ü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:
| Argument | Typ | Default | Beschreibung |
|---|---|---|---|
show | bool | False | WennTrue, werden die annotierten Bilder oder Videos in einem Fenster angezeigt. Nützlich für sofortiges visuelles Feedback während der Entwicklung oder beim Testen. |
save | bool | False or True | Aktiviert 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_frames | bool | False | Speichert 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_txt | bool | False | Speichert Erkennungsergebnisse in einer Textdatei im Format[class] [x_center] [y_center] [width] [height] [confidence]. Nützlich für die Integration mit anderen Analysetools. |
save_conf | bool | False | Beinhaltet Konfidenz-Scores in den gespeicherten Textdateien. Verbessert die für die Nachbearbeitung und Analyse verfügbaren Details. |
save_crop | bool | False | Speichert zugeschnittene Bilder von Erkennungen. Nützlich für die Datensatz-Augmentierung, Analyse oder das Erstellen fokussierter Datensätze für spezifische Objekte. |
show_labels | bool | True | Zeigt Beschriftungen für jede Erkennung in der visuellen Ausgabe an. Bietet sofortiges Verständnis der erkannten Objekte. |
show_conf | bool | True | Zeigt den Konfidenzwert für jede Erkennung neben der Beschriftung an. Gibt Einblick in die Sicherheit des Modells für jede Erkennung. |
show_boxes | bool | True | Zeichnet Begrenzungsrahmen (Bounding Boxes) um erkannte Objekte. Essenziell für die visuelle Identifizierung und Lokalisierung von Objekten in Bildern oder Videoframes. |
line_width | int or None | None | Legt 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.
HEIC/HEIF-Formate erfordern pi-heif, was bei der ersten Verwendung automatisch installiert wird. AVIF wird nativ von Pillow unterstützt.
| Bild-Suffixe | Beispiel-Predict-Befehl | Referenz |
|---|---|---|
.avif | yolo predict source=image.avif | AV1 Bilddateiformat |
.bmp | yolo predict source=image.bmp | Microsoft BMP Dateiformat |
.dng | yolo predict source=image.dng | Adobe DNG |
.heic | yolo predict source=image.heic | High Efficiency Image Format |
.heif | yolo predict source=image.heif | High Efficiency Image Format |
.jp2 | yolo predict source=image.jp2 | JPEG 2000 |
.jpeg | yolo predict source=image.jpeg | JPEG |
.jpg | yolo predict source=image.jpg | JPEG |
.mpo | yolo predict source=image.mpo | Multi Picture Object |
.png | yolo predict source=image.png | Portable Network Graphics |
.tif | yolo predict source=image.tif | Tag Image File Format |
.tiff | yolo predict source=image.tiff | Tag Image File Format |
.webp | yolo predict source=image.webp | WebP |
Videos
Die folgende Tabelle enthält gültige Ultralytics Videoformate.
| Video-Suffixe | Beispiel-Predict-Befehl | Referenz |
|---|---|---|
.asf | yolo predict source=video.asf | Advanced Systems Format |
.avi | yolo predict source=video.avi | Audio Video Interleave |
.gif | yolo predict source=video.gif | Graphics Interchange Format |
.m4v | yolo predict source=video.m4v | MPEG-4 Part 14 |
.mkv | yolo predict source=video.mkv | Matroska |
.mov | yolo predict source=video.mov | QuickTime File Format |
.mp4 | yolo predict source=video.mp4 | MPEG-4 Part 14 - Wikipedia |
.mpeg | yolo predict source=video.mpeg | MPEG-1 Part 2 |
.mpg | yolo predict source=video.mpg | MPEG-1 Part 2 |
.ts | yolo predict source=video.ts | MPEG Transport Stream |
.wmv | yolo predict source=video.wmv | Windows Media Video |
.webm | yolo predict source=video.webm | WebM Project |
Arbeiten mit Ergebnissen
Alle Ultralytics predict() Aufrufe geben eine Liste von Results Objekten zurück:
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 inferenceResults Objekte haben die folgenden Attribute:
| Attribut | Typ | Beschreibung |
|---|---|---|
orig_img | np.ndarray | Das Originalbild als numpy Array. |
orig_shape | tuple | Die ursprüngliche Bildform im Format (Höhe, Breite). |
boxes | Boxes, optional | Ein Boxes Objekt, das die Erkennungs-Bounding-Boxes enthält. |
masks | Masks, optional | Ein Masks Objekt, das die Erkennungsmasken enthält. |
probs | Probs, optional | Ein Probs Objekt, das die Wahrscheinlichkeiten jeder Klasse für die Klassifizierungsaufgabe enthält. |
keypoints | Keypoints, optional | Ein Keypoints Objekt, das erkannte Schlüsselpunkte für jedes Objekt enthält. |
obb | OBB, optional | Ein OBB Objekt, das orientierte Bounding Boxes enthält. |
speed | dict | Ein Wörterbuch mit Vorverarbeitungs-, Inferenz- und Nachverarbeitungsgeschwindigkeiten in Millisekunden pro Bild. |
names | dict | Ein Wörterbuch, das Klassen-Indizes auf Klassennamen abbildet. |
path | str | Der Pfad zur Bilddatei. |
save_dir | str, optional | Verzeichnis zum Speichern der Ergebnisse. |
Results Objekte haben die folgenden Methoden:
| Methode | Rückgabetyp | Beschreibung |
|---|---|---|
update() | None | Aktualisiert das Results Objekt mit neuen Erkennungsdaten (Boxes, Masks, Probs, OBB, Keypoints). |
cpu() | Results | Gibt eine Kopie des Results Objekts zurück, wobei alle Tensoren in den CPU Speicher verschoben wurden. |
numpy() | Results | Gibt eine Kopie des Results Objekts zurück, wobei alle Tensoren in numpy Arrays konvertiert wurden. |
cuda() | Results | Gibt eine Kopie des Results Objekts zurück, wobei alle Tensoren in den GPU Speicher verschoben wurden. |
to() | Results | Gibt eine Kopie des Results Objekts zurück, wobei Tensoren auf das spezifizierte Gerät und den Datentyp verschoben wurden. |
new() | Results | Erstellt ein neues Results Objekt mit denselben Bild-, Pfad-, Namens- und Geschwindigkeitsattributen. |
plot() | np.ndarray | Plottet Erkennungsergebnisse auf ein Eingabe-RGB-Bild und gibt das annotierte Bild zurück. |
show() | None | Zeigt das Bild mit annotierten Inferenzergebnissen an. |
save() | str | Speichert das annotierte Inferenzergebnisbild in eine Datei und gibt den Dateinamen zurück. |
verbose() | str | Gibt einen Log-String für jede Aufgabe zurück, der Erkennungs- und Klassifizierungsergebnisse detailliert beschreibt. |
save_txt() | str | Speichert Erkennungsergebnisse in eine Textdatei und gibt den Pfad zur gespeicherten Datei zurück. |
save_crop() | None | Speichert zugeschnittene Erkennungsbilder im angegebenen Verzeichnis. |
summary() | List[Dict[str, Any]] | Konvertiert Inferenzergebnisse in ein zusammengefasstes Wörterbuch mit optionaler Normalisierung. |
to_df() | DataFrame | Konvertiert Erkennungsergebnisse in ein Polars DataFrame. |
to_csv() | str | Konvertiert Erkennungsergebnisse in das CSV Format. |
to_json() | str | Konvertiert 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.
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 boxesHier ist eine Tabelle für die Boxes Klassenmethoden und Eigenschaften, einschließlich Name, Typ und Beschreibung:
| Name | Typ | Beschreibung |
|---|---|---|
cpu() | Methode | Verschiebt das Objekt in den CPU Speicher. |
numpy() | Methode | Konvertiert das Objekt in ein numpy Array. |
cuda() | Methode | Verschiebt das Objekt in den CUDA Speicher. |
to() | Methode | Verschiebt das Objekt auf das angegebene Gerät. |
xyxy | Eigenschaft (torch.Tensor) | Gibt die Boxen im xyxy Format zurück. |
conf | Eigenschaft (torch.Tensor) | Gibt die Konfidenzwerte der Boxen zurück. |
cls | Eigenschaft (torch.Tensor) | Gibt die Klassenwerte der Boxen zurück. |
id | Eigenschaft (torch.Tensor) | Gibt die Track-IDs der Boxen zurück (falls verfügbar). |
xywh | Eigenschaft (torch.Tensor) | Gibt die Boxen im xywh Format zurück. |
xyxyn | Eigenschaft (torch.Tensor) | Gibt die Boxen im xyxy Format zurück, normalisiert durch die Originalbildgröße. |
xywhn | Eigenschaft (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.
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 masksHier ist eine Tabelle für die Masks Klassenmethoden und Eigenschaften, einschließlich Name, Typ und Beschreibung:
| Name | Typ | Beschreibung |
|---|---|---|
cpu() | Methode | Gibt den Masken-Tensor im CPU Speicher zurück. |
numpy() | Methode | Gibt den Masks-Tensor als numpy-Array zurück. |
cuda() | Methode | Gibt den Masks-Tensor im GPU-Speicher zurück. |
to() | Methode | Gibt den Masks-Tensor mit dem angegebenen Gerät und Datentyp zurück. |
xyn | Eigenschaft (torch.Tensor) | Eine Liste normalisierter Segmente, dargestellt als Tensoren. |
xy | Eigenschaft (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.
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 keypointsHier ist eine Tabelle für die Keypoints Klassenmethoden und Eigenschaften, einschließlich Name, Typ und Beschreibung:
| Name | Typ | Beschreibung |
|---|---|---|
cpu() | Methode | Gibt den Keypoints-Tensor im CPU-Speicher zurück. |
numpy() | Methode | Gibt den Keypoints-Tensor als numpy-Array zurück. |
cuda() | Methode | Gibt den Keypoints-Tensor im GPU-Speicher zurück. |
to() | Methode | Gibt den Keypoints-Tensor mit dem angegebenen Gerät und Datentyp zurück. |
xyn | Eigenschaft (torch.Tensor) | Eine Liste normalisierter Keypoints, dargestellt als Tensoren. |
xy | Eigenschaft (torch.Tensor) | Eine Liste von Keypoints in Pixelkoordinaten, dargestellt als Tensoren. |
conf | Eigenschaft (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.
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 probabilitiesHier ist eine Tabelle, die die Methoden und Eigenschaften für die Probs-Klasse zusammenfasst:
| Name | Typ | Beschreibung |
|---|---|---|
cpu() | Methode | Gibt eine Kopie des Probs-Tensors im CPU-Speicher zurück. |
numpy() | Methode | Gibt eine Kopie des Probs-Tensors als numpy-Array zurück. |
cuda() | Methode | Gibt eine Kopie des Probs-Tensors im GPU-Speicher zurück. |
to() | Methode | Gibt eine Kopie des Probs-Tensors mit dem angegebenen Gerät und Datentyp zurück. |
top1 | Eigenschaft (int) | Index der Top-1-Klasse. |
top5 | Eigenschaft (list[int]) | Indizes der Top-5-Klassen. |
top1conf | Eigenschaft (torch.Tensor) | Konfidenz der Top-1-Klasse. |
top5conf | Eigenschaft (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.
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 boxesHier ist eine Tabelle für die OBB Klassenmethoden und Eigenschaften, einschließlich Name, Typ und Beschreibung:
| Name | Typ | Beschreibung |
|---|---|---|
cpu() | Methode | Verschiebt das Objekt in den CPU Speicher. |
numpy() | Methode | Konvertiert das Objekt in ein numpy Array. |
cuda() | Methode | Verschiebt das Objekt in den CUDA Speicher. |
to() | Methode | Verschiebt das Objekt auf das angegebene Gerät. |
conf | Eigenschaft (torch.Tensor) | Gibt die Konfidenzwerte der Boxen zurück. |
cls | Eigenschaft (torch.Tensor) | Gibt die Klassenwerte der Boxen zurück. |
id | Eigenschaft (torch.Tensor) | Gibt die Track-IDs der Boxen zurück (falls verfügbar). |
xyxy | Eigenschaft (torch.Tensor) | Gibt die horizontalen Boxen im xyxy-Format zurück. |
xywhr | Eigenschaft (torch.Tensor) | Gibt die rotierten Boxen im xywhr-Format zurück. |
xyxyxyxy | Eigenschaft (torch.Tensor) | Gibt die rotierten Boxen im xyxyxyxy-Format zurück. |
xyxyxyxyn | Eigenschaft (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.
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:
| Argument | Typ | Beschreibung | Default |
|---|---|---|---|
conf | bool | Konfidenz-Scores der Erkennung einbeziehen. | True |
line_width | float | Linienbreite der Bounding Boxes. Skaliert mit der Bildgröße, falls None. | None |
font_size | float | Schriftgröße für Text. Skaliert mit der Bildgröße, falls None. | None |
font | str | Schriftname für Textannotationen. | 'Arial.ttf' |
pil | bool | Bild als PIL Image-Objekt zurückgeben. | False |
img | np.ndarray | Alternatives Bild zum Plotten. Verwendet das Originalbild, falls None. | None |
im_gpu | torch.Tensor | GPU-beschleunigtes Bild für schnelleres Masken-Plotten. Form: (1, 3, 640, 640). | None |
kpt_radius | int | Radius für gezeichnete Keypoints. | 5 |
kpt_line | bool | Keypoints mit Linien verbinden. | True |
labels | bool | Klassen-Labels in Annotationen einbeziehen. | True |
boxes | bool | Bounding Boxes auf das Bild legen. | True |
masks | bool | Masken auf das Bild legen. | True |
probs | bool | Klassifizierungswahrscheinlichkeiten einbeziehen. | True |
show | bool | Annotiertes Bild direkt über den Standard-Bildbetrachter anzeigen. | False |
save | bool | Annotiertes Bild in einer durch filename. | False |
filename | str | angegebenen Datei speichern. Pfad und Name der Datei zum Speichern des annotierten Bildes, falls save gleich True. | None |
color_mode | str | ist. Farbmodus angeben, z. B. 'instance' oder 'class'. | 'class' |
txt_color | tuple[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:
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).
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.