From Seeing without Looking (arXiv 2605.22903). Decisions for running it on an 8 GB Apple M1. Code: github.com/ashe-many/vlm-token-drop.
"Even at 75% token removal, accuracy remains nearly unchanged." Figure 2 caption, on the POPE benchmark
"Image embeddings are taken after the visual encoder and projection/merger module, i.e., the final image-token representations that are normally concatenated with text tokens before entering the LLM." Appendix A.4, Motivation Example Setup
The paper takes the image tokens after the vision encoder and after the merger. At this point, the image tokens are in their last form. Usually, the code puts these image tokens into the text tokens. The text tokens are the chat format, the two image markers and the question. The image tokens go between the two image markers. Then, the LLM receives all the tokens.
Remove the same image tokens from four places: the input embeddings, the three deepstack copies, the M-RoPE positions and the image mask. The kept tokens keep their original positions. The paper does not give this detail. This is our decision.
Then do a test. Remove 0% of the tokens. The output must be the same as the output of the model without the patch.
check_logits.py, check_zero_drop.pyYes, up to 75%. When we remove 75% of the image tokens, accuracy goes down by only 4 points: from 91.3% to 87.3%. This agrees with the paper.
When we remove all image tokens, the model says "No" to almost all questions. Accuracy goes down to 50.7%. This is the same as a guess, because half of the answers are "Yes".
| Removed | Image tokens kept (mean) | Accuracy, all | Accuracy, answer is Yes | Model says Yes | Not yes/no |
|---|---|---|---|---|---|
| 0% | 269.3 | 91.3% | 85.7% | 43.7% | 0 |
| 25% | 202 | 90.0% | 83.0% | 42.3% | 0 |
| 50% | 134.7 | 90.7% | 84.4% | 43.0% | 0 |
| 75% | 67.3 | 87.3% | 76.2% | 38.3% | 0 |
| 100% | 0 | 50.7% | 0.7% | 1.0% | 0 |