One model, nine tasks, end-to-end pixels
A 95M-parameter DINOv2 + transformer agent learns all 9 GUI annotation tasks from raw screenshots. No task-specific heads. No segmentation hints. Just (image → click).
What does it look like to teach a neural network to annotate like a scientist? We build a framework of synthetic annotation environments and train a 95M-parameter agent end-to-end on raw GUI pixels — then push it onto real electron microscopy.
The last mile of scientific data analysis is annotation. Connectomics burns 33 person-years on a single fly brain. Astronomy, pathology, behavior, remote sensing — all paying the same tax.
We attack the problem head-on: build 9 synthetic GUI annotation environments (colored-dot tracing, cell lineage, animal behavior, hyperspectral plumes, road graphs, 3D exploration, …), simulate the human as a code policy with realistic mistakes, and train one model on raw pixels of the GUI.
Across single-task and multi-task regimes the agent learns the workflow, represents its own mistakes linearly, matches a competent human annotator, and — after fine-tuning — successfully traces neurons through real electron microscopy of H01 human cortex and C. elegans.
A 95M-parameter DINOv2 + transformer agent learns all 9 GUI annotation tasks from raw screenshots. No task-specific heads. No segmentation hints. Just (image → click).
Fine-tuning the pretrained model on real neuron-tracing data — H01 human cortex and Witvliet C. elegans — yields autoregressive skeleton accuracy of 95.1% (human) and 89.4% (worm). The synthetic pretraining → real fine-tuning paradigm works.
A linear probe on the model's layer-6/8 activations distinguishes intentional clicks from mistakes-it-will-correct at ROC AUC 0.92. The agent represents 'I was wrong' even though no explicit mistake supervision was given.
Training data contains ~10% deliberate mistakes-then-undos. The model imitates the recovery shape but corrects far less often than humans — 0.8% vs. 2.4-7.6%. Cleaner than its teachers.
Across navigation/placement/MIP/undo fractions, the trained agent matches the most cautious of four human annotators almost perfectly: 88 vs. 87 navigation steps, 110 vs. 111 total.
Pretrained behavioral cloners do not pick up a new task format from a template or a few demos. ICL accuracy is 0-1% across zero-shot, prefix, and few-shot evaluations. Fine-tuning recovers ~77%.
At matched training loss, a 28M-parameter model beats the 320M model on 7 / 9 tasks. The 32M-frame dataset is not yet in the regime where bigger helps.
On teacher-forced placement @5px, our 95M BC model outperforms both Gemini 3 Flash and Qwen3-VL-32B across all 5 placement tasks — despite being 100-300× smaller. Annotation is mostly a fine-motor problem.
Each task ships an HTML+JS GUI rendered headlessly by Playwright, a code-defined "virtual annotator" that produces realistic action sequences with mistakes-then-undos, and a screenshot+(x,y)-click dataset of millions of frames. One architecture; nine tasks; no task-specific heads.
Trace a path through a stack of z-slices, using only the GUI.
A continuous trajectory of colored Gaussian dots is hidden inside a 16-slice z-stack. The annotator navigates with +z/-z, toggles MIP, and clicks each dot in order from blue (start) to red (end). This is the synthetic analog of neuron tracing.
Challenge. 3D navigation with sparse evidence per slice; the path crosses itself in projection.
Re-identify 6-10 neurons across 10 frames with no color cues.
All neurons look identical (green blobs). Identity is preserved only through spatial continuity under elastic deformation and accumulating rotation. The annotator works in batches of 3-4 neurons through all 10 frames.
Challenge. Identity tracking without appearance cues, under non-stationary rotation.
Follow each cell across divisions in a Voronoi tissue.
Cells divide between frames. The annotator marks the root, then propagates each cell forward — handling divisions by placing markers on both daughters. Auto-propagation for non-splitting cells keeps the workload tractable.
Challenge. Tree-structured annotation with auto-propagation logic and division detection.
Mark head and tail of 4-8 animals across 10 frames.
Each video has a 'species' shared across frames — same body plan, limbs, optional tail. The annotator places a front (head) and back (tail) marker per animal, working through groups of 1-4.
Challenge. Orientation tracking on small, articulated targets without color or markers.
Find implicit keypoints on a bird, insect, spider, or snake.
Animals are rendered as overlapping ellipses and lines — there are no visible markers, the annotator must infer keypoint locations from the shape. A tabbed GUI groups body / antennae / legs / wings / tail.
Challenge. Implicit landmark inference on high-articulation, low-temporal-correlation motion.
Mark corresponding landmarks across visually distinct channels.
Two channels of an image are warped by affine + elastic transforms. The annotator places matching landmarks across channels — Shi-Tomasi corners are the GT, but appearance differs sharply (e.g., RGB vs. edge-channel projection).
Challenge. Correspondence across appearance shift; 50% natural + 50% synthetic DGPs.
Find blobs that appear in exactly 3 of 5 spectral bands.
Among confounders that appear in 1, 2, or all 5 bands, real plumes appear in exactly 3. The annotator toggles bands to count, places confirm markers, then draws polygon boundaries (16-24 points).
Challenge. Multi-step reasoning: explore → count → confirm → draw polygon.
Build a road graph: place nodes, connect edges.
Synthetic aerial maps with MST + Delaunay road networks. The annotator places nodes at intersections in writing order, then connects roads by path-following from the last placed node.
Challenge. Graph annotation with structural constraints (degree ≥ 3, min 40° angles).
Rotate a 3D object, then pick 1 of 9 classes.
Five colored spheres arranged into one of 9 topologies — line, plus, methane, square pyramid, bowtie, etc. The annotator rotates 3-10 times before classifying, with random SO(3) initial orientations forcing real exploration.
Challenge. Active exploration policy: when have you seen enough to decide?
The synthetic-pretrain → real-finetune paradigm is the actual deliverable. Below: closed-loop autoregressive neuron tracing on two real EM datasets, fine-tuned from the same multitask base checkpoint.
1,013 myelinated axon skeletons, 6.5M frames of fine-tuning. Trace each axon by clicking it through 50 z-slices.
| Skeleton accuracy (autoreg) | 95.1% |
|---|---|
| Canvas @5px | 95.1% |
| Canvas @10px | 97.5% |
| Done rate | 100% |
| First node accuracy | 100% |
Dense neuropil, 30.5% segmented voxels. 19,872 fine-tuning episodes on the synthetic-pretrained checkpoint.
| Skeleton accuracy (autoreg) | 89.4% |
|---|---|
| Canvas @5px | 78.0% |
| Canvas @10px | 83.9% |
| Done rate | 100% |
| First node accuracy | 100% |
On pixel-precise placement, behavioral cloning at 95M parameters beats both frontier VLMs across every placement task we ran.
| Task | BC · 95M | Gemini 3 Flash | Qwen3-VL-32B |
|---|---|---|---|
| Colored Dot Tracking | |||
| Neuron Tracking | |||
| Cell Lineage Tracking | |||
| Multichannel Alignment | |||
| Animal Limb Tracking |
Four human annotators ran 5 colored-dot-tracking instances each. The virtual annotator's action distribution falls inside the human envelope — and the trained model is closest to the most cautious human.
| Virtual | Ann. 1 | Ann. 3 | Ann. 4 | Model | |
|---|---|---|---|---|---|
| Navigation % | 73.8 | 78.1 | 70.0 | 66.6 | — |
| Placement % | 14.4 | 15.4 | 21.1 | 22.9 | — |
| MIP toggle % | 10.0 | 4.9 | 6.4 | 8.5 | — |
| Total steps | 118 | 111 | 88 | 71 | 110 |
| Correction % | 6.6 | 4.6 | 7.6 | 2.4 | 0.8 |
A long-form walk through the why, the how, and what we learned — written for the bench scientist and the ML researcher in the same room.
Read →@inproceedings{bcsda2026,
title = {A Systematic Study of Behavioral Cloning for Scientific Data Annotation},
author = {Anonymous},
booktitle = {Proceedings of the 43rd International Conference on Machine Learning},
series = {ICML 2026},
year = {2026},
}