From Pixels to Actions: Towards Native Vision-Language-Action Policies

NEO-VLA, an encoder-free VLA policy built on a native vision-language backbone

Weichen Fan1,* Haiwen Diao1,*,♯ Penghao Wu1 Siyuan Hu1 Ziqi Huang1 Tianqi Liu1,3 Mingze Sun1 Ziyi Wang1 Zhongang Cai2 Hanming Deng2 Quan Wang2 Lei Yang2 Lewei Lu2 Fangzhou Hong3 Zhaoxi Chen3 Dahua Lin2 Ziwei Liu1,†

1S-Lab, Nanyang Technological University   2SenseTime Research   3Ropedia

* Equal contribution   ♯ Project lead   † Corresponding author

Tennis ball on can. Precise placement on a surface smaller than the ball.
Tape in bowl, then ball in tape. A two-step task.
Stand can in tape. Reorient a lying can and insert it upright.

Most vision-language-action (VLA) models see the world through a separately pretrained vision encoder. The action policy only receives that encoder's final output, after local geometry, edges and depth cues have already been abstracted away. NEO-VLA drops the encoder. Pixels go through a lightweight convolutional patch embedder straight into a native vision-language backbone, and a flow-matching action expert reads from whichever backbone layers we choose.

Because the readout depth becomes a design choice, we can ask where in the backbone the information needed for control actually lives. Three findings come out of this study:

  1. Action-relevant information sits in the shallow layers of the VLM. Reading early layers beats reading late layers at matched expert size, and intervening on layers 0–10 changes the predicted action far more than intervening on later layers.
  2. Attaching Qwen's vision encoder to the action expert does not help. The gain comes from native vision-language pretraining. Routing the expert to Qwen3-VL's intermediate vision-tower features lowers frozen-backbone LIBERO success from 79.5% to 64.9%. The frozen native backbone reaches 90.9%.
  3. Understanding data matters in post-training. On RoboTwin 2.0 Clean2Rand, co-training with NEO's understanding corpus gives 69.4%, a caption-only mix gives 47.2%, and action data alone gives 10.7%.

VideoNEO-VLA in two minutes

Robot clips are sped up 2–4×; the speed is marked in each shot.

ModelPixels in, continuous actions out

Encoder-based VLAs (a, b below) pass pixels through a visual encoder and hand its output to the language model. NEO-VLA (c) maps pixels directly into the backbone token space, so image patches and instruction words are processed together in every layer. A separate, narrow action expert attends to the cached keys and values of selected backbone layers and predicts a flow-matching velocity field over 30-step action chunks.

Three VLA designs: encoder-based with quantised actions, encoder-based with an action flow head, and encoder-free with an action flow head.
Three VLA policy designs. (a) Encoder-based VLA with discrete action tokens. (b) The same encoder-based interface with a continuous action head. (c) NEO-VLA removes the separately pretrained encoder; a patch embedder feeds pixels into the backbone, and the action expert reads keys and values from selected backbone layers.
NEO-VLA architecture: previous and current camera views, camera geometry, a structured prompt and robot state form a prefix for the 40-layer NEO-2B backbone; an action expert reads per-layer keys and values and predicts arm and body action chunks.
NEO-VLA architecture. The prefix holds previous and current multi-view images (up to 88 visual tokens per view, stride-32 patches), camera intrinsics and rotation, a structured prompt (control frequency, embodiment, action frame, instruction) and robot state. The backbone is NEO-2B, a 40-layer decoder-only native vision-language model with no ViT, autoencoder or VQ codebook in the visual path. The action expert outputs two 26-D arm chunks and one 8-D body chunk; inference uses 10 Euler steps.

Finding 1Action-relevant information sits in the shallow layers of the VLM

Each layer of the action expert reads the cached keys and values of one backbone layer. We keep the expert fixed at 28 layers and change only which backbone layers it reads: skip-28 spreads its reads across all 40 layers, end-28 reads layers 12–39, and first-28 reads layers 0–27.

