Skip to content

Prédiction du modèle avec Ultralytics YOLO

Ultralytics YOLO écosystème et intégrations

Introduction

Dans le monde de l'apprentissage automatique et de la vision par ordinateur, le processus qui consiste à donner un sens aux données visuelles est appelé "inférence" ou "prédiction". Ultralytics YOLOv8 offre une fonction puissante connue sous le nom de mode prédiction, qui est adaptée à l'inférence en temps réel haute performance sur un large éventail de sources de données.



Regarde : Comment extraire les résultats du modèle Ultralytics YOLOv8 pour des projets personnalisés.

Applications dans le monde réel

Fabrication Sports Sécurité
Détection des pièces détachées de véhicules Détection des joueurs de football Détection des chutes de personnes
Détection des pièces détachées de véhicules Détection des joueurs de football Détection des chutes de personnes

Pourquoi utiliser Ultralytics YOLO pour l'inférence ?

Voici pourquoi tu devrais considérer le mode prédictif de YOLOv8 pour tes différents besoins d'inférence :

  • Polyvalence : Capable de faire des dĂ©ductions sur des images, des vidĂ©os et mĂŞme des flux en direct.
  • Performance : Conçu pour un traitement en temps rĂ©el et Ă  grande vitesse sans sacrifier la prĂ©cision.
  • FacilitĂ© d'utilisation : interfaces intuitives Python et CLI pour un dĂ©ploiement et des tests rapides.
  • Hautement personnalisable : Divers rĂ©glages et paramètres pour ajuster le comportement d'infĂ©rence du modèle en fonction de tes besoins spĂ©cifiques.

Caractéristiques principales du mode Predict

YOLOv8Le mode prédictif de l'application est conçu pour être robuste et polyvalent :

  • CompatibilitĂ© avec plusieurs sources de donnĂ©es : Que tes donnĂ©es se prĂ©sentent sous la forme d'images individuelles, d'une collection d'images, de fichiers vidĂ©o ou de flux vidĂ©o en temps rĂ©el, le mode prĂ©dictif te couvre.
  • Mode streaming : Utilise la fonction de diffusion en continu pour gĂ©nĂ©rer un gĂ©nĂ©rateur efficace en termes de mĂ©moire de Results objets. Active cette fonction en paramĂ©trant stream=True dans la mĂ©thode d'appel du prĂ©dicteur.
  • Traitement par lots : La possibilitĂ© de traiter plusieurs images ou trames vidĂ©o en un seul lot, ce qui accĂ©lère encore le temps d'infĂ©rence.
  • FacilitĂ© d'intĂ©gration : intègre facilement les pipelines de donnĂ©es existants et d'autres composants logiciels, grâce Ă  son API flexible.

Ultralytics YOLO renvoient soit une liste Python de Results ou un générateur Python à mémoire réduite de Results objets lorsque stream=True est transmis au modèle pendant l'inférence :

Prévoir

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
    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
    result.show()  # display to screen
    result.save(filename='result.jpg')  # save to disk

Sources d'inférence

YOLOv8 peut traiter différents types de sources d'entrée pour l'inférence, comme le montre le tableau ci-dessous. Les sources comprennent des images statiques, des flux vidéo et divers formats de données. Le tableau indique également si chaque source peut être utilisée en mode streaming avec l'argument stream=True ✅. Le mode Streaming est avantageux pour le traitement des vidéos ou des flux en direct car il crée un générateur de résultats au lieu de charger toutes les images en mémoire.

Astuce

Utilise stream=True pour le traitement de longues vidéos ou de grands ensembles de données afin de gérer efficacement la mémoire. Quand stream=FalseLes résultats de toutes les images ou de tous les points de données sont stockés en mémoire, ce qui peut rapidement s'additionner et provoquer des erreurs hors mémoire pour les entrées importantes. En revanche, stream=True utilise un générateur qui ne garde en mémoire que les résultats de l'image ou du point de données actuel, ce qui réduit considérablement la consommation de mémoire et évite les problèmes de sortie de mémoire.

