Zum Inhalt springen

Modellvorhersage mit Ultralytics YOLO

Ultralytics YOLO Ökosystem und Integrationen

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
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 Einstellung stream=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=Falsewerden 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.

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 auf 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

Führen Sie Inferenzen für ein Bild oder ein Video durch, das ü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

Führen Sie die Inferenz für ein mit Python Imaging Library (PIL) geöffnetes Bild durch.

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 auf ein mit OpenCV gelesenes Bild anwenden.

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 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.

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 auf eine Videodatei anwenden. Unter Verwendung stream=Truekönnen Sie einen Generator für Ergebnisobjekte erstellen, um den Speicherbedarf zu verringern.

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

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/**/*.

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 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=Truekönnen Sie einen Generator für Ergebnisobjekte erstellen, um den Speicherbedarf für lange Videos zu verringern.

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 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.

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

Inferenz-Argumente

model.predict() akzeptiert mehrere Argumente, die zum Zeitpunkt der Inferenz übergeben werden können, um die 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("bus.jpg", save=True, imgsz=320, conf=0.5)

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.
batch int 1 Gibt die Losgröße für die Inferenz an (funktioniert nur, wenn die Quelle ein Verzeichnis, eine Videodatei oder .txt Datei). Eine größere Batchgröße kann einen höheren Durchsatz ermöglichen und die für die Inferenz benötigte Gesamtzeit verkürzen.
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 FalseWenn `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 Truezeigt 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 Nonewird 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

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on an image
results = model("bus.jpg")  # list of 1 Results object
results = model(["bus.jpg", "zidane.jpg"])  # list of 2 Results objects

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

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on an image
results = model("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 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

from ultralytics import YOLO

# Load a pretrained YOLO11n-seg Segment model
model = YOLO("yolo11n-seg.pt")

# Run inference on an image
results = model("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 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

from ultralytics import YOLO

# Load a pretrained YOLO11n-pose Pose model
model = YOLO("yolo11n-pose.pt")

# Run inference on an image
results = model("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 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

from ultralytics import YOLO

# Load a pretrained YOLO11n-cls Classify model
model = YOLO("yolo11n-cls.pt")

# Run inference on an image
results = model("bus.jpg")  # results list

# View results
for r in results:
    print(r.probs)  # print the Probs object containing the detected class probabilities

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

from ultralytics import YOLO

# Load a pretrained YOLO11n model
model = YOLO("yolo11n-obb.pt")

# Run inference on an image
results = model("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 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, deviceund 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.

📅 Erstellt vor 1 Jahr ✏️ Aktualisiert vor 1 Monat

Kommentare