Overslaan naar inhoud

Model voorspelling met Ultralytics YOLO

Ultralytics YOLO ecosysteem en integraties

Inleiding

In de wereld van machine learning en computer vision wordt het proces om visuele gegevens zinvol te maken 'inferentie' of 'voorspelling' genoemd. Ultralytics YOLOv8 biedt een krachtige functie die bekend staat als de predict modus en die op maat is gemaakt voor krachtige, real-time inferentie op een breed scala aan gegevensbronnen.



Kijken: Hoe de uitvoer te extraheren uit Ultralytics YOLOv8 Model voor aangepaste projecten.

Toepassingen in de echte wereld

Productie Sport Veiligheid
Opsporing reserveonderdelen voertuig Detectie voetbalspeler Mensen Valdetectie
Opsporing reserveonderdelen voertuig Detectie voetbalspeler Mensen Valdetectie

Waarom Ultralytics YOLO gebruiken voor inferentie?

Dit is waarom je de predict modus van YOLOv8 zou moeten overwegen voor je verschillende inferentiebehoeften:

  • Veelzijdigheid: Kan conclusies trekken uit afbeeldingen, video's en zelfs live streams.
  • Prestaties: Ontworpen voor real-time verwerking op hoge snelheid zonder aan nauwkeurigheid in te boeten.
  • Gebruiksgemak: Intuïtieve Python en CLI interfaces voor snelle implementatie en testen.
  • Zeer aanpasbaar: Diverse instellingen en parameters om het inferentiegedrag van het model af te stemmen op jouw specifieke eisen.

Belangrijkste kenmerken van de modus Voorspellen

YOLOv8De voorspellingsmodus is ontworpen om robuust en veelzijdig te zijn, met:

  • Compatibiliteit met meerdere gegevensbronnen: Of je gegevens nu in de vorm van afzonderlijke afbeeldingen, een verzameling afbeeldingen, videobestanden of realtime videostreams zijn, met de voorspellingsmodus zit je goed.
  • Streamingmodus: Gebruik de streamingfunctie om een geheugenefficiënte generator van Results objecten. Schakel dit in door stream=True in de aanroepmethode van de voorspeller.
  • Batchverwerking: De mogelijkheid om meerdere afbeeldingen of videoframes in een enkele batch te verwerken, waardoor de inferentietijd nog verder wordt versneld.
  • Integratievriendelijk: Eenvoudig te integreren met bestaande datapijplijnen en andere softwarecomponenten dankzij de flexibele API.

Ultralytics YOLO modellen geven ofwel een Python lijst van Results objecten, of een geheugenefficiënte Python generator van Results objecten wanneer stream=True wordt doorgegeven aan het model tijdens inferentie:

Voorspel

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

Inferentiebronnen

YOLOv8 kan verschillende soorten invoerbronnen verwerken voor inferentie, zoals weergegeven in de onderstaande tabel. De bronnen omvatten statische afbeeldingen, videostreams en verschillende gegevensformaten. De tabel geeft ook aan of elke bron kan worden gebruikt in streaming modus met het argument stream=True ✅. De modus Streaming is gunstig voor het verwerken van video's of live streams omdat het een generator van resultaten maakt in plaats van alle frames in het geheugen te laden.

Tip

Gebruik stream=True voor het verwerken van lange video's of grote datasets om het geheugen efficiënt te beheren. Wanneer stream=Falseworden de resultaten voor alle frames of gegevenspunten in het geheugen opgeslagen, wat snel kan oplopen en fouten buiten het geheugen kan veroorzaken bij grote invoer. In tegenstelling, stream=True gebruikt een generator, die alleen de resultaten van het huidige frame of gegevenspunt in het geheugen bewaart, waardoor het geheugenverbruik aanzienlijk wordt verminderd en out-of-memory problemen worden voorkomen.

