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.

Trackers:用于视频对象跟踪的开源工具库

 

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 :

  1. 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
    
  2. 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
    
  3. Installation des bibliothèques dépendantes
    Dépendances des traqueurs supervision,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
      
  4. 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

  1. Préparation du fichier vidéo
    Assurez-vous qu'il existe un fichier vidéo d'entrée, par exemple input.mp4. Placez-le dans le répertoire du projet.
  2. 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.
  3. code en cours d'exécution
    Enregistrer le code sous track.pyet 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

  1. 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.
  2. 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.
  3. 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.
  4. 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

  1. 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.
  2. 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.
  3. 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.
  4. Comment traiter les problèmes de débordement de mémoire ?
    Définition des variables d'environnement VIDEO_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
AiPPT

Articles connexes

Pas de commentaires

Vous devez être connecté pour participer aux commentaires !
S'inscrire maintenant
aucun
Pas de commentaires...