Trackers: библиотека инструментов с открытым исходным кодом для отслеживания видеообъектов
Общее введение
Trackers - это инструментальная библиотека Python с открытым исходным кодом, ориентированная на отслеживание нескольких объектов в видео. В нее интегрированы различные ведущие алгоритмы отслеживания, такие как SORT и DeepSORT, что позволяет пользователям комбинировать различные модели обнаружения объектов (например, YOLO, RT-DETR) для гибкого анализа видео. Пользователи могут обнаруживать, отслеживать и аннотировать видеокадры с помощью простого кода для мониторинга дорожного движения, промышленной автоматизации и других сценариев.

Список функций
- Поддерживается несколько алгоритмов отслеживания, включая SORT и DeepSORT, а в будущем планируется добавить еще несколько.
- Совместимость с ведущими моделями обнаружения объектов, такими как YOLO, RT-DETR и RFDETR.
- Обеспечивает аннотирование видеокадров с поддержкой отображения идентификаторов трасс и ограничительных рамок.
- Модульная конструкция позволяет пользователю свободно комбинировать детекторы и трекеры.
- Поддерживает обработку кадров из видеофайлов или видеопотоков в реальном времени.
- Открытый и бесплатный исходный код, основанный на лицензии Apache 2.0, открытый и прозрачный код.
Использование помощи
Процесс установки
Чтобы использовать Trackers, вам нужно установить зависимости в ваше окружение Python. Ниже приведены подробные шаги по установке:
- Подготовка среды
Убедитесь, что в вашей системе установлен Python 3.6 или более поздней версии. Рекомендуется использовать виртуальную среду, чтобы избежать конфликтов зависимостей:python -m venv venv source venv/bin/activate # Windows 用户使用 venv\Scripts\activate
- Установка библиотеки Trackers
Вы можете установить последнюю версию с GitHub:pip install git+https://github.com/roboflow/trackers.git
Или установите выпущенную стабильную версию:
pip install trackers
- Установка зависимых библиотек
Зависимости трекеровsupervision
, иtorch
и другие библиотеки. В зависимости от используемой модели обнаружения могут потребоваться дополнительные установки:- Для модели YOLO:
pip install ultralytics
- Для модели RT-DETR:
pip install transformers
- Обеспечьте установку
opencv-python
Для обработки видео:pip install opencv-python
- Для модели YOLO:
- Проверка установки
Выполните следующий код, чтобы проверить, успешно ли прошла установка:from trackers import SORTTracker print(SORTTracker)
Использование
Основная функция трекеров - обработка видеокадров с помощью алгоритмов обнаружения и отслеживания объектов. Ниже приводится подробная процедура использования SORTTracker в сочетании с моделью YOLO:
Пример: отслеживание видеообъектов с помощью YOLO и SORTTracker
- Подготовка видеофайла
Убедитесь, что имеется входной видеофайл, напримерinput.mp4
. Поместите его в каталог проекта. - Напишите код
Ниже приведен полный пример кода для загрузки модели YOLO, отслеживания объектов на видео и маркировки выходного видео идентификатором отслеживания: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 )
Описание кода::
YOLO("yolo11m.pt")
Загрузите предварительно обученную модель YOLO11.SORTTracker()
Инициализируйте трекер SORT.sv.Detections.from_ultralytics
Преобразует результаты инспекции YOLO в формат надзора.tracker.update(detections)
Обновляет статус трассировки и присваивает идентификатор трассировки.annotator.annotate
Рисует ограничительную рамку и идентификатор на рамке.sv.process_video
Обработайте видео кадр за кадром и сохраните результат.
- работающий код
Сохраните код в форматеtrack.py
а затем запустить:python track.py
Выходное видео
output.mp4
будут содержать аннотации с идентификаторами отслеживания.
Функциональное управление
- Модели обнаружения переключения
Trackers поддерживает различные модели обнаружения. Например, используется модель RT-DETR: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)
- Индивидуальная маркировка
Стили аннотаций можно настроить, например, изменить положение меток или добавить ограничительную рамку: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)
- Обработка видеопотоков в реальном времени
Если вам нужно обрабатывать ввод данных с камеры, вы можете изменить этот код: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()
предостережение
- оптимизация производительности: Обработка длинных видеороликов может привести к большим затратам памяти. Вы можете ограничить размер буфера, задав переменные окружения:
export VIDEO_SOURCE_BUFFER_SIZE=2
- Выбор модели: Чтобы убедиться, что модель обнаружения совместима с трекером, рекомендуется использовать YOLO и RT-DETR.
- регулировка компонентов во время тестирования: Если идентификатор отслеживания часто переключается, попробуйте изменить порог доверия модели обнаружения или параметры трекера, например.
track_buffer
.
сценарий применения
- мониторинг трафика
Трекеры можно использовать для анализа траекторий движения автомобилей и пешеходов на дороге. Например, в сочетании с функцией обнаружения автомобилей YOLO в городских дорожных камерах SORTTracker отслеживает путь каждого автомобиля и формирует статистику движения или записи о нарушениях. - промышленная автоматизация
На производственных линиях трекеры отслеживают движущиеся объекты, такие как продукты на конвейерных лентах. В сочетании с моделью инспекции для определения типов продукции трекеры регистрируют путь перемещения каждого продукта для контроля качества или управления запасами. - анализ движения
В спортивных видеороликах трекеры могут отслеживать движение игрока или мяча. Например, проанализировать траекторию бега игрока в футбольном матче и создать тепловые карты или статистику. - контроль безопасности
В системах безопасности трекеры могут отслеживать перемещение подозрительных объектов. Например, в камерах торговых центров обнаруживаются и отслеживаются конкретные люди, а их путь записывается для последующего анализа.
QA
- Какие алгоритмы отслеживания поддерживает Trackers?
В настоящее время поддерживаются SORT и DeepSORT, а в будущих версиях планируется добавить такие алгоритмы, как ByteTrack. - Как улучшить стабильность отслеживания?
Убедитесь в точности модели обнаружения, отрегулировав порог доверия (например, 0,5) или увеличивtrack_buffer
параметр для уменьшения переключения идентификаторов. - Поддерживает ли он обработку видео в режиме реального времени?
Да, Trackers поддерживает потоковое видео, например, с камеры. Кадры должны быть захвачены и обработаны кадр за кадром с помощью OpenCV. - Как справиться с проблемами переполнения памяти?
Установка переменных окруженияVIDEO_SOURCE_BUFFER_SIZE=2
Ограничьте буфер кадров или используйте более легкую модель, например YOLO11n.
© заявление об авторских правах
Авторское право на статью Круг обмена ИИ Пожалуйста, не воспроизводите без разрешения.
Похожие статьи
Нет комментариев...