Bron Argument Type Opmerkingen
afbeelding 'image.jpg' str of Path Enkel afbeeldingsbestand.
URL 'https://ultralytics.com/images/bus.jpg' str URL naar een afbeelding.
schermafbeelding 'screen' str Maak een schermafbeelding.
PIL Image.open('im.jpg') PIL.Image HWC-indeling met RGB-kanalen.
OpenCV cv2.imread('im.jpg') np.ndarray HWC-indeling met BGR-kanalen uint8 (0-255).
numpy np.zeros((640,1280,3)) np.ndarray HWC-indeling met BGR-kanalen uint8 (0-255).
torch torch.zeros(16,3,320,640) torch.Tensor BCHW-indeling met RGB-kanalen float32 (0.0-1.0).
CSV 'sources.csv' str of Path CSV-bestand met paden naar afbeeldingen, video's of mappen.
video ✅ 'video.mp4' str of Path Videobestand in formaten als MP4, AVI, etc.
map ✅ 'path/' str of Path Pad naar een map met afbeeldingen of video's.
bol ✅ 'path/*.jpg' str Glob patroon om meerdere bestanden te matchen. Gebruik de * teken als jokerteken.
YouTube 'https://youtu.be/LNwODJXcvt4' str URL naar een YouTube-video.
stream ✅ 'rtsp://example.com/media.mp4' str URL voor streaming protocollen zoals RTSP, RTMP, TCP of een IP-adres.
multi-stroom ✅ 'list.streams' str of Path *.streams tekstbestand met één stream URL per rij, d.w.z. 8 streams worden uitgevoerd met batchgrootte 8.

Hieronder staan codevoorbeelden voor het gebruik van elk brontype:

Voorspellingsbronnen

Inferentie uitvoeren op een afbeeldingsbestand.

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

Inferentie uitvoeren op de huidige scherminhoud als schermafbeelding.

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

Inferentie uitvoeren op een afbeelding of video die op afstand wordt gehost via een URL.

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

Inferentie uitvoeren op een afbeelding die is geopend met Python Imaging Library (PIL).

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

Inferentie uitvoeren op een afbeelding die is gelezen met OpenCV.

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

Voer inferentie uit op een afbeelding die wordt weergegeven als een numpy array.

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

Inferentie uitvoeren op een afbeelding die wordt weergegeven als een PyTorch tensor .

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

Voer inferentie uit op een verzameling afbeeldingen, URL's, video's en mappen in een CSV-bestand.

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

Inferentie uitvoeren op een videobestand. Door stream=Truekun je een generator van resultatenobjecten maken om het geheugengebruik te verminderen.

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

Voer inferentie uit op alle afbeeldingen en video's in een map. Gebruik een glob-patroon om ook afbeeldingen en video's in submappen vast te leggen, bijv. 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

Voer inferentie uit op alle afbeeldingen en video's die overeenkomen met een glob expressie met * tekens.

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

Inferentie uitvoeren op een YouTube-video. Door stream=Truekun je een generator van Resultaatobjecten maken om het geheugengebruik voor lange video's te verminderen.

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

Inferentie uitvoeren op externe streamingbronnen met RTSP, RTMP, TCP en IP-adresprotocollen. Als er meerdere streams worden aangeboden in een *.streams tekstbestand dan wordt de inferentie in batches uitgevoerd, d.w.z. 8 streams worden uitgevoerd met een batchgrootte van 8, anders worden enkele streams uitgevoerd met een batchgrootte van 1.

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

Argumenten voor gevolgtrekkingen

model.predict() accepteert meerdere argumenten die kunnen worden doorgegeven op het moment van inferentie om de standaardwaarden op te heffen:

Voorbeeld

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)

Inferentie argumenten:

