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, 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
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 Sie stream=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=Falseist, 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=Truekö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=Truekö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 Trueaktiviert, 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, deviceund 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.



📅 Erstellt vor 1 Jahr ✏️ Aktualisiert vor 5 Tagen

Kommentare