Source Argument Type Notes
image 'image.jpg' str ou Path Fichier image unique.
URL 'https://ultralytics.com/images/bus.jpg' str URL d'une image.
capture d'Ă©cran 'screen' str Effectue une capture d'Ă©cran.
LIP Image.open('im.jpg') PIL.Image Format HWC avec canaux RVB.
OpenCV cv2.imread('im.jpg') np.ndarray Format HWC avec canaux BGR uint8 (0-255).
numpy np.zeros((640,1280,3)) np.ndarray Format HWC avec canaux BGR uint8 (0-255).
torch torch.zeros(16,3,320,640) torch.Tensor Format BCHW avec canaux RVB float32 (0.0-1.0).
CSV 'sources.csv' str ou Path Fichier CSV contenant des chemins d'accès à des images, des vidéos ou des répertoires.
vidéo ✅ 'video.mp4' str ou Path Fichier vidéo dans des formats tels que MP4, AVI, etc.
répertoire ✅ 'path/' str ou Path Chemin d'accès à un répertoire contenant des images ou des vidéos.
glob ✅ 'path/*.jpg' str Le motif global permet de faire correspondre plusieurs fichiers. Utilise le * en tant que caractère de remplacement.
YouTube ✅ 'https://youtu.be/LNwODJXcvt4' str URL d'une vidéo YouTube.
ruisseau âś… 'rtsp://example.com/media.mp4' str URL pour les protocoles de diffusion en continu tels que RTSP, RTMP, TCP, ou une adresse IP.
multi-flux ✅ 'list.streams' str ou Path *.streams fichier texte avec une URL de flux par ligne, c'est-à-dire que 8 flux seront exécutés à la taille de lot 8.

Tu trouveras ci-dessous des exemples de code pour l'utilisation de chaque type de source :

Sources de prédiction

Exécute l'inférence sur un fichier image.

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

Exécute une inférence sur le contenu de l'écran actuel sous forme de capture d'écran.

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

Exécute une inférence sur une image ou une vidéo hébergée à distance via une 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

Lance l'inférence sur une image ouverte avec 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

Exécute l'inférence sur une image lue avec 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

Exécute une inférence sur une image représentée par un tableau numpy.

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

Effectue une inférence sur une image représentée sous la forme d'un 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

Exécute une inférence sur une collection d'images, d'URL, de vidéos et de répertoires répertoriés dans un fichier CSV.

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

Exécute l'inférence sur un fichier vidéo. En utilisant stream=TrueTu peux créer un générateur d'objets Résultats pour réduire l'utilisation de la mémoire.

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

Exécute l'inférence sur toutes les images et vidéos d'un répertoire. Pour capturer également les images et les vidéos dans les sous-répertoires, utilise un motif glob, c'est-à-dire. 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

Lance une inférence sur toutes les images et vidéos qui correspondent à une expression globale avec * les personnages.

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

Exécute une inférence sur une vidéo YouTube. En utilisant stream=TrueTu peux créer un générateur d'objets Résultats pour réduire l'utilisation de la mémoire pour les longues vidéos.

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

Exécute l'inférence sur des sources de streaming distantes en utilisant les protocoles RTSP, RTMP, TCP et l'adresse IP. Si plusieurs flux sont fournis dans un *.streams l'inférence par lots sera exécutée, c'est-à-dire que 8 flux seront exécutés avec une taille de lot de 8, sinon des flux uniques seront exécutés avec une taille de lot de 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

Arguments de déduction

model.predict() accepte plusieurs arguments qui peuvent être passés au moment de l'inférence pour remplacer les valeurs par défaut :

Exemple

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)

Arguments d'inférence :