Argument Type Standaard Beschrijving
source str 'ultralytics/assets' Specificeert de gegevensbron voor inferentie. Kan een afbeeldingspad, videobestand, map, URL of apparaat-ID voor live feeds zijn. Ondersteunt een breed scala aan formaten en bronnen, zodat het flexibel kan worden toegepast op verschillende soorten invoer.
conf float 0.25 Stelt de minimale betrouwbaarheidsdrempel voor detecties in. Objecten die worden gedetecteerd met een betrouwbaarheid onder deze drempel worden genegeerd. Het aanpassen van deze waarde kan helpen bij het verminderen van vals-positieven.
iou float 0.7 Intersection Over Union (IoU) drempelwaarde voor niet-maximale onderdrukking (NMS). Lagere waarden resulteren in minder detecties door overlappende vakjes te elimineren, handig om duplicaten te verminderen.
imgsz int or tuple 640 Definieert de afbeeldingsgrootte voor inferentie. Kan een geheel getal zijn 640 voor vierkant formaat of een (hoogte, breedte) tupel. De juiste grootte kan de detectienauwkeurigheid en verwerkingssnelheid verbeteren.
half bool False Maakt inferentie met halve precisie (FP16) mogelijk, wat modelinferentie op ondersteunde GPU's kan versnellen met minimale invloed op nauwkeurigheid.
device str None Specificeert het apparaat voor inferentie (bijv, cpu, cuda:0 of 0). Hiermee kunnen gebruikers kiezen tussen CPU, een specifieke GPU of andere rekenapparaten voor het uitvoeren van modellen.
max_det int 300 Maximum aantal toegestane detecties per afbeelding. Beperkt het totale aantal objecten dat het model kan detecteren in een enkele inferentie, waardoor buitensporige uitvoer in dichte scènes wordt voorkomen.
vid_stride int 1 Frame stride voor video-ingangen. Hiermee kunnen frames in video's worden overgeslagen om de verwerking te versnellen ten koste van de temporele resolutie. Een waarde van 1 verwerkt elk frame, hogere waarden slaan frames over.
stream_buffer bool False Bepaalt of alle frames gebufferd moeten worden bij het verwerken van videostreams (True), of als het model het meest recente frame moet teruggeven (False). Nuttig voor real-time toepassingen.
visualize bool False Activeert visualisatie van modeleigenschappen tijdens inferentie, waardoor inzicht wordt verkregen in wat het model "ziet". Nuttig voor foutopsporing en modelinterpretatie.
augment bool False Maakt testtijdvergroting (TTA) mogelijk voor voorspellingen, waardoor de robuustheid van detectie mogelijk verbetert ten koste van de inferentiesnelheid.
agnostic_nms bool False Maakt klasse-agnostische Non-Maximum Suppression (NMS) mogelijk, die overlappende vakken van verschillende klassen samenvoegt. Nuttig in detectiescenario's met meerdere klassen waar overlappende klassen vaak voorkomen.
classes list[int] None Filtert voorspellingen op een set klasse-ID's. Alleen detecties die behoren tot de opgegeven klassen worden geretourneerd. Nuttig om te focussen op relevante objecten in detectietaken met meerdere klassen.
retina_masks bool False Gebruikt hoge-resolutie segmentatiemaskers indien beschikbaar in het model. Dit kan de maskerkwaliteit voor segmentatietaken verbeteren, waardoor fijnere details worden verkregen.
embed list[int] None Specificeert de lagen waaruit kenmerkvectoren of inbeddingen moeten worden geëxtraheerd. Nuttig voor downstream taken zoals clusteren of zoeken naar overeenkomsten.

Visualisatie argumenten:

Argument Type Standaard Beschrijving
show bool False Als Truegeeft de geannoteerde afbeeldingen of video's weer in een venster. Handig voor directe visuele feedback tijdens het ontwikkelen of testen.
save bool False Maakt het mogelijk om de geannoteerde afbeeldingen of video's op te slaan in een bestand. Handig voor documentatie, verdere analyse of het delen van resultaten.
save_frames bool False Bij het verwerken van video's worden individuele frames opgeslagen als afbeeldingen. Handig voor het extraheren van specifieke frames of voor gedetailleerde frame-voor-frame analyse.
save_txt bool False Slaat detectieresultaten op in een tekstbestand volgens het formaat [class] [x_center] [y_center] [width] [height] [confidence]. Handig voor integratie met andere analysegereedschappen.
save_conf bool False Inclusief vertrouwensscores in de opgeslagen tekstbestanden. Verbetert de beschikbare details voor nabewerking en analyse.
save_crop bool False Bewaart bijgesneden afbeeldingen van detecties. Nuttig voor het vergroten van datasets, analyse of het maken van gerichte datasets voor specifieke objecten.
show_labels bool True Toont labels voor elke detectie in de visuele uitvoer. Biedt direct inzicht in gedetecteerde objecten.
show_conf bool True Toont de betrouwbaarheidsscore voor elke detectie naast het label. Geeft inzicht in de zekerheid van het model voor elke detectie.
show_boxes bool True Tekent begrenzende vakken rond gedetecteerde objecten. Essentieel voor visuele identificatie en locatie van objecten in afbeeldingen of videoframes.
line_width None or int None Bepaalt de lijndikte van bounding boxes. Als NoneDe lijndikte wordt automatisch aangepast op basis van de afbeeldingsgrootte. Biedt visuele aanpassing voor duidelijkheid.

Beeld- en videoformaten

YOLOv8 ondersteunt verschillende afbeeldings- en videoformaten, zoals gespecificeerd in ultralytics/data/utils .py. Zie de tabellen hieronder voor de geldige achtervoegsels en voorbeeld voorspellingscommando's.

Afbeeldingen

De onderstaande tabel bevat geldige Ultralytics afbeeldingsformaten.

