Modellvorhersage mit Ultralytics YOLO
Einführung
In der Welt des maschinellen Lernens und der Computer Vision wird der Prozess, visuelle Daten zu interpretieren, als 'Inferenz' oder 'Vorhersage' bezeichnet. Ultralytics YOLO11 bietet eine leistungsstarke Funktion, den sogenannten Vorhersagemodus, der auf hochleistungsfähige Echtzeit-Inferenz für eine Vielzahl von Datenquellen zugeschnitten ist.
Ansehen: Wie man die Ausgaben des Ultralytics YOLO Modells für benutzerdefinierte Projekte extrahiert.
Anwendungen in der Praxis
Fertigung | Sport | Sicherheit |
---|---|---|
Erkennung von Fahrzeugersatzteilen | Fußballspielererkennung | Personen-Sturzerkennung |
Warum Ultralytics YOLO für Inferenz verwenden?
Hier sind die Gründe, warum Sie den Vorhersagemodus von YOLO11 für Ihre verschiedenen Inferenzanforderungen in Betracht ziehen sollten:
- Vielseitigkeit: Fähigkeit, Inferenz auf Bildern, Videos und sogar Live-Streams durchzuführen.
- Leistung: Entwickelt für Echtzeit- und Hochgeschwindigkeitsverarbeitung ohne Einbußen bei der Genauigkeit.
- Benutzerfreundlichkeit: Intuitive Python- und CLI-Schnittstellen für schnelle Bereitstellung und Tests.
- Hohe Anpassbarkeit: Verschiedene Einstellungen und Parameter zur Anpassung des Inferenzverhaltens des Modells an Ihre spezifischen Anforderungen.
Hauptmerkmale des Predict-Modus
Der Vorhersagemodus von YOLO11 ist robust und vielseitig konzipiert und bietet:
- Kompatibilität mit verschiedenen Datenquellen: Egal, ob Ihre Daten in Form von einzelnen Bildern, einer Sammlung von Bildern, Videodateien oder Echtzeit-Videostreams vorliegen, der Vorhersagemodus deckt alles ab.
- Streaming-Modus: Verwenden Sie die Streaming-Funktion, um einen speichereffizienten Generator von
Results
Objekten zu erzeugen. Aktivieren Sie dies, indem Siestream=True
in der Aufrufmethode des Prädiktors festlegen. - Batch-Verarbeitung: Die Fähigkeit, mehrere Bilder oder Video-Frames in einem einzigen Batch zu verarbeiten, was die Inferenzzeit weiter beschleunigt.
- Integrationsfreundlich: Dank der flexiblen API einfache Integration in bestehende Datenpipelines und andere Softwarekomponenten.
Ultralytics YOLO-Modelle geben entweder eine Python-Liste von Results
Objekten oder einen speichereffizienten Python-Generator von Results
Objekten zurück, wenn stream=True
während der Inferenz an das Modell übergeben wird:
Vorhersagen
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # pretrained YOLO11n 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
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.pt") # pretrained YOLO11n model
# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"], stream=True) # return a generator of Results objects
# Process results generator
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
YOLO11 kann verschiedene Arten von Eingabequellen für die Inferenz verarbeiten, wie in der folgenden Tabelle dargestellt. Zu den Quellen gehören statische Bilder, Videostreams und verschiedene Datenformate. Die Tabelle zeigt auch, 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.
Tipp
Verwenden Sie stream=True
für die Verarbeitung langer Videos oder großer Datensätze, um den Speicher effizient zu verwalten. Wenn stream=False
ist, werden die Ergebnisse für alle Frames oder Datenpunkte im Speicher gespeichert, was sich schnell summieren und bei großen Eingaben zu Speicherfehlern führen kann. Im Gegensatz dazu verwendet stream=True
einen Generator, der nur die Ergebnisse des aktuellen Frames oder Datenpunkts im Speicher hält, wodurch der Speicherverbrauch erheblich reduziert und Speicherprobleme vermieden 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 |
Erstellen Sie 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, die Pfade zu Bildern, Videos oder Verzeichnissen enthält. |
Video ✅ | 'video.mp4' |
str oder Path |
Videodatei in Formaten wie MP4, AVI usw. |
Verzeichnis ✅ | 'path/' |
str oder Path |
Pfad zu einem Verzeichnis, das Bilder oder Videos enthält. |
Glob ✅ | 'path/*.jpg' |
str |
Glob-Muster zur Übereinstimmung mit mehreren Dateien. Verwenden Sie 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 einer Batch-Größe von 8. |
Webcam ✅ | 0 |
int |
Index des verbundenen Kamerageräts, auf dem die Inferenz ausgeführt werden soll. |
Nachfolgend finden Sie Codebeispiele für die Verwendung der einzelnen Quelltypen:
Vorhersagequellen
Inferenz für eine Bilddatei ausführen.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define path to the image file
source = "path/to/image.jpg"
# Run inference on the source
results = model(source) # list of Results objects
Inferenz für den aktuellen Bildschirminhalt als Screenshot ausführen.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define current screenshot as source
source = "screen"
# Run inference on the source
results = model(source) # list of Results objects
Inferenz für ein Bild oder Video ausführen, das remote über eine URL gehostet wird.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define remote image or video URL
source = "https://ultralytics.com/images/bus.jpg"
# Run inference on the source
results = model(source) # list of Results objects
Inferenz für ein mit der Python Imaging Library (PIL) geöffnetes Bild ausführen.
from PIL import Image
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Open an image using PIL
source = Image.open("path/to/image.jpg")
# Run inference on the source
results = model(source) # list of Results objects
Inferenz für ein mit OpenCV gelesenes Bild ausführen.
import cv2
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Read an image using OpenCV
source = cv2.imread("path/to/image.jpg")
# Run inference on the source
results = model(source) # list of Results objects
Inferenz für ein Bild ausführen, das als numpy-Array dargestellt wird.
import numpy as np
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Create a random numpy array of HWC shape (640, 640, 3) with values in range [0, 255] and type uint8
source = np.random.randint(low=0, high=255, size=(640, 640, 3), dtype="uint8")
# Run inference on the source
results = model(source) # list of Results objects
Inferenz für ein Bild ausführen, das als PyTorch tensor dargestellt wird.
import torch
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Create a random torch tensor of BCHW shape (1, 3, 640, 640) with values in range [0, 1] and type float32
source = torch.rand(1, 3, 640, 640, dtype=torch.float32)
# Run inference on the source
results = model(source) # list of Results objects
Inferenz für eine Sammlung von Bildern, URLs, Videos und Verzeichnissen ausführen, die in einer CSV-Datei aufgeführt sind.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define a path to a CSV file with images, URLs, videos and directories
source = "path/to/file.csv"
# Run inference on the source
results = model(source) # list of Results objects
Inferenz für eine Videodatei ausführen. Durch die Verwendung von stream=True
können Sie einen Generator von Ergebnisobjekten erstellen, um die Speichernutzung zu reduzieren.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define path to video file
source = "path/to/video.mp4"
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
Inferenz für alle Bilder und Videos in einem Verzeichnis ausführen. Um auch Bilder und Videos in Unterverzeichnissen zu erfassen, verwenden Sie ein Glob-Muster, z. B. path/to/dir/**/*
.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define path to directory containing images and videos for inference
source = "path/to/dir"
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
Inferenz für alle Bilder und Videos ausführen, die mit einem Glob-Ausdruck mit *
Zeichen übereinstimmen.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define a glob search for all JPG files in a directory
source = "path/to/dir/*.jpg"
# OR define a recursive glob search for all JPG files including subdirectories
source = "path/to/dir/**/*.jpg"
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
Inferenz für ein YouTube-Video ausführen. Durch die Verwendung von stream=True
können Sie einen Generator von Ergebnisobjekten erstellen, um die Speichernutzung für lange Videos zu reduzieren.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Define source as YouTube video URL
source = "https://youtu.be/LNwODJXcvt4"
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
Verwenden Sie den Stream-Modus, um die Inferenz für Live-Video-Streams mit RTSP-, RTMP-, TCP- oder IP-Adressprotokollen auszuführen. Wenn ein einzelner Stream bereitgestellt wird, führt das Modell die Inferenz mit einem Batch-Größe von 1 aus. Für mehrere Streams, ein .streams
Eine Textdatei kann verwendet werden, um eine Batch-Inferenz durchzuführen, wobei die Batch-Größe durch die Anzahl der bereitgestellten Streams bestimmt wird (z. B. Batch-Größe 8 für 8 Streams).
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Single stream with batch-size 1 inference
source = "rtsp://example.com/media.mp4" # RTSP, RTMP, TCP, or IP streaming address
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
Bei Verwendung eines einzelnen Streams ist die Batch-Größe standardmäßig auf 1 gesetzt, was eine effiziente Echtzeitverarbeitung des Video-Feeds ermöglicht.
Um mehrere Videostreams gleichzeitig zu verarbeiten, verwenden Sie eine .streams
Textdatei, die die Streaming-Quellen enthält. Das Modell führt eine Batch-Inferenz durch, wobei die Batch-Größe der Anzahl der Streams entspricht. Dieses Setup ermöglicht die effiziente Verarbeitung mehrerer Feeds gleichzeitig.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Multiple streams with batched inference (e.g., batch-size 8 for 8 streams)
source = "path/to/list.streams" # *.streams text file with one streaming address per line
# Run inference on the source
results = model(source, stream=True) # generator of Results objects
Beispiel .streams
Textdatei:
rtsp://example.com/media1.mp4
rtsp://example.com/media2.mp4
rtmp://example2.com/live
tcp://192.168.1.100:554
...
Jede Zeile in der Datei repräsentiert eine Streaming-Quelle, sodass Sie mehrere Videostreams gleichzeitig überwachen und Inferenz darauf ausführen können.
Sie können eine Inferenz auf einem angeschlossenen Kameragerät ausführen, indem Sie den Index dieser bestimmten Kamera an source
.
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Run inference on the source
results = model(source=0, stream=True) # generator of Results objects
Inferenzargumente
model.predict()
akzeptiert mehrere Argumente, die zur Inferenzzeit übergeben werden können, um Standardwerte zu überschreiben:
Beispiel
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Run inference on 'bus.jpg' with arguments
model.predict("https://ultralytics.com/images/bus.jpg", save=True, imgsz=320, conf=0.5)
Inferenzargumente:
Argument | Typ | Standard | Beschreibung |
---|---|---|---|
source |
str |
'ultralytics/assets' |
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. Unterstützt eine breite Palette von Formaten und Quellen und ermöglicht so eine flexible Anwendung über verschiedene Arten von Eingaben hinweg. |
conf |
float |
0.25 |
Legt den minimalen Konfidenzschwellenwert für Erkennungen fest. Objekte, die mit einer Konfidenz unterhalb dieses Schwellenwerts erkannt werden, werden ignoriert. Das Anpassen dieses Werts 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, da überlappende Boxen eliminiert werden, was zur Reduzierung von Duplikaten nützlich ist. |
imgsz |
int oder tuple |
640 |
Definiert die Bildgröße für die Inferenz. Dies kann eine einzelne ganze Zahl 640 für die quadratische Größenänderung oder ein (Höhe, Breite)-Tupel sein. Die richtige Größe kann die Erkennung verbessern Genauigkeit und die Verarbeitungsgeschwindigkeit erhöhen. |
rect |
bool |
True |
Wenn aktiviert, wird die kürzere Seite des Bildes minimal mit Nullen aufgefüllt, bis sie durch den Stride-Wert teilbar ist, um die Inferenzgeschwindigkeit zu verbessern. Wenn deaktiviert, wird das Bild während der Inferenz zu einem Quadrat aufgefüllt. |
half |
bool |
False |
Ermöglicht die Halb-Präzisions-(FP16)-Inferenz, die die Modellinferenz auf unterstützten GPUs mit minimalen Auswirkungen auf die Genauigkeit beschleunigen kann. |
device |
str |
None |
Gibt das Gerät für die Inferenz an (z. B. cpu , cuda:0 oder 0 ). Ermöglicht es Benutzern, zwischen CPU, einer bestimmten GPU 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 .txt Datei definiert). Eine größere Batch-Größe kann einen höheren Durchsatz ermöglichen und die für die Inferenz benötigte Gesamtzeit verkürzen. |
max_det |
int |
300 |
Maximale Anzahl von Erkennungen, die pro Bild zulässig sind. Begrenzt die Gesamtzahl der Objekte, die das Modell in einer einzelnen Inferenz erkennen kann, und verhindert so übermäßige Ausgaben in dichten Szenen. |
vid_stride |
int |
1 |
Frame-Schrittweite 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 eingereiht werden sollen. Wenn False , alte Frames werden verworfen, um Platz für neue Frames zu schaffen (optimiert für Echtzeitanwendungen). Wenn True , reiht neue Frames in einem Puffer ein, wodurch sichergestellt wird, dass keine Frames übersprungen werden, was jedoch zu Latenz führt, wenn die Inferenz-FPS niedriger ist als die Stream-FPS. |
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 das Debugging und die Modellinterpretation. |
augment |
bool |
False |
Aktiviert Testzeit-Augmentierung (TTA) für Vorhersagen, was potenziell die Robustheit der Erkennung auf Kosten der Inferenzgeschwindigkeit verbessert. |
agnostic_nms |
bool |
False |
Aktiviert klassenunabhängige Non-Maximum Suppression (NMS), die überlappende Boxen verschiedener Klassen zusammenführt. Nützlich in Multi-Klassen-Erkennungsszenarien, in denen Klassenüberlappung häufig vorkommt. |
classes |
list[int] |
None |
Filtert Vorhersagen auf eine Menge von Klassen-IDs. Es werden nur Erkennungen zurückgegeben, die zu den angegebenen Klassen gehören. Nützlich, um sich auf relevante Objekte in Multi-Klassen-Erkennungsaufgaben zu konzentrieren. |
retina_masks |
bool |
False |
Gibt hochauflösende Segmentierungsmasken zurück. Die zurückgegebenen Masken (masks.data ) entsprechen der Originalbildgröße, wenn diese aktiviert ist. Wenn sie deaktiviert ist, haben sie die Bildgröße, die während der Inferenz verwendet wurde. |
embed |
list[int] |
None |
Gibt die Layer an, aus denen Feature-Vektoren oder Einbettungen extrahiert werden sollen. Nützlich für nachgelagerte Aufgaben wie Clustering oder Ähnlichkeitssuche. |
project |
str |
None |
Name des Projektverzeichnisses, in dem Vorhersageausgaben gespeichert werden, wenn save aktiviert ist. |
name |
str |
None |
Name des Vorhersagelaufs. Wird zum Erstellen eines Unterverzeichnisses innerhalb des Projektordners verwendet, in dem Vorhersageausgaben gespeichert werden, wenn save aktiviert ist. |
stream |
bool |
False |
Ermöglicht eine speichereffiziente Verarbeitung für lange Videos oder zahlreiche Bilder, indem ein Generator von Ergebnisobjekten zurückgegeben wird, anstatt alle Frames auf einmal in den Speicher zu laden. |
verbose |
bool |
True |
Steuert, ob detaillierte Inferenzprotokolle im Terminal angezeigt werden sollen, um in Echtzeit Feedback zum Vorhersageprozess zu geben. |
Visualisierungsargumente:
Argument | Typ | Standard | Beschreibung |
---|---|---|---|
show |
bool |
False |
Wenn True aktiviert, werden die annotierten Bilder oder Videos in einem Fenster angezeigt. Nützlich für sofortiges visuelles Feedback während der Entwicklung oder des Testens. |
save |
bool |
False or True |
Ermöglicht das Speichern der annotierten Bilder oder Videos in einer Datei. Nützlich für die Dokumentation, weitere Analysen oder das Teilen von Ergebnissen. Standardmäßig auf True gesetzt, wenn die CLI verwendet wird, und auf False, wenn Python verwendet wird. |
save_frames |
bool |
False |
Beim Verarbeiten von Videos werden einzelne Frames als Bilder gespeichert. Nützlich, um bestimmte Frames zu extrahieren oder eine detaillierte Frame-für-Frame-Analyse durchzuführen. |
save_txt |
bool |
False |
Speichert Erkennungsergebnisse in einer Textdatei, wobei folgendes Format verwendet wird: [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. Erweitert die für die Nachbearbeitung und Analyse verfügbaren Details. |
save_crop |
bool |
False |
Speichert zugeschnittene Bilder von Erkennungen. Nützlich für die Datensatzaugmentation, Analyse oder Erstellung fokussierter Datensätze für bestimmte Objekte. |
show_labels |
bool |
True |
Zeigt Beschriftungen für jede Erkennung in der visuellen Ausgabe an. Ermöglicht ein sofortiges Verständnis der erkannten Objekte. |
show_conf |
bool |
True |
Zeigt den Konfidenzwert für jede Erkennung zusammen mit der Beschriftung an. Gibt Einblick in die Sicherheit des Modells für jede Erkennung. |
show_boxes |
bool |
True |
Zeichnet Begrenzungsrahmen um erkannte Objekte. Wesentlich für die visuelle Identifizierung und Lokalisierung von Objekten in Bildern oder Videoframes. |
line_width |
None or int |
None |
Gibt die Linienbreite der Begrenzungsrahmen an. Wenn None , wird die Linienbreite automatisch an die Bildgröße angepasst. Bietet eine visuelle Anpassung für mehr Klarheit. |
Bild- und Videoformate
YOLO11 unterstützt verschiedene Bild- und Videoformate, wie in ultralytics/data/utils.py angegeben. In den Tabellen unten finden Sie die gültigen Suffixe und Beispielbefehle für die Vorhersage.
Bilder
Die folgende Tabelle enthält gültige Ultralytics-Bildformate.
Hinweis
HEIC-Bilder werden nur für die Inferenz unterstützt, nicht für das Training.
Bild-Suffixe | Beispiel für einen Vorhersagebefehl | Referenz |
---|---|---|
.bmp |
yolo predict source=image.bmp |
Microsoft BMP-Dateiformat |
.dng |
yolo predict source=image.dng |
Adobe DNG |
.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 |
.pfm |
yolo predict source=image.pfm |
Portable FloatMap |
.HEIC |
yolo predict source=image.HEIC |
High Efficiency Image Format |
Videos
Die folgende Tabelle enthält gültige Ultralytics-Videoformate.
Video-Suffixe | Beispiel für einen 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:
Ergebnisse
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.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:
Attribut | Typ | Beschreibung |
---|---|---|
orig_img |
np.ndarray |
Das Originalbild als ein NumPy-Array. |
orig_shape |
tuple |
Die Originalbildform im Format (Höhe, Breite). |
boxes |
Boxes, optional |
Ein Boxes-Objekt, das die Begrenzungsrahmen der Erkennung enthält. |
masks |
Masks, optional |
Ein Masks-Objekt, das die Erkennungsmasken enthält. |
probs |
Probs, optional |
Ein Probs-Objekt, das Wahrscheinlichkeiten jeder Klasse für die Klassifizierungsaufgabe enthält. |
keypoints |
Keypoints, optional |
Ein Keypoints-Objekt, das erkannte Keypoints für jedes Objekt enthält. |
obb |
OBB, optional |
Ein OBB-Objekt, das orientierte Begrenzungsrahmen enthält. |
speed |
dict |
Ein Dictionary der Vorverarbeitungs-, Inferenz- und Nachverarbeitungsgeschwindigkeiten in Millisekunden pro Bild. |
names |
dict |
Ein Dictionary, das Klassenindizes Klassennamen zuordnet. |
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 Ergebnisobjekt mit neuen Erkennungsdaten (Boxen, Masken, Wahrscheinlichkeiten, OBB, Keypoints). |
cpu() |
Results |
Gibt eine Kopie des Ergebnisobjekts zurück, wobei alle Tensoren in den CPU-Speicher verschoben wurden. |
numpy() |
Results |
Gibt eine Kopie des Ergebnisobjekts zurück, wobei alle Tensoren in NumPy-Arrays konvertiert wurden. |
cuda() |
Results |
Gibt eine Kopie des Ergebnisobjekts zurück, wobei alle Tensoren in den GPU-Speicher verschoben wurden. |
to() |
Results |
Gibt eine Kopie des Ergebnisobjekts zurück, wobei die Tensoren auf das angegebene Gerät und den Datentyp verschoben wurden. |
new() |
Results |
Erstellt ein neues Results-Objekt mit den gleichen Bild-, Pfad-, Namens- und Geschwindigkeitsattributen. |
plot() |
np.ndarray |
Zeichnet Erkennungsergebnisse auf einem RGB-Eingangsbild und gibt das annotierte Bild zurück. |
show() |
None |
Zeigt das Bild mit annotierten Inferenz-Ergebnissen an. |
save() |
str |
Speichert das Bild mit den annotierten Inferenz-Ergebnissen in einer Datei und gibt den Dateinamen zurück. |
verbose() |
str |
Gibt eine Protokollzeichenfolge für jede Aufgabe zurück, die Details zu Erkennungs- und Klassifizierungsergebnissen enthält. |
save_txt() |
str |
Speichert die 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 Dictionary mit optionaler Normalisierung. |
to_df() |
DataFrame |
Konvertiert die Erkennungsergebnisse in einen Polars DataFrame. |
to_csv() |
str |
Konvertiert Erkennungsergebnisse in das CSV-Format. |
to_json() |
str |
Konvertiert Erkennungsergebnisse in das JSON-Format. |
Weitere Informationen finden Sie in der Results
Klassendokumentation.
Boxen
Boxes
Objekt kann verwendet werden, um Begrenzungsrahmen zu indizieren, zu bearbeiten und in verschiedene Formate zu konvertieren.
Boxen
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.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:
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 im xyxy-Format normalisierten Boxen, anhand der ursprünglichen Bildgröße, zurück. |
xywhn |
Eigenschaft (torch.Tensor ) |
Gibt die im xywh-Format normalisierten Boxen, anhand der ursprünglichen Bildgröße, zurück. |
Weitere Informationen finden Sie in der Boxes
Klassendokumentation.
Masken
Masks
Objekt kann verwendet werden, um Masken zu indizieren, zu manipulieren und in Segmente zu konvertieren.
Masken
from ultralytics import YOLO
# Load a pretrained YOLO11n-seg Segment model
model = YOLO("yolo11n-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:
Name | Typ | Beschreibung |
---|---|---|
cpu() |
Methode | Gibt den Masken-tensor im CPU-Speicher zurück. |
numpy() |
Methode | Gibt den Masken-tensor als ein 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 von normalisierten Segmenten, die als tensors dargestellt werden. |
xy |
Eigenschaft (torch.Tensor ) |
Eine Liste von Segmenten in Pixelkoordinaten, die als tensors dargestellt werden. |
Weitere Informationen finden Sie in der 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 YOLO11n-pose Pose model
model = YOLO("yolo11n-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:
Name | Typ | Beschreibung |
---|---|---|
cpu() |
Methode | Gibt den Keypoints-tensor im CPU-Speicher zurück. |
numpy() |
Methode | Gibt den Keypoints-tensor als ein 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 von normalisierten Keypoints, die als tensors dargestellt werden. |
xy |
Eigenschaft (torch.Tensor ) |
Eine Liste von Keypoints in Pixelkoordinaten, die als tensors dargestellt werden. |
conf |
Eigenschaft (torch.Tensor ) |
Gibt Konfidenzwerte von Keypoints zurück, falls verfügbar, andernfalls None. |
Weitere Informationen finden Sie in der Keypoints
Klassendokumentation.
Wahrscheinlichkeiten
Probs
Objekt kann verwendet werden, um top1
und top5
Indizes und Scores der Klassifizierung zu erhalten.
Wahrscheinlichkeiten
from ultralytics import YOLO
# Load a pretrained YOLO11n-cls Classify model
model = YOLO("yolo11n-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:
Name | Typ | Beschreibung |
---|---|---|
cpu() |
Methode | Gibt eine Kopie des Wahrscheinlichkeits-tensor (probs tensor) im CPU-Speicher zurück. |
numpy() |
Methode | Gibt eine Kopie des Wahrscheinlichkeits-tensor (probs tensor) als ein NumPy-Array zurück. |
cuda() |
Methode | Gibt eine Kopie des Wahrscheinlichkeits-tensor (probs tensor) im GPU-Speicher zurück. |
to() |
Methode | Gibt eine Kopie des Wahrscheinlichkeits-tensor (probs tensor) 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. |
Weitere Informationen finden Sie in der Probs
Klassendokumentation.
OBB
OBB
Objekt kann verwendet werden, um orientierte Begrenzungsrahmen zu indizieren, zu manipulieren und in verschiedene Formate zu konvertieren.
OBB
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n-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:
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 durch die Bildgröße. |
Weitere Informationen finden Sie in der OBB
Klassendokumentation.
Ergebnisse plotten
Die plot()
Methode in Results
Objekten erleichtert die Visualisierung von Vorhersagen, indem erkannte Objekte (wie Begrenzungsrahmen, Masken, Keypoints und Wahrscheinlichkeiten) auf das Originalbild gelegt werden. Diese Methode gibt das annotierte Bild als NumPy-Array zurück, was eine einfache Anzeige oder Speicherung ermöglicht.
Plotten
from PIL import Image
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.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 | Standard |
---|---|---|---|
conf |
bool |
Detektions-Konfidenzwerte einschließen. | True |
line_width |
float |
Linienbreite der Begrenzungsrahmen. Skaliert mit der Bildgröße, falls None . |
None |
font_size |
float |
Text-Schriftgröße. Skaliert mit der Bildgröße, falls None . |
None |
font |
str |
Schriftartname für Text-Annotationen. | 'Arial.ttf' |
pil |
bool |
Gibt das Bild als ein PIL-Bildobjekt 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 schnellere Maskenplotdarstellung. 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 |
Klassenbezeichnungen in Annotationen einschließen. | True |
boxes |
bool |
Überlagere Begrenzungsrahmen auf dem Bild. | True |
masks |
bool |
Überlagere Masken auf dem Bild. | True |
probs |
bool |
Klassifizierungswahrscheinlichkeiten einschließen. | True |
show |
bool |
Zeige das annotierte Bild direkt mit dem Standard-Bildbetrachter an. | False |
save |
bool |
Speichere das annotierte Bild in einer Datei, die durch filename . |
False |
filename |
str |
Pfad und Name der Datei zum Speichern des annotierten Bildes, falls save ist True . |
None |
color_mode |
str |
Spezifiziere den Farbmodus, z.B. 'instance' oder 'class'. | 'class' |
txt_color |
tuple[int, int, int] |
RGB-Textfarbe für Begrenzungsrahmen und Bildklassifizierungsbezeichnung. | (255, 255, 255) |
Threadsichere Inferenz
Die Gewährleistung der Thread-Sicherheit während der Inferenz ist entscheidend, wenn Sie mehrere YOLO-Modelle parallel in verschiedenen Threads ausführen. Thread-sichere Inferenz garantiert, dass die Vorhersagen jedes Threads isoliert sind und sich nicht gegenseitig beeinflussen, wodurch Race Conditions vermieden und konsistente und zuverlässige Ausgaben sichergestellt werden.
Bei der Verwendung von YOLO-Modellen in einer Multi-Thread-Anwendung ist es wichtig, separate Modellobjekte für jeden Thread zu instanziieren oder Thread-lokalen Speicher zu verwenden, um Konflikte zu vermeiden:
Threadsichere Inferenz
Instanziieren Sie 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=("yolo11n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo11n.pt", "image2.jpg")).start()
Für einen detaillierten Einblick in die Thread-sichere Inferenz mit YOLO-Modellen und schrittweise Anleitungen lesen Sie bitte unseren YOLO Thread-Safe Inference Guide. Dieser Leitfaden liefert Ihnen alle notwendigen Informationen, um häufige Fallstricke zu vermeiden und sicherzustellen, dass Ihre Multi-Thread-Inferenz reibungslos läuft.
Streaming-Quelle for
-loop
Hier ist ein python-Skript, das OpenCV (cv2
) und YOLO verwendet, um Inferenz auf Videobildern auszuführen. Dieses Skript setzt voraus, dass Sie die notwendigen Pakete bereits installiert haben (opencv-python
und ultralytics
), oder Auto-Modus mit angegebener Auslastungsfraktion (
Streaming-for-Schleife
import cv2
from ultralytics import YOLO
# Load the YOLO model
model = YOLO("yolo11n.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 jedes Frame des Videos aus, visualisiert die Ergebnisse und zeigt sie in einem Fenster an. Die Schleife kann durch Drücken von 'q' verlassen werden.
FAQ
Was ist Ultralytics YOLO und sein Vorhersagemodus für Echtzeit-Inferenz?
Ultralytics YOLO ist ein hochmodernes Modell für die Echtzeit-Objekterkennung, -segmentierung und -klassifizierung. Sein Vorhersagemodus ermöglicht es Benutzern, Hochgeschwindigkeitsinferenzen auf verschiedenen Datenquellen wie Bildern, Videos und Live-Streams durchzuführen. Es wurde für Leistung und Vielseitigkeit entwickelt und bietet auch Batch-Verarbeitungs- und Streaming-Modi. Weitere Informationen zu den Funktionen finden Sie im Ultralytics YOLO Vorhersagemodus.
Wie kann ich Inferenz mit Ultralytics YOLO auf verschiedenen Datenquellen ausführen?
Ultralytics YOLO kann eine breite Palette von Datenquellen verarbeiten, darunter einzelne Bilder, Videos, Verzeichnisse, URLs und Streams. Sie können die Datenquelle im model.predict()
Aufruf angeben. Verwenden Sie beispielsweise 'image.jpg'
für ein lokales Bild oder 'https://ultralytics.com/images/bus.jpg'
für eine URL. Sehen Sie sich die detaillierten Beispiele für verschiedene Inferenzquellen in der Dokumentation an.
Wie optimiere ich die YOLO-Inferenzgeschwindigkeit und Speichernutzung?
Um die Inferenzgeschwindigkeit zu optimieren und den Speicher effizient zu verwalten, können Sie den Streaming-Modus verwenden, indem Sie stream=True
in der Aufrufmethode des Prädiktors festlegen. 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. Erfahren Sie 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. Mit diesen Argumenten können Sie den Inferenzprozess anpassen und Parameter wie Konfidenzschwellenwerte, Bildgröße und das für die Berechnung verwendete Gerät festlegen. Detaillierte Beschreibungen dieser Argumente finden Sie im Abschnitt Inferenzargumente. Abschnitt.
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 von annotierten Bildern. Sie können Methoden wie result.show()
und result.save(filename="result.jpg")
verwenden, um die Ergebnisse zu visualisieren und zu speichern. Eine umfassende Liste dieser Methoden finden Sie unter Arbeiten mit Ergebnissen. Abschnitt.