tracking으로, 팀구분+위치 해결

FSA·2024년 10월 22일

keypoint_detection

목록 보기
16/19

1. tracker.update_with_detections

tracker = sv.ByteTrack(minimum_consecutive_frames=3)
detections = tracker.update_with_detections(detections)

역할 및 동작 분석

  • ByteTrack객체 감지 결과(detections)를 입력받아, 동일 객체를 여러 프레임에 걸쳐 추적
  • tracker.update_with_detections()
    • 현재 프레임의 객체 감지 결과에 추적 ID를 부여하고,
    • 프레임 간 일관성을 유지하기 위해 객체의 상태를 관리
  • 이 과정에서 이동 경로 추적연속 프레임에서의 객체 관리가 이루어지며, 결과적으로 detections 변수에는 추적된 객체 정보가 포함됨

tracker.update_with_detections()의 역할

  1. 감지된 객체들(detections)을 추적 상태로 변환

    • 입력된 detections현재 프레임에서 감지된 객체들의 정보(바운딩 박스, 클래스 등)를 담고 있어
    • 추적기는 이 객체들이 이전 프레임에서 감지된 객체와 일치하는지 확인한 뒤, 고유 ID를 부여해 프레임 간 일관된 추적을 유지해.
  2. 객체의 생명 주기 관리

    • 추적된 객체는 프레임이 넘어가도 연속적으로 존재하는지 확인해.
    • 사라지거나 새로 등장한 객체도 처리하며, 일정 프레임 동안만 나타나는 객체는 무시할 수 있어(minimum_consecutive_frames=3 설정).
  3. 추적 ID 부여 및 업데이트

    • 각 객체에 고유 ID가 부여되어 동일 객체를 여러 프레임에서 식별할 수 있음.
    • 객체가 이동하더라도 같은 ID로 유지되어, 어느 객체가 어디로 이동했는지 알 수 있어.

변경 후 detections의 변화

tracker.update_with_detections(detections) 메서드를 통해 다음과 같은 정보가 detections 변수에 추가됩니다:

  1. 추적 ID (tracking_id) 추가

    • 각 객체에 대해 고유한 ID가 추가됨. 이를 통해 동일 객체를 여러 프레임에 걸쳐 추적할 수 있음.
  2. 객체 상태 갱신

    • 새롭게 감지된 객체기존에 있던 객체의 상태를 구분해 관리.
    • 이전에 감지되지 않았던 새로운 객체는 추가, 일정 프레임 동안 보이지 않은 객체는 삭제됨.
  3. 좌표 및 속성 갱신

    • 객체의 바운딩 박스 좌표가 최신 상태로 갱신됨.
    • 객체의 위치 이동이나 크기 변화에 따라 좌표 정보가 업데이트됨.

예제 결과

다음과 같은 추적 정보가 포함된 객체 리스트가 반환됩니다:

detections = [
    {"tracking_id": 1, "bbox": [100, 50, 200, 150], "class": "player"},
    {"tracking_id": 2, "bbox": [300, 80, 400, 180], "class": "referee"},
    ...
]

2. tracking id 활용

profile
모든 의사 결정 과정을 지나칠 정도로 모두 기록하고, 나중에 스스로 피드백 하는 것

0개의 댓글