SelfThinker: Self-Evolving Reasoning via Reliability-Verified Intrinsic Visual Thoughts
Organizations: Tsinghua Shenzhen International Graduate School, Tsinghua University, Shenzhen, 518055, Guangdong, China.
Abstract
Unified multimodal models can both generate and understand images within a single set of weights, offering an opportunity to use image synthesis as training supervision for visual comprehension. However, existing visual chain-of-thought methods rely on human-annotated helper images during training and require slow image generation at test time. We present SelfThinker, the first self-evolving framework that turns a unified model's self-generated visual thoughts into stronger understanding without human image annotations. Given a visual problem, SelfThinker samples candidate helper images from its generation pathway and uses its frozen understanding pathway to score each candidate via conditional pointwise mutual information. High-utility visual thoughts then refine the generator via flow matching and serve as privileged teacher context for on-policy self-distillation. At inference, SelfThinker reasons directly from the original image in text without generating intermediate images. Although trained only on small synthetic visual-search and navigation datasets, SelfThinker transfers broadly to natural-image and spatial benchmarks, raising the seven-benchmark average of ThinkMorph-7B from 52.7 to 64.0 (+11.3 points). Controlled image-perturbation probes further show that SelfThinker surpasses ThinkMorph-7B by up to 40.4 points and its pretrained BAGEL-7B backbone by up to 23.2 points across fine-grained and spatial perception tasks. Our code is available at https://github.com/zhangquanchen/SelfThinker.
Figures & tables
| Method | Visual thoughts | Self-generated imagery | No image annotations | Thought verification | Text-only inference |
|---|---|---|---|---|---|
| Visual Sketchpad ( Hu et al., 2024 ) | |||||
| MVoT ( Li et al., 2025 ) , ThinkMorph ( Gu et al., 2025 ) | |||||
| Visual-OPSD ( Li et al., 2026a ) , Vision-OPD ( Yuan et al., 2026 ) | |||||
| u-OPSD ( Li et al., 2026b ) , Canon ( Gkountouras et al., 2026 ) | |||||
| SelfThinker (ours) |
| Method | VSP | ChartQA | V* | MMVP | SAT | BLINK | CV-B. | Average | |
| ThinkMorph-7B ( Gu et al., 2025 ) | 1.2 | 52.7 | 53.9 | 79.0 | 55.3 | 53.6 | 73.4 | 52.7 | – |
| SelfThinker (Nav) | 2.0 | 78.1 | 63.4 | 80.3 | 58.0 | 60.3 | 78.0 | 60.0 | |
| SelfThinker (Mix) | 5.5 | 74.7 | 70.2 | 79.3 | 54.7 | 58.0 | 83.5 | 60.8 | |
| SelfThinker (Vote) | 13.0 | 81.9 | 67.0 | 80.0 | 60.0 | 59.3 | 82.4 | 63.4 | |
| SelfThinker | 15.8 | 80.1 | 70.2 | 82.3 | 60.0 | 58.2 | 81.7 | 64.0 | |
| vs. ThinkMorph-7B | – |
| Task and direction | Yield | Top-1 AUC | Win rate (%) | Margin (nats) |
|---|---|---|---|---|
| Navigation, answer direction | 0.674 | 0.821 | 57.0 | 2.10 |
| Visual search, answer direction | 0.578 | 0.660 | 54.1 | 0.20 |
| Visual search, vote direction (label-free) | 0.578 | 0.647 | 54.5 | 0.21 |
| accurate-vote subset (93% of items) | 0.583 | 0.654 | 54.9 | 0.23 |
| Method | Configuration | Average | vs. ThinkMorph-7B |
|---|---|---|---|
| ThinkMorph-7B | Base interleaved model | 52.7 | – |
| SelfThinker (Nav) | On-policy self-distillation with verified navigation thoughts | 60.0 | |
| SelfThinker (Mix) | On-policy self-distillation with combined navigation and visual-search thoughts | 60.8 | |
| Prompt-OPSD | Visual-search distillation with transition prompt only (no second image) | 60.7 | |
| Noise-OPSD | Visual-search distillation with uniform RGB noise in place of the thought | 61.8 | |
| SelfThinker (Vote) | Visual-search distillation with thoughts verified via majority voting (label-free) | 63.4 |
| Task | Method | Margin (nats) | Win rate (%) | Top-1 AUC | Yield |
|---|---|---|---|---|---|
| Navigation | ThinkMorph-7B | 2.10 | 57.0 | 0.821 | 0.674 |
| Navigation | Rand-RFT | 2.06 | 57.3 | 0.825 | 0.659 |
| Navigation | SelfThinker -Gen | 2.96 | 60.0 | 0.847 | 0.694 |
| Visual search | ThinkMorph-7B | 0.20 | 54.1 | 0.660 | 0.578 |
| Visual search | SelfThinker -Gen | 0.27 | 54.4 | 0.675 | 0.632 |
Appendix figures & tables14 assets
Supplementary material from the paper’s appendix.
Appendix
| Pool | Problem image | Question and answer | Reference thought |
|---|---|---|---|
| Navigation | Frozen-Lake grid, to , 12–28% holes, px | Move sequence along the unique shortest path (2–14 moves, mean 5.1) | Path overlay |
| Visual search | 5–8 non-overlapping shapes (5 shapes, 8 colours), px | Colour of a target shape or shape of a target colour (13 classes) | Red bounding box |
| Setting | SelfThinker -Gen (generation update) | SelfThinker (understanding update) |
|---|---|---|
| Trainable pathway | Generation and understanding (shared decoder) | Understanding; generation pathway unused |
| Objective | Flow matching on thought latents (weight 1.0), cross-entropy on answer (0.25) | Token-level JSD, , temperature 1.0, top- 256, per-token clip 0.05 |
| Teacher | – | EMA of the student, decay 0.995 |
| Student sampling | – | Temperature 1.0, up to 128 new tokens, one image skip |
| Schedule | 1,000 steps; cosine decay, warmup 100, learning rate to | 1,000 steps; cosine decay, warmup 200, learning rate to |
| Optimizer | AdamW | AdamW , gradient clipping 1.0 |
| Method | VSP | ChartQA | V* | MMVP | SAT | BLINK | CV-B. | Average | |
| ThinkMorph-7B | 1.2 | 52.7 | 53.9 | 79.0 | 55.3 | 53.6 | 73.4 | 52.7 | – |
| Understanding evolution: navigation and mixed pools | |||||||||
| SelfThinker (Nav) | 2.0 | 78.1 | 63.4 | 80.3 | 58.0 | 60.3 | 78.0 | 60.0 | |
| SelfThinker (Mix) | 5.5 | 74.7 | 70.2 | 79.3 | 54.7 | 58.0 | 83.5 | 60.8 | |
| Understanding evolution: visual-search pool and teacher controls | |||||||||
| Prompt-OPSD | 3.3 | 77.7 | 68.6 | 79.7 | 56.7 | 58.4 | 80.6 | 60.7 | |
| Method | Own | None | Neutral | True ans. | Thought only | Own None |
|---|---|---|---|---|---|---|
| ThinkMorph-7B | 45.9 | 39.7 | 38.0 | 40.7 | 35.4 | |
| SelfThinker (Nav) | 92.9 | 92.9 | 91.2 | 96.4 | 89.1 | |
| SelfThinker (Vote) | 95.4 | 95.3 | 95.3 | 99.7 | 93.0 | |
| SelfThinker | 99.0 | 98.9 | 98.9 | 99.5 | 96.5 |
| Method | real | real † | wrong † | gray | scr. | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ChartQA, horizontal bars (444 items, 222 with a different previous image) | |||||||||||||
| ThinkMorph-7B | 32.2 | 13.1 | 8.6 | 5.0 | 5.6 | 30.6 | 10.1 | 4.7 | 3.8 | 32.7 | 20.5 | 4.1 | 4.7 |
| SelfThinker (Nav) | 51.4 | 33.3 | 11.7 | 9.7 | 10.1 | 48.9 | 19.4 | – | – | 48.2 | 36.7 | 10.8 | 10.1 |
| Prompt-OPSD | 63.3 | 52.7 | 9.0 | 11.7 | 10.4 | 59.0 | 24.5 | 12.4 | – | 60.1 | 45.0 | 14.4 | – |
| Noise-OPSD | 66.2 | 58.1 | 14.4 | 12.6 | 10.8 | 62.4 | 26.6 | 12.6 | – | 67.1 | 46.8 | 18.2 | 14.4 |
| SelfThinker | 67.3 | 52.3 | 14.9 | 10.4 | 11.3 | 64.9 | 25.7 | 11.7 | 13.7 | 68.9 | 52.3 | 18.2 | 12.8 |
| Method | real | real † | wrong † | gray | scr. | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| MMVP (300 items) | |||||||||||||
| ThinkMorph-7B | 44.7 | 44.7 | 47.7 | 49.0 | 45.3 | 45.3 | 47.3 | 49.7 | 47.0 | 47.3 | 51.7 | 46.3 | 50.0 |
| SelfThinker (Nav) | 69.3 | 69.3 | 40.0 | 48.3 | 45.0 | 69.7 | 61.7 | 53.0 | 49.7 | 67.7 | 68.7 | 63.3 | 57.3 |
| Prompt-OPSD | 67.0 | 67.0 | 36.7 | 49.7 | 49.0 | 66.7 | 61.0 | 54.0 | – | 68.0 | 65.0 | 62.3 | 56.7 |
| Noise-OPSD | 73.3 | 73.3 | 29.0 | 49.3 | 48.7 | 70.3 | 61.3 | 56.7 | – | 72.7 | 69.3 | 62.7 | 54.7 |
| SelfThinker | 78.0 | 78.0 | 26.7 | 48.7 | 46.3 | 74.0 | 62.7 | 53.3 | 52.7 | 79.7 | 72.3 | 63.0 | 62.7 |
| Method | real | scr. | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| V* (191 items) | |||||||||||||
| BAGEL-7B | 48.7 | 37.7 | 48.2 | – | 42.4 | 40.3 | 52.4 | 44.5 | 42.4 | 43.5 | 44.5 | 43.5 | 40.8 |
| ThinkMorph-7B | 34.0 | 36.6 | 35.6 | – | 34.6 | 36.1 | 36.1 | 35.1 | 35.1 | 37.2 | 36.1 | 37.7 | 36.1 |
| SelfThinker (Nav) | 56.0 | 38.2 | 57.6 | – | – | 38.2 | 56.5 | 53.9 | – | 52.9 | 54.5 | 50.8 | 44.0 |
| SelfThinker | 67.0 | 34.0 | 66.5 | – | 61.8 | 46.1 | 66.5 | 56.5 | 46.1 | 57.1 | 57.1 | 53.9 | 47.6 |
| MMVP (300 items) | |||||||||||||