RawMp4Stream이 이미 seek_range 지원 → CLI에 --start-frame/--end-frame 추가만으로 49프레임 처리현재 파이프라인은 ego/exo 전체 영상에 대해 ViPE depth를 추출. 평균 191.5s 영상 × 7238 task라서 8 GPU × 1 proc 기준 약 14일 소요.
실제로는 task 시작 시점의 49프레임만 필요. takes.json에 task_start_sec이 이미 있으므로, 그 시점부터 49프레임만 처리하면 compute가 급감.
vipe/streams/raw_mp4_stream.py의 RawMp4Stream이 이미 seek_range: range | None을 지원. CLI에서 노출 안 하고 있었을 뿐 — ffmpeg pre-trim 불필요.| 파일 | 변경 |
|---|---|
vipe/cli/main.py | --start-frame/--end-frame click 옵션 추가, RawMp4Stream(seek_range=...) 호출 |
scripts/egoexo4d/config.py | CLIP_LEN = 49 추가 |
scripts/egoexo4d/parse_dataset.py | cv2로 fps/frame_count probe, start_frame/end_frame 계산 후 manifest에 저장 |
scripts/egoexo4d/run_vipe_batch.py | run_vipe_single에 frame range 전달 |
scripts/egoexo4d/run_vipe.sh | PROCESSES_PER_GPU=2, sbm override |
| 설정 | 시간 | 비고 |
|---|---|---|
| 현재 (전체 영상) | ~14일 | 8 GPU × 1 proc |
| 49프레임 × 1 proc/GPU | ~10.4h | model_load(30s) + 49×0.228s = 41.2s/task |
| 49프레임 × 2 proc/GPU | ~6.6h | 로드 오버헤드 겹침 이득 |
| 49프레임 × 4 proc/GPU | ~4.8h | 추정, 실측 필요 |
기존 인프라(RawMp4Stream.seek_range)를 활용한 최소 변경으로 14일 작업을 반나절로 단축. CLI 옵션 2개 추가 + manifest에 frame range 저장이 핵심.
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 폴백.