Argument Type DĂ©faut Description
source str 'ultralytics/assets' Spécifie la source de données pour l'inférence. Il peut s'agir d'un chemin d'accès à une image, d'un fichier vidéo, d'un répertoire, d'une URL ou de l'identifiant d'un appareil pour les flux en direct. Prend en charge un large éventail de formats et de sources, ce qui permet une application flexible sur différents types d'entrées.
conf float 0.25 Définit le seuil de confiance minimum pour les détections. Les objets détectés avec un niveau de confiance inférieur à ce seuil ne seront pas pris en compte. Le réglage de cette valeur peut aider à réduire les faux positifs.
iou float 0.7 Seuil d'intersection au-dessus de l'union (IoU) pour la suppression non maximale (NMS). Des valeurs plus élevées entraînent moins de détections en éliminant les boîtes qui se chevauchent, ce qui est utile pour réduire les doublons.
imgsz int or tuple 640 Définit la taille de l'image pour l'inférence. Peut être un seul entier 640 pour un redimensionnement carré ou un tuple (hauteur, largeur). Un bon redimensionnement peut améliorer la précision de la détection et la vitesse de traitement.
half bool False Permet l'inférence en demi-précision (FP16), ce qui peut accélérer l'inférence du modèle sur les GPU pris en charge avec un impact minimal sur la précision.
device str None Spécifie le dispositif d'inférence (par ex, cpu, cuda:0 ou 0). Permet aux utilisateurs de choisir entre le CPU, un GPU spécifique ou d'autres dispositifs de calcul pour l'exécution du modèle.
max_det int 300 Nombre maximum de détections autorisées par image. Limite le nombre total d'objets que le modèle peut détecter en une seule inférence, ce qui permet d'éviter les sorties excessives dans les scènes denses.
vid_stride int 1 Saut de trame pour les entrées vidéo. Permet de sauter des images dans les vidéos pour accélérer le traitement au détriment de la résolution temporelle. Une valeur de 1 traite chaque image, les valeurs supérieures sautent des images.
stream_buffer bool False Détermine si toutes les images doivent être mises en mémoire tampon lors du traitement des flux vidéo (True), ou si le modèle doit retourner le cadre le plus récent (False). Utile pour les applications en temps réel.
visualize bool False Active la visualisation des caractéristiques du modèle pendant l'inférence, ce qui permet de comprendre ce que le modèle "voit". Utile pour le débogage et l'interprétation du modèle.
augment bool False Permet l'augmentation du temps de test (TTA) pour les prédictions, améliorant potentiellement la robustesse de la détection au prix de la vitesse d'inférence.
agnostic_nms bool False Permet la Suppression non maximale (SNM) agnostique des classes, qui fusionne les boîtes de différentes classes qui se chevauchent. Utile dans les scénarios de détection multi-classes où le chevauchement des classes est fréquent.
classes list[int] None Filtre les prédictions sur un ensemble d'identifiants de classes. Seules les détections appartenant aux classes spécifiées seront renvoyées. Utile pour se concentrer sur les objets pertinents dans les tâches de détection multi-classes.
retina_masks bool False Utilise des masques de segmentation à haute résolution s'ils sont disponibles dans le modèle. Cela permet d'améliorer la qualité des masques pour les tâches de segmentation, en fournissant des détails plus fins.
embed list[int] None Spécifie les couches à partir desquelles il faut extraire les vecteurs de caractéristiques ou les encastrements. Utile pour les tâches en aval telles que le regroupement ou la recherche de similarités.

Arguments de visualisation :

Argument Type DĂ©faut Description
show bool False Si Trueaffiche les images ou les vidéos annotées dans une fenêtre. Utile pour un retour visuel immédiat pendant le développement ou les tests.
save bool False Permet d'enregistrer les images ou les vidéos annotées dans un fichier. Utile pour la documentation, une analyse plus poussée ou le partage des résultats.
save_frames bool False Lors du traitement des vidéos, enregistre les images individuelles en tant qu'images. Utile pour extraire des images spécifiques ou pour une analyse détaillée image par image.
save_txt bool False Enregistre les résultats de la détection dans un fichier texte, en respectant le format. [class] [x_center] [y_center] [width] [height] [confidence]. Utile pour l'intégration avec d'autres outils d'analyse.
save_conf bool False Inclut les scores de confiance dans les fichiers texte sauvegardés. Améliore les détails disponibles pour le post-traitement et l'analyse.
save_crop bool False Sauvegarde les images recadrées des détections. Utile pour l'augmentation des ensembles de données, l'analyse ou la création d'ensembles de données ciblés pour des objets spécifiques.
show_labels bool True Affiche des étiquettes pour chaque détection dans la sortie visuelle. Permet de comprendre immédiatement les objets détectés.
show_conf bool True Affiche le score de confiance pour chaque détection à côté de l'étiquette. Donne un aperçu de la certitude du modèle pour chaque détection.
show_boxes bool True Dessine des boîtes de délimitation autour des objets détectés. Essentiel pour l'identification visuelle et la localisation des objets dans les images ou les trames vidéo.
line_width None or int None Spécifie la largeur de ligne des boîtes de délimitation. Dans ce cas NoneLa largeur de la ligne est automatiquement ajustée en fonction de la taille de l'image. Permet une personnalisation visuelle pour plus de clarté.

Formats d'images et de vidéos

YOLOv8 prend en charge divers formats d'images et de vidéos, comme spécifié dans ultralytics/data/utils .py. Tu trouveras dans les tableaux ci-dessous les suffixes valides et des exemples de commandes de prédiction.

