1) hailotracker가 하는 일 (요약)
- GStreamer 요소로서 파이프라인 중간에 붙여 쓰는 스트리밍용 MOT 트래커입니다. 파이프라인에 hailotracker class-id=… kalman-dist-thr=… iou-thr=… init-iou-thr=… keep-… 같은 속성을 걸어 사용합니다. 예제 파이프라인/이슈에도 동일한 옵션들이 노출되어 있습니다. (GitHub)
- 트래킹 결과는 **메타데이터(트랙 ID)**로 버퍼에 붙고, 파이썬/콜백에서 HAILO_UNIQUE_ID 또는 GStreamer GstMeta로 읽습니다(예: gst_buffer_get_hailotracker_meta). (Hailo Community)
- 클래스별 추적을 지원(class-id), 필요시 전 클래스 추적도 가능(-1). 샘플과 가이드에서 class-id 변경 방법이 안내되어 있습니다. (Hailo Community)
- 공개 정보와 노출된 파라미터 이름(예: kalman-dist-thr, iou-thr)을 종합하면, **칼만 필터 + IoU 기반 게이팅/매칭(= SORT 계열과 유사)**의 동작을 합니다. (GitHub)
구현 레벨 팁: 사용 중 성능 이슈가 있으면 gst-inspect-1.0 hailotracker로 지원 옵션/기본값을 바로 확인하세요. (gstreamer.freedesktop.org)
2) 동작/성능 관련 실무 관찰
- 실행 주체: hailotracker는 CPU에서 동작(Hailo‑8/8L 가속 아님)한다는 공식 커뮤니티 답변이 있습니다. SoC/보드에 따라 병목이 될 수 있습니다. (Hailo Community)
- 지연: 실사용에서 1‑프레임 지연이 관찰되었다는 사례 보고가 있습니다(낮은 FPS에서 체감). (Hailo Community)
- 전 클래스 추적: class-id=-1로 모든 클래스 추적 시 FPS 하락을 보고한 사례가 있습니다(복잡도 증가 때문). (Hailo Community)
3) SORT / BoT‑SORT와의 비교
항목 hailotracker SORT BoT‑SORT
| 형태 | GStreamer 요소(파이프라인 통합) | 참고 구현/라이브러리(알고리즘) | 참고 구현/라이브러리(알고리즘) |
| 핵심 아이디어 | 칼만 + IoU 게이팅/연결(파라미터에서 유추) | 칼만 + Hungarian + IoU, 매우 단순/고속 | 모션 + 외관(ReID) + CMC + 개선된 칼만 상태 |
| 외관 특징(ReID) | 문서화된 기본 내장 X (옵션/예제 기준) | 없음 | 있음(선택적/권장) |
| 카메라 모션 보정(CMC) | 문서화된 기본 내장 X | 없음 | 있음 |
| 정확도(혼잡/가림)** | 중간 (설정 의존) | 낮음(IDs 잦음) | 높음(IDs 감소) |
| 속도/리소스 | 낮은 진입비용, CPU 부하 | 매우 빠름 | ReID/CMC로 가중 |
| 파이프라인 통합 | 매우 쉬움(Gst 요소 1줄) | 별도 코드 통합 | 별도 코드 통합 |
- SORT: “Simple Online and Realtime Tracking” — 칼만 + Hungarian + IoU, 매우 빠르지만 가림/누락에 취약. (arXiv)
- BoT‑SORT: 모션(칼만) + 외관(ReID) + **카메라 모션 보정(CMC)**를 결합해 ID 스위치 대폭 감소. 정확도/견고성↑, 복잡도/리소스 요구↑. (arXiv)
- hailotracker: 파라미터/예제에 근거해 SORT 계열 단순형에 가깝고, Hailo 파이프라인과의 통합성이 강점. 외관/CMC 같은 고급 단서가 기본 제공된다고 문서화되어 있지 않음. (GitHub)
한 줄 결론: 통합·간편성/지연 최소화가 필요하면 hailotracker, 정확도·ID 안정성이 최우선이면 BoT‑SORT(또는 DeepSORT/ByteTrack 등)를 고려—대신 파이프라인 외부에서 별도 통합이 필요합니다. (arXiv)
4) hailotracker의 장단점
장점
- 통합 용이: hailonet → hailofilter → hailotracker → …로 바로 연결, 트랙 ID는 메타로 전달되어 콜백에서 즉시 활용. (Hailo Community)
- 튜닝 포인트 명확: kalman-dist-thr, iou-thr, init-iou-thr, keep-*-frames, class-id 등으로 동작이 직관적으로 조정 가능. (GitHub)
단점
- CPU 부하: 하드웨어 가속 미사용, 장치에 따라 병목 가능. (Hailo Community)
- 고난도 장면 취약: ReID/CMC 미사용 구성이라 가림·군중에서 ID 스위치가 늘 수 있음(알고리즘적 한계). (arXiv)
- 프레임 지연 사례: 1‑프레임 오프셋 보고. (Hailo Community)
5) 파라미터 튜닝 가이드(현장감 있는 값 범위)
기본값은 레포 코드/예제와 유사(예: kalman-dist-thr≈0.8, iou-thr≈0.9, init-iou-thr≈0.7, keep-tracked-frames≈15). 실제 최적값은 장면에 강하게 의존합니다. (GitHub)
- 가림/혼잡이 잦을 때(IDs 줄이기)
- keep-tracked-frames ↑(예: 20–30): 잠깐의 누락으로 트랙이 끊기는 것을 완화.
- iou-thr ↓(예: 0.6–0.8): 매칭을 조금 더 관대하게 해서 재연결 기회를 늘림.
- init-iou-thr ↓(예: 0.5–0.7): 새 트랙 생성 시 초기 허용 범위를 넓힘.
- 빠른 운동/카메라 흔들림(매칭 안정화)
- kalman-dist-thr ↑(예: 0.9–1.0): 예측과 측정의 거리 게이트를 느슨하게.
- 입력 해상도/프레임레이트 확보로 칼만 예측 안정화.
- 성능(속도) 우선
- 가능한 한 단일 클래스만 추적(class-id 지정). 전 클래스 추적은 FPS 하락 위험. (Hailo Community)
- CPU 여유 없으면 keep-*-frames를 낮추고, 파이프라인 큐/복사 최소화. (Hailo Community)
6) 언제 무엇을 쓸까?
- Hailo 파이프라인 안에서 빠르게 “ID만 필요”: hailotracker가 가장 단순·견고(추가 의존성 X). (Hailo Community)
- 군중/가림이 심하고 ID 지속성이 최우선: BoT‑SORT(또는 DeepSORT/ByteTrack) 계열을 붙이는 편이 일반적으로 정확도 유리(다만 외관 추출·CMC 등 추가 비용/통합 필요). (arXiv)
7) 참고 링크
- hailotracker 옵션/예제 파이프라인(옵션명 확인) – Hailo RPi5 예제 이슈 스니펫. (GitHub)
- 트랙 ID 읽기(파이썬/GstMeta) – 커뮤니티 스레드 모음. (Hailo Community)
- CPU 동작/성능 주의 – 커뮤니티 공식 답변. (Hailo Community)
- 1‑프레임 지연 사례 – 커뮤니티 리포트. (Hailo Community)
- SORT/BoT‑SORT 원 논문 – 알고리즘 특성 비교 근거. (arXiv)
'AI' 카테고리의 다른 글
| YOLO onnx 모델 hef로 변환하기. (+라즈베리 파이 적용) (3) | 2025.10.15 |
|---|---|
| deep-text-recognition-benchmark 모델 ONNX 변환 (0) | 2024.12.24 |
| [논문 리뷰] BPE Tokenizer (1) | 2024.02.04 |
| KLUE (0) | 2024.02.02 |
| [논문 리뷰]attention 매커니즘 (0) | 2024.01.31 |