Skip to content

Recadrage d'objets Ă  l'aide de Ultralytics YOLO11

Qu'est-ce que le recadrage d'objets ?

Le recadrage d'objets avec Ultralytics YOLO11 consiste à isoler et à extraire d'une image ou d'une vidéo des objets spécifiques détectés. Les capacités du modèle YOLO11 sont utilisées pour identifier et délimiter avec précision les objets, ce qui permet un recadrage précis en vue d'une analyse ou d'une manipulation plus poussée.



Regarder : Recadrage d'objets Ă  l'aide de Ultralytics YOLO

Avantages du recadrage d'objets ?

  • Analyse ciblĂ©e: YOLO11 facilite le recadrage d'objets ciblĂ©s, ce qui permet d'examiner ou de traiter en profondeur des Ă©lĂ©ments individuels dans une scène.
  • Volume de donnĂ©es rĂ©duit: En n'extrayant que les objets pertinents, le recadrage des objets permet de minimiser la taille des donnĂ©es, ce qui les rend efficaces pour le stockage, la transmission ou les tâches de calcul ultĂ©rieures.
  • PrĂ©cision accrue: la prĂ©cision de dĂ©tection des objets de YOLO11 garantit que les objets recadrĂ©s conservent leurs relations spatiales, prĂ©servant ainsi l'intĂ©gritĂ© des informations visuelles pour une analyse dĂ©taillĂ©e.

Visuels

Bagages d'aéroport
Tapis roulant d'un aéroport Les valises s'accrochent en utilisant le tapis roulant Ultralytics YOLO11
Valises en train de crocheter sur le tapis roulant d'un aéroport, à l'aide de Ultralytics YOLO11

Recadrage d'objets Ă  l'aide de YOLO11 Exemple

import os

import cv2

from ultralytics import YOLO
from ultralytics.utils.plotting import Annotator, colors

model = YOLO("yolo11n.pt")
names = model.names

cap = cv2.VideoCapture("path/to/video/file.mp4")
assert cap.isOpened(), "Error reading video file"
w, h, fps = (int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS))

crop_dir_name = "ultralytics_crop"
if not os.path.exists(crop_dir_name):
    os.mkdir(crop_dir_name)

# Video writer
video_writer = cv2.VideoWriter("object_cropping_output.avi", cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))

idx = 0
while cap.isOpened():
    success, im0 = cap.read()
    if not success:
        print("Video frame is empty or video processing has been successfully completed.")
        break

    results = model.predict(im0, show=False)
    boxes = results[0].boxes.xyxy.cpu().tolist()
    clss = results[0].boxes.cls.cpu().tolist()
    annotator = Annotator(im0, line_width=2, example=names)

    if boxes is not None:
        for box, cls in zip(boxes, clss):
            idx += 1
            annotator.box_label(box, color=colors(int(cls), True), label=names[int(cls)])

            crop_obj = im0[int(box[1]) : int(box[3]), int(box[0]) : int(box[2])]

            cv2.imwrite(os.path.join(crop_dir_name, str(idx) + ".png"), crop_obj)

    cv2.imshow("ultralytics", im0)
    video_writer.write(im0)

    if cv2.waitKey(1) & 0xFF == ord("q"):
        break

cap.release()
video_writer.release()
cv2.destroyAllWindows()

Arguments model.predict

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. FalseSi `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.

FAQ

Qu'est-ce que le recadrage d'objets dans Ultralytics YOLO11 et comment cela fonctionne-t-il ?

Le recadrage d'objets à l'aide de Ultralytics YOLO11 consiste à isoler et à extraire des objets spécifiques d'une image ou d'une vidéo en s'appuyant sur les capacités de détection de YOLO11. Ce processus permet de cibler l'analyse, de réduire le volume de données et d'améliorer la précision en exploitant YOLO11 pour identifier les objets avec une grande précision et les recadrer en conséquence. Pour un tutoriel approfondi, reportez-vous à l'exemple de recadrage d'objet.

Pourquoi devrais-je utiliser Ultralytics YOLO11 pour le recadrage d'objets plutĂ´t que d'autres solutions ?

Ultralytics YOLO11 se distingue par sa précision, sa rapidité et sa facilité d'utilisation. Il permet une détection et un recadrage détaillés et précis des objets, ce qui est essentiel pour les analyses ciblées et les applications nécessitant une grande intégrité des données. En outre, YOLO11 s'intègre parfaitement à des outils tels que OpenVINO et TensorRT pour les déploiements nécessitant des capacités en temps réel et une optimisation sur divers matériels. Découvrez les avantages de cette solution dans le guide sur l'exportation de modèles.

Comment puis-je réduire le volume de données de mon jeu de données en utilisant le recadrage d'objets ?

En utilisant Ultralytics YOLO11 pour ne recadrer que les objets pertinents de vos images ou vidéos, vous pouvez réduire considérablement la taille des données, ce qui les rend plus efficaces pour le stockage et le traitement. Ce processus implique l'entraînement du modèle à la détection d'objets spécifiques, puis l'utilisation des résultats pour recadrer et enregistrer uniquement ces parties. Pour plus d'informations sur l'exploitation des capacités de Ultralytics YOLO11 , consultez notre guide de démarrage rapide.

Puis-je utiliser Ultralytics YOLO11 pour l'analyse vidéo en temps réel et le recadrage d'objets ?

Oui, Ultralytics YOLO11 peut traiter des flux vidéo en temps réel pour détecter et recadrer des objets de manière dynamique. Les capacités d'inférence à grande vitesse du modèle le rendent idéal pour les applications en temps réel telles que la surveillance, l'analyse sportive et les systèmes d'inspection automatisés. Consultez les modes de suivi et de prédiction pour comprendre comment mettre en œuvre le traitement en temps réel.

Quelle est la configuration matérielle requise pour faire fonctionner efficacement YOLO11 pour le recadrage d'objets ?

Ultralytics YOLO11 est optimisé pour les environnements CPU et GPU , mais pour obtenir des performances optimales, en particulier pour l'inférence en temps réel ou en grand volume, il est recommandé d'utiliser un GPU dédié (par exemple, NVIDIA Tesla, série RTX). Pour un déploiement sur des appareils légers, envisagez d'utiliser CoreML pour iOS ou TFLite pour Android. Pour plus de détails sur les appareils et les formats pris en charge, voir les options de déploiement du modèle.

📅C réé il y a 11 mois ✏️ Mis à jour il y a 2 mois

Commentaires