Prédiction de modèle avec Ultralytics YOLO
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 YOLO11 offre une fonctionnalité puissante appelée mode de prédiction, conçue pour l'inférence en temps réel et à haute performance sur un large éventail de sources de données.
Regarder : Comment extraire les sorties du modèle Ultralytics YOLO pour des projets personnalisés.
Applications concrètes
Fabrication | Sports | Sécurité |
---|---|---|
Détection de pièces détachées de véhicules | Détection de joueurs de football | Détection de chutes de personnes |
Pourquoi utiliser Ultralytics YOLO pour l'inférence ?
Voici pourquoi vous devriez envisager le mode de prédiction de YOLO11 pour vos différents besoins d'inférence :
- Polyvalence : Capable de faire des inférences sur des images, des vidéos et même des flux en direct.
- Performance : Conçu pour un traitement en temps réel et à haute vitesse sans sacrifier la précision.
- Facilité d'utilisation : Interfaces python et CLI intuitives pour un déploiement et des tests rapides.
- Hautement personnalisable : Divers paramètres pour ajuster le comportement d'inférence du modèle en fonction de vos besoins spécifiques.
Principales caractéristiques du mode Prédiction
Le mode de prédiction de YOLO11 est conçu pour être robuste et polyvalent, avec :
- Compatibilité avec plusieurs sources de données : Que vos données se présentent sous forme d'images individuelles, d'une collection d'images, de fichiers vidéo ou de flux vidéo en temps réel, le mode de prédiction est là pour vous.
- Mode de diffusion en continu : Utilisez la fonction de diffusion en continu pour générer un générateur d'objets économe en mémoire.
Results
Activez cette fonction en définissantstream=True
dans la méthode d'appel du prédicteur. - Traitement par lots : La possibilité de traiter plusieurs images ou trames vidéo dans un seul lot, ce qui accélère encore le temps d'inférence.
- Facilité d'intégration : S'intègre facilement aux pipelines de données existants et aux autres composants logiciels, grâce à son API flexible.
Les modèles Ultralytics YOLO renvoient soit une liste python de Results
objets, ou un générateur Python de Results
objets à faible consommation de mémoire lorsque stream=True
est transmis au modèle pendant l'inférence :
Prédire
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 peut traiter différents types de sources d'entrée pour l'inférence, comme indiqué dans 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 de vidéos ou de 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
Utilisez stream=True
pour traiter de longues vidéos ou de grands ensembles de données afin de gérer efficacement la mémoire. Lorsque stream=False
, les résultats de toutes les images ou points de données sont stockés en mémoire, ce qui peut rapidement s'accumuler et provoquer des erreurs de mémoire insuffisante pour les grandes entrées. En revanche, stream=True
utilise un générateur, qui ne conserve 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 mémoire insuffisante.
Source | Exemple | Type | Remarques |
---|---|---|---|
image | 'image.jpg' |
str ou Path |
Fichier image unique. |
URL | 'https://ultralytics.com/images/bus.jpg' |
str |
URL vers une image. |
capture d'écran | 'screen' |
str |
Capturer une capture d'écran. |
PIL | Image.open('image.jpg') |
PIL.Image |
Format HWC avec canaux RVB. |
module DNN d'OpenCV | cv2.imread('image.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 les chemins d'accès aux images, vidéos ou 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 |
Modèle Glob pour faire correspondre plusieurs fichiers. Utilisez le * caractère comme caractère générique. |
YouTube ✅ | 'https://youtu.be/LNwODJXcvt4' |
str |
URL d'une vidéo YouTube. |
flux ✅ | 'rtsp://example.com/media.mp4' |
str |
URL pour les protocoles de streaming 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 s'exécuteront avec une taille de lot de 8. |
webcam ✅ | 0 |
int |
Index du périphérique caméra connecté sur lequel exécuter l'inférence. |
Vous trouverez ci-dessous des exemples de code pour utiliser chaque type de source :
Sources de prédiction
Exécuter 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écuter l'inférence sur le contenu actuel de l'écran 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écuter l'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
Exécuter 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écuter 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écuter l'inférence sur une image représentée sous forme de 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
Exécuter l'inférence sur une image représentée sous forme de tenseur PyTorch.
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écuter l'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écuter l'inférence sur un fichier vidéo. En utilisant stream=True
, vous pouvez créer un générateur d'objets Results 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écuter l'inférence sur toutes les images et vidéos d'un répertoire. Pour également capturer des images et des vidéos dans les sous-répertoires, utilisez un modèle 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
Exécuter l'inférence sur toutes les images et vidéos qui correspondent à une expression glob avec *
caractères.
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écuter l'inférence sur une vidéo YouTube. En utilisant stream=True
, vous pouvez créer un générateur d'objets Results 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
Utilisez le mode stream pour exécuter l'inférence sur des flux vidéo en direct utilisant les protocoles RTSP, RTMP, TCP ou adresse IP. Si un seul flux est fourni, le modèle exécute l'inférence avec une taille de lot de 1. Pour plusieurs flux, un .streams
fichier texte peut être utilisé pour effectuer une inférence par lots, où la taille du lot est déterminée par le nombre de flux fournis (par exemple, une taille de lot de 8 pour 8 flux).
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
Pour une utilisation en flux unique, la taille du lot est définie par défaut sur 1, ce qui permet un traitement efficace en temps réel du flux vidéo.
Pour gérer plusieurs flux vidéo simultanément, utilisez un .streams
fichier texte contenant les sources de diffusion. Le modèle exécutera l'inférence par lots où la taille du lot est égale au nombre de flux. Cette configuration permet un traitement efficace de plusieurs flux simultanément.
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
fichier texte :
rtsp://example.com/media1.mp4
rtsp://example.com/media2.mp4
rtmp://example2.com/live
tcp://192.168.1.100:554
...
Chaque ligne du fichier représente une source de diffusion, ce qui vous permet de surveiller et d'effectuer une inférence sur plusieurs flux vidéo à la fois.
Vous pouvez exécuter l'inférence sur un périphérique caméra connecté en transmettant l'index de cette caméra particulière à 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 d'inférence
model.predict()
accepte plusieurs arguments qui peuvent être transmis 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("https://ultralytics.com/images/bus.jpg", save=True, imgsz=320, conf=0.5)
Arguments d'inférence :
Argument | Type | Par défaut | Description |
---|---|---|---|
source |
str |
'ultralytics/assets' |
Spécifie la source de données pour l'inférence. Peut être un chemin d'image, un fichier vidéo, un répertoire, une URL ou un ID de périphérique pour les flux en direct. Prend en charge une large gamme de formats et de sources, permettant une application flexible à travers différents types d'entrée. |
conf |
float |
0.25 |
Définit le seuil de confiance minimum pour les détections. Les objets détectés avec une confiance inférieure à ce seuil seront ignorés. L'ajustement de cette valeur peut aider à réduire les faux positifs. |
iou |
float |
0.7 |
Seuil d'Intersection Over Union (IoU) pour la suppression non maximale (NMS). Des valeurs plus faibles 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 ou tuple |
640 |
Définit la taille de l'image pour l'inférence. Peut être un entier unique 640 pour le redimensionnement carré ou un tuple (hauteur, largeur). Un dimensionnement approprié peut améliorer la détection précision et la vitesse de traitement. |
rect |
bool |
True |
Si activé, remplit minimalement le côté le plus court de l'image jusqu'à ce qu'il soit divisible par le pas pour améliorer la vitesse d'inférence. Si désactivé, remplit l'image pour former un carré pendant l'inférence. |
half |
bool |
False |
Active 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 périphérique pour l'inférence (par exemple, cpu , cuda:0 ou 0 ). Permet aux utilisateurs de choisir entre le CPU, un GPU spécifique ou d'autres périphériques de calcul pour l'exécution du modèle. |
batch |
int |
1 |
Spécifie la taille de lot pour l'inférence (fonctionne uniquement lorsque la source est un répertoire, un fichier vidéo ou .txt fichier). Une taille de lot plus importante peut fournir un débit plus élevé, ce qui réduit le temps total requis pour l'inférence. |
max_det |
int |
300 |
Nombre maximal de détections autorisées par image. Limite le nombre total d'objets que le modèle peut détecter dans une seule inférence, empêchant les sorties excessives dans les scènes denses. |
vid_stride |
int |
1 |
Pas de trame pour les entrées vidéo. Permet de sauter des trames dans les vidéos pour accélérer le traitement au détriment de la résolution temporelle. Une valeur de 1 traite chaque trame, des valeurs plus élevées sautent des trames. |
stream_buffer |
bool |
False |
Détermine s'il faut mettre en file d'attente les trames entrantes pour les flux vidéo. Si False , les anciennes images sont supprimées pour faire place aux nouvelles (optimisé pour les applications en temps réel). Si True , met en file d'attente de nouvelles images dans un tampon, garantissant qu'aucune image n'est ignorée, mais entraînera une latence si le FPS d'inférence est inférieur au FPS du flux. |
visualize |
bool |
False |
Active la visualisation des caractéristiques du modèle pendant l'inférence, fournissant des informations sur ce que le modèle "voit". Utile pour le débogage et l'interprétation du modèle. |
augment |
bool |
False |
Active l'augmentation au moment du test (TTA) pour les prédictions, ce qui améliore potentiellement la robustesse de la détection au détriment de la vitesse d'inférence. |
agnostic_nms |
bool |
False |
Active la suppression non maximale (NMS) agnostique à la classe, qui fusionne les boîtes qui se chevauchent de différentes classes. Utile dans les scénarios de détection multi-classes où le chevauchement de classes est courant. |
classes |
list[int] |
None |
Filtre les prédictions à un ensemble d'IDs de classe. Seules les détections appartenant aux classes spécifiées seront retournées. Utile pour se concentrer sur les objets pertinents dans les tâches de détection multi-classes. |
retina_masks |
bool |
False |
Retourne des masques de segmentation haute résolution. Les masques retournés (masks.data ) correspondent à la taille de l'image originale si cette option est activée. Si elle est désactivée, ils ont la taille de l'image utilisée pendant l'inférence. |
embed |
list[int] |
None |
Spécifie les couches à partir desquelles extraire les vecteurs de caractéristiques ou les embeddings. Utile pour les tâches en aval comme le clustering ou la recherche de similarité. |
project |
str |
None |
Nom du répertoire de projet où les sorties de prédiction sont enregistrées si save est activé. |
name |
str |
None |
Nom de l'exécution de la prédiction. Utilisé pour créer un sous-répertoire dans le dossier du projet, où les sorties de prédiction sont stockées si save est activé. |
stream |
bool |
False |
Active le traitement économe en mémoire pour les longues vidéos ou les nombreuses images en renvoyant un générateur d'objets Results au lieu de charger toutes les images en mémoire en une seule fois. |
verbose |
bool |
True |
Contrôle s'il faut afficher les journaux d'inférence détaillés dans le terminal, fournissant un retour d'information en temps réel sur le processus de prédiction. |
Arguments de visualisation :
Argument | Type | Par défaut | Description |
---|---|---|---|
show |
bool |
False |
Si True , affiche les images ou 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 or True |
Permet de sauvegarder les images ou vidéos annotées dans un fichier. Utile pour la documentation, l'analyse plus approfondie ou le partage des résultats. Vaut True par défaut lors de l'utilisation de la CLI et False lors de l'utilisation en python. |
save_frames |
bool |
False |
Lors du traitement de vidéos, enregistre les images individuelles sous forme d'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 détection dans un fichier texte, suivant 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 enregistrés. Améliore le niveau de détail disponible pour le post-traitement et l'analyse. |
save_crop |
bool |
False |
Enregistre les images recadrées des détections. Utile pour l'augmentation de l'ensemble 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 les étiquettes pour chaque détection dans la sortie visuelle. Fournit une compréhension immédiate des 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 englobantes 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 englobantes. Si None , la largeur de ligne est automatiquement ajustée en fonction de la taille de l'image. Fournit une personnalisation visuelle pour plus de clarté. |
Formats d'image et de vidéo
YOLO11 prend en charge divers formats d'image et de vidéo, comme spécifié dans ultralytics/data/utils.py. Consultez les tableaux ci-dessous pour connaître les suffixes valides et des exemples de commandes de prédiction.
Images
Le tableau ci-dessous contient les formats d'image Ultralytics valides.
Remarque
Les images HEIC sont prises en charge pour l'inférence uniquement, pas pour l'entraînement.
Suffixes d'image | Exemple de commande de prédiction | Référence |
---|---|---|
.bmp |
yolo predict source=image.bmp |
Format de fichier BMP Microsoft |
.dng |
yolo predict source=image.dng |
Adobe DNG |
.jpeg |
yolo predict source=image.jpeg |
JPEG |
.jpg |
yolo predict source=image.jpg |
JPEG |
.mpo |
yolo predict source=image.mpo |
Multi Picture Object |
.png |
yolo predict source=image.png |
Portable Network Graphics |
.tif |
yolo predict source=image.tif |
Tag Image File Format |
.tiff |
yolo predict source=image.tiff |
Tag Image File Format |
.webp |
yolo predict source=image.webp |
WebP |
.pfm |
yolo predict source=image.pfm |
Portable FloatMap |
.HEIC |
yolo predict source=image.HEIC |
High Efficiency Image Format |
Vidéos
Le tableau ci-dessous contient les formats vidéo Ultralytics valides.
Suffixes vidéo | Exemple de commande de prédiction | Référence |
---|---|---|
.asf |
yolo predict source=video.asf |
Advanced Systems Format |
.avi |
yolo predict source=video.avi |
Audio Video Interleave |
.gif |
yolo predict source=video.gif |
Graphics Interchange Format |
.m4v |
yolo predict source=video.m4v |
MPEG-4 Part 14 |
.mkv |
yolo predict source=video.mkv |
Matroska |
.mov |
yolo predict source=video.mov |
QuickTime File Format |
.mp4 |
yolo predict source=video.mp4 |
MPEG-4 Part 14 - Wikipedia |
.mpeg |
yolo predict source=video.mpeg |
MPEG-1 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 |
Windows Media Video |
.webm |
yolo predict source=video.webm |
Projet WebM |
Travailler avec les résultats
Tous les Ultralytics predict()
les appels renverront 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("https://ultralytics.com/images/bus.jpg")
results = model(
[
"https://ultralytics.com/images/bus.jpg",
"https://ultralytics.com/images/zidane.jpg",
]
) # batch inference
Results
les objets ont les attributs suivants :
Attribut | Type | Description |
---|---|---|
orig_img |
np.ndarray |
L'image originale sous forme de tableau numpy. |
orig_shape |
tuple |
La forme de l'image originale au format (hauteur, largeur). |
boxes |
Boxes, optional |
Un objet Boxes contenant les boîtes englobantes de détection. |
masks |
Masks, optional |
Un objet Masks 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 Keypoints contenant les points clés détectés pour chaque objet. |
obb |
OBB, optional |
Un objet OBB contenant les boîtes englobantes 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 mappant les indices de classe aux noms de classe. |
path |
str |
Le chemin d'accès au fichier image. |
save_dir |
str, optional |
Répertoire pour enregistrer les résultats. |
Results
les objets ont les méthodes suivantes :
Méthode | Type de retour | Description |
---|---|---|
update() |
None |
Met à jour l'objet Results avec de nouvelles données de détection (boîtes, masques, probabilités, obb, points clés). |
cpu() |
Results |
Retourne une copie de l'objet Results avec tous les tenseurs déplacés vers la mémoire du CPU. |
numpy() |
Results |
Retourne une copie de l'objet Results avec tous les tenseurs convertis en tableaux numpy. |
cuda() |
Results |
Retourne une copie de l'objet Results avec tous les tenseurs déplacés vers la mémoire du GPU. |
to() |
Results |
Retourne une copie de l'objet Results avec les tenseurs déplacés vers le dispositif et le type de données spécifiés. |
new() |
Results |
Crée un nouvel objet Results avec les mêmes attributs d'image, de chemin, de noms et de vitesse. |
plot() |
np.ndarray |
Trace les résultats de la détection sur une image RVB d’entrée et renvoie l’image annotée. |
show() |
None |
Affiche l'image avec les résultats d'inférence annotés. |
save() |
str |
Enregistre l'image des résultats d'inférence annotés dans un fichier et renvoie le nom du fichier. |
verbose() |
str |
Retourne une chaîne de journal pour chaque tâche, détaillant les résultats de la détection et de la classification. |
save_txt() |
str |
Enregistre les résultats de la détection dans un fichier texte et renvoie le chemin d'accès au fichier enregistré. |
save_crop() |
None |
Enregistre les images de détection recadrées dans le répertoire spécifié. |
summary() |
List[Dict[str, Any]] |
Convertit les résultats de l'inférence en un dictionnaire récapitulatif avec normalisation optionnelle. |
to_df() |
DataFrame |
Convertit les résultats de la détection en un DataFrame Polars. |
to_csv() |
str |
Convertit les résultats de détection au format CSV. |
to_json() |
str |
Convertit les résultats de détection au format JSON. |
Pour plus de détails, consultez la Results
documentation de la classe.
Boîtes
Boxes
L'objet peut être utilisé pour indexer, manipuler et convertir des boîtes englobantes en 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("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.boxes) # print the Boxes object containing the detection bounding boxes
Voici un tableau pour les Boxes
méthodes et 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 vers la mémoire du CPU. |
numpy() |
Méthode | Convertit l'objet en un tableau numpy. |
cuda() |
Méthode | Déplace l'objet vers la mémoire CUDA. |
to() |
Méthode | Déplace l'objet vers le dispositif spécifié. |
xyxy |
Propriété (torch.Tensor ) |
Renvoie les boîtes 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 suivi des boîtes (si disponibles). |
xywh |
Propriété (torch.Tensor ) |
Renvoie les boîtes au format xywh. |
xyxyn |
Propriété (torch.Tensor ) |
Retourne les boîtes au format xyxy normalisées par la taille de l'image originale. |
xywhn |
Propriété (torch.Tensor ) |
Retourne les boîtes au format xywh normalisées par la taille de l'image originale. |
Pour plus de détails, consultez la Boxes
documentation de la classe.
Masques
Masks
L'objet 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("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.masks) # print the Masks object containing the detected instance masks
Voici un tableau pour les Masks
méthodes et propriétés de la classe, y compris leur nom, leur type et leur description :
Nom | Type | Description |
---|---|---|
cpu() |
Méthode | Retourne le tenseur des masques dans la mémoire du CPU. |
numpy() |
Méthode | Retourne le tenseur des masques sous forme de tableau numpy. |
cuda() |
Méthode | Retourne le tenseur des masques dans la mémoire du GPU. |
to() |
Méthode | Retourne le tenseur des masques avec le périphérique et le type de données 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, consultez la Masks
documentation de la classe.
Points clés
Keypoints
L'objet 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("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.keypoints) # print the Keypoints object containing the detected keypoints
Voici un tableau pour les Keypoints
méthodes et propriétés de la classe, y compris leur nom, leur type et leur description :
Nom | Type | Description |
---|---|---|
cpu() |
Méthode | Retourne le tenseur des points clés dans la mémoire du CPU. |
numpy() |
Méthode | Retourne le tenseur des points clés sous forme de tableau numpy. |
cuda() |
Méthode | Retourne le tenseur des points clés dans la mémoire du GPU. |
to() |
Méthode | Retourne le tenseur des points clés avec le périphérique et le type de données 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 ) |
Retourne les valeurs de confiance des points clés si disponibles, sinon None. |
Pour plus de détails, consultez la Keypoints
documentation de la classe.
Probabilités
Probs
L'objet peut être utilisé pour indexer, obtenir top1
et top5
les indices et les scores de classification.
Probabilités
from ultralytics import YOLO
# Load a pretrained YOLO11n-cls Classify model
model = YOLO("yolo11n-cls.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.probs) # print the Probs object containing the detected class probabilities
Voici un tableau récapitulatif des méthodes et des propriétés pour la Probs
classe :
Nom | Type | Description |
---|---|---|
cpu() |
Méthode | Retourne une copie du tenseur de probabilités dans la mémoire du CPU. |
numpy() |
Méthode | Retourne une copie du tenseur de probabilités sous forme de tableau numpy. |
cuda() |
Méthode | Retourne une copie du tenseur de probabilités dans la mémoire du GPU. |
to() |
Méthode | Retourne une copie du tenseur de probabilités avec le périphérique et le type de données spécifiés. |
top1 |
Propriété (int ) |
Indice de la classe supérieure (top 1). |
top5 |
Propriété (list[int] ) |
Indices des 5 classes supérieures (top 5). |
top1conf |
Propriété (torch.Tensor ) |
Confiance de la classe supérieure (top 1). |
top5conf |
Propriété (torch.Tensor ) |
Confiances des 5 classes supérieures (top 5). |
Pour plus de détails, consultez la Probs
documentation de la classe.
OBB
OBB
object peut être utilisé pour indexer, manipuler et convertir des boîtes englobantes orientées vers 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("https://ultralytics.com/images/boats.jpg") # results list
# View results
for r in results:
print(r.obb) # print the OBB object containing the oriented detection bounding boxes
Voici un tableau pour les OBB
méthodes et 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 vers la mémoire du CPU. |
numpy() |
Méthode | Convertit l'objet en un tableau numpy. |
cuda() |
Méthode | Déplace l'objet vers la mémoire CUDA. |
to() |
Méthode | Déplace l'objet vers le dispositif 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 suivi des boîtes (si disponibles). |
xyxy |
Propriété (torch.Tensor ) |
Retourne les boîtes horizontales au format xyxy. |
xywhr |
Propriété (torch.Tensor ) |
Retourne les boîtes pivotées au format xywhr. |
xyxyxyxy |
Propriété (torch.Tensor ) |
Retourne les boîtes pivotées au format xyxyxyxy. |
xyxyxyxyn |
Propriété (torch.Tensor ) |
Retourne les boîtes pivotées au format xyxyxyxy normalisées par la taille de l'image. |
Pour plus de détails, consultez la OBB
documentation de la classe.
Tracer les résultats
L'argument plot()
méthode dans Results
objects facilite la visualisation des prédictions en superposant les objets détectés (tels que les boîtes englobantes, 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.
Traçage
from PIL import Image
from ultralytics import YOLO
# Load a pretrained YOLO11n model
model = YOLO("yolo11n.pt")
# Run inference on 'bus.jpg'
results = model(["https://ultralytics.com/images/bus.jpg", "https://ultralytics.com/images/zidane.jpg"]) # results list
# Visualize the results
for i, r in enumerate(results):
# Plot results image
im_bgr = r.plot() # BGR-order numpy array
im_rgb = Image.fromarray(im_bgr[..., ::-1]) # RGB-order PIL image
# Show results to screen (in supported environments)
r.show()
# Save results to disk
r.save(filename=f"results{i}.jpg")
plot()
Paramètres de la méthode
L'argument plot()
méthode prend en charge divers arguments pour personnaliser la sortie :
Argument | Type | Description | Par défaut |
---|---|---|---|
conf |
bool |
Inclure les scores de confiance de la détection. | True |
line_width |
float |
Largeur de ligne des boîtes englobantes. 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 textuelles. | 'Arial.ttf' |
pil |
bool |
Retourne l'image sous forme d'objet PIL Image. | False |
img |
np.ndarray |
Image alternative pour le traçage. Utilise l'image originale si None . |
None |
im_gpu |
torch.Tensor |
Image accélérée par GPU pour un traçage de masque plus rapide. Forme : (1, 3, 640, 640). | None |
kpt_radius |
int |
Rayon des points clés dessinés. | 5 |
kpt_line |
bool |
Connecter les points clés avec des lignes. | True |
labels |
bool |
Inclure les étiquettes de classe dans les annotations. | True |
boxes |
bool |
Superposer les boîtes englobantes sur l'image. | True |
masks |
bool |
Superposer les masques sur l'image. | True |
probs |
bool |
Inclure les probabilités de classification. | True |
show |
bool |
Afficher directement l'image annotée à l'aide de la visionneuse d'images par défaut. | False |
save |
bool |
Enregistrer 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 |
color_mode |
str |
Spécifier le mode de couleur, par exemple 'instance' ou 'class'. | 'class' |
txt_color |
tuple[int, int, int] |
Couleur du texte RGB pour la boîte englobante et l'étiquette de classification d'image. | (255, 255, 255) |
Inférence Thread-Safe
Assurer la sécurité des threads pendant l'inférence est crucial lorsque vous exécutez 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, évitant ainsi les conditions de concurrence et assurant des sorties cohérentes et fiables.
Lors de l'utilisation de 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 de thread pour éviter les conflits :
Inférence Thread-Safe
Instancier un seul modèle à l'intérieur de chaque thread pour une inférence thread-safe :
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 thread-safe avec les modèles YOLO et des instructions étape par étape, veuillez consulter notre Guide d'inférence thread-safe YOLO. Ce guide vous fournira toutes les informations nécessaires pour éviter les pièges courants et garantir le bon fonctionnement de votre inférence multithread.
Source de streaming for
-loop
Voici un script python utilisant OpenCV (cv2
) et YOLO pour exécuter l'inférence sur les trames vidéo. Ce script suppose que vous avez déjà installé les packages nécessaires (opencv-python
et ultralytics
).
Boucle for de streaming
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écutera des prédictions sur chaque trame de la vidéo, visualisera les résultats et les affichera dans une fenêtre. La boucle peut être quittée en appuyant sur 'q'.
FAQ
Qu'est-ce qu'Ultralytics YOLO et son mode de prédiction pour l'inférence en temps réel ?
Ultralytics YOLO est un modèle de pointe pour la détection d'objets, la segmentation et la classification en temps réel. Son mode predict permet aux utilisateurs d'effectuer une inférence à haute vitesse sur diverses sources de données telles que des images, des vidéos et des flux en direct. Conçu pour la performance et la polyvalence, il offre également des modes de traitement par lots et de streaming. Pour plus de détails sur ses fonctionnalités, consultez le mode predict d'Ultralytics YOLO.
Comment puis-je exécuter l'inférence en utilisant Ultralytics YOLO sur différentes sources de données ?
Ultralytics YOLO peut traiter un large éventail de sources de données, y compris des images individuelles, des vidéos, des répertoires, des URL et des flux. Vous pouvez spécifier la source de données dans l'appel model.predict()
call. For example, use 'image.jpg'
pour une image locale ou 'https://ultralytics.com/images/bus.jpg'
pour une URL. Consultez les exemples détaillés pour diverses sources d'inférence dans la documentation.
Comment optimiser la vitesse d'inférence et l'utilisation de la mémoire de YOLO ?
Pour optimiser la vitesse d'inférence et gérer efficacement la mémoire, vous pouvez utiliser le mode de streaming en définissant stream=True
dans la méthode d'appel du prédicteur. Le mode de diffusion en continu génère un générateur à faible consommation de mémoire de Results
objets au lieu de charger toutes les images en mémoire. Le mode de diffusion en continu est particulièrement utile pour le traitement de longues vidéos ou de grands ensembles de données. Apprenez-en davantage sur le mode de diffusion en continu.
Quels arguments d'inférence Ultralytics YOLO prend-il en charge ?
L'argument model.predict()
méthode dans YOLO prend en charge divers arguments tels que conf
, iou
, imgsz
, device
, et plus encore. Ces arguments vous 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 le dispositif utilisé pour le calcul. Des descriptions détaillées de ces arguments sont disponibles dans la section consacrée aux arguments d'inférence section.
Comment puis-je visualiser et enregistrer les résultats des prédictions de YOLO ?
Après avoir exécuté l'inférence avec YOLO, les Results
objets contiennent des méthodes pour afficher et enregistrer les images annotées. Vous pouvez utiliser des méthodes comme result.show()
et result.save(filename="result.jpg")
pour visualiser et enregistrer les résultats. Pour une liste complète de ces méthodes, consultez la section consacrée à l'utilisation des résultats section.