KeyRec: Bounded Visual Memory for Streaming and Long-Video Understanding
Organizations: University of Virginia · Google
Abstract
Vision-language models are increasingly used to understand long videos and continuous streams. However, dense visual tokens accumulate with video duration, making long-context inference prohibitively expensive. Existing training-free visual-token selection methods reduce this cost by retaining informative tokens, but may lose coherent event evidence and fail to distinguish detailed recent observations from long-range history. We propose KeyRec, a training-free framework for constructing bounded visual memory. During query-agnostic writing, KeyRec preserves fine-grained recent observations in a visual cache and organizes historical evidence into a structured event bank. Candidate events are proposed according to their novelty relative to previously stored events and maintained through an online add--merge--evict update. When a question arrives, a text-only router adaptively allocates a fixed readout budget between recent and event memory, without reprocessing historical frames. KeyRec operates on model-facing visual embeddings and supports both modular encoder--projector VLMs and the encoder- and projector-free NEO-ov architecture. Across four streaming and long-video benchmarks and three VLM backbones, KeyRec achieves the best compressed performance in 13 of 15 settings using only 10% of the dense decoder-facing visual-token budget. It outperforms the strongest compressed baseline by 2.21--18.37 points on real-time questions, achieves the best compressed result in five of six long-video settings, and performs best in every NEO-ov 2B setting.
Figures & tables
| Benchmark | Model | Subset | Vanilla | STC-Pruner | STOM-CTR | CausalMem | KeyRec |
|---|---|---|---|---|---|---|---|
| OVO-Bench | Gemma 4 E2B | Backward | 43.22 | 41.20 | 42.30 | 45.31 | 43.83 |
| OVO-Bench | Gemma 4 E2B | Realtime | 50.72 | 48.02 | 47.23 | 55.49 | 57.70 |
| OVO-Bench | Gemma 4 E4B | Backward | 53.86 | 53.01 | 50.49 | 54.45 | 54.45 |
| OVO-Bench | Gemma 4 E4B | Realtime | 59.83 | 51.67 | 53.26 | 62.51 | 64.81 |
| OVO-Bench | NEO-ov 2B | Backward | 38.66 | 35.22 | – | 39.09 | 41.90 |
| OVO-Bench | NEO-ov 2B | Realtime | 58.07 | 36.84 | – | 44.41 | 62.78 |
| Frames | Method | E2E (s) | Peak Mem (GiB) |
|---|---|---|---|
| 64 | Vanilla | 5.73 | 17.09 |
| STOM-CTR | 5.92 | 15.05 | |
| KeyRec | 7.08 | 15.06 | |
| 256 | Vanilla | 26.55 | 39.23 |
| STOM-CTR | 20.04 | 15.47 | |
| KeyRec | 22.81 | 16.17 |
| Subset | Method | E2B | E4B |
|---|---|---|---|
| OVO-Bench | |||
| Backward | CausalMem | 46.70 | 56.58 |
| KeyRec | 48.61 | 56.15 | |
| Realtime | CausalMem | 57.12 | 62.96 |
| KeyRec | 57.49 | 65.71 | |
| StreamingBench | |||
Appendix figures & tables12 assets
Supplementary material from the paper’s appendix.
Appendix
| Model | Template | OVO-B | OVO-R | LVB |
|---|---|---|---|---|
| Gemma 4 E4B | naive | 56.40 | 63.72 | 41.21 |
| detailed | 53.10 | 63.78 | 44.43 | |
| default | 54.45 | 64.81 | 45.77 | |
| NEO-ov 2B | naive | 38.78 | 62.01 | 48.84 |
| detailed | 39.86 | 61.90 | 48.99 | |
| default | 41.90 | 62.78 | 49.29 |
| OVO Backward | LongVideoBench | |||
|---|---|---|---|---|
| 8 | 32 | 53.31 | 64 | 44.88 |
| 16 | 16 | 54.45 | 32 | 45.77 |
| 32 | 8 | 50.43 | 16 | 44.88 |
| 0.65 | 54.48 | 54.67 | 54.27 |
|---|---|---|---|
| 0.75 | 54.48 | 53.64 | |
| 0.85 | 54.36 | 53.48 | 52.47 |
| Parameter | Value | Role |
|---|---|---|
| Route-similarity threshold | ||
| Maximum temporal merge gap | ||
| Route update weight | ||
| / | Temporal-coverage weight |
| Router state | Streaming | Long video |
|---|---|---|
| Fraction ( ) | Fraction ( ) | |
| AllRecent | ||
| HeavyRecent | ||
| Balanced | ||
| HeavyEvent | ||
| AllEvent |
| Model | Method | Backward | Realtime | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| EPM | ASI | HLD | Avg. | STU | OJR | ATR | ACR | OCR | FPD | Avg. | ||
| Gemma 4 E2B | Vanilla | 41.41 | 39.86 | 48.39 | 43.22 | 36.52 | 44.02 | 58.62 | 44.95 | 63.76 | 56.44 | 50.72 |
| STC-Pruner | 36.70 | 35.81 | 51.08 | 41.20 | 41.57 | 42.93 | 56.03 | 35.78 | 56.38 | 55.45 | 48.02 | |
| StreamingTOM-CTR | 36.36 | 40.54 | 50.00 | 42.30 | 35.96 | 42.39 | 47.41 | 43.12 | 57.05 | 57.43 | 47.23 | |
| CausalMem | 40.40 | 41.22 | 54.30 | 45.31 | 45.51 | 52.72 | 62.93 | 42.20 | 71.14 | 58.42 | 55.49 | |
| KeyRec | 37.71 | 40.54 | 53.23 | 43.83 | 46.63 | 54.89 | 62.07 | 50.46 | 67.79 | 64.36 | 57.70 | |
| Backbone | Method | CS | OR | AtR | PR | AcR | SU | EU | Cnt | TRU | CR | Overall |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Gemma 4 E2B | Vanilla | 59.31 | 54.77 | 60.00 | 60.19 | 41.64 | 45.53 | 43.75 | 43.01 | 57.32 | 37.50 | 51.28 |
| STC-Pruner | 63.41 | 56.87 | 56.39 | 50.93 | 48.73 | 42.04 | 53.75 | 41.97 | 53.75 | 54.69 | 52.91 | |
| StreamingTOM-CTR | 62.46 | 55.31 | 56.07 | 40.74 | 47.88 | 46.34 | 51.88 | 32.12 | 53.27 | 53.12 | 51.36 | |
| CausalMem | 67.82 | 62.67 | 68.52 | 53.70 | 53.82 | 56.10 | 57.50 | 31.09 | 58.88 | 53.12 | 58.01 | |
| KeyRec | 72.24 | 65.94 | 74.43 | 65.74 | 56.66 | 57.72 | 64.38 | 17.62 | 64.80 | 58.59 | 61.29 | |
| Gemma 4 E4B | Vanilla | 71.92 | 65.67 | 68.20 | 67.59 | 59.49 | 54.47 | 60.62 | 54.92 | 71.03 | 52.34 | 63.73 |
| Backbone | Method | Unnorm. Acc. | Level 1 | Level 2 | Level 3 | Relevance | Rel.-Linear | Logic | Total |
|---|---|---|---|---|---|---|---|---|---|
| Gemma 4 E2B | Vanilla | 18.47 | 10.19 | 6.01 | 4.84 | 7.36 | 17.29 | 5.09 | 6.56 |
| STC-Pruner | 14.16 | 4.69 | 4.03 | 3.54 | 4.35 | 12.96 | 3.32 | 3.99 | |
| StreamingTOM-CTR | 15.69 | 6.73 | 5.77 | 3.93 | 5.92 | 14.93 | 3.89 | 5.21 | |
| CausalMem | 15.31 | 5.37 | 4.51 | 4.49 | 5.24 | 13.82 | 3.76 | 4.72 | |
| KeyRec | 15.41 | 5.69 | 4.82 | 4.35 | 5.24 | 13.73 | 4.10 | 4.84 | |
| Gemma 4 E4B | Vanilla | 20.09 | 10.44 | 7.56 | 6.03 | 8.25 | 18.55 | 6.47 | 7.62 |