Achtervoegsels voor afbeeldingen Voorbeeld voorspelopdracht Referentie
.bmp yolo predict source=image.bmp Microsoft BMP-bestandsindeling
.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 Meervoudig beeldobject
.png yolo predict source=image.png Draagbare netwerk afbeeldingen
.tif yolo predict source=image.tif Tag Afbeeldingsbestandsformaat
.tiff yolo predict source=image.tiff Tag Afbeeldingsbestandsformaat
.webp yolo predict source=image.webp WebP
.pfm yolo predict source=image.pfm Draagbare FloatMap

Video's

De onderstaande tabel bevat geldige Ultralytics videoformaten.

Video Achtervoegsels Voorbeeld voorspelopdracht Referentie
.asf yolo predict source=video.asf Formaat geavanceerde systemen
.avi yolo predict source=video.avi Audio-Video Interleave
.gif yolo predict source=video.gif Grafisch uitwisselingsformaat
.m4v yolo predict source=video.m4v MPEG-4 deel 14
.mkv yolo predict source=video.mkv Matroska
.mov yolo predict source=video.mov QuickTime bestandsformaat
.mp4 yolo predict source=video.mp4 MPEG-4 Deel 14 - Wikipedia
.mpeg yolo predict source=video.mpeg MPEG-1 deel 2
.mpg yolo predict source=video.mpg MPEG-1 deel 2
.ts yolo predict source=video.ts MPEG transportstroom
.wmv yolo predict source=video.wmv Windows Media Video
.webm yolo predict source=video.webm WebM Project

Werken met resultaten

Alle Ultralytics predict() oproepen zullen een lijst van Results objecten:

Resultaten

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 objecten hebben de volgende attributen:

Attribuut Type Beschrijving
orig_img numpy.ndarray De originele afbeelding als een numpy array.
orig_shape tuple De oorspronkelijke afbeeldingsvorm in (hoogte, breedte) formaat.
boxes Boxes, optional Een Boxes object met de detectie bounding boxes.
masks Masks, optional Een Maskers object dat de detectiemaskers bevat.
probs Probs, optional Een Probs-object met waarschijnlijkheden van elke klasse voor de classificatietaak.
keypoints Keypoints, optional Een object met sleutelpunten dat gedetecteerde sleutelpunten bevat voor elk object.
obb OBB, optional Een OBB-object met georiënteerde bounding boxes.
speed dict Een woordenboek met snelheden voor preprocessing, inferentie en postprocessing in milliseconden per afbeelding.
names dict Een woordenboek met klassennamen.
path str Het pad naar het afbeeldingsbestand.

Results objecten hebben de volgende methoden:

Methode Type terugkeer Beschrijving
update() None Werk de kenmerken van de vakken, maskers en probs van het object Resultaten bij.
cpu() Results Retourneert een kopie van het Results-object met alle tensoren in het CPU-geheugen.
numpy() Results Retourneert een kopie van het Results object met alle tensoren als numpy arrays.
cuda() Results Retourneert een kopie van het Results-object met alle tensoren in het GPU-geheugen.
to() Results Retourneert een kopie van het Results-object met tensoren op het opgegeven apparaat en dtype.
new() Results Retourneert een nieuw Results-object met dezelfde afbeelding, hetzelfde pad en dezelfde namen.
plot() numpy.ndarray Tekent de detectieresultaten. Geeft een numpy array van de geannoteerde afbeelding.
show() None Toon geannoteerde resultaten op het scherm.
save() None Geannoteerde resultaten opslaan in een bestand.
verbose() str Geef een logstring terug voor elke taak.
save_txt() None Sla voorspellingen op in een txt-bestand.
save_crop() None Bijgesneden voorspellingen opslaan in save_dir/cls/file_name.jpg.
tojson() str Converteer het object naar JSON formaat.

Zie voor meer informatie de Results klassendocumentatie.

Dozen

Boxes object kan worden gebruikt om bounding boxes te indexeren, manipuleren en converteren naar verschillende formaten.

Dozen

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 is een tabel voor de Boxes Methoden en eigenschappen van de klasse, inclusief hun naam, type en beschrijving:

Naam Type Beschrijving
cpu() Methode Verplaats het object naar het CPU-geheugen.
numpy() Methode Converteer het object naar een numpy array.
cuda() Methode Verplaats het object naar het CUDA geheugen.
to() Methode Verplaats het object naar het opgegeven apparaat.
xyxy Eigendom (torch.Tensor) Geef de vakken terug in xyxy formaat.
conf Eigendom (torch.Tensor) Geeft de betrouwbaarheidswaarden van de vakken.
cls Eigendom (torch.Tensor) Geeft de klassewaarden van de vakken terug.
id Eigendom (torch.Tensor) Geef de track-ID's van de boxen terug (indien beschikbaar).
xywh Eigendom (torch.Tensor) Stuur de dozen terug in xywh formaat.
xyxyn Eigendom (torch.Tensor) Geef de vakken terug in xyxy formaat genormaliseerd door de originele afbeeldingsgrootte.
xywhn Eigendom (torch.Tensor) Retourneer de vakken in xywh formaat genormaliseerd door de originele afbeeldingsgrootte.

Zie voor meer informatie de Boxes klassendocumentatie.

Maskers

Masks object kan worden gebruikt om maskers te indexeren, manipuleren en converteren naar segmenten.

Maskers

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 is een tabel voor de Masks Methoden en eigenschappen van de klasse, inclusief hun naam, type en beschrijving:

Naam Type Beschrijving
cpu() Methode Geeft de maskers tensor op het CPU-geheugen.
numpy() Methode Geeft de maskers tensor terug als een numpy array.
cuda() Methode Geeft de maskers tensor op het GPU-geheugen.
to() Methode Geeft de maskers tensor met het opgegeven apparaat en dtype.
xyn Eigendom (torch.Tensor) Een lijst van genormaliseerde segmenten weergegeven als tensoren.
xy Eigendom (torch.Tensor) Een lijst van segmenten in pixelcoördinaten, voorgesteld als tensors.

Zie voor meer informatie de Masks klassendocumentatie.

Kernpunten

Keypoints object kan worden gebruikt om coördinaten te indexeren, manipuleren en normaliseren.

Kernpunten

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 is een tabel voor de Keypoints Methoden en eigenschappen van de klasse, inclusief hun naam, type en beschrijving:

Naam Type Beschrijving
cpu() Methode Geeft de sleutelpunten tensor op het CPU-geheugen.
numpy() Methode Geeft de sleutelpunten tensor terug als een numpy array.
cuda() Methode Geeft de sleutelpunten tensor op het GPU-geheugen.
to() Methode Geeft de toetspunten tensor met het opgegeven apparaat en dtype.
xyn Eigendom (torch.Tensor) Een lijst van genormaliseerde sleutelpunten weergegeven als tensoren.
xy Eigendom (torch.Tensor) Een lijst met sleutelpunten in pixelcoördinaten, voorgesteld als tensors.
conf Eigendom (torch.Tensor) Geeft betrouwbaarheidswaarden van toetspunten indien beschikbaar, anders geen.

Zie voor meer informatie de Keypoints klassendocumentatie.

Probs

Probs object kan worden gebruikt index, get top1 en top5 indices en scores van classificatie.

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 is een tabel met een overzicht van de methoden en eigenschappen voor de Probs klasse:

Naam Type Beschrijving
cpu() Methode Geeft een kopie van de probs tensor op het CPU-geheugen.
numpy() Methode Geeft een kopie van de probs tensor als een numpy array.
cuda() Methode Geeft een kopie van de probs tensor op het GPU-geheugen.
to() Methode Geeft een kopie van de probs tensor met het opgegeven apparaat en dtype.
top1 Eigendom (int) Index van de topklasse 1.
top5 Eigendom (list[int]) Indices van de top 5 klassen.
top1conf Eigendom (torch.Tensor) Vertrouwen van de top 1 klasse.
top5conf Eigendom (torch.Tensor) Vertrouwelijkheden van de top 5 klassen.

Zie voor meer informatie de Probs klassendocumentatie.

OBB

OBB object kan worden gebruikt om georiënteerde bounding boxes te indexeren, manipuleren en converteren naar verschillende formaten.

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 is een tabel voor de OBB Methoden en eigenschappen van de klasse, inclusief hun naam, type en beschrijving:

