Meet YOLO26: next-gen vision AI.

Link to this sectionPrédiction de modèle avec Ultralytics YOLO#

Ultralytics YOLO ecosystem and integrations

Link to this sectionIntroduction#

Dans le monde de l'apprentissage automatique et de la vision par ordinateur, le processus visant à donner un sens aux données visuelles est souvent appelé inférence ou prédiction. Ultralytics YOLO26 offre une fonctionnalité puissante appelée mode prédiction, conçue pour une inférence haute performance en temps réel à travers une large gamme de sources de données.



Watch: How to Extract Results from Ultralytics YOLO26 Tasks for Custom Projects 🚀

Link to this sectionApplications concrètes#

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

Link to this sectionPourquoi 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 haute vitesse 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'API sur Ultralytics Platform avec mise à l'échelle automatique et surveillance, ou exécute l'inférence localement.

Link to this sectionFonctionnalité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 d'objets Results efficace en mémoire. Active cela en définissant stream=True dans la méthode d'appel du prédicteur.
  • 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 retournent soit une liste Python d'objets Results, soit un générateur d'objets Results efficace en mémoire lorsque stream=True est passé au modèle pendant l'inférence :

Prédire (Predict)
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 disk

Link to this sectionSources 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 incluent 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 bénéfique pour traiter 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 trames en mémoire.

Astuce

Utilise 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 pour 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 type out-of-memory pour les grandes entrées. En revanche, stream=True utilise un générateur, qui ne garde en mémoire que les résultats de la trame ou du point de données actuel, réduisant significativement la consommation de mémoire et prévenant les problèmes de mémoire insuffisante.

SourceExempleTypeNotes
image'image.jpg'str ou PathFichier image unique.
URL'https://ultralytics.com/images/bus.jpg'strURL vers une image.
capture d'écran'screen'strCapture une capture d'écran.
PILImage.open('image.jpg')PIL.ImageFormat HWC avec canaux RVB.
OpenCVcv2.imread('image.jpg')np.ndarrayFormat HWC avec canaux BGR uint8 (0-255).
NumPynp.zeros((640,1280,3))np.ndarrayFormat HWC avec canaux BGR uint8 (0-255).
torchtorch.zeros(16,3,320,640)torch.TensorFormat BCHW avec canaux RVB float32 (0.0-1.0).
CSV'sources.csv'str ou PathFichier CSV contenant les chemins vers des images, des vidéos ou des répertoires.
vidéo ✅'video.mp4'str ou PathFichier vidéo aux formats comme MP4, AVI, etc.
répertoire ✅'path/'str ou PathChemin vers un répertoire contenant des images ou des vidéos.
glob ✅'path/*.jpg'strMotif glob pour faire correspondre plusieurs fichiers. Utilise le caractère * comme joker.
YouTube ✅'https://youtu.be/LNwODJXcvt4'strURL vers une vidéo YouTube.
flux ✅'rtsp://example.com/media.mp4'strURL pour des protocoles de streaming tels que RTSP, RTMP, TCP, ou une adresse IP.
multi-flux ✅'list.streams'str ou PathFichier texte *.streams avec une URL de flux par ligne, par ex. 8 flux seront exécutés avec une taille de lot de 8.
webcam ✅0intIndice 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 :

Sources de prédiction

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 objects

Link to this sectionArguments d'inférence#

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

Link to this sectionForme fixe vs rectangle minimum (rect)#

Par défaut, predict utilise rect=True, ce qui active le remplissage rectangle-minimum lorsque c'est possible. L'image est redimensionnée pour tenir dans imgsz et complétée uniquement jusqu'au multiple de stride le plus proche, donc le tenseur final peut être plus petit que imgsz. Le remplissage rectangle-minimum est utilisé uniquement lorsque toutes les images du lot ont la même forme et que le backend le prend en charge (PyTorch .pt, ou ONNX / Triton dynamique). Sinon, les images sont complétées jusqu'à la cible complète imgsz.

Utilise rect=False pour toujours compléter jusqu'à la cible complète imgsz. Cela est recommandé lorsque tu as besoin d'une taille d'entrée fixe pour correspondre aux modèles exportés (ONNX, TensorRT, etc.).

