일반 소개
Trackers는 동영상에서 다중 객체 추적에 초점을 맞춘 오픈 소스 Python 도구 라이브러리입니다. 이 라이브러리는 SORT 및 DeepSORT와 같은 다양한 주요 추적 알고리즘을 통합하여 사용자가 유연한 비디오 분석을 위해 다양한 객체 감지 모델(예: YOLO, RT-DETR)을 결합할 수 있도록 합니다. 사용자는 교통 모니터링, 산업 자동화 및 기타 시나리오를 위해 간단한 코드로 비디오 프레임을 감지, 추적 및 주석을 달 수 있습니다.

기능 목록
- SORT 및 DeepSORT를 비롯한 여러 추적 알고리즘이 지원되며 향후 더 많은 알고리즘이 추가될 예정입니다.
- YOLO, RT-DETR, RFDETR과 같은 주요 물체 감지 모델과 호환됩니다.
- 트레이스 ID 및 바운딩 박스 표시를 지원하는 비디오 프레임 주석을 제공합니다.
- 모듈식 설계로 사용자가 감지기와 트래커를 자유롭게 조합할 수 있습니다.
- 비디오 파일 또는 라이브 비디오 스트림의 프레임 처리를 지원합니다.
- Apache 2.0 라이선스에 기반한 오픈 소스 및 무료, 개방적이고 투명한 코드입니다.
도움말 사용
설치 프로세스
트래커를 사용하려면 Python 환경에 종속 요소를 설치해야 합니다. 자세한 설치 단계는 다음과 같습니다:
- 환경 준비하기
시스템에 Python 3.6 이상이 설치되어 있는지 확인합니다. 종속성 충돌을 피하려면 가상 환경을 사용하는 것이 좋습니다:python -m venv venv source venv/bin/activate # Windows 用户使用 venv\Scripts\activate
- 트래커 라이브러리 설치하기
GitHub에서 최신 버전을 설치할 수 있습니다:pip install git+https://github.com/roboflow/trackers.git
또는 릴리스된 안정 버전을 설치하세요:
pip install trackers
- 종속 라이브러리 설치
트래커 종속성supervision
및torch
및 기타 라이브러리. 사용하는 탐지 모델에 따라 추가 설치가 필요할 수 있습니다:- 욜로 모델의 경우:
pip install ultralytics
- RT-DETR 모델의 경우:
pip install transformers
- 설치 확인
opencv-python
동영상 처리용:pip install opencv-python
- 욜로 모델의 경우:
- 설치 확인
다음 코드를 실행하여 설치가 성공했는지 확인합니다:from trackers import SORTTracker print(SORTTracker)
사용법
트래커의 핵심 기능은 객체 감지 및 추적 알고리즘을 통해 비디오 프레임을 처리하는 것입니다. 다음은 YOLO 모델과 함께 SORTTracker를 사용하는 자세한 절차입니다:
예: YOLO 및 SORTTracker를 사용한 비디오 개체 추적
- 동영상 파일 준비하기
다음과 같은 입력 비디오 파일이 있는지 확인합니다.input.mp4
. 프로젝트 디렉터리에 배치합니다. - 코드 작성
다음은 YOLO 모델을 로드하고, 동영상에서 개체를 추적하고, 출력 동영상에 추적 ID를 레이블로 지정하는 전체 예제 코드입니다: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)
추적 상태를 업데이트하고 추적 ID를 할당합니다.annotator.annotate
프레임에 경계 상자와 ID를 그립니다.sv.process_video
동영상을 프레임 단위로 처리하고 결과를 저장합니다.
- 실행 중인 코드
코드를 다음 이름으로 저장합니다.track.py
를 클릭한 다음 실행합니다:python track.py
비디오 출력
output.mp4
에는 추적 ID가 있는 주석이 포함됩니다.
주요 기능 작동
- 스위칭 감지 모델
트래커는 다양한 탐지 모델을 지원합니다. 예를 들어 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을 권장 옵션으로 선택합니다.
- 테스트 중 구성 요소 조정추적 ID가 자주 전환되는 경우, 탐지 모델의 신뢰도 임계값 또는 추적기의 매개변수를 조정해 보세요.
track_buffer
.
애플리케이션 시나리오
- 트래픽 모니터링
트래커는 도로에서 차량과 보행자의 궤적을 분석하는 데 사용할 수 있습니다. 예를 들어, 도시 교통 카메라에서 차량의 YOLO 감지와 결합하여 SORTTracker는 각 차량의 경로를 추적하고 교통 통계 또는 위반 기록을 생성합니다. - 산업 자동화
생산 라인에서 트래커는 컨베이어 벨트 위의 제품 등 움직이는 물체를 추적합니다. 트래커는 제품 유형을 식별하는 검사 모델과 결합하여 품질 관리 또는 재고 관리를 위해 각 제품의 이동 경로를 기록합니다. - 모션 분석
스포츠 동영상에서 트래커는 선수나 공의 움직임을 추적할 수 있습니다. 예를 들어, 축구 경기에서 선수의 달리기 경로를 분석하여 히트 맵이나 통계를 생성할 수 있습니다. - 안전 모니터링
보안 시스템에서 트래커는 의심스러운 대상의 움직임을 추적할 수 있습니다. 예를 들어 쇼핑몰 카메라에서 특정 사람을 감지 및 추적하고 추후 분석을 위해 경로를 기록할 수 있습니다.
QA
- 트래커는 어떤 추적 알고리즘을 지원하나요?
현재 SORT 및 DeepSORT가 지원되며, 향후 출시될 버전에서는 ByteTrack과 같은 더 많은 알고리즘이 지원될 예정입니다. - 추적 안정성을 개선하려면 어떻게 해야 하나요?
신뢰도 임계값(예: 0.5)을 조정하거나 트래커의track_buffer
매개변수를 사용하여 ID 전환을 줄일 수 있습니다. - 실시간 동영상 처리를 지원하나요?
예, 트래커는 카메라 입력과 같은 실시간 동영상 스트림을 지원합니다. OpenCV를 사용하여 프레임을 프레임 단위로 캡처하고 처리해야 합니다. - 메모리 오버플로 문제는 어떻게 해결하나요?
환경 변수 설정VIDEO_SOURCE_BUFFER_SIZE=2
프레임 버퍼를 제한하거나 YOLO11n과 같은 더 가벼운 모델을 사용하세요.
© 저작권 정책
이 글은 저작권이 있으며 무단으로 복제해서는 안 됩니다.
관련 문서
댓글 없음...