Images

Le tableau ci-dessous contient les formats d'image Ultralytics valides.

Suffixes d'image Exemple de commande Predict Référence
.bmp yolo predict source=image.bmp Format de fichier Microsoft BMP
.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 Objet Ă  images multiples
.png yolo predict source=image.png Graphique en réseau portable
.tif yolo predict source=image.tif Tag Image Format de fichier
.tiff yolo predict source=image.tiff Tag Image Format de fichier
.webp yolo predict source=image.webp WebP
.pfm yolo predict source=image.pfm Carte flottante portable

Vidéos

Le tableau ci-dessous contient les formats vidéo valides Ultralytics .

Suffixes vidéo Exemple de commande Predict Référence
.asf yolo predict source=video.asf Format des systèmes avancés
.avi yolo predict source=video.avi Entrelacement audio-vidéo
.gif yolo predict source=video.gif Format d'Ă©change de graphiques
.m4v yolo predict source=video.m4v MPEG-4 Partie 14
.mkv yolo predict source=video.mkv Matroska
.mov yolo predict source=video.mov Format de fichier QuickTime
.mp4 yolo predict source=video.mp4 MPEG-4 Partie 14 - Wikipedia
.mpeg yolo predict source=video.mpeg MPEG-1 Partie 2
.mpg yolo predict source=video.mpg MPEG-1 Partie 2
.ts yolo predict source=video.ts Flux de transport MPEG
.wmv yolo predict source=video.wmv Vidéo Windows Media
.webm yolo predict source=video.webm Projet WebM

Travailler avec les résultats

Tous Ultralytics predict() renverra une liste de Results objets :

RĂ©sultats

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 Les objets ont les attributs suivants :

Attribut Type Description
orig_img numpy.ndarray L'image originale sous forme de tableau numérique.
orig_shape tuple La forme de l'image originale au format (hauteur, largeur).
boxes Boxes, optional Un objet Boîtes contenant les boîtes de délimitation de la détection.
masks Masks, optional Un objet Masques contenant les masques de détection.
probs Probs, optional Un objet Probs contenant les probabilités de chaque classe pour la tâche de classification.
keypoints Keypoints, optional Un objet Points clés contenant les points clés détectés pour chaque objet.
obb OBB, optional Un objet OBB contenant des boîtes de délimitation orientées.
speed dict Un dictionnaire des vitesses de prétraitement, d'inférence et de post-traitement en millisecondes par image.
names dict Un dictionnaire de noms de classes.
path str Le chemin d'accès au fichier image.

Results ont les méthodes suivantes :

MĂ©thode Type de retour Description
update() None Mets Ă  jour les attributs boxes, masks et probs de l'objet Results.
cpu() Results Renvoie une copie de l'objet Résultats avec tous les tenseurs sur la mémoire de l'unité centrale.
numpy() Results Renvoie une copie de l'objet RĂ©sultats avec tous les tenseurs sous forme de tableaux numpy.
cuda() Results Renvoie une copie de l'objet Résultats avec tous les tenseurs sur la mémoire du GPU.
to() Results Renvoie une copie de l'objet Résultats avec les tenseurs sur le périphérique et le type spécifiés.
new() Results Renvoie un nouvel objet RĂ©sultats avec la mĂŞme image, le mĂŞme chemin et les mĂŞmes noms.
plot() numpy.ndarray Trace les résultats de la détection. Renvoie un tableau numpy de l'image annotée.
show() None Affiche les résultats annotés à l'écran.
save() None Enregistre les résultats annotés dans un fichier.
verbose() str Renvoie la chaîne du journal pour chaque tâche.
save_txt() None Enregistre les prédictions dans un fichier txt.
save_crop() None Sauvegarde les prévisions recadrées dans save_dir/cls/file_name.jpg.
tojson() str Convertit l'objet au format JSON.

Pour plus de détails, voir le Results documentation sur les classes.

Boîtes

Boxes peut être utilisé pour indexer, manipuler et convertir les boîtes de délimitation dans différents formats.

Boîtes

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

Voici un tableau pour les Boxes les méthodes et les propriétés de la classe, y compris leur nom, leur type et leur description :

