From Seeing to Reporting: A Theory of Reliable Visual Set Generation in Vision-Language Models
Organizations: Systems Engineering, University of California, Berkeley, Berkeley, CA, USA · Department of AI, Quotr AI, Emeryville, CA, USA
Abstract
Vision-language models (VLMs) are asked to report what they see: to count objects, box them, parse a screen or pick a click target (GUI grounding). We argue that reporting is part of the visual task, not merely its formatting. In a dense scene with 173 shapes, GPT-6.1 lists 173 records that match every shape, yet the counts it states in the same response sum to 188. From Seeing to Reporting (FSR) is a theory of visual reporting and a set of inference-time procedures that improve the reports of frozen VLMs. It models reporting as a chain from responses to decoded records, constructed sets and task answers, linked by task-compatible matching. The chain gives exact relations for deleting records, averaging their coordinates and switching readouts, and it splits the error of one answer chosen among several calls into missing candidates, lost representatives and wrong choices. These relations guide procedures for counting, detection, document layout, screen parsing and GUI grounding that use the task specification and a shipped configuration, without requiring labels from the target task. On 50 dense synthetic scenes, a one-call reporting-and-decoding protocol cuts per-type count error by 85.2% for GPT-6.1 and 98.8% for Claude Sonnet 5.5. On 600 ScreenSpot-Pro items, a GUI-grounding tier that combines three models lowers the miss rate from 13.67% for GPT-6.1's two-stage zoom to 9.33%, against 12.67% for three such zooms combined by a cluster vote at about the same cost. A plain vote over the same three models misses 12.33%: the other models supply the candidates, and selecting among them turns those candidates into fewer misses. We release the protocols, the stored responses and the analysis code.
Figures & tables
| Term | Meaning |
|---|---|
| call, response | One request to a model API, and the raw text it returns; every attempted call is stored and costed. |
| interface | Everything that defines a call except the image: model, reasoning setting ( lowest or default ), output cap, prompt, output schema, and the view of the image that is sent. |
| target | A true object in the image, given by the annotation (a point or box with a class, or the box of the element a click should hit). |
| record | One object as reported by the model: a class name and a location (a point or a box). |
| list | The sequence of records in one response. A list-first prompt asks for the list before any counts; a count-first prompt asks for counts first. |
| stated count | The numbers the model writes for how many objects of each class it found (for example the field counts_by_type ). |
| Task | Scoring compatibility | Association across calls | Records that are not valid |
|---|---|---|---|
| SCP (synthetic, 100 images) | same class, within 30 px | not used | class unknown after the alias map: kept for status, excluded from the delivered set |
| SCP-dense (50 images) | same class, within 20 px | not used | as for SCP |
| Counts, one class (PixMo-Count, FSC-147; Section 7.2 ) | absolute error of the count against the annotated number; no matching | not used | every decoded point is counted |
| Counts, several classes (30 DOTA windows, 50 DocLayNet pages; Section 7.2 ) | per-class count error; DOTA objects marked difficult or less than half inside the window are not targets and there are no ignore regions, so records on them are counted like any other record; list recall (diagnostic only): a record centre inside a true box of the same class, one to one | not used | class unknown after the declared alias map: kept in the response, not counted |
| Detection boxes (SKU-110K, DOTA, DocLayNet) | same class, IoU ; unmatched records in ignore regions not scored | same class, IoU | label outside the vocabulary or box outside the image: kept for audit, excluded from the delivered set, counted as invalid |
| FSC-147 points | within half the mean short side of the three exemplar boxes | within the same distance | point outside the image: kept for audit, excluded and counted as invalid |
| Result | Quantity | Decision | Check |
|---|---|---|---|
| Intersection threshold (Prop. 2 ) | marginal matching rate of unconfirmed records | confirm and delete for set error on over-reporting sources, keep a single call on under-reporting sources; label rule of Step 7 | from 5 labelled images the threshold predicts the sign on the other images in 83% of draws; the Step 7 rule lowers the loss against the better decision from 0.43 (family default alone) to 0.17 errors per image (§ 7.4 ) |
| Geometry term (Prop. 3 ) | selection and geometry terms | coordinate averaging is a separate switch: on by default, the deletion-only variant in the menu | averaging helps in 37 of 54 pairs and hurts in 13; the threshold’s only two failures on averaged intersections are geometry reversals (§ 7.4 ) |
| Two readouts (Prop. 4 ) | gap between stated count and list count, without labels | bounds what switching readouts can gain, without labels | on aerial and document images, for GPT-6.1 and Sonnet 5.5, the gap is 0.1 to 7.4 against errors of 5 to 46, and switching readouts changes little (§ 7.2 ) |
| Partner (Prop. 5 ) | confirmation rates , | a partner must reject more false than true records; cross-model partners in the menu | cross-model partners separate the two better in 32 of 36 comparisons (§ 7.4 ) |
| Coverage (Prop. 9 ) | rescue rate on the menu’s misses | three different models, not three calls of one | a GPT-6.1 repeat rescues 18%, then 7.5%; Sonnet 5.5 29%, Gemini 3.8 37%; given GPT-6.1’s 82 misses, rates from the 260 GUI items give 46 items with no correct candidate among the 600, against 43 observed (§ 7.7 ) |
| Three sources (Prop. 8 ) | , , | the steps of Algorithm 2 ; three sources, not four | a fourth source lowers from 43 to 36 and raises from 3 to 7 and from 10 to 11 (§ 7.7 ) |
| Loss and family | Transferred construction | Final default | Evidence and reason |
|---|---|---|---|
| , over-reporting families (detection, layout, screen parsing) | three-call unanimity, averaged coordinates (chosen in all six folds) | the same; list interface, lowest setting | Significantly better in 9 of 15 cells, significantly worse in none, not significant in 6. |
| , under-reporting family (dense points, FSC-147) | three-call unanimity, averaged coordinates | single call, no deletion; list interface, lowest setting | The transferred construction is worse in 2 of 3 cells. Deleting unconfirmed records raises when their marginal matching rate is above 1/2 (Proposition 2 ); on FSC-147, is 0.39 to 0.90 and deletion hurts in 7 of 9 pairs (Section 7.4 ). |
| F1 | three-call union (five folds) or majority (one fold) | single call; on detection sources, interface and setting per model (GPT-6.1: regions, lowest; Sonnet 5.5: regions, default; Gemini 3.8: list, default); on screen sources, list interface, lowest setting | The transferred construction is better in 2 of 18 cells, worse in 4 and not significant in 12. A configuration chosen on three detection sources is better on the fourth in 5 of 12 cells and worse in 1 (Section 7.9 ). |
| Count | not part of the transfer | single call, list-first request; GPT-6.1 and Sonnet 5.5 lowest, Gemini 3.8 default setting; list count, with the stated count as declared fallback | Sections 7.2 and 7.3 . |
| Click (hit in the target) | not part of the transfer | the user’s model, two-stage zoom; GPT-6.1 and Sonnet 5.5 default, Gemini 3.8 lowest setting; Algorithm 2 when the budget covers its planned worst case | On 600 ScreenSpot-Pro items the default setting lowers Sonnet 5.5’s miss rate by 4.0 points and does not change GPT-6.1’s significantly; Algorithm 2 lowers the miss rate by 4.33 points against GPT-6.1’s zoom (Section 7.7 ). |
| Failed assumption | How we know | Revised assumption and direct check | New consequence and test |
|---|---|---|---|
| The intersection threshold, applied to intersections with averaged coordinates, predicts whether confirmation helps. | Wrong sign in 2 of 54 base/partner pairs. | The threshold governs deletion only; coordinate averaging is a separate term (Proposition 2 , Proposition 3 ). Exact identity: both terms add up to the observed change on every image of all 54 pairs. | The averaging term can take either sign and can reverse the result. Observed: positive in 37 pairs, negative in 13; it reverses the deletion-only result in two pairs, which accounts for both former exceptions (Section 7.4 ). The deletion term, in turn, can be predicted from on 5 labelled images in 83% of draws (Section 7.4 ). |
| Similar quality is what makes a second model a useful confirming partner. | On ScreenParse the three models have similar set error (16.2, 13.3, 16.0), yet among constructions with averaged coordinates the best cross-model construction is not significantly different from the best same-model one ( , ): similar aggregate quality does not establish a benefit. | A partner helps if it rejects more of the base model’s false records than it loses of its true ones (Proposition 5 ). Direct check across pairs: cross-model partners separate the two better than same-model partners in 32 of 36 comparisons; the 4 exceptions are partners that confirm few of the base model’s true records. | Conditional consequence: a base with many true and few false records gains only if the partner keeps almost all of its true records ( dominates ), and a weaker partner usually keeps fewer, so cross-model confirmation is expected to do worst where the base model is strongest. Observed association across transfer cells: all 5 significantly worse cells are cells where the base model is strongest, and 20 of the 24 cells where it is not strongest improve (Section 7.9 ). |
| A count written first, or given in the prompt, pulls the list length like a quota for every model. | Giving a count moves list length with slope at most 0.004 for GPT-6.1 and Sonnet 5.5 on SCP and SCP-dense (controlled comparison). | The pull depends on the model and on how reliable its enumeration is. Direct check: slope 0.17 to 0.20 on PixMo, and 1.63 for Gemini 3.8 on SCP-dense, where its lists degenerate. | Asking for the list before the counts should not hurt and should help where enumeration is reliable. Observed in a controlled comparison under the same mapped readout: list-first lists beat count-first lists for all three models ( , , ; Section 7.2 ). The list-first prompt also adds the row-by-row scan and the allowed class names, so this is a test of the protocol, not of order alone. |
| Gemini 3.8 has a coordinate spread that a different coordinate convention reduces. | Pixel versus grid convention: , n.s. (controlled comparison). | Current models make no coordinate-frame error on SCP. Direct check: systematic offset at most 0.3 pixels, slope 1.000, spread 0.9 to 1.5 pixels, against a 30-pixel tolerance. | References that correct coordinates (grids, ticks) should not improve localization. Observed in controlled comparisons: localization changes by at most 0.23 pixels in every arm. Any effect of an overlay must come through how the model writes its list (next row). |
| A grid helps Gemini 3.8 by improving localization. | The grid lowers set error by 3.5 per image at the lowest setting, but localization does not change, and at the default setting the grid makes detection slightly worse (controlled comparisons). | The grid acts on the record format: its gain falls on records that omit their class field. Association within lists: a record omits its class more often when the previous record has the same class (logistic regression controlling for position in the list: in log-odds, arm fixed effects, intervals clustered by image). This path explains only a small part of the grid’s gain. | An order that interleaves classes should lower omissions, and grouping by class should raise them. Observed in a controlled comparison: a row-by-row scan lowers set error by 11.5 per image against 3.5 for the grid, and grouping by class raises it (Section 7.3 ). |
| Experiment | What changes | Calls |
|---|---|---|
| Readout | 13 prompt arms on SCP, SCP-dense, PixMo | 7,900 |
| Readout, full protocol | SCP-dense; three models at the lowest setting, Gemini 3.8 also at the default (16k and 32k caps) | 250 |
| Multi-class readout | count-first vs. list-first, DOTA and DocLayNet | 574 |
| Grid | grids, ticks, cells, scan, type names | 1,340 |
| Tiling | count-first, list-only, tiles (FSC-147) | 1,800 |
| Detection | list / regions two settings, 4 datasets | 6,523 |
| One call | Common remedy | Second common remedy | Ours (Section 5 ) | |
| Repair the readout: dense counting (SCP-dense, 50 images, per-type count error; cost per image) | ||||
| GPT-6.1 | 10.84 ($0.029) | 8.32 (-$ 23.2% | n/a | 1.60 (-$ 85.2% |
| Sonnet 5.5 | 35.02 ($0.031) | 34.56 (-$ 1.3% | n/a | 0.42 (-$ 98.8% |
| Gemini 3.8 | 45.68 ($0.026) | 45.22 (-$ 1.0% | n/a | 52.80 (+$ 15.6% |
| Repair the view: clicks (ScreenSpot-Pro items with all four calls stored: 199, 196 and 200 items for GPT-6.1, Sonnet 5.5 and Gemini 3.8; miss rate; cost per item) | ||||
| GPT-6.1 | 11.1% ($0.0061) | 10.5% (-$ 4.5% | 11.1% ($0.0123), 0.0% | 9.6% (-$ 13.6% |
| Effect | Comparison | GPT-6.1 | Sonnet 5.5 | Gemini 3.8 (lowest) |
|---|---|---|---|---|
| Pure readout, count-first | stated raw list count | 10.84 2.64 75.6% [ 83.2, 65.8] | 35.02 7.80 77.7% [ 91.3, 58.4] | 45.68 129.04 182.5% [163.3, 202.3] |
| Pure readout, list-first | stated raw list count | 10.10 1.60 84.2% [ 88.2, 79.6] | 18.52 5.42 70.7% [ 76.9, 64.8] | 46.56 95.04 ( ) 104.2% [72.7, 139.5] |
| Alias map, count-first | raw mapped list count | 2.64 2.64 (no change) | 7.80 5.42 30.5% [ 76.3, 12.7] | 129.04 129.04 (no change) |
| Alias map, list-first | raw mapped list count | 1.60 1.60 (no change) | 5.42 0.42 92.3% [ 97.0, 86.2] | 96.78 96.78 (no change) |
| Protocol | mapped list count, count-first list-first | 2.64 1.60 39.4% [ 57.6, 13.5] | 5.42 0.42 92.3% [ 97.7, 44.4] | 129.04 96.78 25.0% [ 32.7, 17.6] |
| Full method | count-first stated readout | 10.84 1.60 85.2% [ 89.1, 80.3] | 35.02 0.42 98.8% [ 99.5, 98.1] | 45.68 52.80 15.6% [ 5.3, 39.4] |
| Same response | Full method | ||||||
|---|---|---|---|---|---|---|---|
| Images | Model | List recall (%) | Readout gap | Error | Change, % [95% CI] | Error | Change, % [95% CI] |
| DOTA | GPT-6.1 | 88 | 2.2 | 40.5 40.8 | 0.7 [ 5.0, 4.5] | 40.7 | 0.4 [ 17.7, 16.4] |
| Sonnet 5.5 | 68 | 7.4 | 45.8 39.7 | 13.5 [ 34.7, 0.6] | 38.6 | 15.7 [ 38.2, 7.7] | |
| Gemini 3.8 | 26 | 44.2 | 33.2 63.9 | 92.4 [54.2, 145.0] | 39.2 | 18.0 [ 13.4, 61.2] | |
| Gemini 3.8, default | n/a | n/a | n/a | n/a | 23.9 | 28.2 [ 48.6, 0.1] | |
| DocLayNet | GPT-6.1 | 87 | 0.1 | 4.9 4.9 | 0.4 [ 1.6, 2.2] | 4.8 | 2.4 [ 12.4, 4.5] |
| Setting, cap | Readout error | List-count error | Set error | Unknown records | , unknown kept | Flagged (%) | JSON fail (%) | Hit cap (%) | Reasoning (%) | Output tokens | Cost ($) |
|---|---|---|---|---|---|---|---|---|---|---|---|
| lowest, 16k | 52.80 | 96.78 | 103.46 | 184.76 | 288.22 | 90 | 72 | 4 | 0 | 4,796 | 0.95 |
| default, 16k | 24.52 | 25.90 | 34.58 | 4.90 | 39.48 | 12 | 70 | 8 | 100 | 8,831 | 1.71 |
| default, 32k | 15.44 | 20.14 | 28.26 | 8.84 | 37.10 | 6 | 78 | 0 | 98 | 9,487 | 1.83 |
| Source | Sign from 5 labels (%) | Deletion helps | range | Selection range | Geometry / | Geometry range | Sign flips |
|---|---|---|---|---|---|---|---|
| DocLayNet | 74 | 6 | 0.11 to 0.64 | 2.2 to 2.1 | 6 / 2 | 1.1 to 3.1 | 1 |
| DOTA | 98 | 9 | 0.05 to 0.22 | 4.4 to 16.3 | 7 / 2 | 1.5 to 3.9 | 0 |
| FSC-147 | 81 | 2 | 0.39 to 0.90 | 21.8 to 0.3 | 8 / 0 | 0.0 to 0.4 | 0 |
| SKU-110K | 96 | 9 | 0.00 to 0.39 | 10.8 to 68.2 | 7 / 2 | 14.1 to 13.8 | 0 |
| GroundCUA | 86 | 6 | 0.06 to 0.72 | 16.8 to 37.7 | 4 / 5 | 7.7 to 15.4 | 1 |
| ScreenParse | 63 | 8 | 0.19 to 0.50 | 0.0 to 2.1 | 5 / 2 | 0.5 to 0.9 | 0 |
| Model | Partner | Alarm | Miss rate, all items (%) | Acceptance coverage (%) | Miss rate when acting (%) | Errors caught (%) |
|---|---|---|---|---|---|---|
| GPT-6.1 | Gemini 3.8 | same model, unzoomed | 8.9 | 95.8 | 7.6 | 17 |
| cross-model, unzoomed | 8.9 | 85.8 | 4.0 | 61 | ||
| same model, after zoom | 7.7 | 94.2 | 4.1 | 50 | ||
| cross-model, after zoom | 7.7 | 87.7 | 2.6 | 70 | ||
| Sonnet 5.5 | Gemini 3.8 | same model, unzoomed | 17.3 | 91.1 | 12.2 | 36 |
| cross-model, unzoomed | 17.3 | 78.5 | 6.4 | 71 |
| (a) Flows | |||||
|---|---|---|---|---|---|
| Flow | Misses | No point | Miss rate (%) | Calls | Cost / item ($) |
| GPT-6.1 zoom, lowest | 86 | 4 | 14.33 | 1.99 | 0.0081 |
| Sonnet 5.5 zoom, lowest | 104 | 15 | 17.33 | 1.98 | 0.0057 |
| Gemini 3.8 zoom, lowest | 88 | 0 | 14.67 | 2.00 | 0.0054 |
| Sonnet 5.5 zoom, default | 80 | 0 | 13.33 | 2.00 | 0.0066 |
| GPT-6.1 zoom, default | 82 | 2 | 13.67 | 2.00 | 0.0085 |
| Oracles | Selectors fitted with labels | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Source | Model | Constrained | Unrestricted | Cross-fit logistic | Cross-fit trees | In-sample logistic | In-sample trees | 10 labels logistic | Gap [95% CI] |
| DocLayNet | GPT-6.1 | 63.2 | 63.2 | 8.4 | 7.4 | 1.6 | 42.8 | 7.7 | 71.6 [60.1, 87.4] |
| DocLayNet | Sonnet 5.5 | 59.8 | 59.8 | 17.3 | 14.8 | 22.6 | 50.1 | 16.6 | 42.5 [34.2, 54.0] |
| DocLayNet | Gemini 3.8 | 45.2 | 45.2 | 5.9 | 1.3 | 6.9 | 37.6 | 3.2 | 39.3 [30.1, 50.3] |
| DOTA | GPT-6.1 | 74.3 | 74.4 | 39.9 | 39.6 | 40.4 | 52.1 | 39.6 | 34.4 [25.1, 42.6] |
| DOTA | Sonnet 5.5 | 41.9 | 41.9 | 23.3 | 22.6 | 24.1 | 31.1 | 21.3 | 18.6 [13.7, 25.1] |
| Same model only | Any construction (incl. cross-model) | |||||||||||
| F1 | F1 | |||||||||||
| Source | GPT | Son. | Gem. | GPT | Son. | Gem. | GPT | Son. | Gem. | GPT | Son. | Gem. |
| DocLayNet | 7 ⋆ | 10 | 3 | 3 ⋆ | 1 | 19 | 4 ⋆ | 36 | 13 | 7 ⋆ | 15 | 75 |
| DOTA | 22 | 16 ⋆ | 25 | 1 ⋆ | 1 | 2 | 30 | 17 ⋆ | 22 | 6 ⋆ | 11 | 17 |
| FSC-147 | 3 ⋆ | 7 | 5 | 2 ⋆ | 6 | 1 | 58 ⋆ | 1 | 1 | 35 ⋆ | 1 | 68 |
| SKU-110K | 25 | 32 | 10 ⋆ | 8 ⋆ | 1 | 13 | 30 | 36 | 8 ⋆ | 22 ⋆ | 165 | 21 |
| Chosen | |||||
|---|---|---|---|---|---|
| Source | Model | Interface | Setting | Change | 95% CI |
| DocLayNet | GPT-6.1 | regions | lowest | 1.5 | [ 2.6, 6.0] |
| DocLayNet | Sonnet 5.5 | regions | default | 6.5 | [ 10.4, 3.1] |
| DocLayNet | Gemini 3.8 | list | default | 14.4 | [6.6, 22.5] |
| DOTA | GPT-6.1 | regions | lowest | 1.7 | [ 5.3, 1.7] |
| DOTA | Sonnet 5.5 | regions | default | 3.1 | [ 1.8, 7.4] |
| Component | Use when | Measured effect | No significant gain, or harm, when | Cost |
|---|---|---|---|---|
| List first, read the list count; stated count only if the list is flagged | counting, above all several classes in dense scenes | per-type count error (GPT-6.1), (Sonnet 5.5); same response, readout only: to (§ 7.2 ) | one-class photographs, and aerial or document images whose lists miss objects: small, n.s. for GPT-6.1 and Sonnet 5.5 (§ 7.2 ) | one call |
| Allowed names in the prompt, aliases mapped in code | the model uses names outside the vocabulary | Sonnet 5.5’s “diamond”: error 5.42 to 0.42 on the same lists (Table 8 ) | names already in the vocabulary | no extra calls |
| Degeneracy flags; Gemini 3.8 at its default setting for counts | long lists that may break | flagged lists 90% to 12%, count error at the same cap (Table 10 ) | Gemini 3.8 at its lowest setting, even with the fallback: , n.s. | more reasoning tokens |
| Two-stage zoom | clicks, small targets | miss rate (Gemini 3.8), (Sonnet 5.5) (§ 7.5 ) | GPT-6.1: n.s. | about 2 calls |
| Views from a planner, merged; each view confirms only records it contains | small objects; views from a planner or crops | four crops (6% overlap) confirming a whole-image report: set error up to , better in 4 of 6 cells (§ 7.5 ) | where unconfirmed records are mostly true ( ): worse in 2 of 6 cells; tiles without a one-object overlap lose large objects | one call per view |
| Three-call unanimity, coordinates averaged | set error on over-reporting families (detection, layout, screens) | significantly better in 9 of 15 cells, significantly worse in none (§ 7.9 ) | F1 (2 better, 4 worse, 12 n.s.); under-reporting dense points (worse in 2 of 3) | 3 calls |
Appendix figures & tables8 assets
Supplementary material from the paper’s appendix.
Appendix
| Raw list count | Mapped list count | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Dataset | Model | Stated | Error | Change (%) | 95% CI | Error | Change (%) | 95% CI | |
| PixMo-Count total, 6.0 obj. | GPT-6.1 | 100 | 0.16 | 0.15 | 6.3 | [ 23.1, 0.0] | not applicable (one class) | ||
| Sonnet 5.5 | 100 | 0.17 | 0.14 | 17.6 | [ 38.5, 0.0] | not applicable (one class) | |||
| Gemini 3.8 | 100 | 0.33 | 0.27 | 18.2 | [ 37.5, 0.0] | not applicable (one class) | |||
| FSC-147 total, 43.8 obj. | GPT-6.1 | 100 | 2.73 | 2.70 | 1.1 | [ 8.5, 8.8] | not applicable (one class) | ||
| Sonnet 5.5 | 100 | 9.24 | 8.85 | 4.2 | [ 11.9, 2.1] | not applicable (one class) | |||
| Source | Base | Partner | Selection | Geometry | Total | |||
|---|---|---|---|---|---|---|---|---|
| DocLayNet | GPT-6.1 | same model | 0.92 | 0.48 | 0.527 | 0.05 | 0.30 | 0.35 |
| DocLayNet | GPT-6.1 | Sonnet 5.5 | 2.63 | 0.92 | 0.348 | 0.80 | 1.10 | 0.30 |
| DocLayNet | GPT-6.1 | Gemini 3.8 | 8.08 | 5.15 | 0.637 | 2.22 | 0.43 | 1.78 |
| DocLayNet | Sonnet 5.5 | same model | 1.33 | 0.32 | 0.237 | 0.70 | 0.10 | 0.80 |
| DocLayNet | Sonnet 5.5 | GPT-6.1 | 3.03 | 0.45 | 0.148 | 2.13 | 2.77 | 4.90 |
| DocLayNet | Sonnet 5.5 | Gemini 3.8 | 8.30 | 3.97 | 0.478 | 0.37 | 3.07 | 3.43 |
| Model | Points | Acceptance coverage (%) | Miss rate, same model (%) | Miss rate, cross-model (%) |
|---|---|---|---|---|
| GPT-6.1 | unzoomed | 93.1 | 7.0 | 5.8 |
| after zoom | 90.4 | 3.8 | 2.9 | |
| 91.7 | 3.8 | 3.4 | ||
| 93.1 | 3.7 | 3.7 | ||
| Sonnet 5.5 | unzoomed | 87.7 | 10.5 | 10.1 |
| 88.5 | 11.3 | 10.6 |
| Source | Model | Default applied | Single | Default | 95% CI | Recall | Cost |
|---|---|---|---|---|---|---|---|
| Same-model constructions only; set error per image (lower is better) | |||||||
| DocLayNet | GPT-6.1 | unanimity of 3 calls, averaged | 8.57 | 9.15 | [ 0.35, 1.65] | 67.7 | 0.0323 |
| DocLayNet | Sonnet 5.5 | unanimity of 3 calls, averaged | 13.77 | 12.33 | [ 2.25, 0.70] | 57.1 | 0.0384 |
| DocLayNet | Gemini 3.8 | unanimity of 3 calls, averaged | 11.83 | 12.18 | [ 0.63, 1.42] | 23.0 | 0.0132 |
| DOTA | GPT-6.1 | unanimity of 3 calls, averaged | 45.00 | 34.98 | [ 16.73, 4.97] | 46.4 | 0.0785 |
| DOTA | Sonnet 5.5 | unanimity of 3 calls, averaged | 37.87 | 31.95 | [ 8.70, 3.77] | 32.1 | 0.0472 |
| GPT-6.1 | Sonnet 5.5 | Gemini 3.8 | ||||
|---|---|---|---|---|---|---|
| Configuration | F1 | Cost | F1 | Cost | F1 | Cost |
| list, lowest | 56.2 | 0.0295 | 37.1 | 0.0201 | 33.1 | 0.0084 |
| regions, lowest | 58.6 | 0.0327 | 31.6 | 0.0291 | 39.4 | 0.0101 |
| list, default | 54.0 | 0.0436 | 44.7 | 0.0237 | 45.0 | 0.0192 |
| regions, default | 56.7 | 0.0475 | 48.1 | 0.0477 | 44.8 | 0.0200 |
| Experiment | Data and arms | Models | Calls | Cost |
|---|---|---|---|---|
| Pilot v1 | 12 procedural scenes, 768 px; responsibility-split arms; cap 8,192 | G5.6, G6.1, S5.5, O5.5, Q | 3,540 | $29.30 |
| Pilot v2 | 24 scenes, 1024 px, 16 to 384 targets; dose response | same | 4,080 | $47.50 |
| Subset execution | 12 scenes, 96 or 192 targets; representation and drift arms | G5.6, G6.1, O5.5, S5.5 | 1,924 | $53.84 |
| Scan responsibility and grids | 48 scenes; scan responsibility, grid on/off, granularity; repairs, smoke, supplement | above + Gem | 2,752 | $113.80 |
| Detection | SKU-110K, DOTA, DocLayNet, FSC-147, 60 images each; list / regions lowest / default; 16k control | G6.1, S5.5, Gem | 6,523 | $171.13 |
| GUI | ScreenSpot-Pro 200, ScreenSpot-v2 60, GroundCUA 60, ScreenParse 60; click and parse arms; pilots 1,050 | same | 7,232 | $67.77 |
| Model | Lowest setting as sent | Observed |
|---|---|---|
| GPT-6.1 | reasoning_effort=low | reasoning in most calls (SCP 100%, PixMo 61%, clicks 39%); default: 100% |
| GPT-5.6 | effort none | no reasoning |
| Sonnet 5.5 | thinking: between_tools | lowest: 0%; default (adaptive thinking): 0% to 23% on the dense, FSC and screen runs, 4 of 48 calls on controlled scenes, 0% to 90% on the detection sources by cell; pilots: not logged |
| Opus 5.5 | effort low (adaptive thinking cannot be disabled) | under 1% of logged calls at effort low; pilots: not logged |
| Gemini 3.8 | thinking_budget=0 | little on list and box tasks (FSC list 6%, regions 12%); still reasons on clicks and points (GUI clicks about 99%, PixMo 23%, FSC points 32%); default: 51% to 100% |
| Qwen3-VL | instruct model, no reasoning parameter | no reasoning |
| # | Claim | Operation | Comparator | Metric | Evidence |
|---|---|---|---|---|---|
| H1 | On SCP-dense image 28, GPT-6.1 lists 173 records that match all 173 shapes and states counts that sum to 188. Exact lists: GPT-6.1 20 of 50 scenes, with wrong stated counts in 19; Sonnet 5.5 39 of 50, wrong in all 39. List length misses the true total by 0.04 and 0.02; stated totals by 7.78 and 10.48 | none (same response) | stated counts, same response | exact list (every record matched, every shape covered); total-count error; SCP-dense 50, lowest setting | Fig. 1 , Table 8 |
| H2 | Reading the list cuts per-type count error by 71% to 84% | list count | stated per-type counts, same response | per-type error; GPT / , Sonnet / (two protocols) | Table 8 |
| H3 | Complete reporting and decoding protocol (GPT-6.1), (Sonnet 5.5); Gemini 3.8 (lowest) , not significant | list-first request, scan, allowed names and alias map, readout of Step 6 | count-first prompt, stated count | per-type error | Table 8 |
| H4 | Alias map takes Sonnet 5.5 from 5.42 to 0.42 | alias map on the same list | raw list count of the same list | per-type error | Table 8 |
| H5 | Degeneracy check flags 45 of 50 Gemini 3.8 (lowest) lists; 40 fall back to the stated count, 5 keep the list count | four L3 flags | none | flag rate, readout branch | Table 10 |
| H6 | Default setting at the same 16k cap: flagged lists 90% to 12%, readout error ; 32k cap: further , not significant | setting, then cap | lowest 16k, then default 16k | count readout error | Table 10 |
Vision-Language Models
Vision-language models connect visual inputs with text for retrieval, question answering, generation, and grounded multimodal reasoning.
See all 734 papers