imgsz entier vs tuple

  • Un entier imgsz=640 devient une cible carrée (640, 640) après l'arrondi du stride.
  • Un tuple imgsz=(384, 672) définit une cible rectangulaire. Avec rect=True et auto=True, le tenseur réel peut être plus petit que cette cible.

Entraînement vs prédiction/export

Training accepts only a single integer imgsz (a [h, w] list is coerced to the largest value). Predict and export accept either an integer or a (height, width) tuple.

Exemple
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 :

ArgumentTypeDéfautDescription
sourcestr ou int ou NoneNoneSpé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 d'appareil pour des flux en direct. Si omis, un avertissement est enregistré et le modèle revient aux ressources de démonstration intégrées (ultralytics/assets, ou une URL de démonstration pour OBB). Prend en charge une large gamme de formats et de sources, permettant une application flexible sur différents types d'entrées.
conffloat0.25Dé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.
ioufloat0.7Seuil d'Intersection Over Union (IoU) pour la Non-Maximum Suppression (NMS). Des valeurs plus faibles entraînent moins de détections en éliminant les boîtes qui se chevauchent, utile pour réduire les doublons.
imgszint ou tuple640Letterbox target. An integer gives a square N×N; a tuple gives (height, width). With rect=True, the actual tensor may be smaller than this target due to minimum-rectangle padding. Use rect=False for a fixed size. See Fixed shape vs minimum rectangle.
rectboolTrueSi True, utilise le remplissage minimum-rectangle si possible (lot de même forme et backend pris en charge). Si False, remplit toujours jusqu'au imgsz complet. Voir Forme fixe vs rectangle minimum.
halfboolFalseActive 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.
devicestrNoneSpécifie le périphérique pour l'inférence (par ex. cpu, cuda:0, 0, npu ou npu:0). Permet aux utilisateurs de choisir entre le CPU, un GPU spécifique, le NPU Huawei Ascend ou d'autres dispositifs de calcul pour l'exécution du modèle.
batchint1Spé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é, raccourcissant le temps total nécessaire à l'inférence.
max_detint300Nombre maximum de détections autorisées par image. Limite le nombre total d'objets que le modèle peut détecter en une seule inférence, évitant des sorties excessives dans les scènes denses.
vid_strideint1Pas 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_bufferboolFalseDétermine s'il faut mettre en file d'attente les images entrantes pour les flux vidéo. Si False, les anciennes images sont supprimées pour accueillir les 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 sautée, mais causera une latence si les FPS d'inférence sont inférieurs aux FPS du flux.
visualizeboolFalseActive la visualisation des caractéristiques du modèle pendant l'inférence, offrant un aperçu de ce que le modèle "voit". Utile pour le débogage et l'interprétation du modèle.
augmentboolFalseActive l'augmentation au moment du test (TTA) pour les prédictions, améliorant potentiellement la robustesse de la détection au prix de la vitesse d'inférence.
agnostic_nmsboolFalseActive la Non-Maximum Suppression (NMS) agnostique aux classes, qui fusionne les boîtes qui se chevauchent de différentes classes. Utile dans les scénarios de détection multi-classe où le chevauchement des 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 IoU entre des boîtes distinctes.
classeslist[int]NoneFiltre 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_masksboolFalseRetourne des masques de segmentation haute résolution. Les masques retournés (masks.data) correspondront à la taille d'image originale si activé. Si désactivé, ils ont la taille d'image utilisée pendant l'inférence.
embedlist[int]NoneSpécifie les couches à partir desquelles extraire les vecteurs de caractéristiques ou embeddings. Utile pour des tâches en aval comme le clustering ou la recherche de similarité.
projectstrNoneNom du répertoire du projet où les sorties de prédiction sont enregistrées si save est activé.
namestrNoneNom de l'exécution de 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é.
streamboolFalseActive 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.
verboseboolTrueContrô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.
compilebool ou strFalseActive la compilation de graphe torch.compile de PyTorch 2.x avec backend='inductor'. Accepte True"default", False → désactive, ou un mode chaîne tel que "default", "reduce-overhead", "max-autotune-no-cudagraphs". Revient au mode eager avec un avertissement si non pris en charge.
end2endboolNoneRemplace le mode de bout en bout 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 en utilisant le pipeline NMS traditionnel, te permettant en outre d'utiliser l'argument iou. Voir le Guide de détection de bout en bout pour plus de détails.

