bert_simpson / forgebench /code /eval /summ_v2.py
Ronaldo-GOAT's picture
forgebench: final scorer tree (shard support), aggregate_results.py, latest Omni VGGT drivers (v2/v3), README updates; no seeds
a3752bd verified
Raw History Blame Contribute Delete
1.44 kB
import json,glob,sys,numpy as np
EV="/lp-dev/jonghoon/mv-mesh/.debug_overnight_maintable/results/eval"
def good(r): return r.get("geometry") and r.get("input_view") and r.get("novel_view") and "error" not in r
def load(pat):
d={}
for p in sorted(glob.glob(pat)):
for r in json.load(open(p)):
if r["object"] not in d or (good(r) and not good(d[r["object"]])): d[r["object"]]=r
return d
def summ(d):
ok=[r for r in d.values() if r.get("geometry") and r.get("input_view") and r.get("novel_view")]
def m(f): return float(np.mean([f(r) for r in ok]))
return dict(n=len(ok),
lpips=m(lambda r:(r["input_view"]["lpips"]+r["novel_view"]["lpips"])/2),
psnr=m(lambda r:(r["input_view"]["psnr"]+r["novel_view"]["psnr"])/2),
ssim=m(lambda r:(r["input_view"]["ssim"]+r["novel_view"]["ssim"])/2),
cd=m(lambda r:r["geometry"]["cd_l1"]), f01=m(lambda r:r["geometry"]["fscore"]["0.01"]["f"]))
rows=[]
for m,new in [("rvg","alignv2"),("amodal3r","alignv2"),("hy3d2mv","alignv2"),("pixal3d","cammap")]:
o=load(f"{EV}/{m}_toys4k300_1v/results.json"); n=load(f"{EV}/{m}_toys4k300_1v_{new}/*/results.json")
ks=set(o)&set(n)
so=summ({k:o[k] for k in ks}); sn=summ({k:n[k] for k in ks})
for tag,s in [("old",so),(new,sn)]:
print(f"{m:9s} {tag:8s} n={s['n']:3d} LPIPS {s['lpips']:.4f} PSNR {s['psnr']:.2f} SSIM {s['ssim']:.3f} CD {s['cd']:.4f} F@.01 {s['f01']:.3f}")