Skip to content

Prédiction du modèle avec Ultralytics YOLO

Ultralytics YOLO écosystème et intégrations

Introduction

In the world of machine learning and computer vision, the process of making sense out of visual data is called 'inference' or 'prediction'. Ultralytics YOLO11 offers a powerful feature known as predict mode that is tailored for high-performance, real-time inference on a wide range of data sources.



Regarde : How to Extract the Outputs from Ultralytics YOLO Model for Custom Projects.

Applications dans le monde réel

FabricationSportsSécurité
Détection des pièces détachées de véhiculesDétection des joueurs de footballDétection des chutes de personnes
Détection des pièces détachées de véhiculesDétection des joueurs de footballDétection des chutes de personnes

Pourquoi utiliser Ultralytics YOLO pour l'inférence ?

Here's why you should consider YOLO11's predict mode for your various inference needs:

  • Polyvalence : Capable de faire des déductions sur des images, des vidéos et même des flux en direct.
  • Performance: Engineered for real-time, high-speed processing without sacrificing accuracy.
  • 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

YOLO11's predict mode is designed to be robust and versatile, featuring:

  • 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("yolo11n.pt")  # pretrained YOLO11n model

# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"])  # return a list of Results objects

# Process results list
for result in results:
    boxes = result.boxes  # Boxes object for bounding box outputs
    masks = result.masks  # Masks object for segmentation masks outputs
    keypoints = result.keypoints  # Keypoints object for pose outputs
    probs = result.probs  # Probs object for classification outputs
    obb = result.obb  # Oriented boxes object for OBB outputs
    result.show()  # display to screen
    result.save(filename="result.jpg")  # save to disk
from ultralytics import YOLO

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

# Run batched inference on a list of images
results = model(["image1.jpg", "image2.jpg"], stream=True)  # return a generator of Results objects

# Process results generator
for result in results:
    boxes = result.boxes  # Boxes object for bounding box outputs
    masks = result.masks  # Masks object for segmentation masks outputs
    keypoints = result.keypoints  # Keypoints object for pose outputs
    probs = result.probs  # Probs object for classification outputs
    obb = result.obb  # Oriented boxes object for OBB outputs
    result.show()  # display to screen
    result.save(filename="result.jpg")  # save to disk

Sources d'inférence

YOLO11 can process different types of input sources for inference, as shown in the table below. The sources include static images, video streams, and various data formats. The table also indicates whether each source can be used in streaming mode with the 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.

SourceExempleTypeNotes
image'image.jpg'str ou PathFichier image unique.
URL'https://ultralytics.com/images/bus.jpg'strURL d'une image.
capture d'écran'screen'strFais une capture d'écran.
LIPImage.open('image.jpg')PIL.ImageFormat HWC avec canaux RVB.
OpenCVcv2.imread('image.jpg')np.ndarrayFormat HWC avec canaux BGR uint8 (0-255).
numpynp.zeros((640,1280,3))np.ndarrayFormat HWC avec canaux BGR uint8 (0-255).
torchtorch.zeros(16,3,320,640)torch.TensorFormat BCHW avec canaux RVB float32 (0.0-1.0).
CSV'sources.csv'str ou PathFichier CSV contenant des chemins d'accès à des images, des vidéos ou des répertoires.
vidéo ✅'video.mp4'str ou PathFichier vidéo dans des formats tels que MP4, AVI, etc.
répertoire ✅'path/'str ou PathChemin d'accès à un répertoire contenant des images ou des vidéos.
glob ✅'path/*.jpg'strLe motif global permet de faire correspondre plusieurs fichiers. Utilise le * en tant que caractère de remplacement.
YouTube ✅'https://youtu.be/LNwODJXcvt4'strURL d'une vidéo YouTube.
ruisseau ✅'rtsp://example.com/media.mp4'strURL 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.
webcam ✅0intIndex of the connected camera device to run inference on.

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 YOLO11n model
model = YOLO("yolo11n.pt")

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

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

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 YOLO11n model
model = YOLO("yolo11n.pt")

# Define current screenshot as source
source = "screen"

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

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 YOLO11n model
model = YOLO("yolo11n.pt")

# Define remote image or video URL
source = "https://ultralytics.com/images/bus.jpg"

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

Lance l'inférence sur une image ouverte avec Python Imaging Library (PIL).

from PIL import Image

from ultralytics import YOLO

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

# Open an image using PIL
source = Image.open("path/to/image.jpg")

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

Exécute l'inférence sur une image lue avec OpenCV.

import cv2

from ultralytics import YOLO

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

# Read an image using OpenCV
source = cv2.imread("path/to/image.jpg")

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

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 YOLO11n model
model = YOLO("yolo11n.pt")