Arguments de visualisation :

ArgumentTypeDéfautDescription
showboolFalseSi True, affiche les images ou vidéos annotées dans une fenêtre. Utile pour un retour visuel immédiat lors du développement ou des tests.
saveboolFalse or TrueActive 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_framesboolFalseLors 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_txtboolFalseEnregistre les résultats de 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_confboolFalseInclut les scores de confiance dans les fichiers texte enregistrés. Améliore les détails disponibles pour le post-traitement et l'analyse.
save_cropboolFalseEnregistre 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_labelsboolTrueAffiche les étiquettes pour chaque détection dans la sortie visuelle. Permet une compréhension immédiate des objets détectés.
show_confboolTrueAffiche le score de confiance pour chaque détection à côté de l'étiquette. Donne un aperçu de la certitude du modèle pour chaque détection.
show_boxesboolTrueDessine des boîtes 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_widthint or NoneNoneSpé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é.

Link to this sectionFormats 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 les suffixes valides et des exemples de commandes de prédiction.

Link to this sectionImages#

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

Remarque

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'imageExemple de commande de prédictionRéférence
.avifyolo predict source=image.avifAV1 Image File Format
.bmpyolo predict source=image.bmpMicrosoft BMP File Format
.dngyolo predict source=image.dngAdobe DNG
.heicyolo predict source=image.heicHigh Efficiency Image Format
.heifyolo predict source=image.heifHigh Efficiency Image Format
.jp2yolo predict source=image.jp2JPEG 2000
.jpegyolo predict source=image.jpegJPEG
.jpeg2000yolo predict source=image.jpeg2000JPEG 2000
.jpgyolo predict source=image.jpgJPEG
.mpoyolo predict source=image.mpoMulti Picture Object
.pngyolo predict source=image.pngPortable Network Graphics
.tifyolo predict source=image.tifTag Image File Format
.tiffyolo predict source=image.tiffTag Image File Format
.webpyolo predict source=image.webpWebP

Link to this sectionVidéos#

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

Suffixes vidéoExemple de commande de prédictionRéférence
.asfyolo predict source=video.asfAdvanced Systems Format
.aviyolo predict source=video.aviAudio Video Interleave
.gifyolo predict source=video.gifGraphics Interchange Format
.m4vyolo predict source=video.m4vMPEG-4 Part 14
.mkvyolo predict source=video.mkvMatroska
.movyolo predict source=video.movQuickTime File Format
.mp4yolo predict source=video.mp4MPEG-4 Part 14 - Wikipedia
.mpegyolo predict source=video.mpegMPEG-1 Part 2
.mpgyolo predict source=video.mpgMPEG-1 Part 2
.tsyolo predict source=video.tsMPEG Transport Stream
.wmvyolo predict source=video.wmvWindows Media Video
.webmyolo predict source=video.webmWebM Project

Link to this sectionTravailler avec les résultats#

Tous les appels Ultralytics predict() renvoient une liste d'objets Results :

Résultats
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 inference

Les objets Results possèdent les attributs suivants :

AttributTypeDescription
orig_imgnp.ndarrayL'image originale en tant que tableau NumPy.
orig_shapetupleLa forme de l'image originale au format (hauteur, largeur).
boxesBoxes, optionalUn objet Boxes contenant les boîtes englobantes de détection.
masksMasks, optionalUn objet Masks contenant les masques de détection.
probsProbs, optionalUn objet Probs contenant les probabilités de chaque classe pour une tâche de classification.
keypointsKeypoints, optionalUn objet Keypoints contenant les points clés détectés pour chaque objet.
obbOBB, optionalUn objet OBB contenant des boîtes englobantes orientées.
semantic_maskSemanticMask, optionalUn objet SemanticMask contenant une carte de classe dense par pixel.
speeddictUn dictionnaire des vitesses de prétraitement, d'inférence et de post-traitement en millisecondes par image.
namesdictUn dictionnaire mappant les indices de classe aux noms de classe.
pathstrLe chemin vers le fichier image.
save_dirstr, optionalRépertoire pour enregistrer les résultats.

