alphaFeedback

WorksComputer Science

Token-Set Choice Confounds POPE: A Systematic Audit of Yes/No Extraction in VLM Hallucination Evaluation

AI contributions
  • Claude
View details
Ancillary data
1 code link
View

Abstract

We set out to reproduce a recent hallucination-mitigation result on the POPE benchmark. The LLaVA-1.5-7B baseline we measured, 82.21 F1 on the adversarial split, sat 1.21 to 8.67 points above the adversarial baselines we planned to compare against (81.00, 79.30, and 73.54). We looked at the evaluation code and found a readout choice that moves F1 on its own. A two-token logit readout decides yes versus no by comparing two vocabulary IDs, 3582 ("yes") and 1217 ("no"). Across 9,000 greedy-decode questions spanning all three splits, neither ID is generated even once. The model emits " Yes" (token 3869) and " No" (token 1939), because SentencePiece prepends a space byte after the prompt suffix "ASSISTANT:". Read with an eight-token lookup that covers the space-prefixed surface forms, LLaVA-1.5-7B scores F1 0.8221, 0.8498, and 0.8713 on the adversarial, popular, and random splits. That 6.13-point adversarial shift exceeds the adversarial gain reported by five of the six papers we surveyed. None of them states its readout, and our reference ran under 4-bit NF4 quantization, so we cannot say how much of any reported gain a matched evaluation would keep. That comparison stays unresolved until readout and precision are matched. On the fixed baseline we run nine inference-time corrections of our own (none beat it) and dissect why the adversarial split resists logit-level intervention. In a 3,000-question probe, wrong predictions draw more image attention than correct ones (Cohen's d=−0.46d=-0.46, p=1.4×10−24p=1.4\times10^{-24}), the opposite of what grounding-based corrections assume. A four-readout audit across four further VLMs from three tokenizer families confirms the confound is protocol-level, not model-specific: porting the LLaVA-1.5 IDs verbatim drops F1 to 0.00 on the two disjoint-vocabulary models, whereas a tokenizer-derived readout holds between 0.80 and 0.92.

Introduction

Our starting point was ordinary. We picked POPE [8] to benchmark a hallucination-mitigation idea of our own, and the first step was to reproduce the LLaVA-1.5-7B [12] baseline. Running the model in 4-bit on a single NVIDIA RTX 3070 Ti gave us 82.21 F1 on POPE adversarial. The adversarial baselines we meant to beat sat at 73.54, 79.30, and 81.00. We looked at the evaluation code and found a readout choice that moves F1 on its own: a two-token logit-readout pattern. Whether any published method used it, we could not confirm (§ 4).

The pattern grabs the first generated token, then labels it by comparing two logits, ℓ3582\ell_{3582} for yes against ℓ1217\ell_{1217} for no. We logged the argmax token on all 9,000 of our runs. Token 3582 appeared 40th Conference on Neural Information Processing Systems (NeurIPS 2026). Workshop: VLM4RWD. zero times. Token 1217 also appeared zero times. What the model does produce, every single time, is token 3869 (‘ Yes’, space-prefixed) for a yes answer and token 1939 (‘ No’, space-prefixed) for a no. The reason is mechanical. The LLaMA-2 SentencePiece tokenizer [6, 16] glues a whitespace byte onto word-initial tokens in mid-sentence position, and the ASSISTANT: suffix leaves the answer word exactly there. IDs 3582 and 1217 are perfectly valid vocabulary entries. They simply never surface after ASSISTANT: under greedy decoding in this model.

Under greedy decoding the model never emits ID 3582 or 1217 at the answer position, so the two-token rule compares two candidates the decoder excludes. Take the 1,644 adversarial questions the model answers ‘ No’ on: the 3582 logit beats the 1217 logit on 924 of them. Of those, 660 sit on true-negative questions and flip into false positives; the remaining 264 sit on borderline label-yes questions and become true positives. Borderline positives flip at 0.810 and true negatives at 0.501, so the excluded logits may still track the model’s lean, and we call the failure candidate exclusion. The yes-rate climbs to 0.760, recall inflates to 0.9587, and F1F1 sinks to 0.7608. Figure 1 follows the path end to end. Nothing in the model’s behaviour changed. The same generated tokens, read under the eight-token rule, produce a different aggregate.

Decision path at the POPE answer position for LLaVA-1.5-7B

Figure 1. Decision path at the POPE answer position for LLaVA-1.5-7B. The model always emits a space-prefixed surface form (‘ Yes’ or ‘ No’). The two-token check inspects two IDs the model never produces in this context, so every comparison is between two candidates the decoder excluded. On the adversarial split that comparison reads 924 of the model’s 1,644 ‘ No’ answers (56%) as yes, pushing the yes-rate to 0.760 on a 50% positive split.

The 6.13-point shift matters because it exceeds the adversarial gain reported by five of the six papers we surveyed, and none of those papers states which readout produced its baseline. That leaves the published comparison open. Setting our 82.21 beside another paper’s baseline would not give a corrected gain, because our reference ran under 4-bit NF4 quantization and a published baseline may differ from it in readout, precision, prompt format, or decoding. We report what each paper states and leave the comparison unresolved until those factors are matched. We then turned the eight-token protocol on our own ideas and ran nine inference-time corrections, six grounding-based and three contrastive. Every one finished below 0.8221. The reasons are specific, and Appendix F walks through them with per-question diagnostics. These corrections and the attention probe (Appendix F.3) are secondary findings, and the readout audit does not depend on them.

Three claims organize the paper. Section 3 documents the space-prefixing behaviour across all 9,000 questions and traces how the protocol error propagates into reported metrics. Section 4 tabulates the baselines and gains that published methods report and explains why they cannot be set against ours until readout and precision are matched. Section 5 extends the audit to four additional VLMs and shows the confound is a property of the readout, not of any one model. Extended derivations, the nine failed corrections, the formal equivalence proof, and the full literature survey live in the appendix.

Background

The POPE benchmark

Li et al. [ [8] proposed POPE as a polling alternative to open-ended caption hallucination metrics, where drawing a clean binary correctness line is awkward. Each poll shows one image and one target object and asks: “Is there a {object} in the image?” Three negative-sampling strategies give three splits. Random draws absent objects uniformly from COCO [11]. Popular picks the most frequent COCO objects that happen to be missing from the queried image. Adversarial picks objects that co-occur with objects that are present (a snowboard scene gets asked about skis; a kitchen scene gets asked about a refrigerator). Every split holds 3,000 questions, balanced 50/50 between yes and no.

The distinction that matters for our claim is how the yes/no answer gets read off, and POPE-style evaluation admits several readouts. We separate four. (i) The official POPE benchmark [8], which we treat as the dataset plus the metric definition (yes/no F1, precision, recall, and yes-rate over the balanced splits). (ii) String-parsing evaluation, where a generation step produces text and the label is recovered by searching for “yes” or “no”; this is blind to which LLaMA token ID the model chose. (iii) A two-token logit readout, comparing the first-token logits at IDs 3582 and 1217. We do not claim the official POPE code mandates this readout, and we could not verify the readout of any published baseline we survey (§ 4). (iv) Our eight-token logit readout, which adds the alternate-case and space-prefixed forms so the comparison reads tokens the tokenizer actually emits after ASSISTANT:.

LLaVA-1.5 and its tokenizer

LLaVA-1.5 [12] wires a CLIP-ViT-L/14-336 vision encoder [13] to Vicuna-1.5-7B through a two-layer MLP. Vicuna-1.5 descends from LLaMA-2 [16], whose SentencePiece subword tokenizer [6] handles word boundaries by prepending a whitespace byte to word-initial tokens in mid-sentence position. So “Yes” owns two IDs in the LLaMA vocabulary: 8241 for the start-of-sentence variant (Yes) and 3869 for the mid-sentence variant (‘ Yes’). The same split holds for “yes” (3582 vs. 4874), “No” (3782 vs. 1939), and “no” (1217 vs. 694). The LLaVA-1.5 template ends with the literal string ASSISTANT:, so the next token is mid-sentence, the space byte is prepended, and the model emits 3869 or 1939. Appendix § 9 lists the raw decode outputs.

Evaluation-protocol sensitivity

Scores that drift with measurement choices are a familiar problem in NLP evaluation. Liang et al. [ [10] showed benchmark numbers move visibly with prompt format and few-shot setup; Zheng et al. [ [17] traced answer-ordering bias in LLM-as-judge protocols. Li et al. [ [9] found that a judge’s label probabilities shift with the output type a question is asked through, and compared answer extraction with direct adjudication. Our finding belongs to that family: a small, unexamined detail of how evaluation reads model output quietly becomes load-bearing for downstream comparisons. We keep the scope explicit. The conditions are a LLaMA-family tokenizer, the ASSISTANT: template, and greedy decoding. Methods that run generation and parse the output string are not touched by the two-token readout. Methods that inherit the two-ID lookup are, by an amount that tracks the share of the negative split the model answers “no” on (Eq. (1)).

The Token-Extraction Artifact

Experimental setup

We ran LLaVA-1.5-7B in 4-bit NF4 quantization via BitsAndBytes [2] on an NVIDIA RTX 3070 Ti with 8 GB VRAM, on transformers v4.40.1 with torch.manual_seed(42). Each question called model.generate with max_new_tokens=1 and output_scores=True. For each question we saved the argmax token ID and the decision for each readout below. The logits were compared in memory and not written to disk, so the records hold the sign of ℓ3582−ℓ1217\ell_{3582}-\ell_{1217} but neither value. A separate pass over the adversarial split saved only the maximum logit within each eight-token set (Appendix § 11). Greedy decoding has no sampling step, and that second, instrumented pass reproduced the sweep’s eight-token decision on 2,998 of the 3,000 adversarial questions; the other two sit within one fp16 step of a tie (Appendix § 14.§ 3). The full 9,000-question sweep took 76.3 minutes of wall-clock time, 0.508 seconds per question on this hardware.

Two-token protocol. The original rule: y^=1[ℓ3582>ℓ1217]\hat{y} = 1[\ell_{3582} > \ell_{1217}].

Eight-token protocol. The rule we recommend: y^=1[max⁡i∈Yℓi>max⁡j∈Nℓj]\hat{y} = 1[\max_{i \in Y} \ell_i > \max_{j \in N} \ell_j], with Y={3582,8241,4874,3869}Y = \{3582, 8241, 4874, 3869\} (surface forms yes, Yes, ‘ yes’, ‘ Yes’) and N={1217,3782,694,1939}N = \{1217, 3782, 694, 1939\} (no, No, ‘ no’, ‘ No’). The max aggregator matches greedy behaviour: a greedy decoder emits the single highest-logit token, and that token lands in YY exactly when max⁡Yℓ>max⁡Nℓ\max_Y \ell> \max_N \ell. A sum or softmax aggregator would weight all eight forms, including ones the model never samples, and drift away from the decoder’s own rule.

What the model actually generates

Table 1 gives the first-token distribution across the three splits. Two IDs carry every question: 3869 (‘ Yes’) and 1939 (‘ No’). The other six candidate tokens appear zero times. Tokens 3582 and 1217 are never the argmax on any of the 9,000 questions. That is all the zero counts establish: both IDs lose to a space-prefixed form every time, and the records hold neither of their logits (§ 3.1). They do hold the sign of ℓ3582−ℓ1217\ell_{3582} - \ell_{1217}, and that sign tracks the emitted answer. On all 3,893 questions where the model emits ‘ Yes’, the two-token rule also says yes. On ‘ No’ emissions it says yes on 0.810 of the adversarial label-yes questions and 0.501 of the label-no ones (§ 3.4). The excluded logits may track the model’s lean, so we treat the failure as candidate exclusion and make no claim about how large those logits are.

Split‘ Yes’ (3869)‘ No’ (1939)yes (3582)no (1217)
Adversarial1,3561,64400
Popular1,3031,69700
Random1,2341,76600
Total3,8935,10700

Table 1. First generated token counts across all POPE splits. LLaVA-1.5-7B produces only space-prefixed forms. The two-token protocol reads the two rightmost columns, zero in every split.

F1 under each protocol

Table 2 pairs the two protocols on the same set of predictions. The eight-token rule recovers the token greedy decoding would emit; the two-token rule compares two entries the decoder never selects. On the adversarial split the two-token readout reaches near-perfect recall (0.9587) by riding a 0.760 yes-bias, and precision pays for it, falling to 0.6307. Appendix § 10 shows the full confusion matrices and the running yes-rate curves behind these numbers.

SplitProtocolF1PrecisionRecallYes-rateΔ\Delta
AdversarialTwo-token0.76080.63070.95870.760+0.0613
Eight-token0.82210.86580.78270.452
PopularTwo-token0.79610.67970.96070.707+0.0537
Eight-token0.84980.91400.79400.434
RandomTwo-token0.83970.74590.96070.644+0.0316
Eight-token0.87130.96520.79400.411

Table 2. POPE results for LLaVA-1.5-7B under both protocols. Two-token evaluation buys recall on the adversarial split through a 0.760 yes-bias, not accurate detection; the precision row shows how much of that coverage is wrong.

The arithmetic in one line

The 6.13-point shift is not mysterious; it falls straight out of confusion-matrix arithmetic once the protocol error is written down. The eight-token rule preserves the generated decision, giving TP8=TTP_{8}=T, FP8=N−GFP_{8}=N-G, FN8=P−TFN_{8}=P-T, and TN8=GTN_{8}=G, where TT is the true-yes count and GG the true-negative count. The two-token rule flips a fraction ρN\rho_N of the true-negative ‘No’ emissions into false positives and lifts a fraction φ\varphi of the false-negative ‘No’ emissions into true positives. It never turns an emitted ‘Yes’ into a no: the paired records show zero such transitions among the 3,893 ‘Yes’ emissions on the three splits (Table 7). Under that observed condition the gap has a closed form:

SplitLabel8y→2y8y→2n8n→2y8n→2nRateValue
Adversarialyes1,174026462φ\varphi264/326 = 0.810
Adversarialno1820660658ρN\rho_N660/1,318 = 0.501
Popularyes1,191025059φ\varphi250/309 = 0.809
Popularno1120567821ρN\rho_N567/1,388 = 0.409
Randomyes1,191025059φ\varphi250/309 = 0.809
Randomno4304481,009ρN\rho_N448/1,457 = 0.307

Table 7. Paired readout transitions for LLaVA-1.5-7B on each POPE split (3,000 questions each, P=N=1,500P=N=1,500). Each column gives the eight-token decision followed by the two-token decision. The 8y→2n column is zero everywhere, so the two-token rule only changes ‘No’ emissions. Both rates are read from the 8n→2y column.

ΔF1=F18−F12=2T2T+(N−G)+(P−T)−2(T+φ(P−T))2(T+φ(P−T))+(N−G)+ρNG+(1−φ)(P−T)(1)\Delta F_1 = F1_8 - F1_2 = \frac{2T}{2T + (N-G) + (P-T)} - \frac{2(T+\varphi(P-T))}{2(T+\varphi(P-T)) + (N-G) + \rho_N G + (1-\varphi)(P-T)} \tag*{(1)}

Both rates are empirical transition rates, counted separately on each split, and every split has P=N=1,500P=N=1{,}500. On the adversarial split the direct counts fix every term: T=1,174T=1{,}174, G=1,318G=1{,}318, ρN=660/1,318=0.501\rho_N=660/1{,}318=0.501 and φ=264/326=0.810\varphi=264/326=0.810. This reproduces F18=0.8221F1_8=0.8221 and F12=0.7608F1_2=0.7608 exactly. Popular has T=1,191T=1{,}191, G=1,388G=1{,}388, ρN=567/1,388=0.409\rho_N=567/1{,}388=0.409 and φ=250/309=0.809\varphi=250/309=0.809, so TP2=1,191+250=1,441TP_2=1{,}191+250=1{,}441, FP2=112+567=679FP_2=112+567=679, FN2=59FN_2=59 and F12=2,882/3,620=0.7961F1_2=2{,}882/3{,}620=0.7961. Random has the same TT and φ\varphi but G=1,457G=1{,}457 and ρN=448/1,457=0.307\rho_N=448/1{,}457=0.307, so FP2=43+448=491FP_2=43+448=491 and F12=2,882/3,432=0.8397F1_2=2{,}882/3{,}432=0.8397. The rate φ\varphi stays near 0.81 on every split, while ρN\rho_N falls from 0.501 to 0.307 as the eight-token false positives drop from 182 to 43. Plugging the adversarial rates into the popular and random counts gives 0.7690 and 0.7761, well off the observed values, so the rates do not transfer between splits. The reconstruction is an accounting identity built from transitions counted on the same records. It confirms the bookkeeping; it does not test the mechanism independently, which would need the individual logits the records lack. Appendix C gives the full derivation, the paired transition table and the notation.

Comparability with Published Results

Table 3 lists the baseline, result, and gain that each surveyed paper reports for LLaVA-1.5-7B on POPE. None of these papers states which readout it used, and we do not hold their per-question logs, so the table cannot tell us whether a given baseline came from the two-token logits, the eight-token set, or parsed generated text. Our 82.21 cannot stand in for those baselines either. It ran under 4-bit NF4 quantization, and the published numbers may come from higher-precision runs, so a gap between our reference and a published baseline would mix the readout effect with a precision difference. The table therefore computes no gain against 82.21 and assigns no readout to any paper.

MethodRep. base.Rep. res.Rep. gainReadout
Tang et al. [15] (adv.)73.5484.35+10.81not stated
Tang et al. [15] (pop.)76.5387.09+10.56not stated
Tang et al. [15] (rand.)81.5489.55+8.01not stated
Seo et al. [14] (adv.)79.3080.00+0.70not stated
Chen et al. [1] (adv.)81.0081.80+0.80not stated
Huo et al. [3] (adv.)80.9082.50+1.60not stated
Jiang et al. [5] (adv.)75.0680.82+5.76not stated
Jana et al. [4] (adv.)82.0783.03+0.96not stated

Table 3. Baselines, results, and gains as each paper reports them for LLaVA-1.5-7B on POPE (F1×100). The “Readout” column records what each paper states. Our 82.21 reference ran under 4-bit NF4 quantization, so a comparison with published baselines measured at higher precision would mix readout effects with precision differences.

The adversarial gains in the table range from +0.70 to +10.81. Five of the six papers report less than the 6.13 points by which the readout alone moved our adversarial F1; Tang et al. report +10.81. The adversarial baselines run from 73.54 (Tang et al.) to 82.07 (Jana et al.), a spread of 8.53 points on one frozen checkpoint, and the baselines of Tang, Seo, and Chen (73.54, 79.30, 81.00) already span

7.46. Readout, prompt format, quantization, and decoding are possible sources of such a spread. The published numbers do not let us separate them, and separating them takes matched reruns of each method with the readout and the precision fixed and logged.

Tang et al. [2025] report gains of +10.81, +10.56, and +8.01 on the adversarial, popular, and random splits, from baselines of 73.54, 76.53, and 81.54. We found no public implementation for that paper (arXiv:2506.12609) as of June 2026. Seo et al. [2025] and Chen et al. [2025] report adversarial gains of +0.70 and +0.80 from baselines of 79.30 and 81.00. Each gain compares a method with a baseline from the same paper, so it is informative whenever both numbers share one readout and one precision. The papers do not say whether they do. If a method parsed generated strings, the readout we audit may not affect its numbers at all. Nothing here shows that any of these methods fails to help LLaVA-1.5-7B, or that it helps by less than reported. The size of each gain under a matched protocol stays unknown. A one-line statement of the readout in each paper, or a released evaluation script, would settle which readout produced each baseline.

Multi-Model Validation

The audit so far concerns one model. To separate “LLaVA-1.5 quirk” from “readout property,” we ran the identical four-readout audit on four more VLMs spanning three tokenizer families: LLaVA-1.6-Mistral-7B (Mistral vocabulary), InstructBLIP-Vicuna-7B and mPLUG-Owl2-LLaMA2-7B (LLaMA family), and Qwen2-VL-7B-Instruct (Qwen vocabulary). Each model saw all three splits at 3,000 questions per split, 9,000 per model. LLaVA-1.6-Mistral ran locally (RTX 3070 Ti Laptop, 4-bit NF4, transformers v4.44.2); the other three ran on Kaggle Tesla T4 GPUs under the same audit script. Qwen2-VL used its native chat template, since it was never trained on the LLaVA-1.5 prompt string; the other three used the LLaVA-1.5 template. Table 4 is the headline result, and two patterns hold across every model and split.

Model (tokenizer)Splitlegacy_2toklegacy_8tokdynamic_singlestring_parse
LLaVA-1.5-7B (LLaMA-2)adversarial0.76080.82210.82210.8221
LLaVA-1.5-7B (LLaMA-2)popular0.79610.84980.84980.8498
LLaVA-1.5-7B (LLaMA-2)random0.83970.87130.87130.8713
LLaVA-1.6-Mistral-7B (Mistral)adversarial0.66670.00000.85210.8521
LLaVA-1.6-Mistral-7B (Mistral)popular0.66670.00000.89530.8953
LLaVA-1.6-Mistral-7B (Mistral)random0.66670.00000.91630.9163
InstructBLIP-Vicuna-7B (LLaMA)adversarial0.70740.81830.81830.6667
InstructBLIP-Vicuna-7B (LLaMA)popular0.72770.85530.85530.6667
InstructBLIP-Vicuna-7B (LLaMA)random0.76130.88150.88150.6667
mPLUG-Owl2-LLaMA2-7B (LLaMA-2)adversarial0.77540.80010.80010.8001
mPLUG-Owl2-LLaMA2-7B (LLaMA-2)popular0.80600.83120.83120.8312
mPLUG-Owl2-LLaMA2-7B (LLaMA-2)random0.84660.87070.87070.8707
Qwen2-VL-7B-Instruct (Qwen)adversarial0.66740.00000.84570.8457
Qwen2-VL-7B-Instruct (Qwen)popular0.66710.00000.85780.8578
Qwen2-VL-7B-Instruct (Qwen)random0.66670.00000.86710.8671

Table 4. POPE F1 under the four readouts for four VLMs beyond the LLaVA-1.5-7B reference (top block, from Table 2). legacy_2tok and legacy_8tok hard-code the LLaVA-1.5 LLaMA-2 IDs; dynamic_single re-derives the single-token yes/no IDs from each model’s own tokenizer; string_parse greedily decodes and parses the first yes/no substring. Bold marks the F1 a careful practitioner would report.

  1. Porting the LLaVA-1.5 IDs verbatim is unsafe, and how badly it fails depends on the target vocabulary. The legacy_8tok readout scores F1 0.00 on LLaVA-1.6-Mistral and Qwen2-VL: their vocabularies put no yes/no mass on those IDs, so a comparison between two never-generated logits resolves the same way every time. On mPLUG-Owl2 and InstructBLIP, both LLaMA-family models that share the IDs, the fixed set still works. The failure is vocabulary mismatch, not something universal.

  1. A readout derived from each model’s own tokenizer is robust. The dynamic_single readout, comparing max-logits over the single-token yes/no IDs the tokenizer actually produces, stays

between 0.80 and 0.92 on every model and split. The spread across models is genuine accuracy variation, not an artifact of the readout.

The string_parse column matches dynamic_single to four decimals on LLaVA-1.6-Mistral, mPLUG-Owl2, and Qwen2-VL. On InstructBLIP it collapses to the 0.6667 all-yes floor across all three splits while dynamic_single holds at 0.82 to 0.88. The cause is the parse, not the model: the text our harness decoded for InstructBLIP did not begin with the answer token, so the first yes/no substring came from the wrong place. Appendix § 15 contains the token-ID map, the prompt-template robustness check, provenance notes, and the secondary verification run.

Practitioner Recommendations

The audit reduces to a handful of checks that any POPE-style evaluation on LLaMA-family VLMs can adopt without touching the dataset, the model, or the metric.

  1. Log the generated token ID and its decoded string for every question. A first-token argmax and its surface form are cheap to record and remove any need to guess the readout convention afterwards.

  2. Verify the yes/no token sets under the exact prompt template. Different suffixes push first-token mass onto different forms. The ASSISTANT: suffix we used puts it on the space-prefixed ‘Yes’/‘No’ pair.

  3. Prefer the tokenizer-derived single-token logit readout. It depends only on the logit vector, never on what text a generation loop returns. String parsing is equivalent to it (Theorem 1, Appendix § 12) only when it reads exactly the first generated token, which is where InstructBLIP broke.

  4. Release prediction-level records so reviewers can recompute any aggregate and check the readout convention independently.

Listing 1 is the readout we recommend. It derives the yes/no IDs from the model’s own tokenizer, generates one token, and compares the max-logits, so the same code runs unchanged across all five models here. It adds no generation cost beyond encoding four short strings once at setup.

Listing 1: Drop-in POPE answer readout. Derive the yes/no token IDs from the model’s own tokenizer, then compare first-token max-logits. Runs unchanged across tokenizer families.

tok = processor.tokenizer
enc = lambda s: tok.encode(s, add_special_tokens=False)
yes_forms = ["yes", " Yes", " yes", " Yes"]
no_forms = ["no", " No", " no", " No"]
yes_ids = [enc(s)[0] for s in yes_forms if len(enc(s)) == 1]
no_ids = [enc(s)[0] for s in no_forms if len(enc(s)) == 1]
out = model.generate(**inputs, max_new_tokens=1,
                     do_sample=False,
                     return_dict_in_generate=True,
                     output_scores=True)

logit = out.scores[0][0]
y = max(logit[i] for i in yes_ids)
n = max(logit[j] for j in no_ids)
pred = "yes" if y > n else "no"

Limitations and Conclusion

The mismatch we report has a narrow technical surface: one logit comparison between two IDs that LLaVA-1.5-7B does not produce after ASSISTANT: under greedy decoding. The reach of that mistake depends on which methods adopt the two-token readout. On POPE adversarial F1 the shift to the eight-token readout is 6.13 points, larger than the adversarial gain reported by five of the six papers we surveyed. None of those papers states its readout, so we cannot say which of their baselines the artifact touches, and we estimate no corrected gains. Our 82.21 reference also ran under 4-bit NF4 quantization, so setting it beside baselines measured at higher precision would mix readout and precision effects. No method is shown to be broken here. Numbers from different studies cannot be compared at face value until the readout and the precision are matched and reported. The correction is a one-line change in the evaluation code.

A few caveats bound the result. The main 9,000-question audit uses one checkpoint at one quantization level (4-bit NF4), so we cannot say whether the 6.13-point shift is the same at higher precision. The nine corrections (Appendix § 14) were run only on the adversarial split. The whitespace-prefix behaviour is shared across LLaMA-family tokenizers, but the specific IDs differ by vocabulary, so it is the diagnostic in Algorithm 1, not the fixed eight-token set, that carries the finding to a new model. Our nine inference-time corrections did not beat the corrected baseline, and the per-signal analysis suggests the visual-grounding and attention signals those methods rely on do not discriminate the cases the adversarial split is built to query. Beating that baseline may need training-time changes, not decoding-time ones. We encourage future POPE work to verify the first-token behaviour of its specific model-template pairing before fixing a readout token set.

Acknowledgments and Disclosure of Funding

We used Claude (Anthropic) as a coding assistant for experimental script development and debugging. All experimental design, analysis, interpretation, and writing are our own. This work received no external funding. Hardware: NVIDIA RTX 3070 Ti Laptop (8 GB VRAM) for the primary LLaVA-1.5 and LLaVA-1.6-Mistral runs; NVIDIA RTX 3050 Laptop (4 GB VRAM) for verification; Kaggle Tesla T4 × 2 for the mPLUG-Owl2, InstructBLIP-Vicuna, and Qwen2-VL evaluations.

Token ID Reference and Tokenizer Traces

Table 5 lists all eight yes/no token IDs. The decode outputs below were run in Python against the LLaMA tokenizer loaded straight from the LLaVA-1.5-7B repository, and they confirm what each ID produces:

AnswerToken IDDecoded surface form
yes3582yes
yes8241Yes
yes4874‘ yes’
yes3869⋆‘ Yes’
no1217no
no3782No
no694‘ no’
no1939⋆‘ No’

Table 5. Yes/no token IDs for LLaMA-family models. ⋆: the only IDs LLaVA-1.5-7B generated after the ASSISTANT: prompt in our runs.

from transformers import AutoTokenizer
name = "llava-hf/llava-1.5-7b-hf"
tok = AutoTokenizer.from_pretrained(name)

tok.decode([3582])  # -> ’yes’
tok.decode([8241])  # -> ’Yes’
tok.decode([4874])  # -> ’ yes’  (space-prefixed)
tok.decode([3869])  # -> ’ Yes’  (space-pref) *generated*
tok.decode([1217])  # -> ’no’
tok.decode([3782])  # -> ’No’
tok.decode([694])   # -> ’ no’  (space-prefixed)
tok.decode([1939])  # -> ’ No’  (space-pref) *generated*

The two IDs marked generated are the only ones that turned up as first tokens across all 9,000 questions.

Where the Mass Goes: Confusion Matrices and Convergence

Figure 2 contrasts the full 2×22 \times2 confusion matrices for adversarial POPE under both protocols. The eight-token matrix is close to balanced (TP 1,174, TN 1,318, FP 182, FN 326). Switch to two tokens and the false-positive count jumps from 182 to 842, as 660 true-negative ‘ No’ emissions flip to yes; the other 264 of the 924 flipped emissions land on borderline true-yes questions and become true positives, which is why precision drops while recall climbs.

Confusion matrices for the two-token and eight-token protocols

Figure 2. Confusion matrices for POPE adversarial (3,000 questions) under each protocol. Under two-token evaluation, 660 of the 1,318 true-No predictions migrate to the FP cell, leaving precision at 0.6307. Under eight-token evaluation only 182 stay there, and precision is 0.8658. The model’s behaviour is identical across both matrices; only the readout changes.

Figure 3 tracks the running yes-rate of each protocol over the 3,000-question adversarial stream. The eight-token line settles at 0.452 by question 600 and holds, sitting close to the ground-truth 0.500; the two-token line settles at 0.760. Figure 4 repeats the comparison across all three splits, and Figure 5 plots the first-token frequency for all eight surface forms.

Running yes-rate over the POPE adversarial stream for the two-token and eight-token protocols

Figure 3. Running yes-rate over the 3,000-question POPE adversarial stream. The eight-token protocol (blue) stabilises near the ground-truth yes-rate (dashed). The two-token protocol (red) stabilises around 0.760 because it reads 924 of the model’s 1,644 ‘No’ emissions (56%) as yes.

Running yes-rate across all three POPE splits under both protocols

Figure 4. Running yes-rate across all three POPE splits under both protocols. The two-token protocol (left) holds a yes-bias on every split, settling at 0.760, 0.707 and 0.644 on adversarial, popular and random; the eight-token protocol (right) tracks the underlying ground-truth mix.

First-token frequency at the answer position for all eight yes/no surface forms across the three POPE splits

Figure 5. First-token frequency at the answer position for all eight yes/no surface forms across the three POPE splits (log scale on yy). The four right-side forms, including yes (3582) and no (1217), receive zero first-token mass in any split. The two-token protocol reads only 3582 and 1217.

Figure 6 shows eight real adversarial samples, two per confusion-matrix outcome under the eight-token rule.

Eight POPE adversarial samples showing true-positive, false-positive, true-negative, and false-negative outcomes

Figure 6. Eight POPE adversarial samples from our run (question IDs 1, 7, 26, 72 on top; 14, 20, 35, 39 on the bottom), two per confusion-matrix outcome under eight-token evaluation. Blue borders mark predictions that match the label; red borders mark errors. The split queries objects that co-occur with present ones, which is what makes the FP and FN cases hard to fix with a generic visual-uncertainty signal.

Full Derivation of the Protocol Gap

Table 6 fixes the notation.

SymbolMeaning
P,NP, Nground-truth positive / negative question counts in the split
TTtrue-yes greedy generations (token 3869 produced when label=yes)
GGtrue-negative count: token 1939 produced when label=no (the TN cell under the eight-token rule)
GtotG_{\mathrm{tot}}total token-1939 emissions across the split, Gtot=G+(P−T)G_{\mathrm{tot}} = G + (P - T), because the model emits ‘No’ on true-negative and false-negative questions alike
ρN\rho_Nfraction of true-negative ‘No’ emissions the two-token rule flips to yes, counted per split
φ\varphifraction of false-negative ‘No’ emissions (label=yes) the two-token rule reads as yes, counted per split
ℓv\ell_vlogit at vocabulary id vv (first decoded position)
y^\hat{y}predicted label after the readout rule is applied

Table 6. Notation used in the derivation.

The eight-token rule preserves the model’s generated decision, so

TP8=T,FP8=N−G,FN8=P−T,TN8=G,(2)\mathrm{TP}_{8} = T,\quad\mathrm{FP}_{8} = N - G,\quad\mathrm{FN}_{8} = P - T,\quad\mathrm{TN}_{8} = G, \tag*{(2)}

where GG is the true-negative count, not the total token-1939 count GtotG_{\mathrm{tot}}. With G=1,318G = 1{,}318 and N=1,500N = 1{,}500 on the adversarial split, FP8=182\mathrm{FP}_8 = 182, matching Figure 2.

The two-token rule reads two logits the decoder never selects, so it does not preserve the decision. On a question where the model emits ‘Yes’ it could in principle answer no, but the records show it never does: across the three splits all 3,893 ‘Yes’ emissions are also read as yes (the 8y→2n column of Table 7 is zero). Given that observed condition the rule changes only ‘No’ emissions. It flips a fraction ρN\rho_N of the true-negative ones into FP and a fraction φ\varphi of the false-negative ones (label=yes questions the model had answered no) into TP:

TP2=T+φ(P−T),FP2=(N−G)+ρNG,FN2=(1−φ)(P−T),TN2=(1−ρN)G.(3)\mathrm{TP}_2 = T + \varphi(P-T), \quad\mathrm{FP}_2 = (N-G) + \rho_N G, \quad\mathrm{FN}_2 = (1-\varphi)(P-T), \quad\mathrm{TN}_2 = (1-\rho_N)G. \tag*{(3)}

Substituting Eqs. (2)–(3) into F1=2TP/(2TP+FP+FN)\mathrm{F1} = 2\mathrm{TP}/(2\mathrm{TP} + \mathrm{FP} + \mathrm{FN}) gives the closed form quoted as Eq. (1) in the main text. If an emitted ‘Yes’ were ever read as no, a third rate would enter TP2\mathrm{TP}_2 and FP2\mathrm{FP}_2; on these records that rate is zero.

What the records contain. Each of the 9,000 records holds the question ID, the label, the eight-token and two-token decisions, and the argmax token ID. The logits behind the decisions were compared in memory and not saved, so the records fix the sign of ℓ3582−ℓ1217\ell_{3582} - \ell_{1217} on every question but neither value. We therefore cannot report means, medians or ranks for IDs 3582 and 1217. A separate pass over the adversarial split, run with eager attention so that it could return attention maps, saved the maximum logit within the eight-token yes set and within the no set. Over its 3,000 questions these maxima average 24.63 (yes set) and 24.53 (no set). Each is a maximum over four IDs, so neither isolates 3582 or 1217. That pass matches the main run’s eight-token decision on 2,998 of 3,000 questions (it differs on IDs 77 and 2938, both fp16 ties or near-ties; Appendix § 14.§ 3), and every count below comes from the main run.

Per-split counts and rates. Table 7 pairs the eight-token and two-token decisions question by question. In the notation of Table 6, TT is the 8y→2y count on the label-yes row, N−GN-G the same count on the label-no row, GG the label-no 8n total and P−TP-T the label-yes 8n total.

On POPE adversarial the direct token-ID counts and the two confusion matrices fix every term: T=1,174T=1{,}174, G=1,318G=1{,}318, Gtot=1,644G_{\mathrm{tot}}=1{,}644, P=N=1,500P=N=1{,}500, with ρN=660/1,318=0.501\rho_N=660/1{,}318=0.501 and φ=264/326=0.810\varphi=264/326=0.810. The 924 two-token flips split into 660 landing on true-negative questions (becoming FP) and 264 landing on borderline true-yes questions (becoming TP):

F18=23482856=0.8221,F12=28763780=0.7608.(4)F_{18} = \frac{2348}{2856} = 0.8221,\qquad F_{12} = \frac{2876}{3780} = 0.7608. \tag*{(4)}

The two-rate closed form reproduces all four two-token cells exactly (TP2=1,438\mathrm{TP}_2=1{,}438, FP2=842\mathrm{FP}_2=842, FN2=62\mathrm{FN}_2=62, TN2=658\mathrm{TN}_2=658), so F12=0.7608F_{12}=0.7608 comes out without any empirical correction term. Set φ=0\varphi=0 and the lower bound is F12=2348/3516=0.6678F_{12}=2348/3516=0.6678; the observed 0.7608 is higher because

φ=0.810\varphi= 0.810. The same substitution with each split’s own rates gives

F12pop=2⋅1,4412⋅1,441+679+59=28823620=0.7961,F12rand=2⋅1,4412⋅1,441+491+59=28823432=0.8397.(5)\begin{aligned} \mathrm{F1}_{2}^{\mathrm{pop}} &= \frac{2 \cdot1,441}{2 \cdot1,441 + 679 + 59} = \frac{2882}{3620} = 0.7961,\\ \mathrm{F1}_{2}^{\mathrm{rand}} &= \frac{2 \cdot1,441}{2 \cdot1,441 + 491 + 59} = \frac{2882}{3432} = 0.8397. \tag*{(5)} \end{aligned}

against eight-token values of 2382/2803 = 0.8498 and 2382/2734 = 0.8713, matching Table 2.

Applying the adversarial rates (ρN=0.501\rho_N = 0.501, φ=0.810\varphi= 0.810) to the popular and random counts instead gives 0.7690 and 0.7761, so the rates have to be counted per split. All of this is an accounting identity.

The rates are read off the same transitions they are then used to rebuild, so the reconstruction checks the bookkeeping and carries no independent evidence about why the two logits fall the way they do.

Pooled flip rate. The fraction of all ‘No’ emissions the two-token rule reads as yes is 924/1,644 = 0.562 on adversarial, 817/1,697 = 0.481 on popular and 698/1,766 = 0.395 on random. Each pooled rate is the mix ρNG+φ(P−T)G+P−T\frac{\rho_N G+\varphi(P-T)}{G+P-T} of the two group rates. Since φ\varphi stays near 0.81, the decline across splits comes from ρN\rho_N. A comparison that ignored the input would flip true negatives at the same expected rate on every split. Instead ρN\rho_N is highest on adversarial, whose negatives name objects that co-occur with present ones, and lowest on random. Together with φ>ρN\varphi> \rho_N on every split, this pattern is consistent with ℓ3582−ℓ1217\ell_{3582}-\ell_{1217} carrying the model’s lean toward yes. Without the individual logits we cannot measure how strong that dependence is.

Formal Equivalence of String-Parse and Single-Token Readouts

The observation that dynamic_single and string_parse agree to four decimals on every run is not a coincidence. Under greedy decoding the two protocols are identical whenever the argmax token belongs to the single-token surface-form set, outside the tie case of Theorem 1. Writing the proof down turns an empirical regularity into a claim the rest of the paper can lean on.

Theorem 1 (Single-token readout equivalence). Let V\mathcal{V} be a model’s vocabulary and let Y⊂VY \subset\mathcal{V}, N⊂VN \subset\mathcal{V} be disjoint single-token surface-form sets for the yes and no answers. Let ℓ∈R∣V∣\ell\in\mathbb{R}^{|\mathcal{V}|} be the first-position logit vector on a fixed input, and t⋆=arg maxvℓvt^\star= \mathop{\rm arg\,max}_{v} \ell_v the greedy argmax token. Define

y^logit=1[max⁡i∈Yℓi>max⁡j∈Nℓj],y^str=1[decode⁡(t⋆)∈yes-strings].\hat{y}_{\mathrm{logit}} = \mathbf{1}\left[\max_{i\in Y}\ell_i > \max_{j\in N}\ell_j\right], \qquad\hat{y}_{\mathrm{str}} = \mathbf{1}[\operatorname{decode}(t^\star) \in\textit{yes-strings}].

If t⋆∈Y∪Nt^\star\in Y \cup N then y^logit=y^str\hat{y}_{\mathrm{logit}} = \hat{y}_{\mathrm{str}}, unless the maximum is tied between YY and NN with its lowest tied ID in YY.

Proof. Greedy decoding emits t⋆t^\star as the first token, and decode returns the surface form whose vocabulary id is t⋆t^\star. By construction YY holds exactly the single-token yes forms and NN the single-token no forms. Suppose t⋆∈Yt^\star\in Y. Then ℓt⋆≥ℓv\ell_{t^\star} \ge\ell_v for every v∈Vv \in\mathcal{V}, so ℓt⋆≥max⁡j∈Nℓj\ell_{t^\star} \ge\max_{j\in N}\ell_j, and ℓt⋆=max⁡i∈Yℓi\ell_{t^\star} = \max_{i\in Y}\ell_i since t⋆∈Yt^\star\in Y. The strict inequality max⁡Yℓ>max⁡Nℓ\max_Y \ell> \max_N \ell holds unless the maximum is tied between YY and NN, in which case greedy decoding returns the lowest tied ID, here t⋆∈Yt^\star\in Y, while the strict rule returns no; this is the exception in the statement. For the two IDs LLaVA-1.5 emits, 1939 precedes 3869, so a tie between them gives t⋆=1939∈Nt^\star= 1939 \in N, the case below. Exact ties do occur, because the logits are fp16 values: in the instrumented adversarial pass (Appendix § 14.§ 3) the yes-set and no-set maxima are equal on 8 of the 3,000 questions, while the main sweep’s records hold no logits, so ties there cannot be counted. Outside a tie between YY and NN, therefore, y^logit=1\hat{y}_{\mathrm{logit}} = 1 and y^str=1\hat{y}_{\mathrm{str}} = 1. The case t⋆∈Nt^\star\in N needs no exception: then max⁡Nℓ=ℓt⋆≥max⁡Yℓ\max_N \ell= \ell_{t^\star} \ge\max_Y \ell, so the strict rule returns no even on a tie, and both readouts give 0.

:::

Corollary 1 (Failure mode of the two-token readout). Let Y2⊂YY_2 \subset Y and N2⊂NN_2 \subset N be nonempty strict subsets. On a question whose greedy argmax satisfies t⋆∈(Y∪N)∖(Y2∪N2)t^\star\in(Y \cup N) \setminus(Y_2 \cup N_2), the readout y^logit(Y2,N2)\hat{y}_{\mathrm{logit}}(Y_2,N_2) compares two candidates the decoder did not select. Greedy decoding does not fix which of the two is larger, so the readout’s decision is not tied to the emitted answer: for every such t⋆t^\star there are logit vectors with argmax t⋆t^\star on which y^logit(Y2,N2)=y^str\hat{y}_{\mathrm{logit}}(Y_2,N_2) = \hat{y}_{\mathrm{str}}, and others on which the two differ.

Proof. If t⋆∈Y2∪N2t^\star\in Y_2 \cup N_2, both readouts agree by Theorem 1 applied to (Y2,N2)(Y_2,N_2), outside the tie case it excludes. Now let t⋆∈(Y∪N)∖(Y2∪N2)t^\star\in(Y \cup N) \setminus(Y_2 \cup N_2). The argmax condition requires only ℓt⋆≥ℓv\ell_{t^\star} \ge\ell_v for every v∈Vv \in\mathcal{V}; it places no constraint on the order of the logits inside Y2∪N2Y_2 \cup N_2. Pick a∈Y2a \in Y_2 and b∈N2b \in N_2 (disjoint, because YY and NN are) and set ℓt⋆=0\ell_{t^\star}=0, ℓa=−1\ell_a=-1, ℓb=−2\ell_b=-2 and ℓv=−3\ell_v=-3 for every other vv. Then t⋆t^\star is the argmax and y^logit(Y2,N2)=1\hat{y}_{\mathrm{logit}}(Y_2,N_2)=1. Swapping the values at aa and bb leaves t⋆t^\star the argmax and gives y^logit(Y2,N2)=0\hat{y}_{\mathrm{logit}}(Y_2,N_2)=0. Since y^str\hat{y}_{\mathrm{str}} depends on t⋆t^\star alone, it equals the readout in exactly one of the two cases.

The corollary says nothing about how large the excluded logits are or how often the readout agrees in practice; agreement is an empirical property of the model and template. The LLaVA-1.5 audit sits entirely in the second case. The generated token is always 3869 or 1939, and the two-token readout uses Y2={3582}Y_2 = \{3582\}, N2={1217}N_2 = \{1217\}, so (Y∪N)∖(Y2∪N2)(Y \cup N) \setminus(Y_2 \cup N_2) covers all 9,000 questions and Theorem 1 guarantees nothing about the two-token decision on any of them. On the records the readout agrees with the emitted answer on 2,076, 2,183 and 2,302 of the 3,000 questions in the adversarial, popular and random splits (0.692, 0.728, 0.767). The agreement is lopsided. It is complete on the 3,893 ‘Yes’ emissions and partial on ‘No’ emissions, where ℓ3582>ℓ1217\ell_{3582} > \ell_{1217} on 0.81 of the label-yes questions and on 0.307 to 0.501 of the label-no ones (Table 7). That asymmetry is what inflates the two-token yes-rate to 0.760 on adversarial, and it indicates that the excluded logits may track the model’s lean. Across the multi-model runs the dynamic_single and string_parse readouts report identical F1, precision, recall, and yes-rate to four decimals on LLaVA-1.6-Mistral-7B, mPLUG-Owl2, and Qwen2-VL. On InstructBLIP they disagree, and the disagreement does not contradict Theorem 1: the theorem equates the logit readout with parsing decode⁡(t∗)\operatorname{decode}(t^*), a single token, whereas string parsing here scanned up to six generated tokens of free text whose leading span did not begin with the answer token.

The Eight-Token Standard

For LLaMA-family VLMs evaluated on POPE under the USER: <image>\n{question}\nASSISTANT: template, the readout rule is

Y={3582,8241,4874,3869},N={1217,3782,694,1939},y^=1[max⁡i∈Yℓi>max⁡j∈Nℓj].(6)Y = \{3582, 8241, 4874, 3869\}, \quad N = \{1217, 3782, 694, 1939\}, \quad\hat{y} = 1\left[\max_{i \in Y} \ell_i > \max_{j \in N} \ell_j\right]. \tag*{(6)}

Algorithm 1 states the same rule in pseudocode and folds in the diagnostic pass we run for any new model-template pairing. The diagnostic on lines 2–9 is precisely what we wish a prior evaluation had run on LLaVA-1.5-7B. Token-set choice is context-dependent: a different model or template may push first-token mass onto other forms, so the diagnostic, not the fixed eight-token set, is what ports.

Algorithm 1 Eight-token POPE readout with new-model diagnostic.

Require: Model M\mathcal{M}, processor, prompt template T\mathcal{T}, POPE split D\mathcal{D}.

Require: Token sets Y={3582,8241,4874,3869}Y = \{3582, 8241, 4874, 3869\}, N={1217,3782,694,1939}N = \{1217, 3782, 694, 1939\}.

  1. Diagnostic (once per model-template combination):

  2. Sample 100 questions {qk}\{q_k\} from D\mathcal{D}.

  3. for each qkq_k do

  4. ℓk←M(T(qk))\ell_k \leftarrow\mathcal{M}(\mathcal{T}(q_k)) // first-token logits, max_new_tokens=1

  5. tk←arg⁡max⁡vℓk[v]t_k \leftarrow\arg\max_v \ell_k[v]

  6. end for

  7. if {tk}k⊈Y∪N\{t_k\}_k \not\subseteq Y \cup N then

  8. Add missing IDs to YY or NN before continuing.

  9. end if

  10. Evaluation:

  11. for each question q∈Dq \in\mathcal{D} do

  12. ℓ←M(T(q))\ell\leftarrow\mathcal{M}(\mathcal{T}(q))

  13. y^←1[max⁡i∈Yℓ[i]>max⁡j∈Nℓ[j]]\hat{y} \leftarrow1[\max_{i \in Y}\ell[i] > \max_{j \in N}\ell[j]]

  14. end for

  15. return F1, precision, recall, yes-rate.

Inference-Time Correction Experiments

With the baseline pinned at 0.8221, we asked a simple question: can any inference-time signal push past it on the adversarial split? Over roughly 90 GPU-hours we ran nine variants, six grounding-based and three contrastive. None improved adversarial F1. Section F.3 below reports the per-question diagnostics that explain why.

Methods tested

All nine variants act on the answer-position logits, before the eight-token decision rule. Six suppress yes-logits when an external visual-uncertainty signal is low; one applies uniform suppression as a control; two use contrastive image variants. Where relevant we sweep the suppression strength β\beta.

  • CLIP-B/32 certainty gating. Cosine similarity between CLIP-ViT-B/32 [13] patch features and the question-noun embedding gives a certainty in [0,1][0,1], used to scale yes-suppression as ℓyesmod=ℓyes−β(1−c)\ell_{\mathrm{yes}}^{\mathrm{mod}} = \ell_{\mathrm{yes}} - \beta(1-c), with β∈{1.0,1.5}\beta\in\{1.0, 1.5\}.

  • CLIP-L/14-336 certainty gating. Same procedure with the larger CLIP-L, using patch features through its visual projection head, so the embedding space matches LLaVA-1.5’s own vision tower.

  • Entropy gating. Answer-position token-distribution entropy, normalised to [0,1][0,1]; higher entropy means lower certainty and stronger suppression.

  • Magnitude gating. The relative magnitude of the yes-token logit in the full vocabulary distribution, used as a soft suppression threshold.

  • CLS feature similarity. Cosine similarity between the CLIP-ViT-L/14-336 CLS embedding and the question-noun text embedding.

  • Object-noun CLIP similarity. Full-image CLIP-B/32 embedding against the question-noun embedding, with rule-based noun extraction from the question template.

  • Uniform yes-suppression. A control that applies a fixed suppression to every question, to quantify how much movement is signal-driven versus a static yes-bias correction.

  • Generation midpoint gating. The yes/no logit gap read at an intermediate generation step rather than the final position.

  • VCD-noise perturbation. Following Leng et al. [2024], a second forward pass with Gaussian noise on the image embedding gives a contrastive logit set; the decision is taken on the difference.

Results

Table 8 reports F1, precision, and recall for all nine. Figure 7 sorts them by F1 and places them on the precision-recall plane. Every yes-suppression variant buys 1.5 to 6.0 precision points at a cost of 3.0 to 5.8 recall points, and in no case is the precision gain enough to cover the recall loss.

Table 8: Nine inference-time corrections on POPE adversarial (3,000 questions, eight-token rule). The closest, CLIP-B/32 β=1.0\beta=1.0, sits 0.005 F1 below baseline.

MethodF1PrecisionRecall
Eight-token baseline0.82210.86580.7827
CLIP-B/32 certainty (β=1.0\beta= 1.0)0.81710.90720.7433
CLIP-B/32 certainty (β=1.5\beta= 1.5)0.81040.92780.7193
CLIP-L/14-336 certainty0.81590.90310.7453
Entropy gating0.81640.90230.7453
Magnitude gating0.81480.89810.7467
CLS feature similarity0.81530.89630.7460
Object-noun CLIP0.81660.90170.7453
Uniform suppression0.81100.92210.7247
VCD-noise perturbation0.81690.90090.7440

Table 8.

Nine inference-time corrections on POPE adversarial, two views

Figure 7. Nine inference-time corrections on POPE adversarial, two views. (a) F1 against the corrected baseline at 0.8221. (b) The same methods on the precision-recall plane with F1 iso-curves. Every yes-suppression variant moves north and west of the baseline; no path crosses the F1=0.8221 iso-curve.

Why the adversarial split resists correction

To see the failure mode, we ran the full 3,000-question adversarial diagnostic, instrumenting every signal that featured in the nine methods and binning each question by its TP/FP/TN/FN outcome. The baseline splits into 1,173 TPs, 1,317 TNs, 183 FPs, and 327 FNs (2,490 correct, 510 wrong). This diagnostic was a separate instrumented run, and it differs from the main sweep (1,174 / 1,318 / 182 / 326) on 2 of the 3,000 questions, both fp16 ties or near-ties: on ID 77 (label yes) the yes-set and no-set maxima are both 24.6875 and the diagnostic’s strict-inequality rule answers no, and on ID 2938 (label no) the yes-set maximum leads by 0.0156, one fp16 step at this magnitude. Three signals carry most of the weight.

CLIP-L similarity separates TPs from FPs by a small but reliable margin. We took the maximum cosine similarity between the question-noun text embedding and CLIP-L’s 576 patch features for every question. The TP group (n=1,173n=1{,}173) has mean 0.1507 and the FP group (n=183n=183) has mean 0.1375, a gap of 0.0132 (95% bootstrap CI [0.0084, 0.0180], 10,000 resamples, percentile method, NumPy default_rng seed 42; Mann–Whitney UU = 132923, pp = 2.05×10−72.05 \times10^{-7}; Cohen’s dd = 0.40). Reliable but small. A gate keyed on this signal would have to separate TPs from FPs at dd = 0.40 while the precision-recall tradeoff punishes any threshold that suppresses FPs at the expense of TPs. The pattern fits a structural property of the split: adversarial negatives co-occur in the same image as the queried object, CLIP was trained on the same co-occurrence statistics, and its embedding space encodes them.

Decoder attention points the wrong way. Mean attention from the final text token to the 576 image positions, averaged across layers 14–20, is 0.0738 for correct predictions (n=2,490n=2{,}490) and 0.0801 for wrong ones (n=510n=510); Mann–Whitney UU = 452635, two-sided pp = 1.45×10−241.45 \times10^{-24}, Cohen’s dd = −0.46-0.46. The layers-14–20 window was fixed before analysis as the mid-to-late band of the 32-layer LLaMA-2 decoder, not tuned to maximise the effect. The direction holds per category: FPs show higher mean attention (0.0833) than TPs (0.0780); pp = 4.13×10−94.13 \times10^{-9}), and FNs higher (0.0783) than TNs (0.0700; pp = 1.50×10−231.50 \times10^{-23}). Wrong predictions consistently draw more image attention than correct ones (Figure 8). A plausible reading is that uncertain predictions trigger more looking as the model hunts for evidence, which runs against the “more grounding means more correct” assumption the six grounding gates rely on.

Distribution of mean attention to image tokens for correct and wrong predictions

Figure 8. Distribution of mean attention from the final text token to image positions, layers 14–20, on the 3,000-question adversarial run. Blue bars are correct (n=2490n=2490); red bars are wrong (n=510n=510). Higher image attention associates with wrong predictions, so suppressing yes-logits when attention is low removes signal from the wrong side of the distribution.

The logit gap separates by confidence, not correctness. Figure 9 gives the mean absolute logit gap ∣ℓyes−ℓno∣\lvert\ell_{\mathrm{yes}}-\ell_{\mathrm{no}}\rvert per category: 2.066 for TPs, 1.482 for TNs, 0.700 for FPs, and 0.962 for FNs. It separates correct from wrong with Cohen’s dd = 1.06 across all 3,000 questions (pp = 1.22×10−931.22 \times10^{-93}). Within the positive class TPs beat FNs (dd = 1.22, pp = 4.83×10−684.83 \times10^{-68}); within the negative class TNs beat FPs (dd = 1.18, pp = 1.19×10−411.19 \times10^{-41}). The model is most confident when right and least confident when wrong. Suppression acts on small-gap questions in both directions at once: a small-gap TP gets pushed to FN at roughly the rate a small-gap FP gets pushed to TN, so the net F1 contribution is near zero, and in our runs the sign came out negative every time. The pp-values here are uncorrected for multiple comparisons; given the effect magnitudes, a Bonferroni correction over the six tests changes no qualitative conclusion.

Absolute logit gap by category and kernel-density estimates

Figure 9. Absolute logit gap ∣ℓyes−ℓno∣|\ell_{\mathrm{yes}}-\ell_{\mathrm{no}}| at the answer position on the 3,000-question adversarial run. Left: per-category mean with one-standard-deviation error bars (TP n=1173n=1173, TN n=1317n=1317, FP n=183n=183, FN n=327n=327; means 2.07, 1.48, 0.70, 0.96). Right: kernel-density estimates. The order TP > TN > FN > FP at the mean separates confidence from correctness, which is why uncertainty-keyed corrections trade TPs for FNs at about the same rate as FPs for TNs.

The adversarial split is behaving as designed. Co-occurring negatives are hard to refute with image evidence, because the evidence ambiguously supports both the queried object and the one actually present. The methods we tested assume a separable correctness signal the split is built to deny. On the easier splits we would expect the same suppression to look better, since those negatives are easier to rule out visually. Beating the adversarial baseline at the decoding step would need a signal the dataset does not undercut, and we do not have a candidate.

Group-level means and standard deviations behind these effect sizes are in Table 9. The pooled attention SD is 0.0140, giving d=(0.0738−0.0801)/0.0140=−0.45d=(0.0738-0.0801)/0.0140=-0.45 (reported as −0.46 at the precision used above); the correct-versus-wrong logit-gap pooled SD is 0.839, giving d=1.06d=1.06.

SignalGroupnnMeanSD
Attentioncorrect2,4900.07380.0142
Attentionwrong5100.08010.0128
Logit gapTP1,1732.0660.959
Logit gapTN1,3171.4820.670
Logit gapFP1830.7000.621
Logit gapFN3270.9620.681

Table 9. Per-group means and standard deviations underlying the effect sizes. SD is the sample standard deviation.

Multi-Model Detail

Token-set divergence: the LLaVA-1.6-Mistral map

To expose the mechanism behind the legacy_8tok = 0 result, we zoom in on LLaVA-1.6-Mistral, whose Mistral vocabulary makes the LLaMA-2 IDs point at the wrong surface forms. Figure 10 shows the difference at a glance and Table 10 lists the tokenizer-derived IDs.

Yes/no surface forms mapped to token IDs for LLaVA-1.5-7B and LLaVA-1.6-Mistral-7B

Figure 10. Yes/no surface forms map to different token IDs under each model. Blue rows are the forms the model actually generates first after ASSISTANT:; grey rows are valid single-token IDs that never appear; orange multi-token rows are space-prefixed forms the Mistral tokenizer splits into two tokens, so they cannot enter a first-token comparison.

FormTokenizationIn dynamic set?
yes[5081]yes (single token)
Yes[5592]yes (single token)
‘ yes’[28705, 5081]no (multi-token)
‘ Yes’[28705, 5592]no (multi-token)
no[708]yes (single token)
No[1770]yes (single token)
‘ no’[28705, 708]no (multi-token)
‘ No’[28705, 1770]no (multi-token)

Table 10.

Prompt-template robustness

The master table fixes one template per model. To check the dynamic readout is stable under a template change, rather than an artifact of the LLaVA-1.5 string, we compared the first 500 POPE adversarial questions of LLaVA-1.6-Mistral under two templates: the LLaVA-1.5 paper template and the model’s native chat template via processor.apply_chat_template. In both runs the only first tokens generated were id 5592 (Yes) and id 1770 (No); the LLaMA-2 IDs never appeared. Table 11 reports the four readouts.

Prompt templateReadoutF1PrecisionRecallYes-rate
Paper templatelegacy_2tok0.66670.50001.00001.000
legacy_8tok0.00000.00000.00000.000
dynamic_single0.87190.83520.91200.546
string_parse0.87190.83520.91200.546
Native chat templatelegacy_2tok0.69250.52971.00000.944
legacy_8tok0.00000.00000.00000.000
dynamic_single0.86210.95170.78800.414
string_parse0.86210.95170.78800.414

Table 11.

The dynamic single-token and string-parse readouts agree to four decimals under either template, the empirical face of Theorem 1. The legacy eight-token readout is 0 under both, because none of the LLaMA-2 IDs is ever the argmax on a Mistral vocabulary, and the comparison between two zero-mass logits resolves the same way on every question. Absolute F1 is not comparable to LLaVA-1.5: on the full 3,000-question split the dynamic readout gives 0.8521, and the 0.8719 here is the 500-question slice. The point of the cross-model run is narrow, that the framework ports cleanly when token sets are re-derived from each model’s tokenizer, and that transferring the LLaVA-1.5 IDs verbatim is unsafe.

Provenance and verification. Per-question logs for LLaVA-1.6-Mistral-7B are in experiments/cross_model/. For mPLUG-Owl2, InstructBLIP-Vicuna-7B, and Qwen2-VL-7B-Instruct, the Table 4 metrics are the original-run summaries in experiments/multi_model/, with a Kaggle notebook that regenerates them. A secondary verification run (transformers v4.57.1/v5.10.1) reproduced Qwen2-VL exactly on all splits and mPLUG-Owl2 on adversarial and popular; InstructBLIP (adversarial) differed by about 0.004 F1 under the newer environment, and one

Table 10: Tokenizer-derived single-token IDs for yes/no surface forms under llava-hf/llava-v1.6-mistral-7b-hf. The four space-prefixed forms tokenize to two tokens each ([28705, ID]) and are excluded from the dynamic single-token readout.

Table 11: Four readouts on the first 500 POPE adversarial questions under LLaVA-1.6-Mistral-7B. dynamic_single compares max-logits over the tokenizer-derived IDs {5081,5592}\{5081, 5592\} vs {708,1770}\{708, 1770\}; string_parse decodes up to 6 tokens and parses the first yes/no substring.

mPLUG-Owl2 (random) regeneration hit a storage error and produced a degenerate all-yes output. We report the original metrics for a single coherent environment; none of the qualitative conclusions change.

Literature Survey and Comparability

This section scopes the finding honestly: the published numbers below cannot be placed on our scale, because no surveyed paper states its readout and our reference ran under 4-bit NF4 quantization. Table 12 lists the papers we have inspected that report a LLaVA-1.5-7B POPE adversarial baseline. For each we record the reported baseline F1, the reported result, the reported gain, and what the paper says about the readout (not stated if it does not specify, never inferred from the baseline value).

Table 12: Papers reporting LLaVA-1.5-7B POPE adversarial baselines, verified entries as of submission. Values are as reported by each paper (F1×100).

We deliberately decline to headline a claim of the form “NN papers’ gains evaporate.” Every surveyed paper leaves its readout not stated, so none can be confirmed from released code or explicit statement, and the number of papers whose readout we can verify is zero. We therefore report no ratio over verified readouts. Inferring a readout from a baseline value would break our own rule, and substituting our 82.21 for a paper’s baseline would not estimate a corrected gain: our reference ran under 4-bit NF4 quantization, and a published baseline may differ from it in readout, precision, prompt format, or decoding. The adversarial baselines in Table 12 run from 73.54 to 82.07, a spread of 8.53 points that these papers do not let us decompose. Settling the comparison takes matched reruns of each method with the readout logged and the precision fixed, or at least the readout stated in the paper or its code. Expanding the survey means reading each paper’s evaluation code rather than inferring the readout.

PaperRep. base.Rep. res.Rep. gainReadout
Tang et al. [15] (adv.)73.5484.35+10.81not stated
Tang et al. [15] (pop.)76.5387.09+10.56not stated
Tang et al. [15] (rand.)81.5489.55+8.01not stated
Seo et al. [14] (adv.)79.3080.00+0.70not stated
Chen et al. [1] (adv.)81.0081.80+0.80not stated
Huo et al. [3] (adv.)80.9082.50+1.60not stated
Jiang et al. [5] (adv.)75.0680.82+5.76not stated
Jana et al. [4] (adv.)82.0783.03+0.96not stated

Table 12.

Diagnostic Script and Per-Split Confusion Matrices

python src/run_pope_2tok_baseline.py --split adversarial

The output JSON carries a top_tokens_generated field that sorts first-token IDs by frequency. Any ID appearing there but absent from the active readout token set must be added before the rule can be trusted on that model-template pairing.

Table 13 reports full 2×22 \times2 matrices under the eight-token rule. The adversarial false-positive rate (182/1500=12.1%182/1500 = 12.1\%) is roughly 4.2×4.2\times that of the random split (43/1500=2.9%43/1500 = 2.9\%), consistent with the co-occurrence design of the adversarial negatives.

SplitTPTNFPFN
Adversarial1,1741,318182326
Popular1,1911,388112309
Random1,1911,45743309

Table 13. Confusion matrices under eight-token evaluation, full 3,000-question splits. Counts are exact, taken from the per-question prediction JSON files; row sums equal 3,000 per split.

References

  1. [1]Shiqi Chen, Tongyao Zhu, Ruochen Zhou, Jinghan Zhang, Siyang Gao, Juan Carlos Niebles, Mor Geva, Junxian He, Jiajun Wu, and Manling Li. Why is spatial reasoning hard for VLMs: an attention mechanism perspective on focus areas. In International Conference on Machine Learning, 2025. arXiv:2503.01773.arxiv.org/abs/2503.01773
  2. [2]Tim Dettmers, Artidoro Pagnoni, Ari Holtzman, and Luke Zettlemoyer. QLoRA: Efficient finetuning of quantized LLMs. In Advances in Neural Information Processing Systems, volume 36, 2023.
  3. [3]Fushuo Huo et al. Self-introspective decoding: Alleviating hallucinations for large vision-language models. arXiv preprint arXiv:2408.02032, 2024.arxiv.org/abs/2408.02032
  4. [4]Soumyadeep Jana, Pulkit Mittal, and Sanasam Ranbir Singh. Mitigating hallucination in vision-language models through barrier-regulated adaptive closed-form steering. arXiv preprint arXiv:2605.29881, 2026.arxiv.org/abs/2605.29881
  5. [5]Yubo Jiang, Xin Yang, Abudukelimu Wuerkaixi, Zheming Yuan, Xuxin Cheng, Fengying Xie, Zhiguo Jiang, Cao Liu, Ke Zeng, and Haopeng Zhang. Global context or local detail? adaptive visual grounding for hallucination mitigation. arXiv preprint arXiv:2604.24396, 2026.arxiv.org/abs/2604.24396
  6. [6]Taku Kudo and John Richardson. SentencePiece: A simple and language independent subword tokenizer and detokenizer for neural text processing. In Proceedings of the 2018 Conference on Empirical Methods in Natural Language Processing: System Demonstrations, pages 66–71, 2018.arxiv.org/abs/1808.06226
  7. [8]Yifan Li, Yifan Du, Kun Zhou, Jinpeng Wang, Wayne Xin Zhao, and Ji-Rong Wen. Evaluating object hallucination in large vision-language models. In Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing, pages 292–305. Association for Computational Linguistics, 2023.arxiv.org/abs/2305.10355
  8. [9]Yubo Li, Yidi Miao, Ramayya Krishnan, and Rema Padman. JEV-as-a-judge: Accept when confident, escalate when unsure. arXiv preprint arXiv:2609.26550, 2026.arxiv.org/abs/2609.26550
  9. [10]Percy Liang, Rishi Bommasani, Tony Lee, Dimitris Tsipras, Divyam Soylu, Michihiro Yasunaga, Yian Zhang, Deepak Narayanan, Yuhuai Wu, Ananya Kumar, et al. Holistic evaluation of language models. arXiv preprint arXiv:2211.09110, 2022.arxiv.org/abs/2211.09110
  10. [11]Tsung-Yi Lin, Michael Maire, Serge Belongie, James Hays, Pietro Perona, Deva Ramanan, Piotr Dollár, and C Lawrence Zitnick. Microsoft COCO: Common objects in context. In European Conference on Computer Vision, pages 740–755. Springer, 2014.arxiv.org/abs/1405.0312
  11. [12]Haotian Liu, Chunyuan Li, Yuheng Li, and Yong Jae Lee. Improved baselines with visual instruction tuning. arXiv preprint arXiv:2310.03744, 2023.arxiv.org/abs/2310.03744
  12. [13]Alec Radford, Jong Wook Kim, Chris Hallacy, Aditya Ramesh, Gabriel Goh, Sandhini Agarwal, Girish Sastry, Amanda Askell, Pamela Mishkin, Jack Clark, et al. Learning transferable visual models from natural language supervision. In International Conference on Machine Learning, pages 8748–8763. PMLR, 2021.arxiv.org/abs/2103.00020
  13. [14]Hoigi Seo, Dong Un Kang, Hyunjin Cho, Joohoon Lee, and Se Young Chun. On epistemic uncertainty of visual tokens for object hallucinations in large vision-language models. arXiv preprint arXiv:2510.09008, 2025.arxiv.org/abs/2510.09008
  14. [15]Lexiang Tang, Xianwei Zhuang, Bang Yang, Zhiyuan Hu, Hongxiang Li, Lu Ma, Jinghan Ru, and Yuexian Zou. Not all tokens and heads are equally important: Dual-level attention intervention for hallucination mitigation. arXiv preprint arXiv:2506.12609, 2025.arxiv.org/abs/2506.12609
  15. [16]Hugo Touvron, Louis Martin, Kevin Stone, Peter Albert, Amjad Almahairi, Yasmine Babaei, Nikolay Bashlykov, Soumya Batra, Prajjwal Bhargava, Shruti Bhosale, et al. LLaMA 2: Open foundation and fine-tuned chat models. arXiv preprint arXiv:2307.09288, 2023.arxiv.org/abs/2307.09288
  16. [17]Lianmin Zheng, Wei-Lin Chiang, Ying Sheng, Siyuan Zhuang, Zhanghao Wu, Yonghao Zhuang, Zi Lin, Zhuohan Li, Dacheng Li, Eric Xing, et al. Judging LLM-as-a-judge with MT-bench and chatbot arena. In Advances in Neural Information Processing Systems, volume 36, 2023.arxiv.org/abs/2306.05685

Paper details

vlnc:W_jnj2s48p
v1 · latestHistory (1)

published · Fresh — added to the Hub within the last 30 days

added ·

Usage

views · 0

downloads · 0

A view counts once per browser per day, a download each time the PDF is requested.

CC BY 4.0

Original source

  • Computer Science

Claude · View statement →

Looking for related papers…
Contents