Modellvorhersage mit Ultralytics YOLO
Einführung
In der Welt des maschinellen Lernens und der Computer-Vision wird der Prozess, aus visuellen Daten einen Sinn zu machen, als "Inferenz" oder "Vorhersage" bezeichnet. Ultralytics YOLO11 bietet eine leistungsstarke Funktion, die als Vorhersagemodus bekannt ist und für hochleistungsfähige Echtzeit-Inferenzen für eine Vielzahl von Datenquellen zugeschnitten ist.
Beobachten: Extrahieren der Ausgaben aus Ultralytics YOLO Modell für benutzerdefinierte Projekte.
Anwendungen in der realen Welt
Herstellung | Sport | Sicherheit |
---|---|---|
Erkennung von Fahrzeugersatzteilen | Fußballspieler-Erkennung | Erkennung von Personenstürzen |
Warum Ultralytics YOLO für Schlussfolgerungen verwenden?
Im Folgenden erfahren Sie, warum Sie den Vorhersagemodus von YOLO11 für Ihre verschiedenen Inferenzanforderungen in Betracht ziehen sollten:
- Vielseitigkeit: Sie können Rückschlüsse auf Bilder, Videos und sogar Live-Streams ziehen.
- Leistung: Entwickelt für Echtzeit-Hochgeschwindigkeitsverarbeitung ohne Abstriche bei der Genauigkeit.
- Benutzerfreundlichkeit: Intuitive Schnittstellen Python und CLI für eine schnelle Bereitstellung und Prüfung.
- Hochgradig anpassbar: Verschiedene Einstellungen und Parameter, um das Inferenzverhalten des Modells auf Ihre spezifischen Anforderungen abzustimmen.
Hauptmerkmale des Vorhersagemodus
YOLO11Der Vorhersagemodus ist robust und vielseitig und bietet folgende Funktionen:
- Kompatibilität mit mehreren Datenquellen: Unabhängig davon, ob es sich bei Ihren Daten um einzelne Bilder, eine Sammlung von Bildern, Videodateien oder Echtzeit-Videoströme handelt, ist der Vorhersagemodus für Sie geeignet.
- Streaming-Modus: Verwenden Sie die Streaming-Funktion, um einen speichereffizienten Generator von
Results
Objekte. Aktivieren Sie dies durch die Einstellungstream=True
in der Aufrufmethode des Prädiktors. - Stapelverarbeitung: Die Möglichkeit, mehrere Bilder oder Videoframes in einem einzigen Stapel zu verarbeiten, was die Inferenzzeit weiter beschleunigt.
- Integrationsfreundlich: Einfache Integration in bestehende Datenpipelines und andere Softwarekomponenten dank der flexiblen API.
Ultralytics YOLO Modelle geben entweder eine Python Liste von Results
Objekte oder einen speichereffizienten Python Generator von Results
Objekte, wenn stream=True
wird während der Inferenz an das Modell übergeben:
Vorhersage
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
Quellen für Schlussfolgerungen
YOLO11 kann verschiedene Arten von Eingabequellen für Schlussfolgerungen verarbeiten, wie in der folgenden Tabelle dargestellt. Zu den Quellen gehören statische Bilder, Videoströme und verschiedene Datenformate. Die Tabelle zeigt auch, ob jede Quelle im Streaming-Modus mit dem Argument stream=True
✅. Der Streaming-Modus ist vorteilhaft für die Verarbeitung von Videos oder Live-Streams, da er einen Generator von Ergebnissen erzeugt, anstatt alle Bilder 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
werden die Ergebnisse für alle Bilder 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 hält, was den Speicherverbrauch erheblich reduziert und Out-of-Memory-Probleme verhindert.
Quelle | Beispiel | Typ | Anmerkungen |
---|---|---|---|
Bild | 'image.jpg' |
str oder Path |
Einzelne Bilddatei. |
URL | 'https://ultralytics.com/images/bus.jpg' |
str |
URL zu einem Bild. |
Bildschirmfoto | 'screen' |
str |
Erfassen 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 mit Pfaden zu Bildern, Videos oder Verzeichnissen. |
Video ✅ | 'video.mp4' |
str oder Path |
Videodatei in Formaten wie MP4, AVI, etc. |
Verzeichnis ✅ | 'path/' |
str oder Path |
Pfad zu einem Verzeichnis, das Bilder oder Videos enthält. |
glob ✅ | 'path/*.jpg' |
str |
Glob-Muster, um mehrere Dateien abzugleichen. Verwenden Sie die * Zeichen als Platzhalter. |
YouTube ✅ | 'https://youtu.be/LNwODJXcvt4' |
str |
URL zu einem YouTube-Video. |
Strom ✅ | '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 werden bei Batch-Größe 8 ausgeführt. |
webcam ✅ | 0 |
int |
Index des angeschlossenen Kamerageräts, auf dem die Inferenz ausgeführt werden soll. |
Im Folgenden finden Sie Codebeispiele für die Verwendung der einzelnen Quellentypen:
Quellen der Vorhersage
Inferenz auf eine Bilddatei anwenden.
Inferenz auf den aktuellen Bildschirminhalt als Screenshot ausführen.
Führen Sie Inferenzen für ein Bild oder ein Video durch, das über eine URL gehostet wird.
Führen Sie die Inferenz für ein mit Python Imaging Library (PIL) geöffnetes Bild durch.
Inferenz auf ein mit OpenCV gelesenes Bild anwenden.
Inferenz auf ein als Numpy-Array dargestelltes Bild ausführen.
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 auf ein Bild, das als PyTorch tensor.
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
Führen Sie Inferenzen auf einer Sammlung von Bildern, URLs, Videos und Verzeichnissen durch, die in einer CSV-Datei aufgeführt sind.
Inferenz auf eine Videodatei anwenden. Unter Verwendung stream=True
können Sie einen Generator für Ergebnisobjekte erstellen, um den Speicherbedarf zu verringern.
Führen Sie die Inferenz für alle Bilder und Videos in einem Verzeichnis aus. Um auch Bilder und Videos in Unterverzeichnissen zu erfassen, verwenden Sie ein glob-Muster, d. h. path/to/dir/**/*
.
Inferenz auf alle Bilder und Videos anwenden, die mit einem globalen Ausdruck mit *
Zeichen.
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 auf ein YouTube-Video anwenden. Unter Verwendung stream=True
können Sie einen Generator für Ergebnisobjekte erstellen, um den Speicherbedarf für lange Videos zu verringern.
Verwenden Sie den Stream-Modus, um Inferenzen auf Live-Videostreams mit RTSP-, RTMP-, TCP- oder IP-Adressprotokollen durchzuführen. Wenn ein einzelner Stream bereitgestellt wird, führt das Modell eine Inferenz mit einer Chargengröße von 1. Bei mehreren Strömen wird ein .streams
Textdatei kann verwendet werden, um eine Batch-Inferenz durchzuführen, wobei die Batchgröß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 der Verwendung von Einzelstreams ist die Stapelgröße standardmäßig auf 1 eingestellt, was eine effiziente Echtzeitverarbeitung des Videofeeds ermöglicht.
Um mehrere Videoströme gleichzeitig zu verarbeiten, verwenden Sie eine .streams
Textdatei, die die Streaming-Quellen enthält. Das Modell führt eine Stapelverarbeitung durch, wobei die Stapelgröße der Anzahl der Streams entspricht. Dieser Aufbau ermöglicht eine 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 steht für eine Streaming-Quelle, so dass Sie mehrere Videoströme gleichzeitig überwachen und ableiten können.
Sie können eine Inferenz für ein angeschlossenes Kameragerät durchführen, indem Sie den Index dieser bestimmten Kamera an source
.
Inferenz-Argumente
model.predict()
akzeptiert mehrere Argumente, die zum Zeitpunkt der Inferenz übergeben werden können, um die Standardwerte zu überschreiben:
Beispiel
Argumente für Schlussfolgerungen:
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 für verschiedene Arten von Eingaben. |
conf |
float |
0.25 |
Legt die minimale Vertrauensschwelle für Erkennungen fest. Objekte, die mit einer Konfidenzschwelle unterhalb dieser Schwelle erkannt werden, werden nicht berücksichtigt. Die Anpassung dieses Wertes kann dazu beitragen, Fehlalarme 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 or tuple |
640 |
Bestimmt die Bildgröße für die Inferenz. Kann eine einzelne ganze Zahl sein 640 für quadratische Größenänderungen oder ein Tupel (Höhe, Breite). Eine korrekte Größenanpassung kann die Erkennung verbessern Genauigkeit und Verarbeitungsgeschwindigkeit. |
half |
bool |
False |
Ermöglicht die Inferenz mit halber Genauigkeit (FP16), was 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 dem Benutzer die Auswahl zwischen CPU, einem bestimmten GPU oder anderen Rechengeräten für die Modellausführung. |
max_det |
int |
300 |
Maximal zulässige Anzahl von Erkennungen pro Bild. Begrenzt die Gesamtzahl der Objekte, die das Modell in einer einzigen Schlussfolgerung erkennen kann, um übermäßige Ausgaben in dichten Szenen zu verhindern. |
vid_stride |
int |
1 |
Frame Stride für Videoeingänge. Ermöglicht das Überspringen von Bildern in Videos, um die Verarbeitung auf Kosten der zeitlichen Auflösung zu beschleunigen. Bei einem Wert von 1 wird jedes Bild verarbeitet, bei höheren Werten werden Bilder übersprungen. |
stream_buffer |
bool |
False |
Legt fest, ob eingehende Bilder für Videostreams in eine Warteschlange gestellt werden sollen. Wenn False Wenn `True', werden alte Frames übersprungen, um neue Frames unterzubringen (optimiert für Echtzeitanwendungen). Bei "True" werden neue Frames in einem Puffer in eine Warteschlange gestellt, wodurch sichergestellt wird, dass keine Frames übersprungen werden, was jedoch zu Latenzzeiten führt, wenn die FPS der Inferenz niedriger sind als die FPS des Streams. |
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 die Fehlersuche und Modellinterpretation. |
augment |
bool |
False |
Ermöglicht die Testzeit-Erweiterung (TTA) für Vorhersagen, wodurch die Robustheit der Erkennung auf Kosten der Schlussfolgerungsgeschwindigkeit verbessert werden kann. |
agnostic_nms |
bool |
False |
Ermöglicht die klassenunabhängige Non-Maximum Suppression (NMS), die überlappende Boxen verschiedener Klassen zusammenführt. Nützlich in Szenarien der Mehrklassenerkennung, in denen es häufig zu Klassenüberschneidungen kommt. |
classes |
list[int] |
None |
Filtert Vorhersagen auf einen Satz von Klassen-IDs. Nur Erkennungen, die zu den angegebenen Klassen gehören, werden zurückgegeben. Nützlich für die Konzentration auf relevante Objekte bei Erkennungsaufgaben mit mehreren Klassen. |
retina_masks |
bool |
False |
Gibt hochauflösende Segmentierungsmasken zurück. Die zurückgegebenen Masken (masks.data ) stimmen mit der ursprünglichen Bildgröße überein, wenn sie aktiviert sind. Wenn sie deaktiviert sind, haben sie die bei der Inferenz verwendete Bildgröße. |
embed |
list[int] |
None |
Gibt die Ebenen an, aus denen Merkmalsvektoren oder Einbettungen extrahiert werden sollen. Nützlich für nachgelagerte Aufgaben wie Clustering oder Ähnlichkeitssuche. |
project |
str |
None |
Name des Projektverzeichnisses, in dem die Vorhersageergebnisse gespeichert werden, wenn save aktiviert ist. |
name |
str |
None |
Name des Vorhersagelaufs. Wird zur Erstellung eines Unterverzeichnisses im Projektordner verwendet, in dem die Vorhersageergebnisse gespeichert werden, wenn save aktiviert ist. |
Argumente für die Visualisierung:
Argument | Typ | Standard | Beschreibung |
---|---|---|---|
show |
bool |
False |
Wenn True zeigt die kommentierten Bilder oder Videos in einem Fenster an. Nützlich für sofortiges visuelles Feedback während der Entwicklung oder des Testens. |
save |
bool |
False oder True |
Ermöglicht das Speichern der kommentierten Bilder oder Videos in einer Datei. Nützlich für die Dokumentation, weitere Analysen oder die Weitergabe von Ergebnissen. Standardmäßig True bei Verwendung von CLI und False bei Verwendung in Python. |
save_frames |
bool |
False |
Speichert bei der Verarbeitung von Videos einzelne Frames als Bilder. Nützlich zum Extrahieren bestimmter Frames oder für eine detaillierte Frame-by-Frame-Analyse. |
save_txt |
bool |
False |
Speichert die Erkennungsergebnisse in einer Textdatei, die das folgende Format hat [class] [x_center] [y_center] [width] [height] [confidence] . Nützlich für die Integration mit anderen Analysetools. |
save_conf |
bool |
False |
Enthält Konfidenzwerte in den gespeicherten Textdateien. Verbessert die für die Nachbearbeitung und Analyse verfügbaren Details. |
save_crop |
bool |
False |
Speichert abgeschnittene Bilder von Erkennungen. Nützlich für die Erweiterung von Datensätzen, die Analyse oder die Erstellung gezielter 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 neben der Kennzeichnung auch den Konfidenzwert für jede Erkennung an. Gibt einen Einblick in die Sicherheit des Modells für jede Erkennung. |
show_boxes |
bool |
True |
Zeichnet Begrenzungsrahmen um erkannte Objekte. Unerlässlich für die visuelle Identifizierung und Lokalisierung von Objekten in Bildern oder Videoframes. |
line_width |
None oder int |
None |
Gibt die Linienbreite von Begrenzungsrahmen an. Wenn None wird die Linienbreite automatisch an die Bildgröße angepasst. Bietet visuelle Anpassung für Klarheit. |
Bild- und Videoformate
YOLO11 unterstützt verschiedene Bild- und Videoformate, wie in ultralytics/data/utils .py angegeben. In den nachstehenden Tabellen finden Sie die gültigen Suffixe und Beispiele für Vorhersagebefehle.
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 Predict-Befehl | 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 |
Mehrfachbild-Objekt |
.png |
yolo predict source=image.png |
Portable Netzwerk-Grafiken |
.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 |
Tragbare FloatMap |
.HEIC |
yolo predict source=image.HEIC |
Hocheffizientes Bildformat |
Videos
Die folgende Tabelle enthält gültige Ultralytics Videoformate.
Video-Suffixe | Beispiel Predict-Befehl | Referenz |
---|---|---|
.asf |
yolo predict source=video.asf |
Erweiterte Systeme Format |
.avi |
yolo predict source=video.avi |
Audio-Video-Verschachtelung |
.gif |
yolo predict source=video.gif |
Grafik-Austauschformat |
.m4v |
yolo predict source=video.m4v |
MPEG-4 Teil 14 |
.mkv |
yolo predict source=video.mkv |
Matroska |
.mov |
yolo predict source=video.mov |
QuickTime-Dateiformat |
.mp4 |
yolo predict source=video.mp4 |
MPEG-4 Teil 14 - Wikipedia |
.mpeg |
yolo predict source=video.mpeg |
MPEG-1 Teil 2 |
.mpg |
yolo predict source=video.mpg |
MPEG-1 Teil 2 |
.ts |
yolo predict source=video.ts |
MPEG-Transportstrom |
.wmv |
yolo predict source=video.wmv |
Windows Media Video |
.webm |
yolo predict source=video.webm |
WebM-Projekt |
Arbeiten mit Ergebnissen
Alle Ultralytics predict()
Aufrufe geben eine Liste von Results
Objekte:
Ergebnisse
Results
Objekte haben die folgenden Attribute:
Attribut | Typ | Beschreibung |
---|---|---|
orig_img |
numpy.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 Boundingboxen der Erkennung enthält. |
masks |
Masks, optional |
Ein Masken-Objekt, das die Erkennungsmasken enthält. |
probs |
Probs, optional |
Ein Probs-Objekt, das die Wahrscheinlichkeiten der einzelnen Klassen 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 Begrenzungsrahmen enthält. |
speed |
dict |
Ein Wörterbuch der Vorverarbeitungs-, Ableitungs- und Nachverarbeitungsgeschwindigkeiten in Millisekunden pro Bild. |
names |
dict |
Ein Wörterbuch mit Klassennamen. |
path |
str |
Der Pfad zur Bilddatei. |
Results
Objekte haben die folgenden Methoden:
Methode | Rückgabe Typ | Beschreibung |
---|---|---|
update() |
None |
Aktualisieren Sie die Attribute Boxen, Masken und Probs des Ergebnisobjekts. |
cpu() |
Results |
Rückgabe einer Kopie des Results-Objekts mit allen Tensoren auf CPU memory. |
numpy() |
Results |
Gibt eine Kopie des Results-Objekts mit allen Tensoren als Numpy-Arrays zurück. |
cuda() |
Results |
Rückgabe einer Kopie des Results-Objekts mit allen Tensoren auf GPU memory. |
to() |
Results |
Gibt eine Kopie des Results-Objekts mit Tensoren auf dem angegebenen Gerät und dtype zurück. |
new() |
Results |
Gibt ein neues Ergebnisobjekt mit demselben Bild, Pfad und Namen zurück. |
plot() |
numpy.ndarray |
Stellt die Erkennungsergebnisse dar. Gibt ein Numpy-Array mit dem kommentierten Bild zurück. |
show() |
None |
Anzeige der kommentierten Ergebnisse auf dem Bildschirm. |
save() |
None |
Speichern Sie die kommentierten Ergebnisse in einer Datei. |
verbose() |
str |
Rückgabe der Protokollzeichenfolge für jede Aufgabe. |
save_txt() |
None |
Speichern Sie die Vorhersagen in einer txt-Datei. |
save_crop() |
None |
Ausgeschnittene Vorhersagen speichern in save_dir/cls/file_name.jpg . |
tojson() |
str |
Konvertiert das Objekt in das JSON-Format. |
Weitere Einzelheiten finden Sie in der Results
Klassendokumentation.
Boxen
Boxes
Objekt kann zum Indizieren, Manipulieren und Konvertieren von Bounding Boxes in verschiedene Formate verwendet werden.
Boxen
Hier ist eine Tabelle für die Boxes
Methoden und Eigenschaften der Klasse, einschließlich ihres Namens, Typs und ihrer Beschreibung:
Name | Typ | Beschreibung |
---|---|---|
cpu() |
Methode | Verschieben Sie das Objekt in den Speicher CPU . |
numpy() |
Methode | Konvertiert das Objekt in ein Numpy-Array. |
cuda() |
Methode | Verschieben Sie das Objekt in den Speicher CUDA . |
to() |
Methode | Verschiebt das Objekt auf das angegebene Gerät. |
xyxy |
Eigenschaft (torch.Tensor ) |
Gibt die Felder im Format xyxy 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 ) |
Rückgabe der Track-IDs der Boxen (falls vorhanden). |
xywh |
Eigenschaft (torch.Tensor ) |
Rückgabe der Felder im Format xywh. |
xyxyn |
Eigenschaft (torch.Tensor ) |
Rückgabe der Boxen im Format xyxy, normalisiert auf die ursprüngliche Bildgröße. |
xywhn |
Eigenschaft (torch.Tensor ) |
Rückgabe der Boxen im xywh-Format, normalisiert auf die ursprüngliche Bildgröße. |
Weitere Einzelheiten finden Sie in der Boxes
Klassendokumentation.
Masken
Masks
Objekt kann zum Indizieren, Manipulieren und Konvertieren von Masken in Segmente verwendet werden.
Masken
Hier ist eine Tabelle für die Masks
Methoden und Eigenschaften der Klasse, einschließlich ihres Namens, Typs und ihrer Beschreibung:
Name | Typ | Beschreibung |
---|---|---|
cpu() |
Methode | Gibt die Masken tensor auf CPU Speicher zurück. |
numpy() |
Methode | Gibt die Masken tensor als Numpy-Array zurück. |
cuda() |
Methode | Gibt die Masken tensor auf GPU Speicher zurück. |
to() |
Methode | Gibt die Masken tensor mit dem angegebenen Gerät und dtype zurück. |
xyn |
Eigenschaft (torch.Tensor ) |
Eine Liste von normalisierten Segmenten, die als Tensoren dargestellt werden. |
xy |
Eigenschaft (torch.Tensor ) |
Eine Liste von Segmenten in Pixelkoordinaten, die als Tensoren dargestellt werden. |
Weitere Einzelheiten finden Sie in der Masks
Klassendokumentation.
Stichpunkte
Keypoints
Objekt kann zum Indizieren, Manipulieren und Normalisieren von Koordinaten verwendet werden.
Stichpunkte
Hier ist eine Tabelle für die Keypoints
Methoden und Eigenschaften der Klasse, einschließlich ihres Namens, Typs und ihrer Beschreibung:
Name | Typ | Beschreibung |
---|---|---|
cpu() |
Methode | Gibt die Keypoints tensor auf CPU zurück. |
numpy() |
Methode | Gibt die Keypoints tensor als Numpy-Array zurück. |
cuda() |
Methode | Gibt die Keypoints tensor auf GPU zurück. |
to() |
Methode | Gibt die Keypoints tensor mit dem angegebenen Gerät und dtype zurück. |
xyn |
Eigenschaft (torch.Tensor ) |
Eine Liste normalisierter Keypoints, die als Tensoren dargestellt werden. |
xy |
Eigenschaft (torch.Tensor ) |
Eine Liste von Keypoints in Pixelkoordinaten, die als Tensoren dargestellt werden. |
conf |
Eigenschaft (torch.Tensor ) |
Gibt Konfidenzwerte von Keypoints zurück, falls vorhanden, sonst keine. |
Weitere Einzelheiten finden Sie in der Keypoints
Klassendokumentation.
Probs
Probs
Objekt kann verwendet werden index, get top1
und top5
Indizes und Punktzahlen der Klassifizierung.
Probs
Die folgende Tabelle fasst die Methoden und Eigenschaften für die Probs
Klasse:
Name | Typ | Beschreibung |
---|---|---|
cpu() |
Methode | Gibt eine Kopie der Probs tensor auf CPU Speicher zurück. |
numpy() |
Methode | Gibt eine Kopie der Probs tensor als Numpy-Array zurück. |
cuda() |
Methode | Gibt eine Kopie der Probs tensor auf GPU Speicher zurück. |
to() |
Methode | Gibt eine Kopie von probs tensor mit dem angegebenen Gerät und dtype zurück. |
top1 |
Eigenschaft (int ) |
Index der ersten 1 Klasse. |
top5 |
Eigenschaft (list[int] ) |
Indizes der 5 wichtigsten Klassen. |
top1conf |
Eigenschaft (torch.Tensor ) |
Vertrauen in die Top 1 Klasse. |
top5conf |
Eigenschaft (torch.Tensor ) |
Vertraulichkeiten der 5 besten Klassen. |
Weitere Einzelheiten finden Sie in der Probs
Klassendokumentation.
OBB
OBB
Objekt kann zum Indizieren, Manipulieren und Konvertieren von orientierten Boundingboxen in verschiedene Formate verwendet werden.
OBB
Hier ist eine Tabelle für die OBB
Methoden und Eigenschaften der Klasse, einschließlich ihres Namens, Typs und ihrer Beschreibung:
Name | Typ | Beschreibung |
---|---|---|
cpu() |
Methode | Verschieben Sie das Objekt in den Speicher CPU . |
numpy() |
Methode | Konvertiert das Objekt in ein Numpy-Array. |
cuda() |
Methode | Verschieben Sie das Objekt in den Speicher CUDA . |
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 ) |
Rückgabe der Track-IDs der Boxen (falls vorhanden). |
xyxy |
Eigenschaft (torch.Tensor ) |
Gibt die horizontalen Felder im Format xyxy zurück. |
xywhr |
Eigenschaft (torch.Tensor ) |
Gibt die gedrehten Boxen im xywhr-Format zurück. |
xyxyxyxy |
Eigenschaft (torch.Tensor ) |
Gibt die gedrehten Boxen im Format xyxyxyxy zurück. |
xyxyxyxyn |
Eigenschaft (torch.Tensor ) |
Rückgabe der gedrehten Boxen im Format xyxyxyxy, normalisiert auf die Bildgröße. |
Weitere Einzelheiten finden Sie in der OBB
Klassendokumentation.
Ergebnisse grafisch darstellen
Die plot()
Methode in Results
Objekte erleichtert die Visualisierung von Vorhersagen durch Überlagerung der erkannten Objekte (wie Bounding Boxes, Masken, Keypoints und Wahrscheinlichkeiten) mit dem Originalbild. Diese Methode gibt das kommentierte Bild als NumPy-Array zurück, das sich leicht anzeigen oder speichern lässt.
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(["bus.jpg", "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()
Parameter der Methode
Die plot()
Methode unterstützt verschiedene Argumente zur Anpassung der Ausgabe:
Argument | Typ | Beschreibung | Standard |
---|---|---|---|
conf |
bool |
Fügen Sie die Konfidenzwerte für die Erkennung ein. | True |
line_width |
float |
Linienbreite der Begrenzungsrahmen. Skaliert mit der Bildgröße, wenn None . |
None |
font_size |
float |
Schriftgröße des Textes. Skaliert mit der Bildgröße, wenn None . |
None |
font |
str |
Name der Schriftart für Textanmerkungen. | 'Arial.ttf' |
pil |
bool |
Rückgabe des Bildes als PIL Image Objekt. | False |
img |
numpy.ndarray |
Alternatives Bild zum Plotten. Verwendet das Originalbild, wenn None . |
None |
im_gpu |
torch.Tensor |
GPU-beschleunigtes Bild für schnelleres Plotten der Maske. Form: (1, 3, 640, 640). | None |
kpt_radius |
int |
Radius für gezeichnete Keypoints. | 5 |
kpt_line |
bool |
Verbinden Sie Eckpunkte mit Linien. | True |
labels |
bool |
Aufnahme von Klassenbezeichnungen in Anmerkungen. | True |
boxes |
bool |
Boundingboxen auf dem Bild überlagern. | True |
masks |
bool |
Überlagern Sie Masken auf dem Bild. | True |
probs |
bool |
Klassifizierungswahrscheinlichkeiten einbeziehen. | True |
show |
bool |
Zeigen Sie das mit Anmerkungen versehene Bild direkt mit dem Standard-Bildbetrachter an. | False |
save |
bool |
Speichern Sie das mit Anmerkungen versehene Bild in einer Datei, die durch filename . |
False |
filename |
str |
Pfad und Name der Datei, in der das mit Anmerkungen versehene Bild gespeichert werden soll, wenn save ist True . |
None |
color_mode |
str |
Geben Sie den Farbmodus an, z. B. "Instanz" oder "Klasse". | 'class' |
Thread-sichere Inferenz
Die Gewährleistung der Thread-Sicherheit während der Inferenz ist von entscheidender Bedeutung, wenn Sie mehrere YOLO Modelle parallel in verschiedenen Threads ausführen. Threadsichere Inferenz garantiert, dass die Vorhersagen der einzelnen Threads isoliert sind und sich nicht gegenseitig beeinflussen, wodurch Race Conditions vermieden und konsistente und zuverlässige Ergebnisse gewährleistet 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-lokale Speicherung zu verwenden, um Konflikte zu vermeiden:
Thread-sichere Inferenz
Instanziierung eines einzigen Modells in jedem Thread 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=("yolo11n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo11n.pt", "image2.jpg")).start()
Einen detaillierten Einblick in die thread-sichere Inferenz mit YOLO Modellen und eine schrittweise Anleitung finden Sie in unserem YOLO Leitfaden für thread-sichere Inferenz. In diesem Leitfaden finden Sie alle notwendigen Informationen, um häufige Fallstricke zu vermeiden und sicherzustellen, dass Ihre Multithreading-Inferenz reibungslos funktioniert.
Streaming-Quelle for
-Schleife
Hier ist ein Python Skript, das OpenCV (cv2
) und YOLO , um die Inferenz auf Videobilder anzuwenden. Dieses Skript setzt voraus, dass Sie die notwendigen Pakete bereits installiert haben (opencv-python
und ultralytics
).
Streaming for-loop
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 für jedes Einzelbild des Videos Vorhersagen durch, 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 die Erkennung, Segmentierung und Klassifizierung von Objekten in Echtzeit. Sein Vorhersagemodus ermöglicht es den Nutzern, Hochgeschwindigkeitsinferenzen auf verschiedenen Datenquellen wie Bildern, Videos und Live-Streams durchzuführen. Das auf Leistung und Vielseitigkeit ausgelegte Programm bietet auch Stapelverarbeitungs- und Streaming-Modi. Weitere Einzelheiten zu den Funktionen finden Sie unter Ultralytics YOLO predict mode.
Wie kann ich mit Ultralytics YOLO aus verschiedenen Datenquellen Schlüsse ziehen?
Ultralytics YOLO kann eine breite Palette von Datenquellen verarbeiten, darunter einzelne Bilder, Videos, Verzeichnisse, URLs und Streams. Sie können die Datenquelle in der model.predict()
aufrufen. Verwenden Sie zum Beispiel 'image.jpg'
für ein lokales Bild oder 'https://ultralytics.com/images/bus.jpg'
für eine URL. Sehen Sie sich die ausführlichen Beispiele für verschiedene Inferenzquellen in der Dokumentation.
Wie kann ich die Geschwindigkeit und den Speicherverbrauch von YOLO optimieren?
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. Der Streaming-Modus erzeugt einen speichereffizienten Generator von Results
Objekte, anstatt alle Bilder 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 Streaming-Modus.
Welche Schlussfolgerungsargumente werden von Ultralytics YOLO unterstützt?
Die model.predict()
Methode in YOLO unterstützt verschiedene Argumente wie conf
, iou
, imgsz
, device
und mehr. Mit diesen Argumenten können Sie den Schlussfolgerungsprozess anpassen und Parameter wie Vertrauensschwellen, Bildgröße und das für die Berechnung verwendete Gerät festlegen. Ausführliche Beschreibungen dieser Argumente finden Sie in der Schlussfolgerungsargumente Abschnitt.
Wie kann ich die Ergebnisse der YOLO Vorhersagen visualisieren und speichern?
Nachdem die Inferenz mit YOLO durchgeführt wurde, wird die Results
Objekte enthalten Methoden zum Anzeigen und Speichern von Bildern mit Anmerkungen. Sie können Methoden verwenden wie result.show()
und result.save(filename="result.jpg")
um die Ergebnisse zu visualisieren und zu speichern. Eine umfassende Liste dieser Methoden finden Sie in der Arbeit mit Ergebnissen Abschnitt.