Index
2026-04-11 — Plan

ViPE 49-Frame Clip Plan

EgoExo4D depth pipeline — 전체 영상 → task_start_sec 기준 49프레임 축소

TL;DR

30~70x
Speedup
49
Frames/Task
7238
Total Tasks
6
Files Modified

1 배경 / 목적

현재 파이프라인은 ego/exo 전체 영상에 대해 ViPE depth를 추출. 평균 191.5s 영상 × 7238 task라서 8 GPU × 1 proc 기준 약 14일 소요.

실제로는 task 시작 시점의 49프레임만 필요. takes.jsontask_start_sec이 이미 있으므로, 그 시점부터 49프레임만 처리하면 compute가 급감.

핵심 발견: vipe/streams/raw_mp4_stream.pyRawMp4Stream이 이미 seek_range: range | None을 지원. CLI에서 노출 안 하고 있었을 뿐 — ffmpeg pre-trim 불필요.

2 접근 방법

프레임 산식

start_frame = round(task_start_sec * fps) end_frame = start_frame + CLIP_LEN # CLIP_LEN = 49 # clamp: end_frame ≤ total_frames, start_frame ≥ 0 if end_frame > total_frames: end_frame = total_frames start_frame = max(0, end_frame - CLIP_LEN)

수정 파일

파일변경
vipe/cli/main.py--start-frame/--end-frame click 옵션 추가, RawMp4Stream(seek_range=...) 호출
scripts/egoexo4d/config.pyCLIP_LEN = 49 추가
scripts/egoexo4d/parse_dataset.pycv2로 fps/frame_count probe, start_frame/end_frame 계산 후 manifest에 저장
scripts/egoexo4d/run_vipe_batch.pyrun_vipe_single에 frame range 전달
scripts/egoexo4d/run_vipe.shPROCESSES_PER_GPU=2, sbm override

3 예상 효과

설정시간비고
현재 (전체 영상)~14일8 GPU × 1 proc
49프레임 × 1 proc/GPU~10.4hmodel_load(30s) + 49×0.228s = 41.2s/task
49프레임 × 2 proc/GPU~6.6h로드 오버헤드 겹침 이득
49프레임 × 4 proc/GPU~4.8h추정, 실측 필요
병목 이동: 영상 길이 → 모델 로드 오버헤드(30s, 전체의 73%). 더 줄이려면 persistent worker (로드 1회, 여러 클립 연속 처리).

4 Takeaway

의미

기존 인프라(RawMp4Stream.seek_range)를 활용한 최소 변경으로 14일 작업을 반나절로 단축. CLI 옵션 2개 추가 + manifest에 frame range 저장이 핵심.

5 Next Steps

실행 순서

1) CLI 패치 → 2) config.py CLIP_LEN → 3) parse_dataset.py fps probe → 4) manifest 재생성 → 5) run_vipe_batch.py 수정 → 6) 기존 take 폴더 삭제 → 7) sbatch

미결 사항

첫 실행 후 소량 take 결과물 육안 확인 필요 (start frame이 실제 task 시작과 정합하는지). task_start_sec이 None인 경우 0.0 폴백.