FlowBench

An accurate, richly-annotated dataset/benchmark for training/testing VLMs and World Models on understanding hypothetical object motions, made by a scalable, automatic pipeline

Yifan Liu*, Baihan Zhang*, Khai Loong Aw*, Klemen Kotar*, Daniel L.K. Yamins

Stanford University · *equal contribution

−3.1pts
A counterfactual spatial imagination gap in GPT-6 Astra

FlowBench-Real: 89.9% when it must imagine the move, 93.0% when shown the movement outcome

41–50%
Open-source VLMs are near chance in this task

9 open models on FlowBench-Real; chance is 37.6%

+17–25pts
Training on FlowBench has strong Sim2Real generalization

On FlowBench-Real after training on FlowBench-Sim only (3 open models)

An accurate, scalable, richly-annotated dataset for training VLMs and World Models

Before and after images for every motion; exact flow, depth and masks for every Sim motion

Try it

Before

FlowBench-Sim · iTHOR · Occlusion

Move the laptop (marked black) 0.89m left and 0.54m along the camera backward axis. In the after image, is the alarmclock (marked blue) occluded by the laptop (marked black) so that it is partly or fully hidden, or is it totally visible?

Examples

Test questions, with how people and models answered them without seeing the after image.

Dataset

Simulated homes for scale, real robot tabletops for transfer.

FlowBench-Sim and FlowBench-Real overview: example scenes, sizes and question categories

What each sample contains

One motion, every layer. Sim layers are exact simulator output, released for every Sim question; Real answers are computed from layers measured with SAM 3, Depth Anything 3 and AllTracker.

Before imageBefore image
Optical flowOptical flow
After imageAfter image
Depth, beforeDepth, before
Depth, afterDepth, after
Instance masksInstance masks

Move the chair brown 0.30 m left and 0.17 m toward the camera.motion_command

TrainInputTarget
Text → flowbefore image + motionoptical flow
Flow → next framebefore image + flowafter image
Text → next framebefore image + motionafter image
Counterfactual VQAbefore image + motion + questionanswer
Static VQAafter image + question about itanswer

Results

Accuracy when the model sees only the before image and the motion.

Training on simulation transfers to real robotsBefore and after fine-tuning on FlowBench-Sim only
30%40%50%60%70%80%90%Qwen3-VL-8B · Sim46.976.3Qwen3-VL-8B · Real42.759.6Qwen3.5-9B · Sim44.376.6Qwen3.5-9B · Real42.767.7LLaVA-OV-2-8B · Sim51.176.7LLaVA-OV-2-8B · Real45.064.9

base modelfine-tuned on FlowBench-Sim

Imagining the outcome costs accuracyFlowBench-Real, before image + motion vs. after image
30%40%50%60%70%80%90%100%gapClaude Fable 5.1 (low)85.390.3−5.0GPT-6 Astra (max)89.993.0−3.1Qwen3-VL-8B42.755.7−13.0

must imagineoutcome shown

ModelFlowBench-RealFlowBench-Sim
People77.264.2
Proprietary
GPT-6 Astra, max effort†89.960.2
Claude Fable 5.1, max effort‡88.9–
GPT-6 Astra, low effort†88.454.6
Claude Fable 5.1, low effort‡85.356.6
GPT-5.6 Luna, low effort‡65.047.6
Open-source
Gemma-4-31B50.444.6
LLaVA-OV-2-8B45.051.1
Gemma-4-12B44.641.6
Qwen3-VL-32B44.448.3
Qwen3-VL-8B42.746.9
Qwen3.5-9B42.744.3
InternVL3.5-8B42.740.6
InternVL3.5-30B-A3B41.241.4
LLaVA-OV-1.5-8B41.047.2
Trained on FlowBench-Sim
Qwen3.5-9B67.776.6
LLaVA-OV-2-8B64.976.7
Qwen3-VL-8B59.676.3
Ψ-0.651.473.1
Ψ-0.6, imagine then answer–50.7
Chance37.635.8

Accuracy (%). People: 12 participants, 403 answers on Real; 120 answers on Sim. † 50% and ‡ 20% of questions. Mean of three answer orders for open models.

Text-to-flow

Predict the optical flow of the stated motion from the before image, zero-shot and after training on FlowBench-Sim.

MethodAcc ↑rEPE ↓ΔPSNR ↑
Zero flow0.0%1.000+0.00 dB
Grounding DINO + SAM 2 + Depth Pro*50.2%0.581–
+ depth calibration50.8%+0.60.552–
FOFPred0.2%0.985–
+ trained on FlowBench-Sim (LoRA)2.4%+2.30.915–
Qwen-Image-Edit§2.9%2.432-1.81 dB
+ trained on FlowBench-Sim (QLoRA)7.9%+5.02.154-1.63 dB
InstructPix2Pix§0.5%1.620-4.92 dB
+ trained on FlowBench-Sim (plain MSE)10.5%+10.02.659-3.34 dB
+ trained on FlowBench-Sim (SoM target)13.7%+13.22.938-0.97 dB
+ trained on FlowBench-Sim (mask-weighted)16.4%+15.92.655-3.99 dB
Ψ-0.6, default decoding10.8%0.858+0.79 dB
+ trained on FlowBench-Sim36.0%+25.20.603+1.60 dB
Ψ-0.6, motion-first decoding + text guidance52.1%0.534+1.03 dB
+ trained on FlowBench-Sim61.7%+9.60.423+0.94 dB

FlowBench-Sim test split. Acc: predictions within 40% of the true motion. rEPE: error relative to the motion (no motion = 1.000). ΔPSNR: generated after frame vs. copying the before frame, changed region. * given camera intrinsics. § given the true object mask.

How it's built

Answers come from simulator state or measured 3D geometry. No model picks an answer.

FlowBench-Sim construction pipeline and an annotated training example
FlowBench-Real construction pipeline and an annotated test question

Get the data

Images, questions and the Sim ground truth load with Hugging Face datasets.

from datasets import load_dataset

real = load_dataset("StanfordNeuroAILab/FlowBench",
                    "real_colour_som", split="test")
row = real[0]
row["image_before"], row["motion_command"], row["question"]
row["image_after"], row["static_question"], row["answer"]

# 420K Sim training questions: stream them
sim = load_dataset("StanfordNeuroAILab/FlowBench",
                   "sim_colour_som", split="train",
                   streaming=True)

# exact flow, depth, segmentation, masks per Sim question
gt = load_dataset("StanfordNeuroAILab/FlowBench",
                  "sim_ground_truth", split="test")
ConfigTrainTestSize
sim_colour_som419,61271462 GB
sim_red_som419,61271460 GB
sim_natural419,61271445 GB
sim_ground_truth419,612714121 GB
real_colour_som8,5751,0831.2 GB
real_red_som8,5751,0830.9 GB

BibTeX

@article{liu2026flowbench,
  title   = {FlowBench: Counterfactual Imagination Training for Spatial Intelligence},
  author  = {Liu, Yifan and Zhang, Baihan and Aw, Khai Loong and Kotar, Klemen and Yamins, Daniel L. K.},
  journal = {arXiv preprint arXiv:2611.03937},
  year    = {2026}
}