DexFlow MLP Stage-2 v3 (Selective Grounding)

V3-E: Dual Reader + selective proprio + 16D compact Body↔Hand messages on plastic and pill.

Org: Humantwin
Repo: Humantwin/dexflow-v3-stage2-tasks

Not ACT / DiT. DexFlowMLPPolicy (policy_variant=dexflow_mlp) with:

  • split_head=true
  • dual_reader=true
  • selective_obs=true
  • message_dim=16
  • balanced loss 0.5 L_body + 0.5 L_hand

Stage-1 init: dexflow_mlp_stage1_core4_current_state_gate_20260910/stage1_step02000.ckpt
Seed: 20260910 · Gate: G2 · Checkpoint: 15k (stage2_step15000.ckpt)

Layout

selective/{plastic,pill}/
  stage2_step15000.ckpt
  norm_stats.json
  gate_step15000.json

Also mirrored as stage2.ckpt (= 15k) for deploy loaders that expect that name.

Open-loop (train-set, G2 PASS @ 15k)

Path nRMSE body RMSE hand MAE
selective/plastic 0.0576 0.0060 3.07
selective/pill 0.0656 0.0072 4.74

Load

from deploy.real_robot.load_p0_policy import load_dexflow_policy
from dexflow.data.normalize import ActionStateNormalizer

model = load_dexflow_policy("selective/plastic/stage2.ckpt", device="cuda")
normalizer = ActionStateNormalizer.load("selective/plastic/norm_stats.json")
# image [B,1,3,480,640] float 0-1; state [B,41] MEAN_STD-normalized
chunk_n = model.predict_action_chunk({"image": img, "state": state_n})
action = normalizer.unnormalize_action(chunk_n)  # [B,30,41]

from_checkpoint restores mlp_cfg.split_head, dual_reader, selective_obs, and message_dim from the ckpt.

Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading