--pt_max_abs=100 필터 기준 적절성 검증max(|min|, |max|) 분포 분석 — 중앙값 10.98m, 대부분 실내/근거리 장면scripts/build_hcpt_manifest.py는 VGGT/ViPE reconstruction 실패 클립을 제거하기 위해 --pt_max_abs=100 필터를 사용한다. 이 값은 "max(|min|, |max|) > 100m이면 reconstruction 폭발로 간주"하는 경험적 기준이다.
본 분석의 목적은 이 기준이 실제 데이터 분포에 비추어 얼마나 적절한지를 수치로 확인하고, 필터 강도를 조정할 여지가 있는지 파악하는 것이다. 특히 본 학습 시작 직전에 데이터 구성을 최종 확정해야 하므로 시급성이 있다.
build_hcpt_manifest.py의 필터링 파이프라인을 재현하여 단계별 탈락 수를 집계했다. PT가 존재하는 3761개 클립의 norm_params.json에서 max(|min|, |max|) 값을 추출하여 분포 통계를 계산했다.
ptmap_prior_aligned/<clip_name>/norm_params.jsonmax(abs(pt_min), abs(pt_max)) > 100| 단계 | 탈락 수 | 남은 수 | 잔존 비율 |
|---|---|---|---|
| vipe 원본 | — | 3899 | 100% |
| RGB/prior 누락 | 0 | 3899 | 100% |
| PT 파일 누락 | 138 (3.5%) | 3761 | 96.5% |
| 100m 스케일 필터 | 101 (2.7%) | 3660 | 93.9% |
최종 split: train 3318 / val 342
| 통계량 | 값 |
|---|---|
| min | 1.74m |
| median (P50) | 10.98m |
| mean | 49.39m |
| max | 2600.63m |
| std | 239.58m |
| Percentile | 값 | 비고 |
|---|---|---|
| P1 | 2.67m | |
| P5 | 4.22m | |
| P25 | 7.45m | |
| P50 | 10.98m | 중앙값 — 대부분 실내/단거리 |
| P75 | 24.84m | |
| P90 | 39.27m | |
| P95 | 59.90m | 50m 컷 시 추가 탈락 시작 구간 |
| P99 | 1555.96m | 완전한 reconstruction 실패 |
| 구간 | 클립 수 | 비율 |
|---|---|---|
| 0–2m | 3 | 0.1% |
| 2–5m | 334 | 8.9% |
| 5–10m | 1364 | 36.3% (최다) |
| 10–20m | 903 | 24.0% |
| 20–50m | 907 | 24.1% |
| 50–100m | 149 | 4.0% |
| 100–200m | 19 | 0.5% |
| 200–500m | 13 | 0.3% |
| 500–1000m | 6 | 0.2% |
| 1000m+ | 63 | 1.7% (명백한 폭발) |
100m 필터 기준은 합리적이다. 분포의 중앙값(11m)과 P90(39m)을 보면 정상 클립은 대부분 50m 이내이고, 탈락하는 101개는 P99 기준 1556m에 달하는 명확한 이상치들이다.
PT 파일 누락(138개, 3.5%)과 100m 컷(101개, 2.7%)을 합쳐도 원본의 6.1%만 탈락하여 최종 3660 clip을 확정했다. 본 학습 데이터셋으로 충분하다.
P95 = 60m이므로, 50m로 내리면 추가로 약 149개(4.0%)가 탈락하여 3511 clip으로 줄어든다. 50–100m 구간 클립의 시각적 품질을 확인한 후 결정하는 것이 바람직하다. 지금은 100m로 진행.
sbm "bash scripts/finetune_egoexo4d_hcpt.sh" --gres=gpu:8 -c 192 --mem 1600GB --qos=core-extra -J hcpt_train