Link to this sectionRésultats par tâche#

Chaque prédiction renvoie un objet Results par image ou par 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 à moins qu'une demi-précision ne soit 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 type de données entier le plus pratique pour les ID de classe : torch.uint8, torch.int16 ou torch.int32, selon le nombre de classes.

AttributTypeFormeDescription
result.boxesBoxes(N)Boîtes de détection.
result.boxes.datatorch.float32(N,6/7)Données brutes [x1,y1,x2,y2,conf,cls], plus un ID de suivi optionnel.
result.boxes.xyxytorch.float32(N,4)Boîtes en pixels xyxy.
result.boxes.conftorch.float32(N,)Scores de confiance.
result.boxes.clstorch.float32(N,)ID de classe ; convertis en int pour les noms.

Les objets Results possèdent les méthodes suivantes :

MéthodeType de retourDescription
update()NoneMet à 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()ResultsRenvoie une copie de l'objet Results avec tous les tenseurs déplacés vers la mémoire CPU.
numpy()ResultsRenvoie une copie de l'objet Results avec tous les tenseurs convertis en tableaux NumPy.
cuda()ResultsRenvoie une copie de l'objet Results avec tous les tenseurs déplacés vers la mémoire GPU.
to()ResultsRenvoie 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()ResultsCrée un nouvel objet Results avec les mêmes attributs d'image, de chemin, de noms et de vitesse.
plot()np.ndarrayTrace les résultats de détection sur une image BGR d'entrée et renvoie l'image annotée.
show()NoneAffiche l'image avec les résultats d'inférence annotés.
save()strEnregistre l'image des résultats d'inférence annotés dans un fichier et renvoie le nom du fichier.
verbose()strRenvoie une chaîne de journal pour chaque tâche, détaillant les résultats de détection et de classification.
save_txt()strEnregistre les résultats de détection dans un fichier texte et renvoie le chemin vers le fichier enregistré.
save_crop()NoneEnregistre 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()DataFrameConvertit les résultats de détection en un Polars DataFrame.
to_csv()strConvertit les résultats de détection au format CSV.
to_json()strConvertit les résultats de détection au format JSON.

Pour plus de détails, consulte la documentation de la classe Results.

Link to this sectionBoîtes#

L'objet Boxes peut être utilisé pour indexer, manipuler et convertir les boîtes englobantes dans différents formats.

Boîtes
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 boxes

Voici un tableau des méthodes et propriétés de la classe Boxes, incluant leur nom, type et description :

NomTypeDescription
cpu()MéthodeDéplace l'objet vers la mémoire CPU.
numpy()MéthodeConvertit l'objet en un tableau NumPy.
cuda()MéthodeDéplace l'objet vers la mémoire CUDA.
to()MéthodeDéplace l'objet vers le périphérique spécifié.
xyxyPropriété (torch.Tensor)Renvoie les boîtes au format xyxy.
confPropriété (torch.Tensor)Renvoie les valeurs de confiance des boîtes.
clsPropriété (torch.Tensor)Renvoie les valeurs de classe des boîtes.
idPropriété (torch.Tensor)Renvoie les IDs de suivi des boîtes (si disponibles).
xywhPropriété (torch.Tensor)Renvoie les boîtes au format xywh.
xyxynPropriété (torch.Tensor)Renvoie les boîtes au format xyxy normalisées par la taille de l'image originale.
xywhnProprié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.

Link to this sectionMasques#

L'objet Masks peut être utilisé pour indexer, manipuler et convertir les masques en segments.

Masques
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 masks

Voici un tableau des méthodes et propriétés de la classe Masks, incluant leur nom, type et description :

NomTypeDescription
dataPropriété (torch.Tensor)Tenseur de masque binaire torch.uint8 avec une forme (N,H,W) et des valeurs 0 ou 1.
cpu()MéthodeRenvoie le tenseur des masques sur la mémoire CPU.
numpy()MéthodeRenvoie le tenseur des masques sous forme de tableau NumPy.
cuda()MéthodeRenvoie le tenseur des masques sur la mémoire GPU.
to()MéthodeRenvoie le tenseur des masques avec le périphérique et le type de données spécifiés.
xynPropriété (list[np.ndarray])Une liste de polygones de masque normalisés.
xyProprié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.

