Prédiction du modèle avec Ultralytics YOLO
Introduction
Dans le monde de l'apprentissage automatique et de la vision par ordinateur, le processus consistant à donner un sens aux données visuelles est appelé "inférence" ou "prédiction". Ultralytics YOLO11 offre une fonction puissante appelée " mode prédiction " qui est adaptée à l'inférence en temps réel et à haute performance sur un large éventail de sources de données.
Regarder : Comment extraire les résultats du modèle Ultralytics YOLO 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 |
Pourquoi utiliser Ultralytics YOLO pour l'inférence ?
Voici pourquoi vous devriez considérer le mode prédictif de YOLO11 pour vos 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 permettent d'adapter le comportement d'inférence du modèle à vos besoins spécifiques.
Principales caractéristiques du mode Predict
YOLO11Le mode prédictif du système est conçu pour être robuste et polyvalent :
- Compatibilité avec plusieurs sources de données : Que vos 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 vous couvre.
- Mode streaming : Utilisez la fonction de diffusion en continu pour générer un générateur efficace en termes de mémoire de
Results
objets. 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 en un seul lot, ce qui accélère encore le temps d'inférence.
- Facilité d'intégration : grâce à son API flexible, il est facile de l'intégrer aux pipelines de données existants et à d'autres composants logiciels.
Ultralytics YOLO renvoient soit une liste Python de Results
ou un générateur d'objets Python à faible consommation de mémoire. Results
objets lorsque stream=True
est transmis au modèle lors de 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 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.
Conseil
Utilisation stream=True
pour le traitement de vidéos longues 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 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 des entrées importantes. 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 en cours, ce qui réduit considérablement la consommation de mémoire et évite les problèmes de sortie de mémoire.
Source | Exemple | 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 |
Effectuer une capture d'Ă©cran. |
LIP | Image.open('image.jpg') |
PIL.Image |
Format HWC avec canaux RVB. |
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 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 |
Modèle global permettant de faire correspondre plusieurs fichiers. Utiliser le modèle * comme caractère de remplacement. |
YouTube âś… | 'https://youtu.be/LNwODJXcvt4' |
str |
URL d'une vidéo YouTube. |
flux âś… | '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 avec une taille de lot de 8. |
webcam âś… | 0 |
int |
Index de l'appareil photo connecté sur lequel l'inférence doit être exécutée. |
Vous trouverez ci-dessous des exemples de code pour l'utilisation de chaque type de source :
Sources de prédiction
Exécuter une inférence sur un fichier image.
Lancer une inférence sur le contenu de l'écran actuel sous la forme d'une capture d'écran.
Lancer une inférence sur une image ou une vidéo hébergée à distance via une URL.
Lancer l'inférence sur une image ouverte avec Python Imaging Library (PIL).
Lancer l'inférence sur une image lue avec OpenCV.
Exécuter une inférence sur une image représentée sous la forme d'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
Exécuter une inférence sur une image représentée par un 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
Lancez une inférence sur une collection d'images, d'URL, de vidéos et de répertoires répertoriés dans un fichier CSV.
Lancer une inférence sur un fichier vidéo. En utilisant stream=True
vous pouvez créer un générateur d'objets Résultats pour réduire l'utilisation de la mémoire.
Lancer 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, utilisez un motif global, c'est-à -dire path/to/dir/**/*
.
Lancer une inférence sur toutes les images et vidéos qui correspondent à une expression globale 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 une inférence sur une vidéo YouTube. En utilisant stream=True
Vous pouvez créer un générateur d'objets Résultats afin de réduire l'utilisation de la mémoire pour les vidéos longues.
Utilisez le mode flux pour exécuter l'inférence sur des flux vidéo en direct utilisant les protocoles RTSP, RTMP, TCP ou l'adresse IP. Si un seul flux est fourni, le modèle exécute l'inférence avec une méthode taille du lot de 1. Pour les flux multiples, un .streams
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, taille de lot 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 l'utilisation d'un seul flux, la taille du lot est fixée par défaut à 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 flux. Le modèle effectuera une inférence par lots où la taille des lots 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 flux, ce qui vous permet de surveiller et d'effectuer des déductions sur plusieurs flux vidéo à la fois.
Vous pouvez effectuer une inférence sur une caméra connectée en passant l'index de cette caméra particulière à la commande source
.
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
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. La prise en charge d'un large éventail de formats et de sources permet une application flexible à 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. L'ajustement de cette valeur peut contribuer à réduire le nombre de faux positifs. |
iou |
float |
0.7 |
Seuil d'intersection au-dessus de l'union (IoU) pour la suppression non maximale (NMS). Des valeurs plus faibles permettent de réduire le nombre 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 dimensionnement adéquat peut améliorer la détection précision 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 CPU, un GPU spécifique ou d'autres dispositifs de calcul pour l'exécution du modèle. |
batch |
int |
1 |
Spécifie la taille du lot pour l'inférence (ne fonctionne que lorsque la source est un répertoire, un fichier vidéo ou .txt fichier). Une taille de lot plus importante peut permettre un débit plus élevé, en réduisant le temps total nécessaire à 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 en une seule inférence, ce qui permet d'éviter les sorties excessives dans les scènes denses. |
vid_stride |
int |
1 |
Saut d'images 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 s'il faut mettre en file d'attente les images entrantes pour les flux vidéo. Si cette option est activée, l'image est mise en file d'attente. False Si `True', les anciennes images sont supprimées pour laisser place aux nouvelles images (optimisé pour les applications en temps réel). Si `True', les nouvelles images sont mises en file d'attente dans un tampon, ce qui garantit qu'aucune image ne sera sautée, mais entraînera une latence si le nombre d'images par seconde de l'inférence est inférieur au nombre d'images par seconde du flux. |
visualize |
bool |
False |
Active la visualisation des caractéristiques du modèle pendant l'inférence, donnant un aperçu de 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, ce qui peut améliorer la robustesse de la détection au détriment de la vitesse d'inférence. |
agnostic_nms |
bool |
False |
Permet la suppression non maximale (NMS) indépendante de la classe, 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. |
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 |
Renvoie des masques de segmentation à haute résolution. Les masques retournés (masks.data ) correspondront à la taille de l'image originale si elles sont activées. S'ils sont désactivés, ils ont la taille de l'image utilisée lors de l'inférence. |
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. |
project |
str |
None |
Nom du répertoire du projet dans lequel les résultats de la prédiction sont enregistrés si save est activée. |
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 résultats de la prédiction sont stockés si save est activée. |
Arguments de visualisation :
Argument | Type | DĂ©faut | Description |
---|---|---|---|
show |
bool |
False |
Si True affiche les images ou vidéos annotées dans une fenêtre. Utile pour un retour d'information visuel immédiat pendant le développement ou les tests. |
save |
bool |
False ou True |
Permet d'enregistrer les images ou vidéos annotées dans un fichier. Utile pour la documentation, les analyses ultérieures ou le partage des résultats. La valeur par défaut est True lorsqu'on utilise CLI et False lorsqu'on utilise Python. |
save_frames |
bool |
False |
Lors du traitement des vidéos, enregistre les images individuelles en tant qu'images. Cela permet d'extraire des images spécifiques ou d'effectuer 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 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 sauvegardés. Améliore les détails disponibles pour le post-traitement et l'analyse. |
save_crop |
bool |
False |
Sauvegarde des 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 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 de délimitation autour des objets détectés. Essentiel pour l'identification visuelle et la localisation d'objets dans des images ou des trames vidéo. |
line_width |
None ou int |
None |
Spécifie la largeur de ligne des boîtes de délimitation. Si les None La 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'image et de vidéo
YOLO11 prend en charge divers formats d'images et de vidéos, comme spécifié dans ultralytics/data/utils .py. Voir les tableaux ci-dessous pour les suffixes valides et les exemples de commandes de prédiction.
Images
Le tableau ci-dessous contient les formats d'image valables pour Ultralytics .
Note
Les images HEIC ne sont prises en charge que pour l'inférence, pas pour la formation.
Suffixes d'image | Exemple de commande Predict | Référence |
---|---|---|
.bmp |
yolo predict source=image.bmp |
Microsoft Format de fichier 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 |
.HEIC |
yolo predict source=image.HEIC |
Format d'image à haute efficacité |
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 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 |
Vidéo Windows Media |
.webm |
yolo predict source=video.webm |
Projet WebM |
Travailler avec des résultats
Tous Ultralytics predict()
renverra une liste de Results
objets :
RĂ©sultats
Results
ont les attributs suivants :
Attribut | Type | Description |
---|---|---|
orig_img |
numpy.ndarray |
L'image originale sous la forme d'un tableau numpy. |
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 Keypoints 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 |
Chemin d'accès au fichier image. |
Results
disposent des méthodes suivantes :
MĂ©thode | Type de retour | Description |
---|---|---|
update() |
None |
Mettre Ă jour les attributs boxes, masks et probs de l'objet Results. |
cpu() |
Results |
Renvoie une copie de l'objet Results avec tous les tenseurs sur la mémoire CPU . |
numpy() |
Results |
Retourne une copie de l'objet Results avec tous les tenseurs sous forme de tableaux numpy. |
cuda() |
Results |
Renvoie une copie de l'objet Results avec tous les tenseurs sur la mémoire GPU . |
to() |
Results |
Renvoie une copie de l'objet Results 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 d'accès et les mêmes noms. |
plot() |
numpy.ndarray |
Trace les résultats de la détection. Retourne un tableau numpy de l'image annotée. |
show() |
None |
Afficher les résultats annotés à l'écran. |
save() |
None |
Enregistrer les résultats annotés dans un fichier. |
verbose() |
str |
Renvoi de la chaîne de journalisation pour chaque tâche. |
save_txt() |
None |
Enregistrer les prédictions dans un fichier txt. |
save_crop() |
None |
Enregistrer 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 site Results
documentation de la classe.
Boîtes
Boxes
peut être utilisé pour indexer, manipuler et convertir les boîtes de délimitation dans différents formats.
Boîtes
Voici un tableau pour le Boxes
les 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éplacer l'objet vers la mémoire CPU . |
numpy() |
MĂ©thode | Convertit l'objet en un tableau numpy. |
cuda() |
Méthode | Déplacer l'objet vers la mémoire CUDA . |
to() |
Méthode | Déplacer l'objet vers le dispositif 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 ) |
Retourne les identifiants des boîtes (s'ils sont disponibles). |
xywh |
Propriété (torch.Tensor ) |
Renvoyer 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 ) |
Retourne les boîtes au format xywh normalisé par la taille de l'image originale. |
Pour plus de détails, voir le site Boxes
documentation de la classe.
Masques
Masks
peut être utilisé pour indexer, manipuler et convertir des masques en segments.
Masques
Voici un tableau pour le Masks
les méthodes et 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 CPU . |
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 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 site Masks
documentation de la classe.
Points clés
Keypoints
peut être utilisé pour indexer, manipuler et normaliser des coordonnées.
Points clés
Voici un tableau pour le Keypoints
les méthodes et 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 CPU . |
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 GPU . |
to() |
Méthode | Renvoie les points clés tensor avec le périphérique 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 site Keypoints
documentation de la classe.
Probs
Probs
peut être utilisé pour indexer, obtenir top1
et top5
les indices et les scores de classification.
Probs
Voici un tableau résumant les méthodes et les propriétés de l'élément Probs
classe :
Nom | Type | Description |
---|---|---|
cpu() |
Méthode | Renvoie une copie des probs tensor sur la mémoire CPU . |
numpy() |
MĂ©thode | Renvoie une copie de probs tensor sous la forme d'un tableau numpy. |
cuda() |
Méthode | Renvoie une copie des probs tensor sur la mémoire 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 première classe. |
top5conf |
Propriété (torch.Tensor ) |
Confidences des 5 premières classes. |
Pour plus de détails, voir le site Probs
documentation de la classe.
OBB
OBB
peut être utilisé pour indexer, manipuler et convertir des boîtes de délimitation orientées dans différents formats.
OBB
Voici un tableau pour le OBB
les 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éplacer l'objet vers la mémoire CPU . |
numpy() |
MĂ©thode | Convertit l'objet en un tableau numpy. |
cuda() |
Méthode | Déplacer l'objet vers la mémoire CUDA . |
to() |
Méthode | Déplacer 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 ) |
Retourne les identifiants des boîtes (s'ils sont 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 tournées au format xyxyxyxy normalisé par la taille de l'image. |
Pour plus de détails, voir le site OBB
documentation de la classe.
Représentation graphique des 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) à l'image originale. Cette méthode renvoie l'image annotée sous la forme d'un tableau NumPy, ce qui permet de l'afficher ou de la sauvegarder 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(["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 différents arguments pour personnaliser la sortie :
Argument | Type | Description | DĂ©faut |
---|---|---|---|
conf |
bool |
Inclure les indices de confiance de la 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 |
GPU-Image accélérée 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 |
Relier les points clés par des lignes. | True |
labels |
bool |
Inclure les Ă©tiquettes de classe dans les annotations. | True |
boxes |
bool |
Superposer les cadres de délimitation à l'image. | True |
masks |
bool |
Superposition de masques sur l'image. | True |
probs |
bool |
Inclure les probabilités de classification. | True |
show |
bool |
Affichez l'image annotée directement à 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écifiez le mode de couleur, par exemple "instance" ou "classe". | 'class' |
Inférence sûre pour les threads
Garantir 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, ce qui permet d'éviter les conditions de course et d'obtenir des résultats cohérents 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 pour éviter les conflits :
Inférence sûre pour les threads
Instanciation d'un modèle unique dans chaque thread pour une inférence sûre :
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, veuillez vous référer à notre guide de l'inférence à sécurité threadYOLO . Ce guide vous fournira toutes les informations nécessaires pour éviter les pièges les plus courants et garantir le bon déroulement de votre inférence multithread.
Source de diffusion en continu for
-Boucle
Voici un script Python utilisant OpenCV (cv2
) et YOLO pour faire de l'inférence sur des images vidéo. Ce script suppose que vous avez déjà installé les paquets nécessaires (opencv-python
et ultralytics
).
Boucle for-loop 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
Qu'est-ce que Ultralytics YOLO et son mode prédictif pour l'inférence en temps réel ?
Ultralytics YOLO est un modèle de pointe pour la détection, la segmentation et la classification d'objets en temps réel. Son mode prédictif permet aux utilisateurs d'effectuer des inférences à grande vitesse sur diverses sources de données telles que les images, les vidéos et les flux en direct. Conçu pour être performant et polyvalent, il offre également des modes de traitement par lots et de diffusion en continu. Pour plus de détails sur ses fonctionnalités, consultez le site Ultralytics YOLO predict mode.
Comment puis-je effectuer une inférence à l'aide de Ultralytics YOLO sur différentes sources de données ?
Ultralytics YOLO peut traiter un large éventail de sources de données, notamment des images individuelles, des vidéos, des répertoires, des URL et des flux. Vous pouvez spécifier la source de données dans le champ model.predict()
appel. Par exemple, utilisez 'image.jpg'
pour une image locale ou 'https://ultralytics.com/images/bus.jpg'
pour une URL. Consultez les exemples détaillés des différents 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 "streaming" en définissant les paramètres suivants 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 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. Pour en savoir plus mode streaming.
Quels sont les arguments d'inférence soutenus par Ultralytics YOLO ?
Le model.predict()
dans YOLO prend en charge divers arguments tels que conf
, iou
, imgsz
, device
et d'autres 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 peuvent être trouvées dans la section arguments de déduction section.
Comment puis-je visualiser et enregistrer les résultats des prédictions de YOLO ?
Après avoir effectué une inférence à l'aide de YOLO, le Results
contiennent des méthodes d'affichage et d'enregistrement des images annotées. Vous pouvez utiliser des méthodes telles que 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, veuillez consulter le site web de la Commission européenne. travailler avec les résultats section.