Introdução geral
Trackers é uma biblioteca de ferramentas Python de código aberto voltada para o rastreamento de vários objetos em vídeo. Ela integra uma variedade de algoritmos de rastreamento líderes, como SORT e DeepSORT, permitindo que os usuários combinem diferentes modelos de detecção de objetos (por exemplo, YOLO, RT-DETR) para uma análise de vídeo flexível. Os usuários podem detectar, rastrear e anotar quadros de vídeo com um código simples para monitoramento de tráfego, automação industrial e outros cenários.
Lista de funções
- Há suporte para vários algoritmos de rastreamento, incluindo SORT e DeepSORT, com planos de adicionar mais no futuro.
- Compatível com os principais modelos de detecção de objetos, como YOLO, RT-DETR e RFDETR.
- Oferece anotação de quadros de vídeo com suporte para exibição de IDs de rastreamento e caixas delimitadoras.
- O design modular permite que o usuário combine livremente detectores e rastreadores.
- Suporta o processamento de quadros de arquivos de vídeo ou transmissões de vídeo ao vivo.
- Código aberto e gratuito, baseado na licença Apache 2.0, código aberto e transparente.
Usando a Ajuda
Processo de instalação
Para usar o Trackers, você precisa instalar as dependências em seu ambiente Python. Aqui estão as etapas detalhadas de instalação:
- Preparação do ambiente
Certifique-se de que o Python 3.6 ou posterior esteja instalado em seu sistema. Recomenda-se um ambiente virtual para evitar conflitos de dependência:python -m venv venv source venv/bin/activate # Windows 用户使用 venv\Scripts\activate
- Instalação da biblioteca de rastreadores
Você pode instalar a versão mais recente do GitHub:pip install git+https://github.com/roboflow/trackers.git
Ou instale a versão estável lançada:
pip install trackers
- Instalação de bibliotecas dependentes
Dependências de rastreadoressupervision
etorch
e outras bibliotecas. Dependendo do modelo de detecção usado, podem ser necessárias instalações adicionais:- Para o modelo YOLO:
pip install ultralytics
- Para o modelo RT-DETR:
pip install transformers
- Garantir a instalação
opencv-python
Para processamento de vídeo:pip install opencv-python
- Para o modelo YOLO:
- Verificar a instalação
Execute o código a seguir para verificar se a instalação foi bem-sucedida:from trackers import SORTTracker print(SORTTracker)
Uso
A função principal dos rastreadores é processar quadros de vídeo por meio de algoritmos de detecção e rastreamento de objetos. A seguir, um procedimento detalhado para usar o SORTTracker em conjunto com o modelo YOLO:
Exemplo: Rastreamento de objetos de vídeo com YOLO e SORTTracker
- Preparando o arquivo de vídeo
Certifique-se de que haja um arquivo de vídeo de entrada, por exemploinput.mp4
. Coloque-o no diretório do projeto. - Escrever código
Abaixo está um exemplo completo de código para carregar um modelo YOLO, rastrear objetos no vídeo e rotular o vídeo de saída com o ID de rastreamento: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 Descrição::
YOLO("yolo11m.pt")
Carregue o modelo YOLO11 pré-treinado.SORTTracker()
Inicialize o rastreador SORT.sv.Detections.from_ultralytics
Converte os resultados da inspeção YOLO para o formato de supervisão.tracker.update(detections)
Atualiza o status do rastreamento e atribui uma ID de rastreamento.annotator.annotate
Desenha a caixa delimitadora e o ID no quadro.sv.process_video
Processe o vídeo quadro a quadro e salve o resultado.
- código de execução
Salve o código comotrack.py
e depois executar:python track.py
Saída de vídeo
output.mp4
conterá anotações com IDs de rastreamento.
Operação da função em destaque
- Modelos de detecção de comutação
Os rastreadores são compatíveis com uma variedade de modelos de detecção. Por exemplo, o modelo RT-DETR é usado: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)
- Etiquetagem personalizada
Os estilos de anotação podem ser ajustados, por exemplo, alterando a posição dos rótulos ou adicionando uma caixa delimitadora: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)
- Processamento de fluxos de vídeo ao vivo
Se for necessário lidar com a entrada da câmera, é possível modificar o 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()
advertência
- otimização do desempenhoProcessamento de vídeos longos pode resultar em alto uso de memória. Você pode limitar o tamanho do buffer definindo variáveis de ambiente:
export VIDEO_SOURCE_BUFFER_SIZE=2
- Seleção de modelosPara garantir que o modelo de detecção seja compatível com o rastreador, YOLO e RT-DETR são as opções recomendadas.
- ajustar os componentes durante o testeSe a ID de rastreamento mudar com frequência, tente ajustar o limite de confiança do modelo de detecção ou os parâmetros do rastreador, por exemplo.
track_buffer
.
cenário do aplicativo
- monitoramento de tráfego
Os rastreadores podem ser usados para analisar as trajetórias de veículos e pedestres na estrada. Por exemplo, em combinação com a detecção YOLO de veículos em câmeras de tráfego urbano, o SORTTracker rastreia o caminho de cada veículo e gera estatísticas de tráfego ou registros de violação. - automação industrial
Nas linhas de produção, os Trackers rastreiam objetos em movimento, como produtos em esteiras transportadoras. Combinados com um modelo de inspeção para identificar os tipos de produtos, os Trackers registram o caminho do movimento de cada produto para controle de qualidade ou gerenciamento de estoque. - análise de movimento
Em vídeos de esportes, os rastreadores podem acompanhar o movimento de um jogador ou de uma bola. Por exemplo, analisar a trajetória de corrida de um jogador em uma partida de futebol e gerar mapas de calor ou estatísticas. - monitoramento de segurança
Nos sistemas de segurança, os rastreadores podem acompanhar o movimento de alvos suspeitos. Por exemplo, em câmeras de shopping centers, pessoas específicas são detectadas e rastreadas, e seus caminhos são registrados para análise posterior.
QA
- Quais algoritmos de rastreamento são compatíveis com o Trackers?
Atualmente, há suporte para SORT e DeepSORT, com mais algoritmos, como o ByteTrack, planejados para versões futuras. - Como posso melhorar a estabilidade do rastreamento?
Assegure a precisão do modelo de detecção ajustando o limite de confiança (por exemplo, 0,5) ou aumentando a taxa de rastreamento do rastreador.track_buffer
para reduzir a troca de IDs. - Ele oferece suporte ao processamento de vídeo em tempo real?
Sim, o Trackers é compatível com fluxos de vídeo ao vivo, como a entrada da câmera. Os quadros precisam ser capturados e processados quadro a quadro usando o OpenCV. - Como lidar com problemas de estouro de memória?
Definição de variáveis de ambienteVIDEO_SOURCE_BUFFER_SIZE=2
Limite o buffer de quadros ou use um modelo mais leve, como o YOLO11n.