Link to this sectionSemanticMask#

SemanticMask stocke une carte de classe dense pour les résultats de segmentation sémantique. Contrairement à Masks, il ne contient pas un masque binaire par objet et ne fournit pas d'assistants de polygone.

SemanticMask
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
NomTypeDescription
dataPropriété (torch.Tensor)Carte d'ID de classe avec une forme (H,W). Le type de données est torch.uint8, torch.int16 ou torch.int32, sélectionné par le nombre de classes.
shapePropriété (tuple)Forme de la carte de classe, correspondant généralement à result.orig_shape.
cpu()MéthodeRenvoie le tenseur du masque sémantique sur la mémoire CPU.
numpy()MéthodeRenvoie le tenseur du masque sémantique sous forme de tableau NumPy.
cuda()MéthodeRenvoie le tenseur du masque sémantique sur la mémoire GPU.
to()MéthodeRenvoie le tenseur du masque sémantique avec le périphérique et le type de données spécifiés.

Link to this sectionKeypoints#

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

Keypoints
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 keypoints

Voici un tableau des méthodes et propriétés de la classe Keypoints, incluant leur nom, type et description :

NomTypeDescription
cpu()MéthodeRenvoie le tenseur des points clés sur la mémoire CPU.
numpy()MéthodeRenvoie le tenseur des points clés sous forme de tableau NumPy.
cuda()MéthodeRenvoie le tenseur des points clés sur la mémoire GPU.
to()MéthodeRenvoie le tenseur des points clés avec le périphérique et le dtype spécifiés.
xynPropriété (torch.Tensor)Une liste de points clés normalisés représentés sous forme de tenseurs.
xyPropriété (torch.Tensor)Une liste de points clés en coordonnées de pixels représentés sous forme de tenseurs.
confPropriété (torch.Tensor)Renvoie les valeurs de confiance des points clés si disponibles, sinon None.

Pour plus de détails, consulte la documentation de la classe Keypoints.

Link to this sectionProbs#

L'objet Probs peut être utilisé pour indexer, obtenir les indices top1 et top5 ainsi que les scores de classification.

Probs
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 probabilities

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

NomTypeDescription
cpu()MéthodeRenvoie une copie du tenseur probs sur la mémoire CPU.
numpy()MéthodeRenvoie une copie du tenseur probs sous forme de tableau NumPy.
cuda()MéthodeRenvoie une copie du tenseur probs sur la mémoire GPU.
to()MéthodeRenvoie une copie du tenseur probs avec le périphérique et le dtype spécifiés.
top1Propriété (int)Indice de la classe top 1.
top5Propriété (list[int])Indices des 5 meilleures classes.
top1confPropriété (torch.Tensor)Confiance de la classe top 1.
top5confPropriété (torch.Tensor)Confiances des 5 meilleures classes.

Pour plus de détails, consulte la documentation de la classe Probs.

Link to this sectionOBB#

L'objet OBB 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 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 boxes

Voici un tableau des méthodes et propriétés de la classe OBB, incluant leur nom, type et description :

NomTypeDescription
cpu()MéthodeDéplace l'objet vers la mémoire CPU.
numpy()MéthodeConvertit l'objet en un tableau NumPy.
cuda()MéthodeDéplace l'objet vers la mémoire CUDA.
to()MéthodeDéplace l'objet vers le périphérique spécifié.
confPropriété (torch.Tensor)Renvoie les valeurs de confiance des boîtes.
clsPropriété (torch.Tensor)Renvoie les valeurs de classe des boîtes.
idPropriété (torch.Tensor)Renvoie les IDs de suivi des boîtes (si disponibles).
xyxyPropriété (torch.Tensor)Renvoie les boîtes horizontales au format xyxy.
xywhrPropriété (torch.Tensor)Renvoie les boîtes pivotées au format xywhr.
xyxyxyxyPropriété (torch.Tensor)Renvoie les boîtes pivotées au format xyxyxyxy.
xyxyxyxynProprié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.

