Zum Inhalt springen

Modell Vorhersage 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 YOLOv8 bietet eine leistungsstarke Funktion, den so genannten Vorhersagemodus, der f├╝r hochleistungsf├Ąhige Echtzeit-Inferenzen aus einer Vielzahl von Datenquellen zugeschnitten ist.



Pass auf: Wie man die Ergebnisse aus dem Ultralytics YOLOv8 Modell f├╝r eigene Projekte extrahiert.

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 nutzen?

Hier erf├Ąhrst du, warum du den Vorhersagemodus von YOLOv8 f├╝r deine verschiedenen Schlussfolgerungen in Betracht ziehen solltest:

  • Vielseitigkeit: Du kannst 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 schnellen Einsatz und Tests.
  • Hochgradig anpassbar: Verschiedene Einstellungen und Parameter, um das Inferenzverhalten des Modells auf deine spezifischen Anforderungen abzustimmen.

Hauptmerkmale des Vorhersagemodus

YOLOv8Der Pr├Ądiktionsmodus ist robust und vielseitig und bietet folgende Funktionen:

  • Kompatibilit├Ąt mit mehreren Datenquellen: Egal, ob deine Daten in Form von einzelnen Bildern, einer Sammlung von Bildern, Videodateien oder Echtzeit-Videostreams vorliegen, mit dem Predict-Modus bist du bestens ger├╝stet.
  • Streaming-Modus: Verwende die Streaming-Funktion, um einen speichereffizienten Generator von Results Objekte. Aktiviere 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, um die Inferenzzeit weiter zu verk├╝rzen.
  • Integrationsfreundlich: Dank der flexiblen API ist die Integration in bestehende Datenpipelines und andere Softwarekomponenten ganz einfach.

Ultralytics YOLO Modelle geben entweder eine Python Liste von Results Objekte oder ein speichereffizienter 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("yolov8n.pt")  # pretrained YOLOv8n model