# Create a random numpy array of HWC shape (640, 640, 3) with values in range [0, 255] and type uint8
source = np.random.randint(low=0, high=255, size=(640, 640, 3), dtype="uint8")

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

Run inference on an image represented as a PyTorch tensor.

import torch

from ultralytics import YOLO

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

# Create a random torch tensor of BCHW shape (1, 3, 640, 640) with values in range [0, 1] and type float32
source = torch.rand(1, 3, 640, 640, dtype=torch.float32)

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

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.

from ultralytics import YOLO

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

# Define a path to a CSV file with images, URLs, videos and directories
source = "path/to/file.csv"

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

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 YOLO11n model
model = YOLO("yolo11n.pt")

# Define path to video file
source = "path/to/video.mp4"

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

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 YOLO11n model
model = YOLO("yolo11n.pt")

# Define path to directory containing images and videos for inference
source = "path/to/dir"

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

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 YOLO11n model
model = YOLO("yolo11n.pt")

# Define a glob search for all JPG files in a directory
source = "path/to/dir/*.jpg"

# OR define a recursive glob search for all JPG files including subdirectories
source = "path/to/dir/**/*.jpg"

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

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 YOLO11n model
model = YOLO("yolo11n.pt")

# Define source as YouTube video URL
source = "https://youtu.be/LNwODJXcvt4"

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

Use the stream mode to run inference on live video streams using RTSP, RTMP, TCP, or IP address protocols. If a single stream is provided, the model runs inference with a batch size of 1. For multiple streams, a .streams text file can be used to perform batched inference, where the batch size is determined by the number of streams provided (e.g., batch-size 8 for 8 streams).

from ultralytics import YOLO

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

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

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

For single stream usage, the batch size is set to 1 by default, allowing efficient real-time processing of the video feed.

To handle multiple video streams simultaneously, use a .streams text file containing the streaming sources. The model will run batched inference where the batch size equals the number of streams. This setup enables efficient processing of multiple feeds concurrently.

from ultralytics import YOLO

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

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

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

Exemple .streams text file:

rtsp://example.com/media1.mp4
rtsp://example.com/media2.mp4
rtmp://example2.com/live
tcp://192.168.1.100:554
...

Each row in the file represents a streaming source, allowing you to monitor and perform inference on several video streams at once.

You can run inference on a connected camera device by passing the index of that particular camera to source.

from ultralytics import YOLO

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

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

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 YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on 'bus.jpg' with arguments
model.predict("bus.jpg", save=True, imgsz=320, conf=0.5)

Arguments d'inférence :