Link to this sectionVisualisation des résultats#

La méthode plot() des 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 originale. Cette méthode renvoie l'image annotée sous forme de tableau NumPy, permettant un affichage ou un enregistrement facile.

Tracé
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")

Link to this sectionParamètres de la méthode plot()#

La méthode plot() prend en charge divers arguments pour personnaliser la sortie :

ArgumentTypeDescriptionDéfaut
confboolInclure les scores de confiance de détection.True
line_widthfloatÉpaisseur de ligne des boîtes englobantes. S'adapte à la taille de l'image si None.None
font_sizefloatTaille de police du texte. S'adapte à la taille de l'image si None.None
fontstrNom de la police pour les annotations textuelles.'Arial.ttf'
pilboolRenvoie l'image en tant qu'objet PIL Image.False
imgnp.ndarrayImage alternative pour le traçage. Utilise l'image originale si None.None
im_gputorch.TensorImage accélérée par GPU pour un traçage de masque plus rapide. Forme : (1, 3, 640, 640).None
kpt_radiusintRayon des points clés dessinés.5
kpt_lineboolConnecter les points clés avec des lignes.True
labelsboolInclure les étiquettes de classe dans les annotations.True
boxesboolSuperposer les boîtes englobantes sur l'image.True
masksboolSuperposer les masques sur l'image.True
probsboolInclure les probabilités de classification.True
showboolAfficher l'image annotée directement via la visionneuse d'images par défaut.False
saveboolEnregistrer l'image annotée dans un fichier spécifié par filename.False
filenamestrChemin et nom du fichier pour enregistrer l'image annotée si save est True.None
color_modestrSpécifie le mode couleur, par exemple 'instance' ou 'class'.'class'
txt_colortuple[int, int, int]Couleur de texte BGR pour la boîte englobante et l'étiquette de classification d'image.(255, 255, 255)

Link to this sectionInfé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 :

Inférence thread-safe

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 examen approfondi de l'inférence thread-safe avec les modèles YOLO et des instructions étape par étape, consulte notre Guide d'inférence YOLO thread-safe. Ce guide te fournira toutes les informations nécessaires pour éviter les pièges courants et garantir que ton inférence multi-threadée se déroule sans encombre.

Link to this sectionBoucle for de source de streaming#

Voici un script Python utilisant OpenCV (cv2) et YOLO pour exécuter l'inférence sur des images vidéo. Ce script suppose que tu as 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("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'.

Link to this sectionFAQ#

Link to this sectionQu'est-ce que Ultralytics YOLO et son mode 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 d'instances, la segmentation sémantique et la classification en temps réel. Son mode 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 prédiction d'Ultralytics YOLO.

Link to this sectionComment puis-je exécuter l'inférence en utilisant Ultralytics YOLO sur différentes sources de données ?#

Ultralytics YOLO peut traiter une large gamme de sources de données, y compris des images individuelles, des vidéos, des répertoires, des URLs 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. Consulte les exemples détaillés pour diverses sources d'inférence dans la documentation.

Link to this sectionComment puis-je 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, tu peux utiliser le mode streaming en définissant stream=True dans la méthode d'appel du prédicteur. Le mode streaming génère un générateur d'objets Results économe en mémoire au lieu de charger toutes les images en mémoire. Pour le traitement de longues vidéos ou de grands jeux de données, le mode streaming est particulièrement utile. En savoir plus sur le mode streaming.

Link to this sectionQuels arguments d'inférence Ultralytics YOLO prend-il en charge ?#

La méthode model.predict() dans YOLO prend en charge divers arguments tels que conf, iou, imgsz, device, et 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 le périphérique utilisé pour le calcul. Des descriptions détaillées de ces arguments se trouvent dans la section arguments d'inférence.

Link to this sectionComment puis-je visualiser et enregistrer les résultats des prédictions YOLO ?#

Après avoir exécuté l'inférence avec YOLO, les objets Results contiennent des méthodes pour afficher et enregistrer les images annotées. Tu peux utiliser des méthodes comme result.show() et result.save(filename="result.jpg") pour visualiser et enregistrer les résultats. 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 une liste complète de ces méthodes, réfère-toi à la section travailler avec les résultats.

Commentaires