Naam Type Beschrijving
cpu() Methode Verplaats het object naar het CPU-geheugen.
numpy() Methode Converteer het object naar een numpy array.
cuda() Methode Verplaats het object naar het CUDA geheugen.
to() Methode Verplaats het object naar het opgegeven apparaat.
conf Eigendom (torch.Tensor) Geeft de betrouwbaarheidswaarden van de vakken.
cls Eigendom (torch.Tensor) Geeft de klassewaarden van de vakken terug.
id Eigendom (torch.Tensor) Geef de track-ID's van de boxen terug (indien beschikbaar).
xyxy Eigendom (torch.Tensor) Geef de horizontale vakken terug in xyxy formaat.
xywhr Eigendom (torch.Tensor) Geef de geroteerde vakken terug in xywhr formaat.
xyxyxyxy Eigendom (torch.Tensor) Geeft de geroteerde vakken terug in xyxyxyxy-formaat.
xyxyxyxyn Eigendom (torch.Tensor) Retourneert de geroteerde vakken in xyxyxyxy-formaat genormaliseerd door de afbeeldingsgrootte.

Zie voor meer informatie de OBB klassendocumentatie.

Resultaten plotten

De plot() methode in Results objecten vergemakkelijkt de visualisatie van voorspellingen door gedetecteerde objecten (zoals bounding boxes, maskers, sleutelpunten en waarschijnlijkheden) op de oorspronkelijke afbeelding te leggen. Deze methode retourneert de geannoteerde afbeelding als een NumPy array, zodat deze eenvoudig kan worden weergegeven of opgeslagen.

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() Methode Parameters

De plot() De methode ondersteunt verschillende argumenten om de uitvoer aan te passen:

Argument Type Beschrijving Standaard
conf bool Betrouwbaarheidsscores voor detectie opnemen. True
line_width float Lijnbreedte van begrenzende vakken. Schaalt met de afbeeldingsgrootte als None. None
font_size float Lettergrootte tekst. Schaalt met de afbeeldingsgrootte als None. None
font str Lettertypenaam voor tekstannotaties. 'Arial.ttf'
pil bool Retourneert de afbeelding als een PIL-afbeeldingsobject. False
img numpy.ndarray Alternatieve afbeelding voor plotten. Gebruikt de originele afbeelding als None. None
im_gpu torch.Tensor GPU-versnelde afbeelding voor het sneller plotten van maskers. Vorm: (1, 3, 640, 640). None
kpt_radius int Straal voor getekende toetspunten. 5
kpt_line bool Verbind sleutelpunten met lijnen. True
labels bool Klasse-labels opnemen in annotaties. True
boxes bool Overlay bounding boxes op de afbeelding. True
masks bool Maskers over de afbeelding leggen. True
probs bool Neem classificatiekansen op. True
show bool Geef de geannoteerde afbeelding direct weer met de standaard afbeeldingsviewer. False
save bool Sla de geannoteerde afbeelding op in een bestand gespecificeerd door filename. False
filename str Pad en naam van het bestand om de geannoteerde afbeelding op te slaan als save is True. None

Thread-veilige inferentie

Het garanderen van thread safety tijdens inferentie is cruciaal als je meerdere YOLO modellen parallel uitvoert op verschillende threads. Thread-safe inferentie garandeert dat de voorspellingen van elke thread geïsoleerd zijn en niet met elkaar interfereren, waardoor race condities worden vermeden en consistente en betrouwbare uitvoer wordt gegarandeerd.

Bij het gebruik van YOLO modellen in een toepassing met meerdere threads, is het belangrijk om aparte modelobjecten te instantiëren voor elke thread of thread-lokale opslag te gebruiken om conflicten te voorkomen:

Thread-veilige inferentie

Installeer een enkel model in elke thread voor thread-veilige inferentie:

from ultralytics import YOLO
from threading import Thread

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

Voor een diepgaande blik op thread-safe inferentie met YOLO modellen en stapsgewijze instructies, kun je onze YOLO Thread-Safe Inference Guide raadplegen. Deze gids geeft je alle benodigde informatie om veelvoorkomende valkuilen te vermijden en ervoor te zorgen dat je multi-threaded inferentie soepel verloopt.

Streaming bron for-lus

Hier is een Python script dat OpenCV gebruikt (cv2) en YOLOv8 om inferentie op videoframes uit te voeren. Dit script gaat ervan uit dat je de benodigde pakketten al hebt geïnstalleerd (opencv-python en ultralytics).

Streaming for-lus

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

Dit script voert voorspellingen uit op elk frame van de video, visualiseert de resultaten en toont ze in een venster. De lus kan worden verlaten door op 'q' te drukken.



Aangemaakt 2023-11-12, Bijgewerkt 2024-05-03
Auteurs: glenn-jocher (18), UltralyticsAssistant (1), Burhan-Q (1), plashchynski (1), tensorturtle (1), AyushExel (1), Laughing-q (1)

Reacties