YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
- iter12000-full-eval
- 0. Prerequisites
- 1. Download both repos
- 2. Extract both venvs and place everything at the exact absolute paths
- 3. Verify both venvs
- 4. Point checkpoints at the bundled cache (offline, no HF auth needed for gated SAM3/DA3/DINOv3)
- 5. Run the full pipeline
- 6. Sanity-check before uploading results
- 7. Upload results back
- 8. Tell the user it's done
- 0. Prerequisites
iter12000-full-eval
Read
BUGFIX_farm_suffix_gt_transform.mdat this repo's root FIRST (also uploaded 2026-09-08). It documents a real correctness bug incodes/gt_model_transforms.pythat silently skips GT resize/reprojection for any model with a real_TRANSFORMSentry (omniroam_perspective,panoworld_perspective,ours_panoonly_MASK_CAMFIX_FIXED_perspective,fantasy-world,HyDRA_concat,hy-worldplay) whenever FVD/pooled-FID is run over abuild_fvd_200clip_farm.pyfarm. The fixedgt_model_transforms.pyis already uploaded to this repo'scode/tree (overwriting the stale copy) -- if you downloadedcode/before this date, re-download that one file, or diff against the version in this repo now.Model_ours_iter12000_FINALitself was never affected (it's_t_noop), but re-check before trusting any OTHER model's farm-based FVD/FID number you compute with this package.
Goal: run the full benchmark pipeline (same as Model_ours_iter11000_FINAL)
on Model_ours_iter12000_FINAL β point-prompt metrics (FID/FVD/camera_da3/
3d_adherence/vbench/outer_view/object_consistency/oov_direction), FVD's
genuine 200-clip re-run, bbox-prompt tracking + re-measurement, bbox+edgefix,
then the final 200-clip filter/aggregate β then hand the results back.
This repo is private and (almost) fully self-contained. The one thing it
deliberately does not duplicate is the GPU environment (venv) and the
SAM3 + DA3 checkpoints, since those are identical to and already sitting in
kimhosoo/multipano-13clip-fillin (a sibling private repo from an
earlier task) β reuse them from there rather than re-uploading ~16GB again.
0. Prerequisites
- NVIDIA GPU, CUDA available.
- ~90GB free disk (model output 13G, GT 4.7G, sam3-env 9.9G, vbench-env 5.9G, SAM3+DA3 checkpoints ~16.5G reused from the other repo, CLIP+DINOv3 1.5G, gt_mask_cache 71M, plus room to work).
HF_TOKENfrom the user (never pasted in chat β have them export it in their own shell, or point you at a file you cansourcewithout printing).- If any
hf upload/hf downloadcall hangs or times out, retry withHF_HUB_DISABLE_XET=1prefixed β every upload in both repos needed this.
1. Download both repos
export HF_TOKEN=...
mkdir -p ~/iter12000_eval
# this repo: code, GT (trimmed), model output, gt_mask_cache, CLIP+DINOv3, vbench-env.tar
HF_HUB_DISABLE_XET=1 hf download kimhosoo/iter12000-full-eval --repo-type model --local-dir ~/iter12000_eval
# sibling repo: reuse its sam3-env.tar + SAM3/DA3 checkpoints (identical environment, no need to rebuild)
HF_HUB_DISABLE_XET=1 hf download kimhosoo/multipano-13clip-fillin --repo-type model \
--include "environment/sam3-env.tar" \
--include "checkpoints/hf_cache/hub/models--facebook--sam3/*" \
--include "checkpoints/hf_cache/hub/models--depth-anything--DA3NESTED-GIANT-LARGE-1.1/*" \
--local-dir ~/iter12000_eval
After both downloads, ~/iter12000_eval/ has:
code/NHNHOME/hyunwook/khs/codes/... <- every eval script + its deps + sam3 source
data/NHNHOME/hyunwook/khs/BENCH_OUTPUT/Model_ours_iter12000_FINAL/... <- the model output to evaluate (230 clips)
data/NHNHOME/hyunwook/khs/JointGen-backup/BENCHMARK/FINAL/{real,synth}/perspective/**/*.gt.mp4
data/NHNHOME/hyunwook/khs/JointGen-backup/BENCHMARK/FINAL/{real,synth}/perspective/**/caption_selected/*.gt.meta.json
data/NHNHOME/hyunwook/khs/codes/metric/gt_mask_cache/... <- pre-computed GT dynamic-object masks (saves re-running SAM3 on GT)
checkpoints/hf_cache/hub/models--openai--clip-vit-base-patch16/...
checkpoints/hf_cache/hub/models--facebook--dinov3-vitb16-pretrain-lvd1689m/...
checkpoints/hf_cache/hub/models--facebook--sam3/... <- from the sibling repo
checkpoints/hf_cache/hub/models--depth-anything--DA3NESTED-GIANT-LARGE-1.1/... <- from the sibling repo
environment/sam3-env.tar <- from the sibling repo (~9.9G)
environment/vbench-env.tar <- this repo (~5.9G, separate venv, only eval_vbench.py uses it)
Only .gt.mp4 and caption_selected/*.gt.meta.json are included per GT
clip β not masks/warped videos/DA3 caches/w2cs (confirmed not read by any
of the scripts here). This trims real+synth GT from ~16G down to ~4.7G.
camera_da3's own GT-side DA3 cache isn't included either, so
eval_camera_da3.py will compute it fresh the first time (one-time GPU
cost, unavoidable without re-uploading ~14G of cache).
2. Extract both venvs and place everything at the exact absolute paths
mkdir -p ~/iter12000_eval/environment/sam3-env ~/iter12000_eval/environment/vbench-env
tar -xf ~/iter12000_eval/environment/sam3-env.tar -C ~/iter12000_eval/environment/sam3-env --strip-components=1
tar -xf ~/iter12000_eval/environment/vbench-env.tar -C ~/iter12000_eval/environment/vbench-env --strip-components=1
sudo mkdir -p /NHNHOME/hyunwook/khs
sudo chown -R "$(whoami)" /NHNHOME
rsync -a ~/iter12000_eval/code/NHNHOME/ /NHNHOME/
rsync -a ~/iter12000_eval/data/NHNHOME/ /NHNHOME/
(--strip-components=1 because both tars were made with tar -cf x.tar sam3-env/
tar -cf x.tar vbench-env, i.e. the venv directory name is the tar's own top
level β strip it so the venv's bin/, lib/, etc. land directly under
environment/sam3-env/ / environment/vbench-env/, not one level deeper.)
You should now have, among other things:
/NHNHOME/hyunwook/khs/codes/metric/run_new_model_pipeline.sh(the entry point)/NHNHOME/hyunwook/khs/BENCH_OUTPUT/Model_ours_iter12000_FINAL/{Real,Syn}/<clip>/{output.mp4,metadata.json}(230 clips)/NHNHOME/hyunwook/khs/JointGen-backup/BENCHMARK/FINAL/{real,synth}/perspective/**/*.gt.mp4/NHNHOME/hyunwook/khs/codes/metric/review_previews_100/review_decisions.json(the 200-clip selection)/NHNHOME/hyunwook/khs/JointGen-backup/Projects/sam3/{sam3/,sam3.egg-info/,scripts/track_and_extract_masks.py}
3. Verify both venvs
~/iter12000_eval/environment/sam3-env/bin/python3 -c "import torch, cv2, lpips, depth_anything_3; from sam3.model_builder import build_sam3_video_predictor; print('sam3-env: cuda', torch.cuda.is_available())"
~/iter12000_eval/environment/vbench-env/bin/python3 -c "from vbench import VBench; print('vbench-env OK')"
Both should succeed with cuda True for the first. If either venv fails to
start at all (can't find its base interpreter), check pyvenv.cfg inside it
for the home = path β it needs a matching system Python on this machine
(sam3-env wants 3.12, check vbench-env's own cfg for its version). If they
don't match, stop and report back rather than trying to patch the venv.
4. Point checkpoints at the bundled cache (offline, no HF auth needed for gated SAM3/DA3/DINOv3)
export HF_HOME=~/iter12000_eval/checkpoints/hf_cache
export TORCH_HOME=~/iter12000_eval/checkpoints/torch_cache # created fresh if AlexNet/Inception/S3D weights aren't already cached -- they'll just download once, small (~150MB total), no auth needed (public weights)
export HF_HUB_OFFLINE=1
Note: HF_HUB_OFFLINE=1 covers SAM3/DA3/CLIP/DINOv3 (all pre-cached here).
It does NOT need to cover torch-hub-style downloads (InceptionV3 for FID,
S3D for FVD, AlexNet for LPIPS) β those are public, ungated, and will just
download the first time eval_fid.py/eval_fvd.py/eval_3d_adherence.py
run, same as they did when this package was built.
5. Run the full pipeline
cd /NHNHOME/hyunwook/khs/codes/metric
export SAM3PY=~/iter12000_eval/environment/sam3-env/bin/python3 # run_new_model_pipeline.sh hardcodes its own SAM3PY path -- see note below
./run_new_model_pipeline.sh --model_output_dir /NHNHOME/hyunwook/khs/BENCH_OUTPUT/Model_ours_iter12000_FINAL --gpus 0,1
Before running, open run_new_model_pipeline.sh and run_full_benchmark.py
and check the SAM3PY= / VBENCHPY= constants near the top of each β they're
hardcoded to this server's original absolute paths
(/NHNHOME/hyunwook/khs/JointGen-backup/Projects/sam3/sam3-env/bin/python3
and .../codes/metric/vbench-env/bin/python3). Since you extracted the venvs
to those SAME absolute paths in step 2, these should already resolve correctly
as-is β this note is just so you notice immediately if something doesn't
line up (e.g. you extracted somewhere else) rather than debugging a confusing
ModuleNotFoundError several phases in.
No --panorama flag β Model_ours_iter12000_FINAL isn't a panorama-crop
model (same convention as Model_ours_iter11000_FINAL).
This takes hours (230 clips Γ real+synth Γ every metric Γ bbox re-tracking).
run_step logs ########## START <phase> ########## / DONE/FAILED for
each of: point_prompt, fvd_farm (200-clip FVD re-run), bbox_sam3,
bbox_outer_view, bbox_objcons_clip, bbox_objcons_dino,
bbox_direction_self, bbox_direction_gt, edgefix_direction_self,
edgefix_direction_gt, filter_200_bbox, filter_200_point β if one phase
fails, the script logs FAILED and continues to the next rather than
aborting (matching this project's convention of never silently corrupting
already-good phases); check the log for any FAILED lines before declaring
done, and report back rather than guessing at a fix if you see one.
6. Sanity-check before uploading results
python3 -c "
import json
for m in ['fid','fvd','camera_da3','3d_adherence','vbench']:
d = json.load(open(f'/NHNHOME/hyunwook/khs/EVAL_FINAL/{m}/Model_ours_iter12000_FINAL.json'))
print(m, d if m!='camera_da3' else d['RotErr'])
"
python3 -c "
import json
d = json.load(open('/NHNHOME/hyunwook/khs/EVAL_FINAL_bbox/outer_view/Model_ours_iter12000_FINAL.json'))
print('n_clips_matched:', d['n_clips_matched'])
"
Expect n / n_clips_matched around 200 (the 200-clip selection: 100 real +
100 synth). If any of these show a much smaller n or the file is missing,
some phase silently skipped clips β check that phase's log before uploading.
7. Upload results back
Only the actual result artifacts β not the 13GB of model output or the venvs.
export HF_HOME=~/iter12000_eval/checkpoints/hf_cache
unset HF_HUB_OFFLINE
for D in EVAL_Results EVAL_Results_oldFINAL_bbox EVAL_Results_oldFINAL_bbox_edgefix EVAL_FINAL EVAL_FINAL_bbox EVAL_FINAL_bbox_edgefix; do
HF_HUB_DISABLE_XET=1 hf upload kimhosoo/iter12000-full-eval \
"/NHNHOME/hyunwook/khs/$D" "results/$D" --repo-type model \
--include "*Model_ours_iter12000_FINAL*"
done
(Each --include restricts to just this model's own result files within
each results directory β build_eval_final_bbox.py sweeps every model it
finds, so EVAL_FINAL_bbox/EVAL_Results_oldFINAL_bbox* may contain other
models' files too; don't upload those, just this one's.)
8. Tell the user it's done
Once results/ is uploaded, report back to the user that the full
iter12000_FINAL eval is ready to pull down and merge on the original
server. You don't need to do the merge yourself.