Modellvorhersage mit Ultralytics YOLO
Einführung
In der Welt des machine learning und der computer vision wird der Prozess, visuelle Daten interpretierbar zu machen, oft als Inferenz oder Vorhersage bezeichnet. Ultralytics YOLO26 bietet eine leistungsstarke Funktion namens predict mode, die für hochperformante Echtzeit-Inferenz bei einer Vielzahl von Datenquellen maßgeschneidert ist.
Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀
Anwendungsbereiche in der Praxis
| Fertigung | Sport | Sicherheit |
|---|---|---|
![]() | ![]() | ![]() |
| Fahrzeugersatzteil-Erkennung | Fußballspieler-Erkennung | Personen-Sturzerkennung |
Warum Ultralytics YOLO für die Inferenz verwenden?
Hier ist der Grund, warum du den Predict-Modus von YOLO26 für deine verschiedenen Inferenzanforderungen in Betracht ziehen solltest:
- Vielseitigkeit: Ermöglicht die Inferenz auf Bildern, Videos und sogar Live-Streams.
- Leistung: Entwickelt für Echtzeit-Verarbeitung mit hoher Geschwindigkeit, ohne Einbußen bei der accuracy.
- Benutzerfreundlichkeit: Intuitive Python- und CLI-Schnittstellen für schnelle Bereitstellung und Tests.
- Hochgradig anpassbar: Verschiedene Einstellungen und Parameter, um das Inferenzverhalten des Modells an deine spezifischen Anforderungen anzupassen.
- Produktionsbereit: Stelle Modelle als API-Endpunkte auf der Ultralytics Platform mit automatischem Skalieren und Überwachung bereit oder führe die Inferenz lokal aus.
Hauptfunktionen des Predict-Modus
Der Predict-Modus von YOLO26 ist robust und vielseitig gestaltet und bietet:
- Kompatibilität mit mehreren Datenquellen: Egal ob deine Daten als einzelne Bilder, eine Bildersammlung, Videodateien oder Echtzeit-Videostreams vorliegen, der Predict-Modus deckt alles ab.
- Streaming-Modus: Nutze die Streaming-Funktion, um einen speichereffizienten Generator von
ResultsObjekten zu erstellen. Aktiviere dies, indem dustream=Truein der Aufrufmethode des Predictors setzt. - Batch-Verarbeitung: Verarbeite mehrere Bilder oder Videoframes in einem einzigen Batch, um die gesamte Inferenzzeit weiter zu reduzieren.
- Integrationsfreundlich: Dank der flexiblen API lässt sich das Modell einfach 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 Eingabequellen für die Inferenz verarbeiten, wie in der Tabelle unten dargestellt. Die Quellen umfassen statische Bilder, Videostreams und verschiedene Datenformate. Die Tabelle gibt auch 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 von Ergebnissen erstellt, anstatt alle Frames in den Speicher 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 verwendet wird, werden die Ergebnisse für alle Frames oder Datenpunkte im Speicher abgelegt, was sich schnell summieren und zu Out-of-Memory-Fehlern bei großen Eingaben führen kann. Im Gegensatz dazu nutzt stream=True einen Generator, der nur die Ergebnisse des aktuellen Frames oder Datenpunkts im Speicher hält, was den Speicherverbrauch erheblich reduziert und Out-of-Memory-Probleme verhindert.
| Quelle | Beispiel | Typ | Hinweise |
|---|---|---|---|
| image | 'image.jpg' | str oder Path | Einzelne Bilddatei. |
| URL | 'https://ultralytics.com/images/bus.jpg' | str | URL zu einem Bild. |
| screenshot | 'screen' | str | Mache 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, etc. |
| directory ✅ | 'path/' | str oder Path | Pfad zu einem Verzeichnis, das Bilder oder Videos enthält. |
| 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, z.B. laufen 8 Streams bei einer Batch-Größe von 8. |
| webcam ✅ | 0 | int | Index des angeschlossenen Kamerageräts, um die Inferenz darauf auszuführen. |
Nachfolgend findest du Code-Beispiele für die Verwendung jedes Quelltyps:
Führe die Inferenz auf einer Bilddatei aus.
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 objectsInferenz-Argumente
model.predict() akzeptiert mehrere Argumente, die während der Inferenz übergeben werden können, um die Standardwerte zu überschreiben:
Feste Größe vs. minimales Rechteck (rect)
Standardmäßig verwendet die Vorhersage rect=True, was nach Möglichkeit eine Minimal-Rechteck-Auffüllung (Padding) aktiviert. Das Bild wird skaliert, um in imgsz zu passen, und nur auf das nächste Vielfache des Strides aufgefüllt, sodass der endgültige Tensor kleiner als imgsz sein kann. Das Minimal-Rechteck-Padding wird nur verwendet, wenn alle Bilder im Batch die gleiche Form haben und das Backend dies unterstützt (PyTorch .pt oder dynamisches ONNX / Triton). Andernfalls werden die Bilder auf das volle imgsz-Ziel aufgefüllt.
Verwende rect=False, um immer auf das volle imgsz-Ziel aufzufüllen. Dies wird empfohlen, wenn du eine feste Eingabegröße benötigst, um exportierten Modellen (ONNX, TensorRT usw.) zu entsprechen.
Integer vs. Tupel imgsz
- Ein Integer
imgsz=640wird nach der Stride-Rundung zu einem quadratischen Ziel(640, 640). - Ein Tupel
imgsz=(384, 672)legt ein rechteckiges Ziel fest. Mitrect=Trueundauto=Truekann der tatsächliche Tensor kleiner als dieses Ziel sein.
Training vs. Vorhersage/Export
Training accepts only a single integer imgsz (a [h, w] list is coerced to the largest value). Predict and export accept either an integer or a (height, width) tuple.
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 | Standard | Beschreibung |
|---|---|---|---|
source | str oder int oder None | None | Gibt die Datenquelle für die Inferenz an. Dies 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 Vielzahl von Formaten und Quellen, was eine flexible Anwendung über verschiedene Arten von Eingaben ermöglicht. |
conf | float | 0.25 | Setzt den minimalen Konfidenz-Schwellenwert für Detektionen fest. Objekte, die mit einer Konfidenz unter diesem Schwellenwert erkannt werden, werden ignoriert. Das Anpassen 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 Detektionen durch das Eliminieren überlappender Boxen, nützlich zur Reduzierung von Duplikaten. |
imgsz | int oder tuple | 640 | Letterbox-Ziel. Eine Ganzzahl ergibt ein quadratisches N×N; ein Tupel ergibt (height, width). Mit rect=True kann der tatsächliche Tensor aufgrund von Minimum-Rectangle-Padding kleiner als dieses Ziel sein. Verwende rect=False für eine feste Größe. Siehe Fixed shape vs minimum rectangle. |
rect | bool | True | Wenn True, verwende Minimum-Rectangle-Padding, wenn möglich (bei Batch mit gleicher Form und unterstütztem Backend). Wenn False, immer auf die volle imgsz auffüllen. Siehe Fixed shape vs minimum rectangle. |
half | bool | False | Aktiviert die Inferenz mit halber Präzision (FP16), was die Modell-Inferenz auf unterstützten GPUs bei minimalem Einfluss auf die Genauigkeit beschleunigen kann. |
device | str | None | Gibt das Gerät für die Inferenz an (z. B. cpu, cuda:0, 0, npu oder npu:0). Ermöglicht es Benutzern, zwischen CPU, einer spezifischen GPU, Huawei Ascend NPU oder anderen Rechengeräten für die Modellausführung zu wählen. |
batch | int | 1 | Gibt die Batch-Größe für die Inferenz an (funktioniert nur, wenn die Quelle ein Verzeichnis, eine Videodatei oder eine .txt-Datei ist). Eine größere Batch-Größe kann einen höheren Durchsatz bieten und die für die Inferenz erforderliche Gesamtzeit 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 vermeiden. |
vid_stride | int | 1 | Frame-Stride für Videoeingaben. Ermöglicht das Überspringen von Bildern in Videos, um die Verarbeitung auf Kosten der zeitlichen Auflösung zu beschleunigen. Ein Wert von 1 verarbeitet jedes Bild, höhere Werte überspringen Bilder. |
stream_buffer | bool | False | Bestimmt, ob eingehende Bilder für Videostreams in eine Warteschlange gestellt werden sollen. Wenn False, werden alte Bilder verworfen, um Platz für neue zu schaffen (optimiert für Echtzeitanwendungen). Wenn True, werden neue Bilder in einem Puffer in die Warteschlange gestellt, um sicherzustellen, dass keine Bilder übersprungen werden, was jedoch zu Latenz führt, 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 darin, was das Modell „sieht“. Nützlich für das Debugging und die Modellinterpretation. |
augment | bool | False | Aktiviert die Test-Time Augmentation (TTA) für Vorhersagen, was die Erkennungsrobustheit auf Kosten der Inferenzgeschwindigkeit potenziell verbessern kann. |
agnostic_nms | bool | False | Aktiviert klassenunabhängige Non-Maximum Suppression (NMS), die überlappende Boxen verschiedener Klassen zusammenführt. Nützlich in Szenarien mit Multi-Klassen-Erkennung, in denen Klassenüberlappungen häufig vorkommen. Bei End-to-End-Modellen (YOLO26, YOLOv10) verhindert dies lediglich, dass dieselbe Erkennung mit mehreren Klassen-Labels erscheint (IoU=1.0-Duplikate), und führt keine IoU-schwellenwertbasierte Unterdrückung zwischen unterschiedlichen Boxen durch. |
classes | list[int] | None | Filtert Vorhersagen auf eine Menge von Klassen-IDs. Nur Erkennungen, die zu den angegebenen Klassen gehören, werden zurückgegeben. Nützlich, um sich bei Multi-Klassen-Erkennungsaufgaben auf relevante Objekte zu konzentrieren. |
retina_masks | bool | False | Gibt hochauflösende Segmentierungsmasken zurück. Die zurückgegebenen Masken (masks.data) entsprechen bei Aktivierung der ursprünglichen Bildgröße. Wenn deaktiviert, haben sie die während der Inferenz verwendete Bildgröße. |
embed | list[int] | None | Gibt die Schichten an, aus denen Merkmalsvektoren oder Embeddings extrahiert werden sollen. Nützlich für nachgelagerte Aufgaben wie Clustering oder Ähnlichkeitssuche. |
project | str | None | Name des Projektverzeichnisses, in dem Vorhersageergebnisse gespeichert werden, wenn save aktiviert ist. |
name | str | None | Name des Vorhersagedurchlaufs. Wird zum Erstellen eines Unterverzeichnisses innerhalb des Projektordners verwendet, in dem Vorhersageergebnisse gespeichert werden, wenn save aktiviert ist. |
stream | bool | False | Ermöglicht speichereffiziente Verarbeitung für lange Videos oder zahlreiche Bilder, indem ein Generator von Results-Objekten zurückgegeben wird, anstatt alle Bilder gleichzeitig in den Speicher zu laden. |
verbose | bool | True | Steuert, ob detaillierte Inferenz-Logs im Terminal angezeigt werden, was Echtzeit-Feedback zum Vorhersageprozess liefert. |
compile | bool oder str | False | Aktiviert die PyTorch 2.x torch.compile Graphenkompilierung mit backend='inductor'. Akzeptiert True → "default", False → deaktiviert, oder einen String-Modus wie "default", "reduce-overhead", "max-autotune-no-cudagraphs". Greift bei Nichtunterstützung mit einer Warnung auf den 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 es auf False setzt, kannst du die Vorhersage mit der traditionellen NMS-Pipeline ausführen und zusätzlich das iou-Argument nutzen. Siehe den End-to-End Detection Guide für Details. |
Visualisierungsargumente:
| Argument | Typ | Standard | Beschreibung |
|---|---|---|---|
show | bool | False | Wenn True, werden die annotierten Bilder oder Videos in einem Fenster angezeigt. Nützlich für direktes visuelles Feedback während der Entwicklung oder beim Testen. |
save | bool | False or True | Ermöglicht das Speichern der annotierten Bilder oder Videos als Dateien. Nützlich für Dokumentation, weitere Analysen oder das Teilen von Ergebnissen. Standardmäßig auf True, wenn CLI verwendet wird, und auf False, wenn in Python verwendet. |
save_frames | bool | False | Speichert beim Verarbeiten von Videos einzelne Bilder als Bilddateien. Nützlich zum Extrahieren spezifischer Frames oder für detaillierte Bild-für-Bild-Analysen. |
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 | Fügt Konfidenzwerte in die gespeicherten Textdateien ein. Verbessert die Details für die Nachverarbeitung und Analyse. |
save_crop | bool | False | Speichert zugeschnittene Bilder von Erkennungen. Nützlich für Daten-Augmentierung, Analysen oder zum Erstellen fokussierter Datensätze für bestimmte Objekte. |
show_labels | bool | True | Zeigt Labels für jede Erkennung in der visuellen Ausgabe an. Bietet unmittelbares Verständnis der erkannten Objekte. |
show_conf | bool | True | Zeigt den Konfidenzwert für jede Erkennung neben dem Label an. Gibt Aufschluss über die Sicherheit des Modells bei jeder Erkennung. |
show_boxes | bool | True | Zeichnet Bounding-Boxen um erkannte Objekte. Essentiell für die visuelle Identifikation und Lokalisierung von Objekten in Bildern oder Videoframes. |
line_width | int or None | None | Gibt die Linienbreite der Bounding-Boxen an. Wenn None, wird die Linienbreite automatisch basierend auf der Bildgröße angepasst. Bietet visuelle Anpassung für mehr Klarheit. |
Bild- und Videoformate
YOLO26 unterstützt verschiedene Bild- und Videoformate, wie in ultralytics/data/utils.py spezifiziert. Siehe die Tabellen unten für gültige Suffixe und Beispiel-Vorhersagebefehle.
Bilder
Die unten stehende Tabelle enthält gültige Ultralytics-Bildformate.
HEIC/HEIF-Formate erfordern pi-heif, das bei der ersten Verwendung automatisch installiert wird. AVIF wird nativ von Pillow unterstützt.
| Bild-Suffixe | Beispiel-Vorhersagebefehl | Referenz |
|---|---|---|
.avif | yolo predict source=image.avif | AV1 Image File Format |
.bmp | yolo predict source=image.bmp | Microsoft BMP File Format |
.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 unten stehende Tabelle enthält gültige Ultralytics-Videoformate.
| Video-Suffixe | Beispiel-Vorhersagebefehl | 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 verfügen über die folgenden Attribute:
| Attribut | Typ | Beschreibung |
|---|---|---|
orig_img | np.ndarray | Das ursprüngliche Bild als NumPy-Array. |
orig_shape | tuple | Die ursprüngliche Bildgröße im Format (Höhe, Breite). |
boxes | Boxes, optional | Ein Boxes-Objekt, das die Bounding-Boxen der Erkennung enthält. |
masks | Masks, optional | Ein Masks-Objekt, das die Masken der Erkennung 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 die erkannten Keypoints für jedes Objekt enthält. |
obb | OBB, optional | Ein OBB-Objekt, das orientierte Bounding-Boxen enthält. |
speed | dict | Ein Wörterbuch der Vorverarbeitungs-, Inferenz- und Nachverarbeitungsgeschwindigkeiten in Millisekunden pro Bild. |
names | dict | Ein Wörterbuch, das Klassenindizes Klassennamen zuordnet. |
path | str | Der Pfad zur Bilddatei. |
save_dir | str, optional | Verzeichnis zum Speichern der Ergebnisse. |
Results-Objekte verfügen über 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, bei der alle Tensoren in den CPU-Speicher verschoben wurden. |
numpy() | Results | Gibt eine Kopie des Results-Objekts zurück, bei der alle Tensoren in NumPy-Arrays konvertiert wurden. |
cuda() | Results | Gibt eine Kopie des Results-Objekts zurück, bei der alle Tensoren in den GPU-Speicher verschoben wurden. |
to() | Results | Gibt eine Kopie des Results-Objekts zurück, bei der Tensoren auf das angegebene 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 einem Eingabe-RGB-Bild und gibt das annotierte Bild zurück. |
show() | None | Zeigt das Bild mit annotierten Inferenz-Ergebnissen an. |
save() | str | Speichert das annotierte Inferenz-Ergebnisbild in einer Datei und gibt den Dateinamen zurück. |
verbose() | str | Gibt einen Log-String für jede Aufgabe zurück, der die Ergebnisse der Erkennung und Klassifizierung detailliert auflistet. |
save_txt() | str | Speichert Erkennungsergebnisse in einer 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 Inferenz-Ergebnisse in ein zusammengefasstes Wörterbuch mit optionaler Normalisierung. |
to_df() | DataFrame | Konvertiert Erkennungsergebnisse in einen Polars DataFrame. |
to_csv() | str | Konvertiert Erkennungsergebnisse in das CSV-Format. |
to_json() | str | Konvertiert Erkennungsergebnisse in das JSON-Format. |
Weitere Details findest du in der Results Klassen-Dokumentation.
Boxes
Das Boxes-Objekt kann verwendet werden, um Bounding-Boxen 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 Methoden und Eigenschaften der Boxes-Klasse, einschließlich Name, Typ und Beschreibung:
| Name | Typ | Beschreibung |
|---|---|---|
cpu() | Methode | Verschiebe das Objekt in den CPU-Speicher. |
numpy() | Methode | Konvertiere das Objekt in ein NumPy-Array. |
cuda() | Methode | Verschiebe das Objekt in den CUDA-Speicher. |
to() | Methode | Verschiebe das Objekt auf das angegebene Gerät. |
xyxy | Eigenschaft (torch.Tensor) | Gib die Boxen im xyxy-Format zurück. |
conf | Eigenschaft (torch.Tensor) | Gib die Konfidenzwerte der Boxen zurück. |
cls | Eigenschaft (torch.Tensor) | Gib die Klassenwerte der Boxen zurück. |
id | Eigenschaft (torch.Tensor) | Gib die Track-IDs der Boxen zurück (falls verfügbar). |
xywh | Eigenschaft (torch.Tensor) | Gib die Boxen im xywh-Format zurück. |
xyxyn | Eigenschaft (torch.Tensor) | Gib die Boxen im xyxy-Format zurück, normalisiert auf die ursprüngliche Bildgröße. |
xywhn | Eigenschaft (torch.Tensor) | Gib die Boxen im xywh-Format zurück, normalisiert auf die ursprüngliche Bildgröße. |
Weitere Details findest du in der Boxes Klassen-Dokumentation.
Masks
Das 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 Methoden und Eigenschaften der Masks-Klasse, einschließlich Name, Typ und Beschreibung:
| Name | Typ | Beschreibung |
|---|---|---|
cpu() | Methode | Gibt den Masken-Tensor im CPU-Speicher zurück. |
numpy() | Methode | Gibt den Masken-Tensor als NumPy-Array zurück. |
cuda() | Methode | Gibt den Masken-Tensor im GPU-Speicher zurück. |
to() | Methode | Gibt den Masken-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. |
Weitere Details findest du in der Masks Klassen-Dokumentation.
Keypoints
Das Keypoints-Objekt kann verwendet werden, um Koordinaten zu indizieren, zu bearbeiten 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 mit den Methoden und Eigenschaften der Keypoints-Klasse, 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 für das angegebene Gerät und den 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, sonst None. |
Weitere Details findest du in der Keypoints-Klassendokumentation.
Probs
Das Probs-Objekt kann verwendet werden, um Klassifizierungsindizes und Scores für top1 und top5 abzurufen und zu indizieren.
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 für das angegebene Gerät und den 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. |
Weitere Details findest du in der Probs-Klassendokumentation.
OBB
Das OBB-Objekt kann verwendet werden, um orientierte Bounding Boxes zu indizieren, zu bearbeiten 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 mit den Methoden und Eigenschaften der OBB-Klasse, einschließlich Name, Typ und Beschreibung:
| Name | Typ | Beschreibung |
|---|---|---|
cpu() | Methode | Verschiebe das Objekt in den CPU-Speicher. |
numpy() | Methode | Konvertiere das Objekt in ein NumPy-Array. |
cuda() | Methode | Verschiebe das Objekt in den CUDA-Speicher. |
to() | Methode | Verschiebe das Objekt auf das angegebene Gerät. |
conf | Eigenschaft (torch.Tensor) | Gib die Konfidenzwerte der Boxen zurück. |
cls | Eigenschaft (torch.Tensor) | Gib die Klassenwerte der Boxen zurück. |
id | Eigenschaft (torch.Tensor) | Gib 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 durch die Bildgröße. |
Weitere Details findest du in der OBB-Klassendokumentation.
Ergebnisse grafisch darstellen
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")Parameter der plot()-Methode
Die plot()-Methode unterstützt verschiedene Argumente zur Anpassung der Ausgabe:
| Argument | Typ | Beschreibung | Standard |
|---|---|---|---|
conf | bool | Erkennungskonfidenz-Scores 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 | Gibt das Bild als PIL Image-Objekt zurück. | False |
img | np.ndarray | Alternatives Bild zum Plotten. Verwendet das Originalbild, falls None. | None |
im_gpu | torch.Tensor | GPU-beschleunigtes Bild für schnelleres Plotten von Masken. Form: (1, 3, 640, 640). | None |
kpt_radius | int | Radius für gezeichnete Keypoints. | 5 |
kpt_line | bool | Verbinde Keypoints mit Linien. | True |
labels | bool | Klassenbeschriftungen in die Annotationen aufnehmen. | True |
boxes | bool | Bounding Boxes über das Bild legen. | True |
masks | bool | Masken über das Bild legen. | True |
probs | bool | Klassifizierungswahrscheinlichkeiten einbeziehen. | True |
show | bool | Das annotierte Bild direkt mit dem Standard-Bildbetrachter anzeigen. | False |
save | bool | Speichere das annotierte Bild in einer Datei, die durch filename angegeben wird. | False |
filename | str | Pfad und Name der Datei zum Speichern des annotierten Bildes, falls save den Wert True hat. | None |
color_mode | str | Farbmodus festlegen, z. B. 'instance' oder 'class'. | 'class' |
txt_color | tuple[int, int, int] | RGB-Textfarbe für Bounding Box und Bildklassifizierungslabel. | (255, 255, 255) |
Thread-sichere Inferenz
Die Gewährleistung der Thread-Sicherheit bei 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 erzielt werden.
Bei der Verwendung von YOLO-Modellen in einer Multi-Threaded-Anwendung ist es wichtig, separate Modellobjekte für jeden Thread zu instanziieren oder Thread-lokalen Speicher zu verwenden, um Konflikte zu vermeiden:
Instanziiere ein einzelnes Modell innerhalb jedes Threads für 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 schrittweise Anleitungen beziehe dich bitte auf unseren YOLO Thread-Safe Inference Guide. Dieser Leitfaden bietet dir alle notwendigen Informationen, um häufige Fehler zu vermeiden und sicherzustellen, dass deine Multi-Threaded-Inferenz reibungslos abläuft.
Streaming-Quell-for-Schleife
Hier ist ein Python-Skript, das OpenCV (cv2) und YOLO verwendet, um Inferenz auf Video-Frames auszuführen. Dieses Skript setzt voraus, dass du die notwendigen Pakete (opencv-python und ultralytics) bereits installiert hast.
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 für jeden 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 sein Vorhersagemodus für Echtzeit-Inferenz?
Ultralytics YOLO ist ein hochmodernes Modell für Echtzeit-Objekterkennung, Segmentierung und Klassifizierung. Sein Vorhersagemodus 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 auch Batch-Verarbeitung und Streaming-Modi. Weitere Details zu seinen Funktionen findest du im Ultralytics YOLO Vorhersagemodus.
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 die Geschwindigkeit und Speicherauslastung der YOLO-Inferenz?
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. Der Streaming-Modus generiert 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, indem du Parameter wie Konfidenzschwellen, Bildgröße und das für die Berechnung verwendete Gerät festlegst. Detaillierte Beschreibungen dieser Argumente findest du im Abschnitt Inferenzargumente.
Wie kann ich die Ergebnisse von YOLO-Vorhersagen visualisieren und speichern?
Nach der Durchführung der Inferenz mit YOLO enthalten die Results-Objekte Methoden zum Anzeigen und Speichern annotierter Bilder. Du kannst Methoden wie result.show() und result.save(filename="result.jpg") verwenden, um die Ergebnisse zu visualisieren und zu speichern. Fehlende übergeordnete Verzeichnisse im Dateinamenpfad werden automatisch erstellt (z. B. result.save("path/to/result.jpg")). Eine umfassende Liste dieser Methoden findest du im Abschnitt Arbeiten mit Ergebnissen.


