트래커: 동영상 개체 추적을 위한 오픈 소스 도구 라이브러리

최신 AI 리소스3 개월 전에 게시 됨 AI 공유 서클
1.5K 00

일반 소개

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

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

 

기능 목록

  • SORT 및 DeepSORT를 비롯한 여러 추적 알고리즘이 지원되며 향후 더 많은 알고리즘이 추가될 예정입니다.
  • YOLO, RT-DETR, RFDETR과 같은 주요 물체 감지 모델과 호환됩니다.
  • 트레이스 ID 및 바운딩 박스 표시를 지원하는 비디오 프레임 주석을 제공합니다.
  • 모듈식 설계로 사용자가 감지기와 트래커를 자유롭게 조합할 수 있습니다.
  • 비디오 파일 또는 라이브 비디오 스트림의 프레임 처리를 지원합니다.
  • Apache 2.0 라이선스에 기반한 오픈 소스 및 무료, 개방적이고 투명한 코드입니다.

 

도움말 사용

설치 프로세스

트래커를 사용하려면 Python 환경에 종속 요소를 설치해야 합니다. 자세한 설치 단계는 다음과 같습니다:

  1. 환경 준비하기
    시스템에 Python 3.6 이상이 설치되어 있는지 확인합니다. 종속성 충돌을 피하려면 가상 환경을 사용하는 것이 좋습니다:

    python -m venv venv
    source venv/bin/activate  # Windows 用户使用 venv\Scripts\activate
    
  2. 트래커 라이브러리 설치하기
    GitHub에서 최신 버전을 설치할 수 있습니다:

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

    또는 릴리스된 안정 버전을 설치하세요:

    pip install trackers
    
  3. 종속 라이브러리 설치
    트래커 종속성 supervisiontorch 및 기타 라이브러리. 사용하는 탐지 모델에 따라 추가 설치가 필요할 수 있습니다:

    • 욜로 모델의 경우:
      pip install ultralytics
      
    • RT-DETR 모델의 경우:
      pip install transformers
      
    • 설치 확인 opencv-python 동영상 처리용:
      pip install opencv-python
      
  4. 설치 확인
    다음 코드를 실행하여 설치가 성공했는지 확인합니다:

    from trackers import SORTTracker
    print(SORTTracker)
    

사용법

트래커의 핵심 기능은 객체 감지 및 추적 알고리즘을 통해 비디오 프레임을 처리하는 것입니다. 다음은 YOLO 모델과 함께 SORTTracker를 사용하는 자세한 절차입니다:

예: YOLO 및 SORTTracker를 사용한 비디오 개체 추적

  1. 동영상 파일 준비하기
    다음과 같은 입력 비디오 파일이 있는지 확인합니다. input.mp4. 프로젝트 디렉터리에 배치합니다.
  2. 코드 작성
    다음은 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 동영상을 프레임 단위로 처리하고 결과를 저장합니다.
  3. 실행 중인 코드
    코드를 다음 이름으로 저장합니다. 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.

 

애플리케이션 시나리오

  1. 트래픽 모니터링
    트래커는 도로에서 차량과 보행자의 궤적을 분석하는 데 사용할 수 있습니다. 예를 들어, 도시 교통 카메라에서 차량의 YOLO 감지와 결합하여 SORTTracker는 각 차량의 경로를 추적하고 교통 통계 또는 위반 기록을 생성합니다.
  2. 산업 자동화
    생산 라인에서 트래커는 컨베이어 벨트 위의 제품 등 움직이는 물체를 추적합니다. 트래커는 제품 유형을 식별하는 검사 모델과 결합하여 품질 관리 또는 재고 관리를 위해 각 제품의 이동 경로를 기록합니다.
  3. 모션 분석
    스포츠 동영상에서 트래커는 선수나 공의 움직임을 추적할 수 있습니다. 예를 들어, 축구 경기에서 선수의 달리기 경로를 분석하여 히트 맵이나 통계를 생성할 수 있습니다.
  4. 안전 모니터링
    보안 시스템에서 트래커는 의심스러운 대상의 움직임을 추적할 수 있습니다. 예를 들어 쇼핑몰 카메라에서 특정 사람을 감지 및 추적하고 추후 분석을 위해 경로를 기록할 수 있습니다.

 

QA

  1. 트래커는 어떤 추적 알고리즘을 지원하나요?
    현재 SORT 및 DeepSORT가 지원되며, 향후 출시될 버전에서는 ByteTrack과 같은 더 많은 알고리즘이 지원될 예정입니다.
  2. 추적 안정성을 개선하려면 어떻게 해야 하나요?
    신뢰도 임계값(예: 0.5)을 조정하거나 트래커의 track_buffer 매개변수를 사용하여 ID 전환을 줄일 수 있습니다.
  3. 실시간 동영상 처리를 지원하나요?
    예, 트래커는 카메라 입력과 같은 실시간 동영상 스트림을 지원합니다. OpenCV를 사용하여 프레임을 프레임 단위로 캡처하고 처리해야 합니다.
  4. 메모리 오버플로 문제는 어떻게 해결하나요?
    환경 변수 설정 VIDEO_SOURCE_BUFFER_SIZE=2 프레임 버퍼를 제한하거나 YOLO11n과 같은 더 가벼운 모델을 사용하세요.
© 저작권 정책
AiPPT

관련 문서

댓글 없음

댓글에 참여하려면 로그인해야 합니다!
지금 로그인
없음
댓글 없음...