Trackers: библиотека инструментов с открытым исходным кодом для отслеживания видеообъектов

Общее введение

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

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

 

Список функций

  • Поддерживается несколько алгоритмов отслеживания, включая SORT и DeepSORT, а в будущем планируется добавить еще несколько.
  • Совместимость с ведущими моделями обнаружения объектов, такими как YOLO, RT-DETR и RFDETR.
  • Обеспечивает аннотирование видеокадров с поддержкой отображения идентификаторов трасс и ограничительных рамок.
  • Модульная конструкция позволяет пользователю свободно комбинировать детекторы и трекеры.
  • Поддерживает обработку кадров из видеофайлов или видеопотоков в реальном времени.
  • Открытый и бесплатный исходный код, основанный на лицензии Apache 2.0, открытый и прозрачный код.

 

Использование помощи

Процесс установки

Чтобы использовать Trackers, вам нужно установить зависимости в ваше окружение Python. Ниже приведены подробные шаги по установке:

  1. Подготовка среды
    Убедитесь, что в вашей системе установлен Python 3.6 или более поздней версии. Рекомендуется использовать виртуальную среду, чтобы избежать конфликтов зависимостей:

    python -m venv venv
    source venv/bin/activate  # Windows 用户使用 venv\Scripts\activate
    
  2. Установка библиотеки Trackers
    Вы можете установить последнюю версию с GitHub:

    pip install git+https://github.com/roboflow/trackers.git
    

    Или установите выпущенную стабильную версию:

    pip install trackers
    
  3. Установка зависимых библиотек
    Зависимости трекеров supervision, иtorch и другие библиотеки. В зависимости от используемой модели обнаружения могут потребоваться дополнительные установки:

    • Для модели YOLO:
      pip install ultralytics
      
    • Для модели RT-DETR:
      pip install transformers
      
    • Обеспечьте установку opencv-python Для обработки видео:
      pip install opencv-python
      
  4. Проверка установки
    Выполните следующий код, чтобы проверить, успешно ли прошла установка:

    from trackers import SORTTracker
    print(SORTTracker)
    

Использование

Основная функция трекеров - обработка видеокадров с помощью алгоритмов обнаружения и отслеживания объектов. Ниже приводится подробная процедура использования SORTTracker в сочетании с моделью YOLO:

Пример: отслеживание видеообъектов с помощью YOLO и SORTTracker

  1. Подготовка видеофайла
    Убедитесь, что имеется входной видеофайл, например input.mp4. Поместите его в каталог проекта.
  2. Напишите код
    Ниже приведен полный пример кода для загрузки модели 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 Обработайте видео кадр за кадром и сохраните результат.
  3. работающий код
    Сохраните код в формате 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.

 

сценарий применения

  1. мониторинг трафика
    Трекеры можно использовать для анализа траекторий движения автомобилей и пешеходов на дороге. Например, в сочетании с функцией обнаружения автомобилей YOLO в городских дорожных камерах SORTTracker отслеживает путь каждого автомобиля и формирует статистику движения или записи о нарушениях.
  2. промышленная автоматизация
    На производственных линиях трекеры отслеживают движущиеся объекты, такие как продукты на конвейерных лентах. В сочетании с моделью инспекции для определения типов продукции трекеры регистрируют путь перемещения каждого продукта для контроля качества или управления запасами.
  3. анализ движения
    В спортивных видеороликах трекеры могут отслеживать движение игрока или мяча. Например, проанализировать траекторию бега игрока в футбольном матче и создать тепловые карты или статистику.
  4. контроль безопасности
    В системах безопасности трекеры могут отслеживать перемещение подозрительных объектов. Например, в камерах торговых центров обнаруживаются и отслеживаются конкретные люди, а их путь записывается для последующего анализа.

 

QA

  1. Какие алгоритмы отслеживания поддерживает Trackers?
    В настоящее время поддерживаются SORT и DeepSORT, а в будущих версиях планируется добавить такие алгоритмы, как ByteTrack.
  2. Как улучшить стабильность отслеживания?
    Убедитесь в точности модели обнаружения, отрегулировав порог доверия (например, 0,5) или увеличив track_buffer параметр для уменьшения переключения идентификаторов.
  3. Поддерживает ли он обработку видео в режиме реального времени?
    Да, Trackers поддерживает потоковое видео, например, с камеры. Кадры должны быть захвачены и обработаны кадр за кадром с помощью OpenCV.
  4. Как справиться с проблемами переполнения памяти?
    Установка переменных окружения VIDEO_SOURCE_BUFFER_SIZE=2 Ограничьте буфер кадров или используйте более легкую модель, например YOLO11n.
© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...