Trackers: biblioteca de herramientas de código abierto para el seguimiento de objetos en vídeo
Últimos recursos sobre IAPublicado hace 3 meses Círculo de intercambio de inteligencia artificial 1.8K 00
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.

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:
- 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
- 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
- Instalación de bibliotecas dependientes
Dependencias de los seguidoressupervision
ytorch
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
- Para el modelo YOLO:
- 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
- Preparación del archivo de vídeo
Asegúrese de que existe un archivo de vídeo de entrada, por ejemploinput.mp4
. Colóquelo en el directorio del proyecto. - 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.
- código en ejecución
Guarde el código comotrack.py
y 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
- 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. - 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. - 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. - 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
- ¿Qué algoritmos de seguimiento admite Trackers?
SORT y DeepSORT están soportados actualmente, con más algoritmos como ByteTrack previstos para futuras versiones. - ¿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 latrack_buffer
para reducir el cambio de ID. - ¿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. - ¿Cómo solucionar los problemas de desbordamiento de memoria?
Configuración de variables de entornoVIDEO_SOURCE_BUFFER_SIZE=2
Limita el búfer de fotogramas o utiliza un modelo más ligero como YOLO11n.
© declaración de copyright
Derechos de autor del artículo Círculo de intercambio de inteligencia artificial Todos, por favor no reproducir sin permiso.
Artículos relacionados
Sin comentarios...