"""Resume the 20260915_171525 RGB-D right-hand reconstruction.""" import os from pathlib import Path import subprocess import json import time import argparse import numpy as np parser=argparse.ArgumentParser() parser.add_argument('--left',action='store_true') args=parser.parse_args() ROOT=Path(__file__).resolve().parents[1] SOURCE=ROOT/'docs/20260915_171525' OUT=ROOT/('output/20260915_171525/handflow_left_mirrored' if args.left else 'output/20260915_171525/handflow') OUT.mkdir(parents=True,exist_ok=True) meta=json.loads((SOURCE/'intrinsics.json').read_text()) env=os.environ.copy() env.update(PYTHONPATH=str(ROOT),LD_LIBRARY_PATH='',OMP_NUM_THREADS='4',MKL_NUM_THREADS='4', OPENBLAS_NUM_THREADS='4',TORCH_HOME=str(ROOT/'.torch_cache'),HF_HOME=str(ROOT/'.hf_cache'), HF_HUB_OFFLINE='1',TRANSFORMERS_OFFLINE='1',TORCH_FORCE_NO_WEIGHTS_ONLY_LOAD='1', PYTHONUNBUFFERED='1',VIPE_PYTHON=str(ROOT/'.venv/bin/python'), HAMER_CKPT=str(ROOT/'third_party/hamer/_DATA/hamer_ckpts/checkpoints/hamer.ckpt'), DETECTOR_CKPT=str(ROOT/'weights/detector.pt'), MANO_ROOT=str(ROOT/'third_party/hamer/_DATA/data/mano'), HANDFLOW_NORMALIZATION_STATS=str(ROOT/'weights/normalization_stats.npz')) cmd=[str(ROOT/'.venv/bin/python'),'-u','scripts/demo.py','--input',str(SOURCE/'color.mp4'), '--fm_ckpt',str(ROOT/'weights/handflow_denoiser.pt'),'--intrinsics', ','.join(str(meta[k]) for k in ['fx','fy','cx','cy']),'--side','right', '--rotation_smooth_window','5','--output_dir',str(OUT),'--save_npz',str(OUT/'handflow_results.npz')] if args.left: cmd[cmd.index('--input')+1]=str(OUT.parent/'left_mirrored.mkv') intr=np.array([meta[k] for k in ['fx','fy','cx','cy']]);intr[2]=meta['width']-1-intr[2] c=np.load(OUT.parent/'rgbd_camera.npz');reflection=np.diag([-1.,1.,1.,1.]) np.savez(OUT/'camera_slam.npz',intrinsics=intr,c2w=reflection@c['c2w']@reflection) status=OUT.parent/'status.json' for attempt in range(2): if (OUT/'handflow_results.npz').exists():break status.write_text(json.dumps(dict(stage='RECONSTRUCTION_RUNNING',attempt=attempt,command=cmd,time=time.time()),indent=2)) with (OUT/'inference.log').open('a') as log: result=subprocess.run(cmd,cwd=ROOT,env=env,stdout=log,stderr=subprocess.STDOUT) if result.returncode: status.write_text(json.dumps(dict(stage='RECONSTRUCTION_FAILED',returncode=result.returncode,time=time.time()),indent=2)) raise SystemExit(result.returncode) if not (OUT/'handflow_results.npz').exists():raise RuntimeError('No final reconstruction arrays') status.write_text(json.dumps(dict(stage='RECONSTRUCTION_DONE_PENDING_DEPTH_AND_RETARGET',time=time.time()),indent=2))