Allgemeine Einführung
Trackers ist eine Open-Source-Python-Werkzeugbibliothek, die sich auf die Verfolgung mehrerer Objekte in Videos konzentriert. Sie integriert eine Vielzahl führender Verfolgungsalgorithmen wie SORT und DeepSORT und ermöglicht es den Benutzern, verschiedene Modelle zur Objekterkennung (z. B. YOLO, RT-DETR) für eine flexible Videoanalyse zu kombinieren. Benutzer können Videobilder mit einfachem Code für die Verkehrsüberwachung, industrielle Automatisierung und andere Szenarien erkennen, verfolgen und mit Anmerkungen versehen.
Funktionsliste
- Es werden mehrere Tracking-Algorithmen unterstützt, darunter SORT und DeepSORT, und es ist geplant, in Zukunft weitere hinzuzufügen.
- Kompatibel mit führenden Objekterkennungsmodellen wie YOLO, RT-DETR und RFDETR.
- Bietet Videobildkommentare mit Unterstützung für die Anzeige von Spur-IDs und Begrenzungsrahmen.
- Der modulare Aufbau erlaubt es dem Benutzer, Detektoren und Tracker frei zu kombinieren.
- Unterstützt die Verarbeitung von Bildern aus Videodateien oder Live-Videostreams.
- Open Source und kostenlos, basierend auf der Apache 2.0 Lizenz, offener und transparenter Code.
Hilfe verwenden
Einbauverfahren
Um Trackers zu verwenden, müssen Sie die Abhängigkeiten in Ihrer Python-Umgebung installieren. Hier sind die detaillierten Installationsschritte:
- Vorbereiten der Umgebung
Stellen Sie sicher, dass Python 3.6 oder höher auf Ihrem System installiert ist. Eine virtuelle Umgebung wird empfohlen, um Abhängigkeitskonflikte zu vermeiden:python -m venv venv source venv/bin/activate # Windows 用户使用 venv\Scripts\activate
- Installation der Tracker-Bibliothek
Sie können die neueste Version von GitHub installieren:pip install git+https://github.com/roboflow/trackers.git
Oder installieren Sie die freigegebene stabile Version:
pip install trackers
- Installation von abhängigen Bibliotheken
Abhängigkeiten der Trackersupervision
undtorch
und andere Bibliotheken. Je nach dem verwendeten Erkennungsmodell können zusätzliche Installationen erforderlich sein:- Für das YOLO-Modell:
pip install ultralytics
- Für das Modell RT-DETR:
pip install transformers
- Sicherstellung der Installation
opencv-python
Für die Videoverarbeitung:pip install opencv-python
- Für das YOLO-Modell:
- Überprüfen der Installation
Führen Sie den folgenden Code aus, um zu prüfen, ob die Installation erfolgreich war:from trackers import SORTTracker print(SORTTracker)
Verwendung
Die Kernfunktion des Trackers ist die Verarbeitung von Videobildern durch Objekterkennungs- und Verfolgungsalgorithmen. Nachfolgend finden Sie eine detaillierte Anleitung zur Verwendung von SORTTracker in Verbindung mit dem YOLO-Modell:
Beispiel: Video-Objektverfolgung mit YOLO und SORTTracker
- Vorbereiten der Videodatei
Vergewissern Sie sich, dass eine Eingangsvideodatei vorhanden ist, z. B.input.mp4
. Legen Sie es in das Projektverzeichnis. - Code schreiben
Nachfolgend finden Sie einen vollständigen Beispielcode zum Laden eines YOLO-Modells, zum Verfolgen von Objekten im Video und zum Kennzeichnen des Ausgabevideos mit der Tracking-ID: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 Beschreibung::
YOLO("yolo11m.pt")
Laden Sie das vortrainierte YOLO11-Modell.SORTTracker()
Initialisieren Sie den SORT-Tracker.sv.Detections.from_ultralytics
Konvertiert YOLO-Inspektionsergebnisse in das Supervision-Format.tracker.update(detections)
Aktualisiert den Trace-Status und vergibt eine Trace-ID.annotator.annotate
Zeichnet den Begrenzungsrahmen und die ID auf den Rahmen.sv.process_video
Verarbeiten Sie das Video Bild für Bild und speichern Sie das Ergebnis.
- laufender Code
Speichern Sie den Code alstrack.py
und dann ausführen:python track.py
Ausgang Video
output.mp4
werden Anmerkungen mit Tracking-IDs enthalten.
Featured Function Bedienung
- Umschalten von Erkennungsmodellen
Trackers unterstützt eine Vielzahl von Erkennungsmodellen. Zum Beispiel wird das RT-DETR-Modell verwendet: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)
- Kundenspezifische Etikettierung
Die Beschriftungsstile können angepasst werden, z. B. durch Ändern der Position von Beschriftungen oder Hinzufügen eines Begrenzungsrahmens: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)
- Verarbeitung von Live-Videostreams
Wenn Sie die Kameraeingabe verarbeiten müssen, können Sie den Code ändern: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()
caveat
- LeistungsoptimierungDie Verarbeitung langer Videos kann zu einem hohen Speicherverbrauch führen. Sie können die Puffergröße durch das Setzen von Umgebungsvariablen begrenzen:
export VIDEO_SOURCE_BUFFER_SIZE=2
- Auswahl des ModellsUm sicherzustellen, dass das Detektionsmodell mit dem Tracker kompatibel ist, werden die Optionen YOLO und RT-DETR empfohlen.
- Komponenten während der Prüfung anpassenWenn die Tracking-ID häufig wechselt, versuchen Sie, die Vertrauensschwelle des Erkennungsmodells oder die Parameter des Trackers anzupassen, z. B.
track_buffer
.
Anwendungsszenario
- Verkehrsüberwachung
Tracker können verwendet werden, um den Weg von Fahrzeugen und Fußgängern auf der Straße zu analysieren. In Kombination mit der YOLO-Erkennung von Fahrzeugen in städtischen Verkehrskameras verfolgt SORTTracker beispielsweise den Weg jedes Fahrzeugs und erstellt Verkehrsstatistiken oder Verstoßprotokolle. - Industrieautomatisierung
In Produktionslinien verfolgen Tracker sich bewegende Objekte, wie z. B. Produkte auf Förderbändern. In Kombination mit einem Inspektionsmodell zur Identifizierung von Produkttypen zeichnen die Tracker den Bewegungspfad jedes Produkts für die Qualitätskontrolle oder die Bestandsverwaltung auf. - Bewegungsanalyse
In Sportvideos verfolgt Trackers die Bewegung eines Spielers oder eines Balls. Analysieren Sie zum Beispiel den Laufweg eines Spielers bei einem Fußballspiel und erstellen Sie Heatmaps oder Statistiken. - Sicherheitsüberwachung
In Sicherheitssystemen können Tracker die Bewegungen von verdächtigen Zielen verfolgen. So werden z. B. bei Kameras in Einkaufszentren bestimmte Personen erkannt und verfolgt, und ihre Wege werden zur späteren Analyse aufgezeichnet.
QA
- Welche Tracking-Algorithmen werden von Trackers unterstützt?
Derzeit werden SORT und DeepSORT unterstützt, weitere Algorithmen wie ByteTrack sind für zukünftige Versionen geplant. - Wie kann ich die Spurstabilität verbessern?
Stellen Sie die Genauigkeit des Erkennungsmodells sicher, indem Sie den Konfidenzschwellenwert (z. B. 0,5) anpassen oder den Trackerwert erhöhen.track_buffer
um den ID-Wechsel zu reduzieren. - Unterstützt es Echtzeit-Videoverarbeitung?
Ja, Trackers unterstützt Live-Videoströme wie z. B. Kameraeingaben. Die Bilder müssen erfasst und Bild für Bild mit OpenCV verarbeitet werden. - Wie kann man mit Speicherüberlaufproblemen umgehen?
Setzen von UmgebungsvariablenVIDEO_SOURCE_BUFFER_SIZE=2
Begrenzen Sie den Bildpuffer oder verwenden Sie ein leichteres Modell wie YOLO11n.