Trackers : bibliothèque d'outils open source pour le suivi d'objets vidéo
Introduction générale
Trackers est une bibliothèque d'outils Python open source axée sur le suivi d'objets multiples dans les vidéos. Elle intègre une variété d'algorithmes de suivi de premier plan, tels que SORT et DeepSORT, permettant aux utilisateurs de combiner différents modèles de détection d'objets (par exemple, YOLO, RT-DETR) pour une analyse vidéo flexible. Les utilisateurs peuvent détecter, suivre et annoter des images vidéo à l'aide d'un code simple pour la surveillance du trafic, l'automatisation industrielle et d'autres scénarios.

Liste des fonctions
- Plusieurs algorithmes de suivi sont pris en charge, notamment SORT et DeepSORT, et il est prévu d'en ajouter d'autres à l'avenir.
- Compatible avec les principaux modèles de détection d'objets tels que YOLO, RT-DETR et RFDETR.
- Permet l'annotation d'images vidéo avec la possibilité d'afficher les identifiants des traces et les boîtes de délimitation.
- La conception modulaire permet à l'utilisateur de combiner librement les détecteurs et les suiveurs.
- Prise en charge du traitement des images à partir de fichiers vidéo ou de flux vidéo en direct.
- Open source et gratuit, basé sur la licence Apache 2.0, code ouvert et transparent.
Utiliser l'aide
Processus d'installation
Pour utiliser Trackers, vous devez installer les dépendances dans votre environnement Python. Voici les étapes détaillées de l'installation :
- Préparation de l'environnement
Assurez-vous que Python 3.6 ou une version ultérieure est installé sur votre système. Un environnement virtuel est recommandé pour éviter les conflits de dépendance :python -m venv venv source venv/bin/activate # Windows 用户使用 venv\Scripts\activate
- Installation de la bibliothèque de traqueurs
Vous pouvez installer la dernière version depuis GitHub :pip install git+https://github.com/roboflow/trackers.git
Ou installez la version stable publiée :
pip install trackers
- Installation des bibliothèques dépendantes
Dépendances des traqueurssupervision
,torch
et d'autres bibliothèques. Selon le modèle de détection utilisé, des installations supplémentaires peuvent être nécessaires :- Pour le modèle YOLO :
pip install ultralytics
- Pour le modèle RT-DETR :
pip install transformers
- Assurer l'installation
opencv-python
Pour le traitement vidéo :pip install opencv-python
- Pour le modèle YOLO :
- Vérifier l'installation
Exécutez le code suivant pour vérifier si l'installation a réussi :from trackers import SORTTracker print(SORTTracker)
Utilisation
La fonction principale des trackers est de traiter les images vidéo à l'aide d'algorithmes de détection et de suivi d'objets. Voici une procédure détaillée pour l'utilisation de SORTTracker en conjonction avec le modèle YOLO :
Exemple : Suivi d'objets vidéo avec YOLO et SORTTracker
- Préparation du fichier vidéo
Assurez-vous qu'il existe un fichier vidéo d'entrée, par exempleinput.mp4
. Placez-le dans le répertoire du projet. - Code d'écriture
Vous trouverez ci-dessous un exemple de code complet pour le chargement d'un modèle YOLO, le suivi d'objets dans la vidéo et l'étiquetage de la vidéo de sortie avec l'identifiant de suivi :import supervision as sv from trackers import SORTTracker from ultralytics import YOLO # 初始化跟踪器和模型 tracker = SORTTracker() model = YOLO("yolo11m.pt") annotator = sv.LabelAnnotator(text_position=sv.Position.CENTER) # 定义回调函数处理每帧 def callback(frame, _): result = model(frame)[0] detections = sv.Detections.from_ultralytics(result) detections = tracker.update(detections) return annotator.annotate(frame, detections, labels=detections.tracker_id) # 处理视频 sv.process_video( source_path="input.mp4", target_path="output.mp4", callback=callback )
Code Description: :
YOLO("yolo11m.pt")
Charger le modèle YOLO11 pré-entraîné.SORTTracker()
Initialiser le tracker SORT.sv.Detections.from_ultralytics
Convertit les résultats d'inspection YOLO au format Supervision.tracker.update(detections)
Met à jour l'état de la trace et attribue un identifiant à la trace.annotator.annotate
Dessine la boîte de délimitation et l'ID sur le cadre.sv.process_video
Traiter la vidéo image par image et enregistrer le résultat.
- code en cours d'exécution
Enregistrer le code soustrack.py
et de l'exécuter :python track.py
Sortie vidéo
output.mp4
contiendra des annotations avec des identifiants de suivi.
Fonction en vedette Fonctionnement
- Modèles de détection de basculement
Trackers prend en charge une variété de modèles de détection. Par exemple, le modèle RT-DETR est utilisé :import torch from transformers import RTDetrV2ForObjectDetection, RTDetrImageProcessor tracker = SORTTracker() processor = RTDetrImageProcessor.from_pretrained("PekingU/rtdetr_v2_r18vd") model = RTDetrV2ForObjectDetection.from_pretrained("PekingU/rtdetr_v2_r18vd") annotator = sv.LabelAnnotator() def callback(frame, _): inputs = processor(images=frame, return_tensors="pt") with torch.no_grad(): outputs = model(**inputs) h, w, _ = frame.shape results = processor.post_process_object_detection( outputs, target_sizes=torch.tensor([(h, w)]), threshold=0.5 )[0] detections = sv.Detections.from_transformers(results, id2label=model.config.id2label) detections = tracker.update(detections) return annotator.annotate(frame, detections, labels=detections.tracker_id) sv.process_video(source_path="input.mp4", target_path="output.mp4", callback=callback)
- Étiquetage personnalisé
Les styles d'annotation peuvent être ajustés, par exemple en modifiant la position des étiquettes ou en ajoutant une boîte de délimitation :annotator = sv.LabelAnnotator(text_position=sv.Position.TOP_LEFT) box_annotator = sv.BoundingBoxAnnotator() def callback(frame, _): result = model(frame)[0] detections = sv.Detections.from_ultralytics(result) detections = tracker.update(detections) frame = box_annotator.annotate(frame, detections) return annotator.annotate(frame, detections, labels=detections.tracker_id)
- Traitement des flux vidéo en direct
Si vous avez besoin de gérer l'entrée de la caméra, vous pouvez modifier le code :import cv2 cap = cv2.VideoCapture(0) # 打开默认摄像头 while cap.isOpened(): ret, frame = cap.read() if not ret: break annotated_frame = callback(frame, None) cv2.imshow("Tracking", annotated_frame) if cv2.waitKey(1) & 0xFF == ord("q"): break cap.release() cv2.destroyAllWindows()
mise en garde
- l'optimisation des performancesLe traitement de vidéos longues peut entraîner une utilisation importante de la mémoire. Vous pouvez limiter la taille de la mémoire tampon en définissant des variables d'environnement :
export VIDEO_SOURCE_BUFFER_SIZE=2
- Sélection du modèlePour s'assurer que le modèle de détection est compatible avec le traceur, les options recommandées sont YOLO et RT-DETR.
- ajuster les composants pendant les essaisSi l'ID de suivi change fréquemment, essayez d'ajuster le seuil de confiance du modèle de détection ou les paramètres du suiveur, par exemple.
track_buffer
.
scénario d'application
- surveillance du trafic
Les trackers peuvent être utilisés pour analyser les trajectoires des véhicules et des piétons sur la route. Par exemple, en combinaison avec la détection YOLO des véhicules dans les caméras de circulation urbaine, SORTTracker suit la trajectoire de chaque véhicule et génère des statistiques de circulation ou des rapports d'infraction. - l'automatisation industrielle
Sur les lignes de production, les trackers suivent les objets en mouvement tels que les produits sur les bandes transporteuses. Associés à un modèle d'inspection permettant d'identifier le type de produit, les trackers enregistrent la trajectoire de chaque produit à des fins de contrôle de la qualité ou de gestion des stocks. - analyse des mouvements
Dans les vidéos sportives, les trackers peuvent suivre le mouvement d'un joueur ou d'un ballon. Par exemple, analyser la trajectoire d'un joueur lors d'un match de football et générer des cartes thermiques ou des statistiques. - le contrôle de la sécurité
Dans les systèmes de sécurité, les trackers peuvent suivre les mouvements de cibles suspectes. Par exemple, dans les caméras des centres commerciaux, des personnes spécifiques sont détectées et suivies, et leurs déplacements sont enregistrés en vue d'une analyse ultérieure.
QA
- Quels sont les algorithmes de suivi pris en charge par Trackers ?
Les algorithmes SORT et DeepSORT sont actuellement pris en charge, et d'autres algorithmes tels que ByteTrack sont prévus dans les prochaines versions. - Comment puis-je améliorer la stabilité du suivi ?
Assurer la précision du modèle de détection en ajustant le seuil de confiance (par exemple, 0,5) ou en augmentant la durée de vie du traceur.track_buffer
afin de réduire les changements d'identifiant. - Prend-il en charge le traitement vidéo en temps réel ?
Oui, Trackers prend en charge les flux vidéo en direct tels que les entrées de caméra. Les images doivent être capturées et traitées image par image à l'aide d'OpenCV. - Comment traiter les problèmes de débordement de mémoire ?
Définition des variables d'environnementVIDEO_SOURCE_BUFFER_SIZE=2
Limitez la mémoire tampon ou utilisez un modèle plus léger tel que YOLO11n.
© déclaration de droits d'auteur
L'article est protégé par le droit d'auteur et ne doit pas être reproduit sans autorisation.
Articles connexes
Pas de commentaires...