Downloads · 30 days
7
17% of all-time downloads
TESS-Computer/qwen-dit-draw-delta
qwen-dit-draw-delta is a robotics model from TESS-Computer. Use it for the robotics task on the model card, and read the license before you ship it in a product. The card lists the license as mit.
Vision-Language-Action model for continuous mouse trajectory prediction using delta (relative) movements.
Downloads · 30 days
7
17% of all-time downloads
All-time downloads
42
Public
Repo size
73.6 MB
Likes
0
Public
Click a slice to open those files.
.pt73.6 MB · 100%
From the Hugging Face model README
Vision-Language-Action model for continuous mouse trajectory prediction using delta (relative) movements.
This is the DiT action head trained on top of frozen Qwen2.5-VL-3B. It predicts mouse trajectories as sequences of (dx, dy, state) deltas.
| Setting | Value |
|---|---|
| Dataset | TESS-Computer/quickdraw-circles-delta |
| Samples | 21,207 chunks |
| Epochs | 3 |
| Final Loss | 0.111 |
| Batch Size | 4 |
| Learning Rate | 1e-4 |
This model was trained for only 3 epochs as a proof-of-concept. Research from OpenVLA, GR00T, and pi0 shows that VLA models need 20-30+ epochs to learn good action patterns:
"Typical LLM or VLM training runs complete at most one or two epochs... In contrast, we found it important for VLA training to iterate through the training dataset significantly more times." — OpenVLA Paper
The model produces partial arcs instead of complete circles because it hasn't seen enough training iterations.
from src.model import Qwen2_5_VL_Draw, TrajectoryConfig
import torch
# Load config
config = TrajectoryConfig(
chunk_size=16,
dit_hidden_size=512,
dit_num_layers=6,
)
# Create model and load weights
model = Qwen2_5_VL_Draw(
model_id="Qwen/Qwen2.5-VL-3B-Instruct",
config=config,
freeze_backbone=True,
)
model.trajectory_head.load_state_dict(
torch.load("trajectory_head.pt", map_location="cpu")
)
This model uses delta coordinates (GR00T N1.6 style):
To reconstruct absolute positions:
# Chunk 0
abs_positions = np.cumsum(deltas, axis=0)
# Chunk 1+
abs_positions = np.cumsum(deltas, axis=0) + prev_chunk_last_point
MIT