Skip to content

Recadrage d'objets Ă  l'aide de Ultralytics YOLOv8

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

Le recadrage d'objets avec Ultralytics YOLOv8 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 YOLOv8 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.



Regarde : Recadrage d'objets Ă  l'aide de Ultralytics YOLOv8

Avantages du recadrage d'objets ?

  • Analyse ciblĂ©e: YOLOv8 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 YOLOv8'assure 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 à l'aéroport Valises en cours d'utilisation Ultralytics YOLOv8
Valises Cropping at airport conveyor belt using Ultralytics YOLOv8

Recadrage d'objets Ă  l'aide de YOLOv8 Exemple

import os

import cv2

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

model = YOLO("yolov8n.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. Prend en charge un large éventail de formats et de sources, ce qui permet 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 un niveau de confiance inférieur à ce seuil ne seront pas pris en compte. Le réglage de cette valeur peut aider à réduire les 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 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 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 bon redimensionnement peut améliorer la précision de la détection 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.
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, ce qui permet d'éviter les sorties excessives dans les scènes denses.
vid_stride int 1 Saut de trame 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 si toutes les images doivent être mises en mémoire tampon lors du traitement des flux vidéo (True), ou si le modèle doit retourner le cadre le plus récent (False). Utile pour les applications en temps réel.
visualize bool False Active la visualisation des caractéristiques du modèle pendant l'inférence, ce qui permet de comprendre 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, améliorant potentiellement la robustesse de la détection au prix de la vitesse d'inférence.
agnostic_nms bool False Permet la Suppression non maximale (SNM) agnostique des classes, 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 Utilise des masques de segmentation à haute résolution s'ils sont disponibles dans le modèle. Cela permet d'améliorer la qualité des masques pour les tâches de segmentation, en fournissant des détails plus fins.
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.

FAQ

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

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

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

Ultralytics YOLOv8 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. De plus, YOLOv8 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. Explore les avantages 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 à l'aide du recadrage d'objets ?

En utilisant Ultralytics YOLOv8 pour ne recadrer que les objets pertinents de tes images ou vidéos, tu peux réduire considérablement la taille des données, ce qui les rend plus efficaces pour le stockage et le traitement. Ce processus consiste à entraîner le modèle à détecter des objets spécifiques, puis à utiliser les résultats pour recadrer et enregistrer uniquement ces parties. Pour plus d'informations sur l'exploitation des capacités de Ultralytics YOLOv8 , visite notre guide de démarrage rapide.

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

Oui, Ultralytics YOLOv8 peut traiter des flux vidéo en temps réel pour détecter et recadrer des objets de façon 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. Découvre 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 YOLOv8 pour le recadrage d'objets ?

Ultralytics YOLOv8 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, pense à utiliser CoreML pour iOS ou TFLite pour Android. Tu trouveras plus de détails sur les appareils et les formats pris en charge dans nos options de déploiement de modèles.



Créé le 2024-01-09, Mis à jour le 2024-07-05
Auteurs : glenn-jocher (8), RizwanMunawar (2), IvorZhu331 (1), AyushExel (1)

Commentaires