# Run batched inference on a list of images
results = model(["im1.jpg", "im2.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("yolov8n.pt")  # pretrained YOLOv8n model

# Run batched inference on a list of images
results = model(["im1.jpg", "im2.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

Inferenz-Quellen

YOLOv8 kann verschiedene Arten von Eingangsquellen f├╝r Inferenzen verarbeiten, wie in der folgenden Tabelle dargestellt. Zu den Quellen geh├Âren statische Bilder, Videostreams und verschiedene Datenformate. In der Tabelle ist auch angegeben, 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

Verwende 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 Frames 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 Argument 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 Erstelle einen Screenshot.
PIL Image.open('im.jpg') PIL.Image HWC-Format mit RGB-Kan├Ąlen.
OpenCV cv2.imread('im.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. Verwende das * 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.

Im Folgenden findest du Codebeispiele f├╝r die Verwendung der einzelnen Quellentypen:

Quellen f├╝r Vorhersagen

F├╝hre eine Inferenz f├╝r eine Bilddatei durch.

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.pt")

# Define path to the image file
source = "path/to/image.jpg"

# Run inference on the source
results = model(source)  # list of Results objects

F├╝hre eine Inferenz auf den aktuellen Bildschirminhalt als Screenshot durch.

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.pt")

# Define current screenshot as source
source = "screen"

# Run inference on the source
results = model(source)  # list of Results objects

F├╝hre Inferenzen f├╝r ein Bild oder Video durch, das per URL gehostet wird.

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.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├╝hre eine Inferenz f├╝r ein Bild durch, das mit der Python Imaging Library (PIL) ge├Âffnet wurde.

from PIL import Image

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.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

F├╝hre Inferenzen auf einem mit OpenCV gelesenen Bild durch.

import cv2

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.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

F├╝hre eine Inferenz auf ein Bild durch, das als Numpy-Array dargestellt wird.

import numpy as np

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.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

F├╝hre Inferenzen auf einem Bild durch, das als PyTorch tensor dargestellt wird.

import torch

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.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├╝hre Inferenzen f├╝r eine Sammlung von Bildern, URLs, Videos und Verzeichnissen durch, die in einer CSV-Datei aufgelistet sind.

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.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

F├╝hre eine Inferenz f├╝r eine Videodatei durch. Durch die Verwendung von stream=Truekannst du einen Generator f├╝r Ergebnisobjekte erstellen, um den Speicherbedarf zu reduzieren.

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.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├╝hre die Inferenz f├╝r alle Bilder und Videos in einem Verzeichnis durch. Um auch Bilder und Videos in Unterverzeichnissen zu erfassen, verwende ein glob-Muster, d.h. path/to/dir/**/*.

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.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 YOLOv8n model
model = YOLO("yolov8n.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

F├╝hre eine Inferenz auf ein YouTube-Video durch. Durch die Verwendung stream=Truekannst du einen Generator f├╝r Ergebnisobjekte erstellen, um den Speicherbedarf f├╝r lange Videos zu reduzieren.

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.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

F├╝hre Inferenzen f├╝r entfernte Streaming-Quellen durch, die RTSP-, RTMP-, TCP- und IP-Adressprotokolle verwenden. Wenn mehrere Streams in einer *.streams Textdatei, dann wird die Batch-Inferenz ausgef├╝hrt, d.h. 8 Streams werden mit Batch-Gr├Â├če 8 ausgef├╝hrt, andernfalls werden einzelne Streams mit Batch-Gr├Â├če 1 ausgef├╝hrt.

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.pt")

# Single stream with batch-size 1 inference
source = "rtsp://example.com/media.mp4"  # RTSP, RTMP, TCP or IP streaming address

# Multiple streams with batched inference (i.e. batch-size 8 for 8 streams)
source = "path/to/list.streams"  # *.streams text file with one streaming address per row

# Run inference on the source
results = model(source, stream=True)  # generator of Results objects

Argumente f├╝r Schlussfolgerungen

model.predict() akzeptiert mehrere Argumente, die zur Inferenzzeit ├╝bergeben werden k├Ânnen, um die Standardeinstellungen zu ├╝berschreiben:

Beispiel

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.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. Das 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 geringeren Konfidenz als dieser Schwelle erkannt werden, werden nicht ber├╝cksichtigt. Die Anpassung dieses Wertes kann dazu beitragen, Falschmeldungen 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 K├Ąstchen eliminiert werden, was n├╝tzlich ist, um Duplikate zu reduzieren.
imgsz int or tuple 640 Legt die Bildgr├Â├če f├╝r die Inferenz fest. Kann eine einzelne ganze Zahl sein 640 f├╝r quadratische Gr├Â├čen├Ąnderungen oder ein (H├Âhe, Breite) Tupel. Die richtige Gr├Â├čenbestimmung kann die Erkennungsgenauigkeit und die Verarbeitungsgeschwindigkeit verbessern.
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 die Auswahl zwischen einer CPU, einem bestimmten Grafikprozessor oder anderen Recheneinheiten 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 bei der Verarbeitung von Videostreams alle Bilder gepuffert werden sollen (True), oder ob das Modell den letzten Frame zur├╝ckgeben soll (False). N├╝tzlich f├╝r Echtzeitanwendungen.
visualize bool False Aktiviert die Visualisierung von Modellmerkmalen w├Ąhrend der Inferenz und gibt Einblicke in das, was das Modell "sieht". N├╝tzlich f├╝r die Fehlersuche und Modellinterpretation.
augment bool False Erm├Âglicht die Test-Time-Augmentation (TTA) f├╝r Vorhersagen, was die Robustheit der Erkennung auf Kosten der Schlussfolgerungsgeschwindigkeit verbessern 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 mit mehreren Klassen, in denen sich die Klassen h├Ąufig ├╝berschneiden.
classes list[int] None Filtert Vorhersagen auf eine Reihe von Klassen-IDs. Nur Erkennungen, die zu den angegebenen Klassen geh├Âren, werden zur├╝ckgegeben. N├╝tzlich, um sich bei Erkennungsaufgaben mit mehreren Klassen auf relevante Objekte zu konzentrieren.
retina_masks bool False Verwendet hochaufl├Âsende Segmentierungsmasken, falls im Modell vorhanden. Dies kann die Qualit├Ąt der Masken f├╝r Segmentierungsaufgaben verbessern, da sie feinere Details liefern.
embed list[int] None Legt die Ebenen fest, aus denen Merkmalsvektoren oder Einbettungen extrahiert werden sollen. Nützlich für nachgelagerte Aufgaben wie Clustering oder Ähnlichkeitssuche.

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 Pr├╝fung.
save bool False Erm├Âglicht das Speichern der kommentierten Bilder oder Videos in einer Datei. N├╝tzlich f├╝r die Dokumentation, weitere Analysen oder das Teilen von Ergebnissen.
save_frames bool False Bei der Verarbeitung von Videos werden einzelne Bilder als Bilder gespeichert. Das ist n├╝tzlich, um bestimmte Bilder zu extrahieren oder um eine detaillierte Bild-f├╝r-Bild-Analyse durchzuf├╝hren.
save_txt bool False Speichert die Erkennungsergebnisse in einer Textdatei, die dem Format [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. Erh├Âht die Detailgenauigkeit bei der Nachbearbeitung und Analyse.
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 die Konfidenzwerte f├╝r jede Erkennung neben der Bezeichnung an. Gibt einen Einblick in die Sicherheit des Modells f├╝r jede Erkennung.
show_boxes bool True Zeichnet Begrenzungsrahmen um erkannte Objekte. Unverzichtbar f├╝r die visuelle Identifizierung und Lokalisierung von Objekten in Bildern oder Videoframes.
line_width None or int None Legt die Linienbreite von Begrenzungsrahmen fest. Wenn NoneDie Linienbreite wird automatisch an die Bildgr├Â├če angepasst. Bietet visuelle Anpassungen f├╝r mehr Klarheit.

Bild- und Videoformate

YOLOv8 unterst├╝tzt verschiedene Bild- und Videoformate, wie in ultralytics/data/utils .py angegeben. In den folgenden Tabellen findest du die g├╝ltigen Suffixe und Beispielvorhersagebefehle.

Bilder

Die folgende Tabelle enth├Ąlt g├╝ltige Ultralytics Bildformate.

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

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 Interleave
.gif yolo predict source=video.gif Graphics Interchange Format
.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

Mit Ergebnissen arbeiten

Alle Ultralytics predict() Aufrufe geben eine Liste von Results Gegenst├Ąnde:

Ergebnisse

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.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 Aktualisiere die Boxen, Masken und Probs-Attribute des Ergebnisobjekts.
cpu() Results Gibt eine Kopie des Ergebnisobjekts mit allen Tensoren im CPU-Speicher zur├╝ck.
numpy() Results Gibt eine Kopie des Results-Objekts mit allen Tensoren als Numpy-Arrays zur├╝ck.
cuda() Results Gibt eine Kopie des Results-Objekts mit allen Tensoren im GPU-Speicher zur├╝ck.
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 Zeige kommentierte Ergebnisse auf dem Bildschirm an.
save() None Speichere die kommentierten Ergebnisse in einer Datei.
verbose() str Gib f├╝r jede Aufgabe einen Log-String zur├╝ck.
save_txt() None Speichere die Vorhersagen in einer txt-Datei.
save_crop() None Ausgeschnittene Vorhersagen speichern in save_dir/cls/file_name.jpg.
tojson() str Konvertiere das Objekt in das JSON-Format.

Weitere Einzelheiten findest du in der Results Klassendokumentation.

Boxen

Boxes Objekt kann verwendet werden, um Boundingboxen zu indizieren, zu bearbeiten und in verschiedene Formate zu konvertieren.

Boxen

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.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 Verschiebe das Objekt in den CPU-Speicher.
numpy() Methode Wandle das Objekt in ein Numpy-Array um.
cuda() Methode Verschiebe das Objekt in den CUDA Speicher.
to() Methode Verschiebe das Objekt an das angegebene Ger├Ąt.
xyxy Eigenschaft (torch.Tensor) Gib die Felder im xyxy-Format zur├╝ck.
conf Eigenschaft (torch.Tensor) Gib die Konfidenzwerte der Boxen zur├╝ck.
cls Eigenschaft (torch.Tensor) Gib die Klassenwerte der Boxen zur├╝ck.
id Eigenschaft (torch.Tensor) Gib die Track-IDs der Boxen zur├╝ck (falls verf├╝gbar).
xywh Eigenschaft (torch.Tensor) Gib die Boxen im xywh-Format zur├╝ck.
xyxyn Eigenschaft (torch.Tensor) Gibt die Boxen im xyxy-Format zur├╝ck, normalisiert auf die urspr├╝ngliche Bildgr├Â├če.
xywhn Eigenschaft (torch.Tensor) Gibt die Boxen im xywh-Format zur├╝ck, normalisiert auf die urspr├╝ngliche Bildgr├Â├če.

Weitere Einzelheiten findest du in der Boxes Klassendokumentation.

Masken

Masks Objekt kann zum Indizieren, Manipulieren und Umwandeln von Masken in Segmente verwendet werden.

Masken

from ultralytics import YOLO

# Load a pretrained YOLOv8n-seg Segment model
model = YOLO("yolov8n-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 im CPU-Speicher zur├╝ck.
numpy() Methode Gibt die Masken tensor als Numpy-Array zur├╝ck.
cuda() Methode Gibt die Masken tensor im 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 findest du in der Masks Klassendokumentation.

Keypoints

Keypoints Objekt kann zum Indizieren, Manipulieren und Normalisieren von Koordinaten verwendet werden.

Keypoints

from ultralytics import YOLO

# Load a pretrained YOLOv8n-pose Pose model
model = YOLO("yolov8n-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 im CPU-Speicher zur├╝ck.
numpy() Methode Gibt die Keypoints tensor als Numpy-Array zur├╝ck.
cuda() Methode Gibt die Keypoints tensor im GPU-Speicher zur├╝ck.
to() Methode Gibt die Keypoints tensor mit dem angegebenen Ger├Ąt und dtype zur├╝ck.
xyn Eigenschaft (torch.Tensor) Eine Liste von normalisierten 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 die Konfidenzwerte der Keypoints zur├╝ck, falls vorhanden, sonst keine.

Weitere Einzelheiten findest du in der Keypoints Klassendokumentation.

Probs

Probs Objekt kann index, get verwendet werden top1 und top5 Indizes und Punktzahlen der Klassifizierung.

Probs

from ultralytics import YOLO

# Load a pretrained YOLOv8n-cls Classify model
model = YOLO("yolov8n-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

Hier ist eine Tabelle mit einer Zusammenfassung der Methoden und Eigenschaften f├╝r die Probs Klasse:

Name Typ Beschreibung
cpu() Methode Gibt eine Kopie der Probs tensor im 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 im GPU-Speicher zur├╝ck.
to() Methode Gibt eine Kopie der probs tensor mit dem angegebenen Ger├Ąt und dtype zur├╝ck.
top1 Eigenschaft (int) Index der Top 1 Klasse.
top5 Eigenschaft (list[int]) Indizes der Top 5 Klassen.
top1conf Eigenschaft (torch.Tensor) Vertrauen in die Top 1 Klasse.
top5conf Eigenschaft (torch.Tensor) Vertraulichkeiten der Top 5 Klassen.

Weitere Einzelheiten findest du in der Probs Klassendokumentation.

OBB

OBB Objekt kann verwendet werden, um orientierte Begrenzungsrahmen zu indizieren, zu bearbeiten und in verschiedene Formate zu konvertieren.

OBB

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n-obb.pt")

# Run inference on an image
results = model("bus.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 Verschiebe das Objekt in den CPU-Speicher.
numpy() Methode Wandle das Objekt in ein Numpy-Array um.
cuda() Methode Verschiebe das Objekt in den CUDA Speicher.
to() Methode Verschiebe das Objekt an das angegebene Ger├Ąt.
conf Eigenschaft (torch.Tensor) Gib die Konfidenzwerte der Boxen zur├╝ck.
cls Eigenschaft (torch.Tensor) Gib die Klassenwerte der Boxen zur├╝ck.
id Eigenschaft (torch.Tensor) Gib die Track-IDs der Boxen zur├╝ck (falls verf├╝gbar).
xyxy Eigenschaft (torch.Tensor) Gibt die horizontalen Boxen im xyxy-Format zur├╝ck.
xywhr Eigenschaft (torch.Tensor) Gibt die gedrehten Boxen im xywhr-Format zur├╝ck.
xyxyxyxy Eigenschaft (torch.Tensor) Gibt die gedrehten Boxen im Format xyxyxyxy zur├╝ck.
xyxyxyxyn Eigenschaft (torch.Tensor) Gibt die gedrehten Boxen im Format xyxyxyxy zur├╝ck, normalisiert auf die Bildgr├Â├če.

Weitere Einzelheiten findest du in der OBB Klassendokumentation.

Ergebnisse ausdrucken

Die plot() Methode in Results Objekte erleichtert die Visualisierung von Vorhersagen, indem die erkannten Objekte (z. B. Bounding Boxes, Masken, Keypoints und Wahrscheinlichkeiten) ├╝ber das Originalbild gelegt werden. Diese Methode gibt das kommentierte Bild als NumPy-Array zur├╝ck, sodass es einfach angezeigt oder gespeichert werden kann.

Plotten

from PIL import Image

from ultralytics import YOLO

# Load a pretrained YOLOv8n model
model = YOLO("yolov8n.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, um die Ausgabe anzupassen:

Argument Typ Beschreibung Standard
conf bool F├╝ge die Werte f├╝r die Aufdeckungswahrscheinlichkeit hinzu. 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 Gibt das Bild als PIL Image Objekt zur├╝ck. 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 Verbinde die Eckpunkte mit Linien. True
labels bool F├╝ge Klassenbeschriftungen in Anmerkungen ein. True
boxes bool ├ťberlagere die Begrenzungsrahmen auf dem Bild. True
masks bool ├ťberlagere Masken auf dem Bild. True
probs bool Schlie├če Klassifizierungswahrscheinlichkeiten ein. True
show bool Zeige das kommentierte Bild direkt mit dem Standard-Bildbetrachter an. False
save bool Speichern Sie das kommentierte Bild in einer Datei, die durch filename. False
filename str Pfad und Name der Datei, in der das kommentierte Bild gespeichert wird, wenn save ist True. None

Thread-sichere Inferenz

Die Gew├Ąhrleistung der Thread-Sicherheit w├Ąhrend der Inferenz ist entscheidend, wenn du mehrere YOLO Modelle parallel in verschiedenen Threads ausf├╝hrst. Threadsichere Inferenz garantiert, dass die Vorhersagen der einzelnen Threads isoliert sind und sich nicht gegenseitig beeinflussen. So werden Wettlaufsituationen vermieden und konsistente und zuverl├Ąssige Ergebnisse sichergestellt.

Wenn du YOLO Modelle in einer Multi-Thread-Anwendung verwendest, ist es wichtig, dass du f├╝r jeden Thread ein eigenes Modellobjekt instanziierst oder einen Thread-lokalen Speicher verwendest, um Konflikte zu vermeiden:

Thread-sichere Inferenz

Instanziere ein einzelnes Modell innerhalb jedes Threads f├╝r eine thread-sichere Inferenz:

from threading import Thread

from ultralytics import YOLO


def thread_safe_predict(image_path):
    """Performs thread-safe prediction on an image using a locally instantiated YOLO model."""
    local_model = YOLO("yolov8n.pt")
    results = local_model.predict(image_path)
    # Process results


# Starting threads that each have their own model instance
Thread(target=thread_safe_predict, args=("image1.jpg",)).start()
Thread(target=thread_safe_predict, args=("image2.jpg",)).start()

Einen detaillierten Einblick in die thread-sichere Inferenz mit YOLO Modellen und eine Schritt-f├╝r-Schritt-Anleitung findest du in unserem YOLO Leitfaden zur thread-sicheren Inferenz. In diesem Leitfaden findest du alle notwendigen Informationen, um h├Ąufige Fallstricke zu vermeiden und sicherzustellen, dass deine Multi-Thread-Inferenz reibungslos funktioniert.

Streaming Quelle for-Schleife

Hier ist ein Python Skript, das OpenCV (cv2) und YOLOv8 , um die Inferenz auf Videobilder anzuwenden. Dieses Skript setzt voraus, dass du die notwendigen Pakete bereits installiert hast (opencv-python und ultralytics).

Streaming for-loop

import cv2

from ultralytics import YOLO

# Load the YOLOv8 model
model = YOLO("yolov8n.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 YOLOv8 inference on the frame
        results = model(frame)

        # Visualize the results on the frame
        annotated_frame = results[0].plot()

        # Display the annotated frame
        cv2.imshow("YOLOv8 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.



Created 2023-11-12, Updated 2024-06-18
Authors: glenn-jocher (23), IvorZhu331 (1), RizwanMunawar (1), UltralyticsAssistant (1), Burhan-Q (1), plashchynski (1), tensorturtle (1), AyushExel (1), Laughing-q (1)

Kommentare