Prédiction de modèle avec Ultralytics YOLO#
Introduction#
Dans le monde de l'apprentissage automatique et de la vision par ordinateur, le processus d'interprétation des données visuelles est souvent appelé inférence ou prédiction. Ultralytics YOLO26 offre une fonctionnalité puissante connue sous le nom de mode de prédiction (predict mode), conçue pour une inférence haute performance en temps réel sur un large éventail de sources de données.
Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀
Applications concrètes#
| Fabrication | Sports | Sécurité |
|---|---|---|
| Détection de pièces détachées de véhicule | Détection de joueurs de football | Détection de chutes de personnes |
Pourquoi utiliser Ultralytics YOLO pour l'inférence ?#
Voici pourquoi tu devrais envisager le mode prédiction de YOLO26 pour tes divers besoins d'inférence :
- Polyvalence : Capable d'exécuter l'inférence sur des images, des vidéos et même des flux en direct.
- Performance : Conçu pour un traitement ultra-rapide en temps réel sans sacrifier la précision.
- Facilité d'utilisation : Interfaces Python et CLI intuitives 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 selon tes besoins spécifiques.
- Prêt pour la production : Déploie des modèles en tant que points de terminaison d'inférence Ultralytics Platform avec mise à l'échelle automatique et surveillance, ou exécute l'inférence localement.
Fonctionnalités clés du mode prédiction#
Le mode prédiction de YOLO26 est conçu pour être robuste et polyvalent, incluant :
- Compatibilité avec de multiples sources de données : Que tes 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 prédiction te couvre.
- Mode streaming : Utilise la fonctionnalité de streaming pour générer un générateur économe en mémoire d'objets
Results. Active cette option en définissantstream=Truedans la méthode d'appel du prédicteur. Contrairement au comportement par défaut (stream=False), qui renvoie une liste contenant tous les résultats,stream=Trueproduit les résultats un par un, ce qui s'avère particulièrement utile pour les vidéos longues et les flux en direct. - Traitement par lots : Traite plusieurs images ou trames vidéo en un seul lot, réduisant encore le temps total d'inférence.
- Intégration facile : Intègre-le facilement avec tes pipelines de données existants et d'autres composants logiciels, grâce à son API flexible.
Les modèles Ultralytics YOLO renvoient soit une liste Python d'objets Results, soit un générateur économe en mémoire d'objets Results lorsque stream=True est transmis au modèle lors de l'inférence :
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26n.pt") # pretrained YOLO26n 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 diskSources d'inférence#
YOLO26 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 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 trames en mémoire.
Utilise stream=True pour traiter des 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 trames ou points de données sont stockés en mémoire, ce qui peut s'accumuler rapidement et provoquer des erreurs de dépassement de mémoire 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 la trame ou du point de données actuel, réduisant considérablement la consommation de mémoire et évitant les problèmes de dépassement 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 vers une image. |
| capture d'écran | 'screen' | str | Capture une capture d'écran. |
| PIL | 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 RGB float32 (0.0-1.0). |
| CSV | 'sources.csv' | str ou Path | Fichier CSV contenant les chemins vers des images, des vidéos ou des répertoires. |
| vidéo ✅ | 'video.mp4' | str ou Path | Fichier vidéo aux formats comme MP4, AVI, etc. |
| répertoire ✅ | 'path/' | str ou Path | Chemin vers un répertoire contenant des images ou des vidéos. |
| glob ✅ | 'path/*.jpg' | str | Motif glob pour faire correspondre plusieurs fichiers. Utilise le caractère * comme joker. |
| YouTube ✅ | 'https://youtu.be/LNwODJXcvt4' | str | URL vers une vidéo YouTube. |
| flux ✅ | 'rtsp://example.com/media.mp4' | str | URL pour des protocoles de streaming tels que RTSP, RTMP, TCP, ou une adresse IP. |
| multi-flux ✅ | 'list.streams' | str ou Path | Fichier texte *.streams 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 | Indice du périphérique caméra connecté pour exécuter l'inférence. |
Tu trouveras ci-dessous des exemples de code pour utiliser chaque type de source :
Exécute l'inférence sur un fichier image.
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Define path to the image file
source = "path/to/image.jpg"
# Run inference on the source
results = model(source) # list of Results objectsArguments d'inférence#
model.predict() accepte plusieurs arguments qui peuvent être passés au moment de l'inférence pour remplacer les valeurs par défaut :
Forme fixe vs rectangle minimal (rect)#
Par défaut, predict utilise rect=True, ce qui active le remplissage par rectangle minimal lorsque cela est possible. L'image est mise à l'échelle pour tenir dans imgsz et n'est remplie que jusqu'au multiple de pas le plus proche, de sorte que le tenseur final peut être plus petit que imgsz. Le remplissage par rectangle minimal n'est utilisé que lorsque toutes les images du lot ont la même forme et que le backend le prend en charge (PyTorch .pt, ou ONNX dynamique / Triton). Sinon, les images sont remplies jusqu'à la cible entière imgsz.
Utilise rect=False pour toujours remplir jusqu'à la cible complète imgsz. Ceci est recommandé lorsque tu as besoin d'une taille d'entrée fixe pour correspondre aux modèles exportés (ONNX, TensorRT, etc.).
Entier vs tuple imgsz
- Un
imgsz=640entier devient une cible carrée(640, 640)après l'arrondi du pas. - Un
imgsz=(384, 672)tuple définit une cible rectangulaire. Avecrect=Trueetauto=True, le tenseur réel peut être plus petit que cette cible.
Entraînement vs prédiction/export
L'entraînement n'accepte qu'un seul entier imgsz (une liste [h, w] est convertie à la valeur la plus grande). Predict et export acceptent soit un entier, soit un tuple (height, width).
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.pt")
# Run inference on 'bus.jpg' with arguments
model.predict("https://ultralytics.com/images/bus.jpg", save=True, imgsz=320, conf=0.25)Arguments d'inférence :
| Argument | Type | Défaut | Description |
|---|---|---|---|
source | str ou int ou None | None | 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 identifiant de périphérique pour les flux en direct. Si omis, un avertissement est consigné et le modèle se rabat sur les actifs de démonstration intégrés (ultralytics/assets, ou une URL de démonstration pour OBB). Prend en charge un large éventail de formats et de sources, permettant une application flexible sur différents types d'entrées. |
conf | float | 0.25 | Définit le seuil de confiance minimum pour les détections. Les objets détectés avec une confiance inférieure à ce seuil seront ignorés. Ajuster cette valeur peut aider à réduire les faux positifs. |
iou | float | 0.7 | Seuil d'intersection sur 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 | Cible Letterbox. Un entier donne un carré N×N ; un tuple donne (height, width). Avec rect=True, le tenseur réel peut être plus petit que cette cible en raison du remplissage de rectangle minimal. Utilise rect=False pour une taille fixe. Consulte Forme fixe vs rectangle minimal. |
rect | bool | True | Si True, utilise un remplissage de rectangle minimal lorsque c'est possible (lot de même forme et backend pris en charge). Si False, remplit toujours jusqu'au plein imgsz. Consulte Forme fixe vs rectangle minimal. |
quantize | int ou str | None | Précision d'inférence : 16/"fp16" active l'inférence FP16 sur les GPU pris en charge ; 32/"fp32"/non défini correspond à FP32. La quantification INT8/PTQ est configurée lors de l'exportation, puis utilisée en chargeant le modèle exporté. Remplace l'ancien fanion déprécié half. |
device | str | None | Spécifie le périphérique pour l'inférence (par exemple, cpu, cuda:0, 0, npu ou npu:0). Permet aux utilisateurs de choisir entre un CPU, un GPU spécifique, un NPU Huawei Ascend ou d'autres périphériques de calcul pour l'exécution du modèle. |
dnn | bool | False | Si True, utilise le module DNN d' OpenCV à la place de ONNX Runtime pour l'inférence du modèle ONNX. |
data | str | None | Chemin vers un fichier YAML de dataset (par exemple, coco8.yaml) lu uniquement pour son names, et seulement lorsque le modèle chargé ne possède aucun nom de classe propre : un export tiers, ou un export Ultralytics séparé des métadonnées avec lesquelles il est livré. Un tel modèle renvoie sinon class0, class1, et ainsi de suite. |
batch | int | 1 | Spécifie la taille du lot pour l'inférence (fonctionne uniquement lorsque la source est un répertoire, un fichier vidéo ou un fichier .txt). Une taille de lot plus grande peut offrir un débit plus élevé, réduisant le temps total requis pour l'inférence. |
max_det | int | 300 | Nombre maximum de détections autorisées par image. Limite le nombre total d'objets que le modèle peut détecter en une seule inférence, évitant des sorties excessives dans les scènes denses. |
vid_stride | int | 1 | Pas d'image pour les entrées vidéo. Permet de sauter des images dans les vidéos pour accélérer le traitement au prix de la résolution temporelle. Une valeur de 1 traite chaque image, des valeurs plus élevées 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 False, les anciennes images sont rejetées pour laisser place aux nouvelles (optimisé pour les applications en temps réel). Si True, met en file d'attente les nouvelles images dans un tampon, garantissant qu'aucune image n'est ignorée, mais cela entraînera de la latence si le nombre d'images par seconde (FPS) de l'inférence est inférieur à celui du flux. |
visualize | bool | False | Enregistre une carte d'activation de classe à côté de chaque prédiction, montrant quels pixels ont augmenté les scores de classe prédits. Respecte conf et classes, de sorte que classes=[0] ne mappe que cette classe. Uniquement disponible pour les modèles PyTorch d'Ultralytics. |
augment | bool | False | Active l'augmentation au moment du 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. Uniquement disponible pour les modèles PyTorch d'Ultralytics. |
agnostic_nms | bool | False | Active la NMS (Non-Maximum Suppression) agnostique aux classes, en supprimant les boîtes superposées aux scores les plus bas entre différentes classes plutôt qu'uniquement au sein de la même classe. Utile dans les scénarios de détection multi-classes où le chevauchement de classes est courant. Pour les modèles de bout en bout (YOLO26, YOLOv10), cela empêche uniquement la même détection d'apparaître avec plusieurs étiquettes de classe (doublons IoU=1.0) et n'effectue pas de suppression basée sur le seuil d'IoU entre des boîtes distinctes. |
classes | list[int] | None | Filtre les prédictions vers un ensemble d'ID de classe. Seules les détections appartenant aux classes spécifiées seront retournées. Utile pour se concentrer sur des objets pertinents dans les tâches de détection multi-classe. |
retina_masks | bool | False | Renvoie des masques de segmentation haute résolution. Les masques renvoyés (masks.data) correspondront à la taille d'origine de l'image s'ils sont activés. S'ils sont désactivés, ils auront la taille d'image utilisée lors de l'inférence. |
embed | list[int] | None | Spécifie les couches à partir desquelles extraire des vecteurs de caractéristiques ou des embeddings. Utilise model.embed(source) pour les embeddings de l'avant-dernière couche, ou model.predict(source, embed=[layer]) pour sélectionner des couches spécifiques. Utile pour les tâches en aval comme le clustering ou la recherche de similarité. Uniquement disponible pour les modèles PyTorch d'Ultralytics. |
project | str | None | Nom du répertoire de projet où les résultats de prédiction sont enregistrés si save est activé. |
name | str | None | Nom de l'exécution de prédiction. Utilisé pour créer un sous-répertoire dans le dossier du projet, où les résultats de prédiction sont stockés si save est activé. |
stream | bool | False | Active un traitement efficace en mémoire pour les longues vidéos ou de nombreuses images en retournant un générateur d'objets Results au lieu de charger toutes les images en mémoire à la fois. |
verbose | bool | True | Contrôle s'il faut afficher les journaux d'inférence détaillés dans le terminal, fournissant un retour en temps réel sur le processus de prédiction. |
compile | bool ou str | False | Active la compilation de graphes PyTorch 2.x torch.compile avec backend='inductor'. Accepte True → "default", False → désactive, ou un mode textuel tel que "default", "reduce-overhead", "max-autotune-no-cudagraphs". Revient au mode dynamique (eager) avec un avertissement si non pris en charge. |
channels_last | bool | False | Utilise le format de mémoire channels_last (NHWC) pour les convolutions pendant l'inférence, ce qui accélère les GPU CUDA Tensor Core sans modifier les résultats. S'applique uniquement aux modèles PyTorch natifs ; ignoré pour les CPU, MPS et les formats exportés tels que TensorRT et ONNX. |
end2end | bool | None | Remplace le mode de bout en bout (end-to-end) dans les modèles YOLO qui prennent en charge l'inférence sans NMS (YOLO26, YOLOv10). Le définir sur False te permet d'exécuter la prédiction à l'aide du pipeline NMS traditionnel, tout en te permettant d'utiliser l'argument iou. Consulte le guide de détection de bout en bout pour plus de détails. |
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 visuel immédiat pendant le développement ou les tests. |
save | bool | False or True | Active l'enregistrement des images ou vidéos annotées dans des fichiers. Utile pour la documentation, l'analyse approfondie ou le partage des résultats. Par défaut à True lors de l'utilisation de CLI & False lorsqu'utilisé en Python. |
save_frames | bool | False | Lors du traitement de vidéos, enregistre des images individuelles. 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, selon 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 les détails disponibles pour le post-traitement et l'analyse. |
save_crop | bool | False | Enregistre des images recadrées des détections. Utile pour l'augmentation de jeu de données, l'analyse ou la création de jeux 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. 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 englobantes 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 | int or None | None | Spécifie l'épaisseur de ligne des boîtes englobantes. Si None, l'épaisseur de ligne est automatiquement ajustée en fonction de la taille de l'image. Offre une personnalisation visuelle pour plus de clarté. |
Formats d'image et de vidéo#
YOLO26 prend en charge divers formats d'image et de vidéo, comme spécifié dans ultralytics/data/utils.py. Consulte les tableaux ci-dessous pour connaître les suffixes valides et des exemples de commandes predict.
Images#
Le tableau ci-dessous contient les formats d'image valides pour Ultralytics.
Les formats HEIC/HEIF nécessitent pi-heif, qui est installé automatiquement lors de la première utilisation. AVIF est pris en charge nativement par Pillow.
| Suffixes d'image | Exemple de commande de prédiction | Référence |
|---|---|---|
.avif | yolo predict source=image.avif | Format de fichier image AV1 |
.bmp | yolo predict source=image.bmp | Format de fichier BMP Microsoft |
.dng | yolo predict source=image.dng | Adobe DNG |
.heic | yolo predict source=image.heic | Format d'image haute efficacité |
.heif | yolo predict source=image.heif | Format d'image haute efficacité |
.jp2 | yolo predict source=image.jp2 | JPEG 2000 |
.jpeg | yolo predict source=image.jpeg | JPEG |
.jpg | yolo predict source=image.jpg | JPEG |
.mpo | yolo predict source=image.mpo | Objet multi-images |
.png | yolo predict source=image.png | Portable Network Graphics |
.tif | yolo predict source=image.tif | Format de fichier image Tag |
.tiff | yolo predict source=image.tiff | Format de fichier image Tag |
.webp | yolo predict source=image.webp | WebP |
Vidéos#
Le tableau ci-dessous contient les formats vidéo valides pour Ultralytics.
| Suffixes vidéo | Exemple de commande de prédiction | Référence |
|---|---|---|
.asf | yolo predict source=video.asf | Format de systèmes avancés |
.avi | yolo predict source=video.avi | Audio Video Interleave |
.gif | yolo predict source=video.gif | Format d'échange d'images |
.m4v | yolo predict source=video.m4v | MPEG-4 Partie 14 |
.mkv | yolo predict source=video.mkv | Matroska |
.mov | yolo predict source=video.mov | Format de fichier QuickTime |
.mp4 | yolo predict source=video.mp4 | MPEG-4 Partie 14 - Wikipédia |
.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 appels Ultralytics predict() renverront une liste d'objets Results :
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.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 inferenceLes objets Results possèdent les attributs suivants :
| Attribut | Type | Description |
|---|---|---|
orig_img | np.ndarray | L'image originale en tant que 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 une 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 englobantes orientées. |
semantic_mask | SemanticMask, optional | Un objet SemanticMask contenant une carte de classe dense par pixel. |
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 vers le fichier image. |
save_dir | str, optional | Répertoire pour enregistrer les résultats. |
Résultats par tâche#
Les champs renseignés ci-dessous dépendent de la tâche de ton modèle — compare la détection, la segmentation, la segmentation sémantique, l'estimation de profondeur, la classification, la pose et l'OBB si tu n'en as pas encore choisi une. Chaque prédiction renvoie un objet Results par image ou trame. Les champs communs ci-dessus sont toujours disponibles, tandis que les données de prédiction spécifiques à la tâche sont stockées dans les champs ci-dessous. Les tenseurs de coordonnées, de confiance et de probabilité sont en torch.float32 sauf si la demi-précision est utilisée, auquel cas ils sont en torch.float16. Après result.numpy(), les tenseurs deviennent des tableaux NumPy avec les types de données NumPy correspondants. Les masques d'instance sont des tenseurs binaires torch.uint8, tandis que les masques sémantiques utilisent le plus petit type de données entier pratique pour les ID de classe : torch.uint8, torch.int16 ou torch.int32, selon le nombre de classes.
| Attribut | Type | Forme | Description |
|---|---|---|---|
result.boxes | Boxes | (N) | Boîtes de détection. |
result.boxes.data | torch.float32 | (N,6/7) | [x1,y1,x2,y2,conf,cls] brut, plus l'ID de suivi optionnel. |
result.boxes.xyxy | torch.float32 | (N,4) | Boîtes de pixels xyxy. |
result.boxes.conf | torch.float32 | (N,) | Scores de confiance. |
result.boxes.cls | torch.float32 | (N,) | ID de classe ; convertis en int pour les noms. |
Les objets Results possèdent les méthodes suivantes :
| Méthode | Type de retour | Description |
|---|---|---|
update() | None | Met à jour l'objet Results avec de nouvelles données telles que des boîtes, des masques, des probabilités, des obb, des points clés ou des masques sémantiques. |
cpu() | Results | Renvoie une copie de l'objet Results avec tous les tenseurs déplacés vers la mémoire CPU. |
numpy() | Results | Renvoie une copie de l'objet Results avec tous les tenseurs convertis en tableaux NumPy. |
cuda() | Results | Renvoie une copie de l'objet Results avec tous les tenseurs déplacés vers la mémoire GPU. |
to() | Results | Renvoie une copie de l'objet Results avec les tenseurs déplacés vers le périphérique 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 détection sur une image BGR 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 | Renvoie une chaîne de journal pour chaque tâche, détaillant les résultats de détection et de classification. |
save_txt() | str | Enregistre les résultats de détection dans un fichier texte et renvoie le chemin vers le 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 d'inférence en un dictionnaire résumé avec une normalisation optionnelle. |
to_df() | DataFrame | Convertit les résultats de détection en un Polars DataFrame. |
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, consulte la documentation de la classe Results.
Boîtes#
L'objet Boxes peut être utilisé pour indexer, manipuler et convertir des boîtes englobantes en différents formats.
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.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 boxesVoici un tableau des méthodes et propriétés de la classe Boxes, incluant leur nom, leur type et leur description :
| Nom | Type | Description |
|---|---|---|
cpu() | Méthode | Déplace l'objet vers la mémoire 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 périphérique 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 IDs de suivi des boîtes (si disponibles). |
xywh | Propriété (torch.Tensor) | Renvoie les boîtes au format xywh. |
xyxyn | Propriété (torch.Tensor) | Renvoie les boîtes au format xyxy normalisées par la taille de l'image originale. |
xywhn | Propriété (torch.Tensor) | Renvoie les boîtes au format xywh normalisées par la taille de l'image originale. |
Pour plus de détails, consulte la documentation de la classe Boxes.
Masques#
L'objet Masks peut être utilisé pour indexer, manipuler et convertir des masques en segments.
from ultralytics import YOLO
# Load a pretrained YOLO26n-seg Segment model
model = YOLO("yolo26n-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 masksVoici un tableau des méthodes et propriétés de la classe Masks, incluant leur nom, leur type et leur description :
| Nom | Type | Description |
|---|---|---|
data | Propriété (torch.Tensor) | Tenseur de masque binaire torch.uint8 avec la forme (N,H,W) et les valeurs 0 ou 1. |
cpu() | Méthode | Renvoie le tenseur des masques sur la mémoire CPU. |
numpy() | Méthode | Renvoie le tenseur des masques sous forme de tableau NumPy. |
cuda() | Méthode | Renvoie le tenseur des masques sur la mémoire GPU. |
to() | Méthode | Renvoie le tenseur des masques avec le périphérique et le type de données spécifiés. |
xyn | Propriété (list[np.ndarray]) | Une liste de polygones de masque normalisés. |
xy | Propriété (list[np.ndarray]) | Une liste de polygones de masque en coordonnées de pixel. |
Pour plus de détails, consulte la documentation de la classe Masks.
SemanticMask#
SemanticMask stocke une carte de classe dense pour les résultats de segmentation sémantique. Contrairement à Masks, elle ne contient pas un masque binaire par objet et ne fournit pas d'assistants pour les polygones.
from ultralytics import YOLO
# Load a pretrained YOLO26n-sem Semantic model
model = YOLO("yolo26n-sem.pt")
# Run inference on an image
results = model("https://ultralytics.com/images/bus.jpg") # results list
# View results
for r in results:
print(r.semantic_mask.data) # print the H x W class-ID map| Nom | Type | Description |
|---|---|---|
data | Propriété (torch.Tensor) | Carte d'ID de classe avec la forme (H,W). Le type de données est torch.uint8, torch.int16 ou torch.int32, sélectionné en fonction du nombre de classes. |
shape | Propriété (tuple) | Forme de la carte de classe, correspondant généralement à result.orig_shape. |
cpu() | Méthode | Renvoie le tenseur du masque sémantique sur la mémoire CPU. |
numpy() | Méthode | Renvoie le tenseur du masque sémantique sous forme de tableau NumPy. |
cuda() | Méthode | Renvoie le tenseur du masque sémantique sur la mémoire GPU. |
to() | Méthode | Renvoie le tenseur du masque sémantique avec le périphérique et le type de données spécifiés. |
Keypoints#
L'objet Keypoints peut être utilisé pour indexer, manipuler et normaliser les coordonnées.
from ultralytics import YOLO
# Load a pretrained YOLO26n-pose Pose model
model = YOLO("yolo26n-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 keypointsVoici un tableau des méthodes et propriétés de la classe Keypoints, incluant leur nom, leur type et leur description :
| Nom | Type | Description |
|---|---|---|
cpu() | Méthode | Renvoie le tenseur des points clés sur la mémoire CPU. |
numpy() | Méthode | Renvoie le tenseur des points clés sous forme de tableau NumPy. |
cuda() | Méthode | Renvoie le tenseur des points clés sur la mémoire GPU. |
to() | Méthode | Renvoie le tenseur des points clés avec le périphérique et le dtype 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 disponibles, sinon None. |
Pour plus de détails, consulte la documentation de la classe Keypoints.
Probs#
L'objet Probs peut être utilisé pour obtenir les indices et scores de classification top1 et top5.
from ultralytics import YOLO
# Load a pretrained YOLO26n-cls Classify model
model = YOLO("yolo26n-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 probabilitiesVoici un tableau résumant les méthodes et propriétés de la classe Probs :
| Nom | Type | Description |
|---|---|---|
cpu() | Méthode | Renvoie une copie du tenseur probs sur la mémoire CPU. |
numpy() | Méthode | Renvoie une copie du tenseur probs sous forme de tableau NumPy. |
cuda() | Méthode | Renvoie une copie du tenseur probs sur la mémoire GPU. |
to() | Méthode | Renvoie une copie du tenseur probs avec le périphérique et le dtype spécifiés. |
top1 | Propriété (int) | Indice de la classe top 1. |
top5 | Propriété (list[int]) | Indices des 5 meilleures classes. |
top1conf | Propriété (torch.Tensor) | Confiance de la classe top 1. |
top5conf | Propriété (torch.Tensor) | Confiances des 5 meilleures classes. |
Pour plus de détails, consulte la documentation de la classe Probs.
OBB#
L'objet OBB peut être utilisé pour indexer, manipuler et convertir des boîtes englobantes orientées en différents formats.
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n-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 boxesVoici un tableau des méthodes et propriétés de la classe OBB, incluant leur nom, leur type et leur description :
| Nom | Type | Description |
|---|---|---|
cpu() | Méthode | Déplace l'objet vers la mémoire 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 périphérique 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 IDs de suivi des boîtes (si disponibles). |
xyxy | Propriété (torch.Tensor) | Renvoie les boîtes horizontales au format xyxy. |
xywhr | Propriété (torch.Tensor) | Renvoie les boîtes pivotées au format xywhr. |
xyxyxyxy | Propriété (torch.Tensor) | Renvoie les boîtes pivotées au format xyxyxyxy. |
xyxyxyxyn | Propriété (torch.Tensor) | Renvoie les boîtes pivotées au format xyxyxyxy normalisées par la taille de l'image. |
Pour plus de détails, consulte la documentation de la classe OBB.
Visualisation des résultats#
La méthode plot() dans les objets Results 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 d'origine. Cette méthode renvoie l'image annotée sous forme de tableau NumPy, permettant un affichage ou un enregistrement facile.
from PIL import Image
from ultralytics import YOLO
# Load a pretrained YOLO26n model
model = YOLO("yolo26n.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")Paramètres de la méthode plot()#
La méthode plot() prend en charge divers arguments pour personnaliser la sortie :
| Argument | Type | Description | Défaut |
|---|---|---|---|
conf | bool | Inclure les scores de confiance de détection. | True |
line_width | float | Épaisseur 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 | Renvoie l'image en tant qu'objet PIL Image. | False |
img | np.ndarray | torch.Tensor | Image alternative. Les tenseurs doivent être des uint8 BGR HWC continus. | 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 l'image annotée directement via la visionneuse d'images par défaut. | False |
save | bool | Enregistre l'image annotée dans un fichier spécifié par filename. | False |
filename | str | Chemin et nom du fichier pour enregistrer l'image annotée si save est True. | None |
color_mode | str | Spécifie le mode couleur, par exemple 'instance' ou 'class'. | 'class' |
txt_color | tuple[int, int, int] | Couleur de texte BGR pour la boîte englobante et l'étiquette de classification d'image. | (255, 255, 255) |
Inférence thread-safe#
Garantir la sécurité des threads lors de 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 entre elles, évitant les conditions de concurrence et assurant des résultats cohérents et fiables.
Lorsque tu utilises des modèles YOLO dans une application multi-threadée, il est important d'instancier des objets de modèle distincts pour chaque thread ou d'employer un stockage local au thread pour éviter les conflits :
Instancie un modèle unique au sein 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=("yolo26n.pt", "image1.jpg")).start()
Thread(target=thread_safe_predict, args=("yolo26n.pt", "image2.jpg")).start()Pour un aperçu approfondi de l'inférence thread-safe avec les modèles YOLO et des instructions étape par étape, consulte notre guide d'inférence thread-safe YOLO. Ce guide te fournira toutes les informations nécessaires pour éviter les pièges courants et garantir le bon déroulement de ton inférence multithread.
Boucle for pour source en streaming#
Voici un script Python utilisant OpenCV (cv2) et YOLO pour exécuter l'inférence sur des trames vidéo. Ce script suppose que tu as déjà installé les paquets nécessaires (opencv-python et ultralytics).
import cv2
from ultralytics import YOLO
# Load the YOLO model
model = YOLO("yolo26n.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 image 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'.
Et après ?#
Prêt à aller au-delà d'un modèle pré-entraîné ? Confirme que ta tâche correspond à ton problème, formate tes propres données avec le guide des datasets, puis entraîne-toi dessus.
FAQ#
Ultralytics YOLO est un modèle de pointe pour la détection d'objets, la segmentation d'instances, la segmentation sémantique, l'estimation de profondeur et la classification en temps réel. Son mode de prédiction 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 propose également des modes de traitement par lots et de streaming. Pour plus de détails sur ses fonctionnalités, consulte le mode de prédiction Ultralytics YOLO.
Pour optimiser la vitesse d'inférence et gérer efficacement la mémoire, tu peux utiliser le mode streaming en définissant
stream=Truedans la méthode d'appel du prédicteur. Le mode streaming génère un générateur économe en mémoire d'objetsResultsau lieu de charger toutes les trames en mémoire. Pour traiter des vidéos longues ou de grands ensembles de données, le mode streaming est particulièrement utile. Apprends-en davantage sur le mode streaming.La méthode
model.predict()dans YOLO prend en charge divers arguments tels queconf,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 se trouvent dans la section arguments d'inférence.Utilise
model.embed(source)pour extraire des embeddings de caractéristiques de l'avant-dernière couche, ou passeembed=[layer_index]àmodel.predict()pour choisir des couches spécifiques.from ultralytics import YOLO model = YOLO("yolo26n.pt") source = "https://ultralytics.com/images/bus.jpg" results = model.predict(source) # Results objects embeddings = model.embed(source) # list of torch.Tensor embeddingsAprès avoir exécuté l'inférence avec YOLO, les objets
Resultscontiennent des méthodes pour afficher et enregistrer des images annotées. Tu peux utiliser des méthodes telles queresult.show()etresult.save(filename="result.jpg")pour visualiser et enregistrer les résultats. Tous les répertoires parents manquants dans le chemin du nom de fichier sont créés automatiquement (par exemple,result.save("path/to/result.jpg")). Pour obtenir une liste complète de ces méthodes, réfère-toi à la section travailler avec les résultats.
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. Tu peux spécifier la source de données dans l'appel
model.predict(). Par exemple, utilise'image.jpg'pour une image locale ou'https://ultralytics.com/images/bus.jpg'pour une URL. Découvre les exemples détaillés pour diverses sources d'inférence dans la documentation.