Layer-map ablation on LIBERO. Average success (%) over the four suites, 2,000 rollouts per configuration, step 30k.

Frozen backbone
first-28 layers 0–27 · depth 28
94.9
skip-28 uniform over 0–39
90.9
end-28 layers 12–39
86.7
Frozen backbone, disjoint 14-layer maps
first-14 layers 0–13 · depth 14
93.6
last-14 layers 26–39
89.6
Full fine-tuning
first-28
94.6
skip-28
95.3
end-28
92.5

The cleanest comparison is skip-28 vs. end-28: both keep all 40 backbone layers and the same 28-layer expert, and differ only in whether early layers are read. first-28 and first-14 also shorten the backbone, so they change depth and compute as well as readout position.

With a frozen backbone, dropping access to the first 12 layers costs 4.2 points (90.9 → 86.7). Full fine-tuning narrows the gap but does not close it (95.3 vs. 92.5).

Where the expert is sensitive

To see which attachment points matter, we intervene on one at a time. Replacing the keys and values at one layer with those from a different observation and task raises translation error most at layers 0–10. Noise of the same magnitude stays within 0.004 cm of the unchanged error, so the effect comes from the content being replaced, not the size of the disturbance. Masking the wrist image hurts most around layers 6–10; masking the instruction hurts most at layer 0, with a smaller rise near layer 17.

Three panels. A: translation error after swapping keys and values at each backbone layer is highest for layers 0 to 10. B: masking the wrist image peaks around layers 6 to 10; masking the instruction peaks at layer 0. C: masking wrist-camera pose matters only at layer 0 and only for a wrist-frame model.
Interventions at the expert's attachment points (diagnostic skip-28 models). (A) Translation error after swapping one attachment's cached keys and values with another observation's (bars), adding matched-magnitude noise (orange), or no change (dashed). (B) Action change when masking the wrist image or the instruction; filled and open markers are separate even- and odd-attachment runs. (C) Masking the wrist-camera pose has little effect in the robot-frame model but a large effect at layer 0 in a wrist-frame model, which shows the test can detect pose use.

Control draws on early, spatially detailed computation inside the backbone, and a policy that only sees the last layers leaves that on the table.


Finding 2Attaching Qwen's vision encoder to the expert does not help; the gain comes from native pretraining

We put three backbones under the same action expert and robot-training corpus: Qwen3-VL-2B, Gemma-3-4B and NEO-2B. With the backbone frozen, only the expert learns, so the policy must work with the pretrained representations as they are. NEO-2B reaches 90.9% here, 11.4 points above Qwen3-VL and on par with both encoder-based models after full fine-tuning.

Backbone comparison on LIBERO. Success (%) at the final 30k-step checkpoint, 500 episodes per suite.

BackboneSizeAdaptationSpatialObjectGoalLongAverage
Qwen3-VL2BFrozen71.489.892.864.079.5
Encoder unfrozena91.892.094.079.089.2
Full FT92.296.695.878.690.8
Gemma-34BFrozen80.293.692.671.684.5
Full FT89.097.694.882.891.05
NEO-VLA2BFrozen89.295.893.285.490.9
Full FT96.497.296.284.693.6

a Updates the vision encoder and action expert with other layers frozen; uses a replan interval of 4 and horizon of 8 instead of 12 and 20.

Giving the expert direct access to Qwen's vision tower

A natural objection is that NEO-VLA wins only because its expert can reach early visual features, which an encoder-based VLA hides behind the encoder output. We tested this directly: in Qwen3-VL we route 13 expert layers to intermediate vision-tower features instead. This adds no parameters.

Direct encoder access in Qwen3-VL. Average LIBERO success (%), same setting as above.

Frozen backbone
Qwen3-VL, original interface
79.5
Qwen3-VL + encoder access
64.9
NEO-VLA
90.9
Full fine-tuning
Qwen3-VL, original interface
90.8
Qwen3-VL + encoder access
90.9
NEO-VLA
93.6

