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 10d agoView on Hugging Face
0likes757downloads
v01_numeric.py51 linesDownload Raw Back to verify_prep
1import os, json, glob, h5py, numpy as np, random2WS="/lp-dev/jonghoon/sim_action_aug/ws"3SRC="/home/nvidia/jonghoon/rebuttal/migrator_data/episodes"4EPS=["0004"]+[f"{i:04d}" for i in range(7,17)]5random.seed(0)6out={}7for ep in EPS:8    r={}9    r["n_exo"]=len(glob.glob(f"{WS}/{ep}/frames_exo/*.png"))10    r["n_ego"]=len(glob.glob(f"{WS}/{ep}/frames_ego/*.png"))11    # contiguity12    ex=sorted(int(os.path.basename(p)[:-4]) for p in glob.glob(f"{WS}/{ep}/frames_exo/*.png"))13    r["exo_contig"]= ex==list(range(len(ex)))14    with h5py.File(f"{SRC}/{ep}/teleoperation.h5","r") as f:15        r["h5_rows"]=f["observation/robot_state/gripper_position"].shape[0]16        gp=f["observation/robot_state/gripper_position"][:]17        cap=f["observation/timestamp/cameras/37149196_estimated_capture"][:]/1000.018        rts=f["observation/timestamp/robot_state/robot_timestamp_seconds"][:]+f["observation/timestamp/robot_state/robot_timestamp_nanos"][:]*1e-919    with h5py.File(f"{WS}/{ep}/depth.h5","r") as f:20        d=f["exo/depth_left"]21        r["n_depth"]=d.shape[0]; r["depth_shape"]=list(d.shape); r["depth_dtype"]=str(d.dtype)22        idxs=sorted(random.sample(range(d.shape[0]),3))23        ff=[]24        for i in idxs:25            a=d[i]; ff.append(float(np.isfinite(a).mean()))26        r["finite_idx"]=idxs; r["finite_frac"]=ff27        # frame0 vs last finite28    z=np.load(f"{WS}/{ep}/traj.npz",allow_pickle=True)29    r["npz_keys"]={k:list(np.shape(z[k])) for k in z.files if k!="meta_json"}30    r["grasp"]=int(z["grasp_frame"]); r["release"]=int(z["release_frame"]); r["close_onset"]=int(z["close_onset_frame"])31    g=z["gripper_position"]32    pk=float(g.max())33    r["grip_peak"]=pk34    r["g_at_grasp"]=float(g[r["grasp"]]); r["g_at_grasp_m1"]=float(g[r["grasp"]-1])35    r["g_frame0"]=float(g[0]); r["g_at_release"]=float(g[r["release"]]); r["g_release_p1"]=float(g[min(r["release"]+1,len(g)-1)])36    # is grasp = first crossing 50% peak?37    thr=0.5*pk38    fc=int(np.argmax(g>thr))39    r["first_cross_50pk"]=fc40    r["mono_plateau_frac_above_thr"]=float((g>thr).mean())41    # number of separate runs above thr42    ab=(g>thr).astype(int); r["n_runs_above"]=int(np.sum(np.diff(np.concatenate([[0],ab,[0]]))==1))43    r["T_traj"]=len(g)44    # timestamps45    r["cap0_minus_rt0"]=float(cap[0]-rts[0])46    r["cap_last_minus_rt_last"]=float(cap[-1]-rts[-1])47    r["fps_est"]=float((len(cap)-1)/(cap[-1]-cap[0]))48    r["dur_s"]=float(cap[-1]-cap[0])49    out[ep]=r50print(json.dumps(out,indent=1))51