File size: 1,441 Bytes
a3752bd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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}")