Encoder access makes the frozen Qwen3-VL policy worse (79.5 → 64.9), and after full fine-tuning the two interfaces are equal (90.8 vs. 90.9). Early visual features are only useful when they are learned jointly with language and presented in the space the rest of the model uses. NEO's encoder-free pretraining produces such features; an encoder bolted on in front of a language model does not.

Caveat: the backbones differ in pretraining data and capacity, so this comparison does not isolate the effect of removing the encoder alone. It does show that the native backbone is a strong starting point for action learning.

Exposing more of a conventional encoder is not enough. The benefit of NEO-VLA comes from native, encoder-free vision-language pretraining.


Finding 3Understanding data matters in post-training

VLA post-training is usually done either on action data alone or with some vision-language data mixed in. We compared three recipes on RoboTwin 2.0, trained on clean scenes and evaluated on randomized ones (Clean2Rand): co-training with NEO-2B's own multimodal understanding corpus, co-training with ShareGPT4V-COCO captions, and action data only.

Post-training recipe ablation. RoboTwin 2.0 Clean2Rand success (%).

+ NEO understanding data
69.4
+ ShareGPT4V-COCO
47.2
Action data only
10.7
0255075100

Training on action data alone collapses under randomization. Simple captions recover part of the gap, and the backbone's own understanding corpus recovers most of it. In our recipe, understanding examples are packed into every other optimizer step with an auxiliary next-token loss weighted by 0.1.

Keeping the backbone's understanding ability alive during action training is what lets the policy hold up when scenes change, and the closer the co-training data is to the backbone's pretraining corpus, the better.


Real robotThree tasks, 50 demonstrations each

We built a small real-world benchmark to test precise placement, multi-step execution and object reorientation. Each model is fine-tuned on 50 episodes per task and evaluated over 20 trials: 10 in-domain and 10 out-of-domain. All methods use the same real data and their own recommended post-training settings.

Illustration of three tasks: place a tennis ball on a can; put a tape roll in a bowl then a ball in the roll; stand a lying can upright in a tape roll.

Real-world success (successes / 20 trials).

ModelSizeTask 1: ball on canTask 2: tape & ballTask 3: can in tape
StarVLA3B1/202/200/20
π0.53B10/2014/2013/20
NEO-VLA2B12/2017/2013/20

Twenty trials per task is a small sample; differences of one or two successes are within noise.

Task 1 · Place the tennis ball on the can

The top of the can is smaller than the ball, so the ball has to be released gently and centered.

Task 2 · Tape roll into the bowl, then the ball into the tape

A two-stage task: the second placement depends on where the first one ended up.

Task 3 · Stand the lying can upright in the tape roll

The can must be grasped on its side, rotated by 90° and inserted into the roll.

Additional task · Pour water from a paper cup into a glass mug

Not part of the three-task benchmark above; shown as qualitative examples.


BenchmarksSimulation results

Simulator versions, camera inputs, training data and evaluation protocols differ across papers, so the tables below give context rather than controlled comparisons. Numbers for other methods are as reported in prior work. Open marks methods with both code and weights public.

LIBERO

ModelSizeOpenSpatialObjectGoalLongAverage
OpenVLA7Byes84.788.479.253.776.5
π0.53Byes98.898.298.092.496.8
MMaDA-VLA8Byes98.899.898.095.298.0
EO-13Byes99.799.899.294.898.4
Qwen-RobotManip4Bno––––99.1
NEO-VLA2Byes99.4100.099.395.698.6

NEO-VLA: 2,000 episodes per suite at step 27,500. LIBERO is close to saturated, so we report it mainly to show in-distribution performance is retained.

LIBERO-Plus

LIBERO-Plus evaluates seven kinds of distribution shift separately. NEO-VLA is strongest when the way the scene is observed changes (camera, noise), and weaker when the robot or the layout changes.