ArgumentTypeDéfautDescription
sourcestr'ultralytics/assets'Specifies the data source for inference. Can be an image path, video file, directory, URL, or device ID for live feeds. Supports a wide range of formats and sources, enabling flexible application across different types of input.
conffloat0.25Dé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.
ioufloat0.7Intersection Over Union (IoU) threshold for Non-Maximum Suppression (NMS). Lower values result in fewer detections by eliminating overlapping boxes, useful for reducing duplicates.
imgszint or tuple640Définit la taille de l'image pour l'inférence. Peut être un seul entier 640 for square resizing or a (height, width) tuple. Proper sizing can improve detection accuracy and processing speed.
halfboolFalseEnables half-precision (FP16) inference, which can speed up model inference on supported GPUs with minimal impact on accuracy.
devicestrNoneSpécifie le dispositif d'inférence (par ex, cpu, cuda:0 ou 0). Permet aux utilisateurs de choisir entre CPU, un GPU spécifique ou d'autres dispositifs de calcul pour l'exécution du modèle.
max_detint300Nombre 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_strideint1Saut 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_bufferboolFalseDetermines whether to queue incoming frames for video streams. If False, old frames get dropped to accomodate new frames (optimized for real-time applications). If `True', queues new frames in a buffer, ensuring no frames get skipped, but will cause latency if inference FPS is lower than stream FPS.
visualizeboolFalseActive 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.
augmentboolFalsePermet 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_nmsboolFalsePermet 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 courant.
classeslist[int]NoneFiltre 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_masksboolFalseUtilise 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.
embedlist[int]NoneSpecifies the layers from which to extract feature vectors or embeddings. Useful for downstream tasks like clustering or similarity search.

Arguments de visualisation :

ArgumentTypeDéfautDescription
showboolFalseSi 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.
saveboolFalse ou TrueEnables saving of the annotated images or videos to file. Useful for documentation, further analysis, or sharing results. Defaults to True when using CLI & False when used in Python.
save_framesboolFalseLors 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_txtboolFalseEnregistre 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_confboolFalseInclut les scores de confiance dans les fichiers texte sauvegardés. Améliore les détails disponibles pour le post-traitement et l'analyse.
save_cropboolFalseSauvegarde 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_labelsboolTrueAffiche des étiquettes pour chaque détection dans la sortie visuelle. Permet de comprendre immédiatement les objets détectés.
show_confboolTrueAffiche 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_boxesboolTrueDessine 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_widthNone ou intNoneSpé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

YOLO11 supports various image and video formats, as specified in ultralytics/data/utils.py. See the tables below for the valid suffixes and example predict commands.

Images

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

Note

HEIC images are supported for inference only, not for training.

Suffixes d'imageExemple de commande PredictRéférence
.bmpyolo predict source=image.bmpMicrosoft Format de fichier BMP
.dngyolo predict source=image.dngAdobe DNG
.jpegyolo predict source=image.jpegJPEG
.jpgyolo predict source=image.jpgJPEG
.mpoyolo predict source=image.mpoObjet à images multiples
.pngyolo predict source=image.pngGraphique en réseau portable
.tifyolo predict source=image.tifTag Image Format de fichier
.tiffyolo predict source=image.tiffTag Image Format de fichier
.webpyolo predict source=image.webpWebP
.pfmyolo predict source=image.pfmCarte flottante portable
.HEICyolo predict source=image.HEICHigh Efficiency Image Format

Vidéos

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

Suffixes vidéoExemple de commande PredictRéférence
.asfyolo predict source=video.asfFormat des systèmes avancés
.aviyolo predict source=video.aviEntrelacement audio-vidéo
.gifyolo predict source=video.gifFormat d'échange de graphiques
.m4vyolo predict source=video.m4vMPEG-4 Partie 14
.mkvyolo predict source=video.mkvMatroska
.movyolo predict source=video.movFormat de fichier QuickTime
.mp4yolo predict source=video.mp4MPEG-4 Partie 14 - Wikipedia
.mpegyolo predict source=video.mpegMPEG-1 Partie 2
.mpgyolo predict source=video.mpgMPEG-1 Partie 2
.tsyolo predict source=video.tsFlux de transport MPEG
.wmvyolo predict source=video.wmvVidéo Windows Media
.webmyolo predict source=video.webmProjet WebM

Travailler avec les résultats

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

Résultats

from ultralytics import YOLO

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

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

Results Les objets ont les attributs suivants :

AttributTypeDescription
orig_imgnumpy.ndarrayL'image originale sous forme de tableau numérique.
orig_shapetupleLa forme de l'image originale au format (hauteur, largeur).
boxesBoxes, optionalUn objet Boîtes contenant les boîtes de délimitation de la détection.
masksMasks, optionalUn objet Masques contenant les masques de détection.
probsProbs, optionalUn objet Probs contenant les probabilités de chaque classe pour la tâche de classification.
keypointsKeypoints, optionalUn objet Points clés contenant les points clés détectés pour chaque objet.
obbOBB, optionalUn objet OBB contenant des boîtes de délimitation orientées.
speeddictUn dictionnaire des vitesses de prétraitement, d'inférence et de post-traitement en millisecondes par image.
namesdictUn dictionnaire de noms de classes.
pathstrLe chemin d'accès au fichier image.

Results ont les méthodes suivantes :

MéthodeType de retourDescription
update()NoneMets à jour les attributs boxes, masks et probs de l'objet Results.
cpu()ResultsRenvoie une copie de l'objet Results avec tous les tenseurs sur la mémoire CPU .
numpy()ResultsRenvoie une copie de l'objet Résultats avec tous les tenseurs sous forme de tableaux numpy.
cuda()ResultsRenvoie une copie de l'objet Results avec tous les tenseurs sur la mémoire GPU .
to()ResultsRenvoie une copie de l'objet Résultats avec les tenseurs sur le périphérique et le type spécifiés.
new()ResultsRenvoie un nouvel objet Résultats avec la même image, le même chemin et les mêmes noms.
plot()numpy.ndarrayTrace les résultats de la détection. Renvoie un tableau numpy de l'image annotée.
show()NoneAffiche les résultats annotés à l'écran.
save()NoneEnregistre les résultats annotés dans un fichier.
verbose()strRenvoie la chaîne du journal pour chaque tâche.
save_txt()NoneEnregistre les prédictions dans un fichier txt.
save_crop()NoneSauvegarde les prévisions recadrées dans save_dir/cls/file_name.jpg.
tojson()strConvertit 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 YOLO11n model
model = YOLO("yolo11n.pt")

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

# View results
for r in results:
    print(r.boxes)  # print the Boxes object containing the detection bounding boxes

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 :

NomTypeDescription
cpu()MéthodeDéplace l'objet vers la mémoire CPU .
numpy()MéthodeConvertit l'objet en un tableau numpy.
cuda()MéthodeDéplace l'objet vers la mémoire CUDA .
to()MéthodeDéplace l'objet vers l'appareil spécifié.
xyxyPropriété (torch.Tensor)Renvoie les cases au format xyxy.
confPropriété (torch.Tensor)Renvoie les valeurs de confiance des boîtes.
clsPropriété (torch.Tensor)Renvoie les valeurs de classe des boîtes.
idPropriété (torch.Tensor)Renvoie les identifiants de piste des boîtes (si disponibles).
xywhPropriété (torch.Tensor)Renvoie les boîtes au format xywh.
xyxynPropriété (torch.Tensor)Renvoie les cases au format xyxy normalisé par la taille de l'image originale.
xywhnProprié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 YOLO11n-seg Segment model
model = YOLO("yolo11n-seg.pt")

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

# View results
for r in results:
    print(r.masks)  # print the Masks object containing the detected instance masks

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 :

NomTypeDescription
cpu()MéthodeRenvoie les masques tensor sur la mémoire CPU .
numpy()MéthodeRenvoie les masques tensor sous la forme d'un tableau numpy.
cuda()MéthodeRenvoie les masques tensor sur la mémoire GPU .
to()MéthodeRenvoie les masques tensor avec le périphérique et le type spécifiés.
xynPropriété (torch.Tensor)Une liste de segments normalisés représentés sous forme de tenseurs.
xyProprié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 YOLO11n-pose Pose model
model = YOLO("yolo11n-pose.pt")

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

# View results
for r in results:
    print(r.keypoints)  # print the Keypoints object containing the detected keypoints

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 :

NomTypeDescription
cpu()MéthodeRenvoie les points clés tensor sur la mémoire CPU .
numpy()MéthodeRenvoie les points clés tensor sous la forme d'un tableau numpy.
cuda()MéthodeRenvoie les points clés tensor sur la mémoire GPU .
to()MéthodeRenvoie les keypoints tensor avec l'appareil et le type spécifiés.
xynPropriété (torch.Tensor)Une liste de points clés normalisés représentés sous forme de tenseurs.
xyPropriété (torch.Tensor)Une liste de points clés en coordonnées de pixels représentés sous forme de tenseurs.
confProprié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 YOLO11n-cls Classify model
model = YOLO("yolo11n-cls.pt")

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

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

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

NomTypeDescription
cpu()MéthodeRenvoie une copie des probs tensor sur la mémoire CPU .
numpy()MéthodeRenvoie une copie de probs tensor sous la forme d'un tableau numpy.
cuda()MéthodeRenvoie une copie des probs tensor sur la mémoire GPU .
to()MéthodeRenvoie une copie de probs tensor avec le périphérique et le type spécifiés.
top1Propriété (int)Indice de la classe supérieure 1.
top5Propriété (list[int])Indices des 5 premières classes.
top1confPropriété (torch.Tensor)Confiance de la classe des 1ers.
top5confProprié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 YOLO11n model
model = YOLO("yolo11n-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 :

NomTypeDescription
cpu()MéthodeDéplace l'objet vers la mémoire CPU .
numpy()MéthodeConvertit l'objet en un tableau numpy.
cuda()MéthodeDéplace l'objet vers la mémoire CUDA .
to()MéthodeDéplace l'objet vers l'appareil spécifié.
confPropriété (torch.Tensor)Renvoie les valeurs de confiance des boîtes.
clsPropriété (torch.Tensor)Renvoie les valeurs de classe des boîtes.
idPropriété (torch.Tensor)Renvoie les identifiants de piste des boîtes (si disponibles).
xyxyPropriété (torch.Tensor)Renvoie les cases horizontales au format xyxy.
xywhrPropriété (torch.Tensor)Renvoie les boîtes tournées au format xywhr.
xyxyxyxyPropriété (torch.Tensor)Renvoie les boîtes tournées au format xyxyxyxyxy.
xyxyxyxynProprié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 YOLO11n model
model = YOLO("yolo11n.pt")

# Run inference on 'bus.jpg'
results = model(["bus.jpg", "zidane.jpg"])  # results list

# Visualize the results
for i, r in enumerate(results):
    # Plot results image
    im_bgr = r.plot()  # BGR-order numpy array
    im_rgb = Image.fromarray(im_bgr[..., ::-1])  # RGB-order PIL image

    # Show results to screen (in supported environments)
    r.show()

    # Save results to disk
    r.save(filename=f"results{i}.jpg")

plot() Paramètres de la méthode

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

ArgumentTypeDescriptionDéfaut
confboolInclure les scores de confiance de détection.True
line_widthfloatLargeur de ligne des boîtes de délimitation. S'adapte à la taille de l'image si None.None
font_sizefloatTaille de la police du texte. S'adapte à la taille de l'image si None.None
fontstrNom de la police pour les annotations de texte.'Arial.ttf'
pilboolRenvoie l'image sous la forme d'un objet PIL Image.False
imgnumpy.ndarrayImage alternative pour le traçage. Utilise l'image originale si None.None
im_gputorch.TensorGPU-Image accélérée pour un tracé plus rapide du masque. Forme : (1, 3, 640, 640).None
kpt_radiusintRayon pour les points clés dessinés.5
kpt_lineboolRelie les points clés par des lignes.True
labelsboolInclure les étiquettes de classe dans les annotations.True
boxesboolSuperpose les boîtes de délimitation à l'image.True
masksboolSuperpose les masques sur l'image.True
probsboolInclure les probabilités de classification.True
showboolAffiche l'image annotée directement à l'aide de la visionneuse d'images par défaut.False
saveboolEnregistre l'image annotée dans un fichier spécifié par filename.False
filenamestrChemin d'accès et nom du fichier pour enregistrer l'image annotée si save est True.None
color_modestrSpécifie le mode de couleur, par exemple "instance" ou "classe".'class'

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 threading import Thread

from ultralytics import YOLO


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


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

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) and YOLO to run inference on video frames. This script assumes you have already installed the necessary packages (opencv-python et ultralytics).

Boucle forgée en continu

import cv2

from ultralytics import YOLO

# Load the YOLO model
model = YOLO("yolo11n.pt")

# Open the video file
video_path = "path/to/your/video/file.mp4"
cap = cv2.VideoCapture(video_path)

# Loop through the video frames
while cap.isOpened():
    # Read a frame from the video
    success, frame = cap.read()

    if success:
        # Run YOLO inference on the frame
        results = model(frame)

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

        # Display the annotated frame
        cv2.imshow("YOLO Inference", annotated_frame)

        # Break the loop if 'q' is pressed
        if cv2.waitKey(1) & 0xFF == ord("q"):
            break
    else:
        # Break the loop if the end of the video is reached
        break

# Release the video capture object and close the display window
cap.release()
cv2.destroyAllWindows()

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

FAQ

What is Ultralytics YOLO and its predict mode for real-time inference?

Ultralytics YOLO is a state-of-the-art model for real-time object detection, segmentation, and classification. Its predict mode allows users to perform high-speed inference on various data sources such as images, videos, and live streams. Designed for performance and versatility, it also offers batch processing and streaming modes. For more details on its features, check out the Ultralytics YOLO predict mode.

How can I run inference using Ultralytics YOLO on different data sources?

Ultralytics YOLO can process a wide range of data sources, including individual images, videos, directories, URLs, and streams. You can specify the data source in the model.predict() appel. Par exemple, utilise 'image.jpg' pour une image locale ou 'https://ultralytics.com/images/bus.jpg' pour une URL. Consulte les exemples détaillés des différents sources d'inférence dans la documentation.

How do I optimize YOLO inference speed and memory usage?

Pour optimiser la vitesse d'inférence et gérer efficacement la mémoire, tu peux utiliser le mode streaming en définissant stream=True dans la méthode d'appel du prédicteur. Le mode streaming génère un générateur de Results au lieu de charger toutes les images dans la mémoire. Pour le traitement de longues vidéos ou de grands ensembles de données, le mode streaming est particulièrement utile. Pour en savoir plus mode streaming.

What inference arguments does Ultralytics YOLO support?

Le model.predict() method in YOLO supports various arguments such as conf, iou, imgsz, deviceet plus encore. Ces arguments te permettent de personnaliser le processus d'inférence, en définissant des paramètres tels que les seuils de confiance, la taille de l'image et l'appareil utilisé pour le calcul. Des descriptions détaillées de ces arguments sont disponibles dans la section arguments d'inférence section.

How can I visualize and save the results of YOLO predictions?

After running inference with YOLO, the Results contiennent des méthodes pour afficher et enregistrer les images annotées. Tu peux utiliser des méthodes comme result.show() et result.save(filename="result.jpg") pour visualiser et enregistrer les résultats. Pour obtenir une liste complète de ces méthodes, reporte-toi à la rubrique Travailler avec les résultats section.

📅 Created 11 months ago ✏️ Updated 9 days ago

Commentaires