Nom Type Description
cpu() Méthode Déplace l'objet dans la mémoire de l'unité centrale.
numpy() MĂ©thode Convertit l'objet en un tableau numpy.
cuda() Méthode Déplace l'objet dans la mémoire CUDA.
to() Méthode Déplace l'objet vers l'appareil spécifié.
xyxy Propriété (torch.Tensor) Renvoie les cases au format xyxy.
conf Propriété (torch.Tensor) Renvoie les valeurs de confiance des boîtes.
cls Propriété (torch.Tensor) Renvoie les valeurs de classe des boîtes.
id Propriété (torch.Tensor) Renvoie les identifiants de piste des boîtes (si disponibles).
xywh Propriété (torch.Tensor) Renvoie les boîtes au format xywh.
xyxyn Propriété (torch.Tensor) Renvoie les cases au format xyxy normalisé par la taille de l'image originale.
xywhn Propriété (torch.Tensor) Renvoie les boîtes au format xywh normalisé par la taille de l'image originale.

Pour plus de détails, voir le Boxes documentation sur les classes.

Masques

Masks peut être utilisé pour indexer, manipuler et convertir des masques en segments.

Masques

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

Voici un tableau pour les Masks les méthodes et les propriétés de la classe, y compris leur nom, leur type et leur description :

Nom Type Description
cpu() Méthode Renvoie les masques tensor sur la mémoire de l'unité centrale.
numpy() MĂ©thode Renvoie les masques tensor sous la forme d'un tableau numpy.
cuda() Méthode Renvoie les masques tensor sur la mémoire du GPU.
to() Méthode Renvoie les masques tensor avec le périphérique et le type spécifiés.
xyn Propriété (torch.Tensor) Une liste de segments normalisés représentés sous forme de tenseurs.
xy Propriété (torch.Tensor) Une liste de segments en coordonnées de pixels représentés sous forme de tenseurs.

Pour plus de détails, voir le Masks documentation sur les classes.

Points clés

Keypoints peut être utilisé pour indexer, manipuler et normaliser les coordonnées.

Points clés

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

Voici un tableau pour les Keypoints les méthodes et les propriétés de la classe, y compris leur nom, leur type et leur description :

Nom Type Description
cpu() Méthode Renvoie les points clés tensor sur la mémoire de l'unité centrale.
numpy() Méthode Renvoie les points clés tensor sous la forme d'un tableau numpy.
cuda() Méthode Renvoie les points clés tensor sur la mémoire du GPU.
to() Méthode Renvoie les keypoints tensor avec l'appareil et le type spécifiés.
xyn Propriété (torch.Tensor) Une liste de points clés normalisés représentés sous forme de tenseurs.
xy Propriété (torch.Tensor) Une liste de points clés en coordonnées de pixels représentés sous forme de tenseurs.
conf Propriété (torch.Tensor) Renvoie les valeurs de confiance des points clés si elles sont disponibles, sinon aucune.

Pour plus de détails, voir le Keypoints documentation sur les classes.

Probs

Probs peut être utilisé pour indexer, obtenir top1 et top5 indices et scores de classification.

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

Voici un tableau qui résume les méthodes et les propriétés de la fonction Probs classe :

Nom Type Description
cpu() Méthode Renvoie une copie de probs tensor sur la mémoire de l'unité centrale.
numpy() MĂ©thode Renvoie une copie de probs tensor sous la forme d'un tableau numpy.
cuda() Méthode Renvoie une copie de probs tensor sur la mémoire du GPU.
to() Méthode Renvoie une copie de probs tensor avec le périphérique et le type spécifiés.
top1 Propriété (int) Indice de la classe supérieure 1.
top5 Propriété (list[int]) Indices des 5 premières classes.
top1conf Propriété (torch.Tensor) Confiance de la classe des 1ers.
top5conf Propriété (torch.Tensor) Confidences des 5 premières classes.

Pour plus de détails, voir le Probs documentation sur les classes.

OBB

OBB peut être utilisé pour indexer, manipuler et convertir des boîtes de délimitation orientées dans différents formats.

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

Voici un tableau pour les OBB les méthodes et les propriétés de la classe, y compris leur nom, leur type et leur description :