ModelSizeOpenCameraRobotLanguageLightBackgroundNoiseLayoutTotal
π03Byes13.86.058.885.081.479.068.953.6
StarVLA4Byes52.549.888.595.795.773.076.974.1
ABot-M04Byes60.467.986.496.291.686.482.680.5
Cosmos-Policy2Byes75.863.381.796.588.992.782.282.2
π0.53Byes78.473.680.896.294.189.084.584.4
Qwen-RobotManip-scratch4Bno70.444.988.195.895.584.479.178.3
Being-H0.73Bno82.059.082.897.890.093.588.584.8
Qwen-RobotManip4Bno87.275.585.696.697.797.787.389.0
NEO-VLA2Byes94.572.691.796.296.696.982.489.7

The total is task-weighted rather than the mean of the seven axes. Other results follow Qwen-RobotManip.

RoboTwin 2.0

Under the official setting (2.5K clean training episodes), the main difference shows up when the policy is evaluated on randomized scenes.

ModelSizeOpenCleanClean2Rand
FastWAM6Byes77.801.90
StarVLA-OFT3Byes46.523.16
π0.53Byes70.7046.00
OLA-Sem8Bno75.1267.56
Qwen-RobotManip4Bno89.5868.12
NEO-VLA2Byes75.7869.40

LIBERO-Pro

LIBERO-Pro changes object appearance, object positions, instruction wording and task goals. NEO-VLA handles reworded instructions well but, like the other policies here, mostly fails when positions or goals change. Robust perception alone does not yet give flexible task execution.

ModelSizeObjectPositionSemanticTaskAverage
OpenVLA7B93.00.097.30.047.6
π03B90.50.090.50.045.3
π0.53B96.020.895.80.853.3
X-VLA0.9B79.00.896.86.845.8
NEO-VLA2B84.33.098.06.347.9

TrainingData and recipe

Backbone. NEO-2B is a 40-layer decoder-only native vision-language model, trained in three stages (image-text pretraining, mid-training on captioning, conversation, OCR and detection data, then supervised instruction tuning). It uses native rotary position embeddings over time, height and width, causal attention for text and bidirectional attention within each image.

Robot pretraining corpus. Nine public dataset families (AgiBot-World, Bimanual YAM, RoboCOIN, Open X-Embodiment, Galaxea Open-World, RoboMIND, RH20T, DROID and the simulated InternData-A1), 2.23M episodes and about 9,900 hours. Unreliable joint readings, constant channels, action outliers and corrupt episodes are masked or dropped, and camera calibration is checked against projected arm motion.

Recipe. Stage 1 trains the action expert on a frozen backbone (113,400 steps, batch 8,192). Stage 2 unfreezes everything for 75,000 steps and co-trains with NEO-2B's understanding data. Stage 3 continues full fine-tuning on in-house action data for another 75,000 steps.

Data quality filtering pipeline: checks for implausible joint readings, unreliable channels, action outliers, corrupt episodes and camera calibration.
Data quality filtering. Each check removes only the affected readings, channels, targets, episodes or calibration records, so usable data is kept.

CitationBibTeX

@article{fan2026neovla,
  title   = {From Pixels to Actions: Towards Native Vision-Language-Action Policies},
  author  = {Fan, Weichen and Diao, Haiwen and Wu, Penghao and Hu, Siyuan and
             Huang, Ziqi and Liu, Tianqi and Sun, Mingze and Wang, Ziyi and
             Cai, Zhongang and Deng, Hanming and Wang, Quan and Yang, Lei and
             Lu, Lewei and Hong, Fangzhou and Chen, Zhaoxi and Lin, Dahua and
             Liu, Ziwei},
  year    = {2026}
}

NEO-VLA builds on the NEO native vision-language backbone: Diao et al., From Pixels to Words: Towards Native Vision-Language Primitives at Scale, ICLR 2026.