CoolFace
Datasetpublic

Ronaldo-GOAT/pose6daug

pose6daug Real-world Franka manipulation episodes with object-swap and action augmentation artifacts. 120 training episodes over 4 objects (blue_cup, green_pear, kanu, white_spray), dual ZED cameras (exo static + ego wrist-mounted). Layout Per-frame PNGs are packed into uncompressed tars per episode — the dataset has ~427k mask/plate frames and loose files hit Hugging Face's per-repo file recommendation and API rate limits hard. data/<object>/<NNNN>/ masks.tar… See the full description on the dataset page: https://huggingface.co/datasets/Ronaldo-GOAT/pose6daug.

sourceHugging Facecc-by-4.0updated 9d agoView on Hugging Face
0likes589downloads
v07_objects.py38 linesDownload Raw Back to verify_prep
1import json,numpy as np,cv22WS="/lp-dev/jonghoon/sim_action_aug/ws"; OUT="/lp-dev/jonghoon/sim_action_aug/.debug/verify_prep"3b=json.load(open(f"{WS}/calib/calib_bundle.json"))4T_cb=np.linalg.inv(np.array(b["extrinsics"]["T_base_exocam"]["matrix"]))5i=b["intrinsics"]["exo"]["intrinsics_by_resolution"]["HD720"]["left"]6K=np.array([[i["fx"],0,i["cx"]],[0,i["fy"],i["cy"]],[0,0,1]])7E=b["endpoints_ee"]; x0,h0,z0=E["x0_m"],E["half_aperture_open_m"],E["finger_len_z0_m"]8EPS=["0004"]+[f"{k:04d}" for k in range(7,17)]9# 1) full frame0 mosaic  2) grasp-frame crops mosaic10full=[];crops=[]11for ep in EPS:12    z=np.load(f"{WS}/{ep}/traj.npz",allow_pickle=True); T=z["T_base_ee"]; g=z["gripper_position"]13    gr=int(z["grasp_frame"])14    f0=cv2.imread(f"{WS}/{ep}/frames_exo/000000.png")15    cv2.putText(f0,ep,(20,50),0,1.6,(0,255,255),4); full.append(cv2.resize(f0,(560,315)))16    for fi,tag in [(max(gr-20,0),"pre"),(gr,"grasp")]:17        img=cv2.imread(f"{WS}/{ep}/frames_exo/{fi:06d}.png")18        hh=h0*(1-np.clip(g[fi],0,1))19        ps=[(T[fi]@np.array([x0,s*hh,z0,1.0]))[:3] for s in (+1,-1)]20        mid=np.mean(ps,0); pc=(T_cb@np.append(mid,1.0))[:3]; u=K@pc21        cu,cvv=int(u[0]/u[2]),int(u[1]/u[2])22        s=150; x1=max(cu-s,0);y1=max(cvv-s+40,0)23        c=img[y1:y1+2*s, x1:x1+2*s]24        c=cv2.resize(c,(340,340))25        cv2.putText(c,f"{ep} {tag} f{fi}",(8,26),0,0.8,(0,255,255),2)26        crops.append(c)27def mosaic(lst,ncol):28    rows=[]29    for k in range(0,len(lst),ncol):30        r=lst[k:k+ncol]31        while len(r)<ncol: r.append(np.zeros_like(lst[0]))32        rows.append(np.concatenate(r,1))33    return np.concatenate(rows,0)34cv2.imwrite(f"{OUT}/mosaic_frame0.png",mosaic(full,3))35cv2.imwrite(f"{OUT}/mosaic_grasp_crops_A.png",mosaic(crops[:12],4))36cv2.imwrite(f"{OUT}/mosaic_grasp_crops_B.png",mosaic(crops[12:],4))37print("ok",len(crops))38