Nom Type Description
cpu() Méthode Déplace l'objet dans la mémoire de l'unité centrale.
numpy() MĂ©thode Convertit l'objet en un tableau numpy.
cuda() Méthode Déplace l'objet dans la mémoire CUDA.
to() Méthode Déplace l'objet vers l'appareil spécifié.
conf Propriété (torch.Tensor) Renvoie les valeurs de confiance des boîtes.
cls Propriété (torch.Tensor) Renvoie les valeurs de classe des boîtes.
id Propriété (torch.Tensor) Renvoie les identifiants de piste des boîtes (si disponibles).
xyxy Propriété (torch.Tensor) Renvoie les cases horizontales au format xyxy.
xywhr Propriété (torch.Tensor) Renvoie les boîtes tournées au format xywhr.
xyxyxyxy Propriété (torch.Tensor) Renvoie les boîtes tournées au format xyxyxyxyxy.
xyxyxyxyn Propriété (torch.Tensor) Renvoie les boîtes pivotées au format xyxyxyxy normalisé par la taille de l'image.

Pour plus de détails, voir le OBB documentation sur les classes.

Tracer les résultats

Le plot() méthode en Results facilite la visualisation des prédictions en superposant les objets détectés (tels que les boîtes de délimitation, les masques, les points clés et les probabilités) sur l'image originale. Cette méthode renvoie l'image annotée sous forme de tableau NumPy, ce qui permet de l'afficher ou de l'enregistrer facilement.

Tracé

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_array[..., ::-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() Paramètres de la méthode

Le plot() prend en charge divers arguments pour personnaliser la sortie :

Argument Type Description DĂ©faut
conf bool Inclure les scores de confiance de détection. True
line_width float Largeur de ligne des boîtes de délimitation. S'adapte à la taille de l'image si None. None
font_size float Taille de la police du texte. S'adapte Ă  la taille de l'image si None. None
font str Nom de la police pour les annotations de texte. 'Arial.ttf'
pil bool Renvoie l'image sous la forme d'un objet PIL Image. False
img numpy.ndarray Image alternative pour le traçage. Utilise l'image originale si None. None
im_gpu torch.Tensor Image accélérée par le GPU pour un tracé plus rapide du masque. Forme : (1, 3, 640, 640). None
kpt_radius int Rayon pour les points clés dessinés. 5
kpt_line bool Relie les points clés par des lignes. True
labels bool Inclure les Ă©tiquettes de classe dans les annotations. True
boxes bool Superpose les boîtes de délimitation à l'image. True
masks bool Superpose les masques sur l'image. True
probs bool Inclure les probabilités de classification. True
show bool Affiche l'image annotée directement à l'aide de la visionneuse d'images par défaut. False
save bool Enregistre l'image annotée dans un fichier spécifié par filename. False
filename str Chemin d'accès et nom du fichier pour enregistrer l'image annotée si save est True. None

Inférence sûre pour les threads

Assurer la sécurité des threads pendant l'inférence est crucial lorsque tu exécutes plusieurs modèles YOLO en parallèle sur différents threads. L'inférence thread-safe garantit que les prédictions de chaque thread sont isolées et n'interfèrent pas les unes avec les autres, ce qui permet d'éviter les conditions de course et d'assurer des résultats cohérents et fiables.

Lorsque tu utilises les modèles YOLO dans une application multithread, il est important d'instancier des objets de modèle distincts pour chaque thread ou d'utiliser un stockage local pour les threads afin d'éviter les conflits :

Inférence sûre pour les threads

Instancie un seul modèle dans chaque thread pour une inférence sans risque pour les threads :

from ultralytics import YOLO
from threading import Thread

def thread_safe_predict(image_path):
    # Instantiate a new model inside the thread
    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()

Pour un examen approfondi de l'inférence à sécurité thread avec les modèles YOLO et des instructions étape par étape, tu peux te référer à notre guide de l'inférence à sécurité threadYOLO . Ce guide te fournira toutes les informations nécessaires pour éviter les pièges les plus courants et garantir le bon déroulement de ton inférence multithread.

Source de diffusion en continu for-Boucle

Voici un script Python utilisant OpenCV (cv2) et YOLOv8 pour faire de l'inférence sur des images vidéo. Ce script suppose que tu as déjà installé les paquets nécessaires (opencv-python et ultralytics).

Boucle forgée en continu

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

Ce script exécute des prédictions sur chaque image de la vidéo, visualise les résultats et les affiche dans une fenêtre. La boucle peut être quittée en appuyant sur 'q'.



Créé le 2023-11-12, Mis à jour le 2024-02-13
Auteurs : glenn-jocher (15), tensorturtle (1), AyushExel (1), Laughing-q (1)

Commentaires