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 |
---|
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. |
max_det |
int |
300 |
Nombre maximal de détections autorisées par image. Limite le nombre total d'objets que le modèle peut détecter en une seule inférence, ce qui permet d'éviter les sorties excessives dans les scènes denses. |
vid_stride |
int |
1 |
Saut d'images pour les entrées vidéo. Permet de sauter des images dans les vidéos pour accélérer le traitement au détriment de la résolution temporelle. Une valeur de 1 traite chaque image, les valeurs supérieures sautent des images. |
stream_buffer |
bool |
False |
Détermine s'il faut mettre en file d'attente les images entrantes pour les flux vidéo. Si cette option est activée, l'image est mise en file d'attente. False Si `True', les anciennes images sont supprimées pour laisser place aux nouvelles images (optimisé pour les applications en temps réel). Si `True', les nouvelles images sont mises en file d'attente dans un tampon, ce qui garantit qu'aucune image ne sera sautée, mais entraînera une latence si le nombre d'images par seconde de l'inférence est inférieur au nombre d'images par seconde du flux. |
visualize |
bool |
False |
Active la visualisation des caractéristiques du modèle pendant l'inférence, donnant un aperçu de ce que le modèle "voit". Utile pour le débogage et l'interprétation du modèle. |
augment |
bool |
False |
Permet l'augmentation du temps de test (TTA) pour les prédictions, ce qui peut améliorer la robustesse de la détection au détriment de la vitesse d'inférence. |
agnostic_nms |
bool |
False |
Permet la suppression non maximale (NMS) indépendante de la classe, qui fusionne les boîtes de différentes classes qui se chevauchent. Utile dans les scénarios de détection multi-classes où le chevauchement des classes est courant. |
classes |
list[int] |
None |
Filtre les prédictions sur un ensemble d'identifiants de classes. Seules les détections appartenant aux classes spécifiées seront renvoyées. Utile pour se concentrer sur les objets pertinents dans les tâches de détection multi-classes. |
retina_masks |
bool |
False |
Renvoie des masques de segmentation à haute résolution. Les masques retournés (masks.data ) correspondront à la taille de l'image originale si elles sont activées. S'ils sont désactivés, ils ont la taille de l'image utilisée lors de l'inférence. |
embed |
list[int] |
None |
Spécifie les couches à partir desquelles il faut extraire les vecteurs de caractéristiques ou les encastrements. Utile pour les tâches en aval telles que le regroupement ou la recherche de similarités. |
project |
str |
None |
Nom du répertoire du projet dans lequel les résultats de la prédiction sont enregistrés si save est activée. |
name |
str |
None |
Nom de l'exécution de la prédiction. Utilisé pour créer un sous-répertoire dans le dossier du projet, où les résultats de la prédiction sont stockés si save est activée. |
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.