Trackers: biblioteca de herramientas de código abierto para el seguimiento de objetos en vídeo

Introducción general

Trackers es una biblioteca de herramientas Python de código abierto centrada en el seguimiento multiobjeto en vídeo. Integra una variedad de algoritmos de seguimiento líderes como SORT y DeepSORT, permitiendo a los usuarios combinar diferentes modelos de detección de objetos (por ejemplo, YOLO, RT-DETR) para un análisis de vídeo flexible. Los usuarios pueden detectar, rastrear y anotar fotogramas de vídeo con un código sencillo para la supervisión del tráfico, la automatización industrial y otros escenarios.

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

 

Lista de funciones

  • Se admiten varios algoritmos de seguimiento, como SORT y DeepSORT, y está previsto añadir más en el futuro.
  • Compatible con los principales modelos de detección de objetos, como YOLO, RT-DETR y RFDETR.
  • Proporciona anotación de fotogramas de vídeo con soporte para mostrar ID de traza y cuadros delimitadores.
  • El diseño modular permite al usuario combinar libremente detectores y rastreadores.
  • Admite el procesamiento de fotogramas de archivos de vídeo o secuencias de vídeo en directo.
  • Código abierto y gratuito, basado en la licencia Apache 2.0, código abierto y transparente.

 

Utilizar la ayuda

Proceso de instalación

Para utilizar Trackers, necesita instalar las dependencias en su entorno Python. Aquí están los pasos detallados de instalación:

  1. Preparar el entorno
    Asegúrese de que Python 3.6 o posterior está instalado en su sistema. Se recomienda un entorno virtual para evitar conflictos de dependencias:

    python -m venv venv
    source venv/bin/activate  # Windows 用户使用 venv\Scripts\activate
    
  2. Instalación de la biblioteca de rastreadores
    Puedes instalar la última versión desde GitHub:

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

    O instale la versión estable publicada:

    pip install trackers
    
  3. Instalación de bibliotecas dependientes
    Dependencias de los seguidores supervisionytorch y otras bibliotecas. Dependiendo del modelo de detección utilizado, pueden ser necesarias instalaciones adicionales:

    • Para el modelo YOLO:
      pip install ultralytics
      
    • Para el modelo RT-DETR:
      pip install transformers
      
    • Garantizar la instalación opencv-python Para el procesamiento de vídeo:
      pip install opencv-python
      
  4. Verificar la instalación
    Ejecute el siguiente código para comprobar si la instalación se ha realizado correctamente:

    from trackers import SORTTracker
    print(SORTTracker)
    

Utilización

La función principal de los Trackers es procesar fotogramas de vídeo mediante algoritmos de detección y seguimiento de objetos. A continuación se detalla el procedimiento para utilizar SORTTracker junto con el modelo YOLO:

Ejemplo: Seguimiento de objetos en vídeo con YOLO y SORTTracker

  1. Preparación del archivo de vídeo
    Asegúrese de que existe un archivo de vídeo de entrada, por ejemplo input.mp4. Colóquelo en el directorio del proyecto.
  2. Escribir código
    A continuación se muestra un código de ejemplo completo para cargar un modelo YOLO, rastrear objetos en el vídeo y etiquetar el vídeo de salida con el ID de rastreo:

    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
    )
    

    Código Descripción::

    • YOLO("yolo11m.pt") Carga el modelo YOLO11 preentrenado.
    • SORTTracker() Inicializar el rastreador SORT.
    • sv.Detections.from_ultralytics Convierte los resultados de la inspección YOLO al formato de Supervisión.
    • tracker.update(detections) Actualiza el estado de la traza y asigna un ID de traza.
    • annotator.annotate Dibuja el cuadro delimitador y el ID en el marco.
    • sv.process_video Procesa el vídeo fotograma a fotograma y guarda el resultado.
  3. código en ejecución
    Guarde el código como track.pyy luego corre:

    python track.py
    

    Salida de vídeo output.mp4 contendrá anotaciones con identificadores de seguimiento.

Función destacada Operación

  • Conmutación de modelos de detección
    Los rastreadores admiten varios modelos de detección. Por ejemplo, se utiliza el modelo 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)
    
  • Etiquetado personalizado
    Los estilos de anotación pueden ajustarse, por ejemplo, cambiando la posición de las etiquetas o añadiendo un cuadro delimitador:

    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)
    
  • Tratamiento de secuencias de vídeo en directo
    Si necesitas manejar la entrada de la cámara, puedes modificar el código:

    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()
    

advertencia

  • optimización del rendimiento: El procesamiento de vídeos largos puede dar lugar a un uso elevado de memoria. Puedes limitar el tamaño del búfer configurando variables de entorno:
    export VIDEO_SOURCE_BUFFER_SIZE=2
    
  • Selección de modelos: Para garantizar que el modelo de detección es compatible con el rastreador, YOLO y RT-DETR son las opciones recomendadas.
  • ajustar los componentes durante las pruebasSi el ID de rastreo cambia con frecuencia, pruebe a ajustar el umbral de confianza del modelo de detección o los parámetros del rastreador, por ejemplo. track_buffer.

 

escenario de aplicación

  1. control del tráfico
    Los rastreadores pueden utilizarse para analizar las trayectorias de vehículos y peatones en la carretera. Por ejemplo, en combinación con la detección YOLO de vehículos en cámaras de tráfico urbano, SORTTracker rastrea la trayectoria de cada vehículo y genera estadísticas de tráfico o registros de infracciones.
  2. automatización industrial
    En las líneas de producción, los Trackers rastrean objetos en movimiento, como productos en cintas transportadoras. Combinados con un modelo de inspección para identificar los tipos de productos, los Trackers registran la trayectoria de movimiento de cada producto para el control de calidad o la gestión de inventarios.
  3. análisis de movimiento
    En los vídeos deportivos, los Trackers pueden seguir el movimiento de un jugador o de un balón. Por ejemplo, analizar la trayectoria de carrera de un jugador en un partido de fútbol y generar mapas de calor o estadísticas.
  4. control de seguridad
    En los sistemas de seguridad, los rastreadores pueden seguir el movimiento de objetivos sospechosos. Por ejemplo, en las cámaras de los centros comerciales, se detecta y rastrea a personas concretas, y sus trayectorias se graban para su posterior análisis.

 

CONTROL DE CALIDAD

  1. ¿Qué algoritmos de seguimiento admite Trackers?
    SORT y DeepSORT están soportados actualmente, con más algoritmos como ByteTrack previstos para futuras versiones.
  2. ¿Cómo puedo mejorar la estabilidad del seguimiento?
    Garantizar la precisión del modelo de detección ajustando el umbral de confianza (por ejemplo, 0,5) o aumentando la track_buffer para reducir el cambio de ID.
  3. ¿Es compatible con el procesamiento de vídeo en tiempo real?
    Sí, Trackers soporta flujos de vídeo en directo como la entrada de cámara. Los fotogramas deben capturarse y procesarse fotograma a fotograma con OpenCV.
  4. ¿Cómo solucionar los problemas de desbordamiento de memoria?
    Configuración de variables de entorno VIDEO_SOURCE_BUFFER_SIZE=2 Limita el búfer de fotogramas o utiliza un modelo más ligero como YOLO11n.
© declaración de copyright

Artículos relacionados

Sin comentarios

Debe iniciar sesión para participar en los comentarios.
Acceder ahora
ninguno
Sin comentarios...