PixelPrune 论文总结
论文标题:PixelPrune: Pixel-Level Adaptive Visual Token Reduction via Predictive Coding
机构:OPPO AI Center
作者:Nan Wang, Zhiwei Jin, Chen Chen, Haonan Lu
发表时间:2026年4月(arXiv:2604.00886v1)
代码:https://github.com/OPPO-Mente-Lab/PixelPrune
1. 研究背景与动机
核心问题
文档理解(Document Understanding)与 GUI 交互是视觉语言模型(VLM)最高价值的应用场景,但这两类场景对计算资源的需求极为苛刻:
- 精细文字和小型 UI 元素需要高分辨率输入
- 高分辨率图像会产生数万个视觉 Token
- 以 DocVQA 为例,一张文档图像经预处理后平均为 1775×2082 像素,产生 14,000+ 个 ViT patch,经 2×2 合并后仍有约 3,600 个 LLM Token
关键观察:像素级冗余
作者发现文档与 GUI 图像存在严重的像素级 patch 冗余:
| 场景 | 冗余来源 | patch 唯一性 |
|---|---|---|
| 文档 | 白边、背景留白 | 仅 22–71% 为像素唯一 patch |
| GUI | 纯色面板、工具栏、状态栏 | 重复 patch 比例更高 |
现有方法的盲区
现有 VLM 加速方法存在两大不足:
- 操作层级太靠后:大多数方法在特征层(Post-ViT)减少 Token,ViT 编码器本身的巨大计算开销未被触及。实验显示在 4096² 分辨率下,ViT 编码器占总 prefill 延迟的 86%(Qwen3-VL-2B)
- 适用范围有限:多针对通用域图像的固定分辨率架构,对文档/GUI 高分辨率场景效果不佳
2. 方法:PixelPrune
2.1 核心思想
PixelPrune 将图像压缩领域的预测编码(Predictive Coding)思想——PNG、JPEG-LS 等无损格式的核心原理——迁移到 patch 级别,在 ViT 编码之前剔除冗余 patch。
工作粒度:32×32 像素块(对应 Qwen3-VL 中 ViT patch size p=16,merge factor M=2 后的一个 LLM Token)
2.2 算法流程
对每个 patch ,PixelPrune 计算其预测值 ,若预测误差在阈值内则剔除:
- :严格像素相等(无损压缩),默认设置
- :近似匹配(有损压缩,可控精度损失)
位置保持:保留的 patch 维持其原始 2D 坐标,不重新索引,确保 ViT 的 2D RoPE 和 LLM 的 MRoPE 正确感知空间布局。
2.3 三种预测策略
| 策略 | 扫描方式 | 预测邻居 | 特点 |
|---|---|---|---|
| Raster(光栅) | 行优先 1D 展开 | 前一个 patch | 捕获行内水平连续性,行间过渡差 |
| Serpentine(蛇形) | 奇偶行交替方向 | 前一个 patch | 行间过渡更局部,部分捕获垂直连续性 |
| Pred-2D(默认) | 光栅顺序 | 左(A)、上(B)、左上(C) 三邻居 | 同时利用水平与垂直冗余,压缩率最高 |
Pred-2D 预测规则(类 LOCO-I 中位数边缘预测器):
- 若 C=B≠A(上与左上一致)→ 预测值 = A(左邻居)
- 若 C=A≠B(左与左上一致)→ 预测值 = B(上邻居)
- 其余情况 → 默认预测值 = A
所有策略均为 O(N) 时间复杂度,相对 ViT 的 O(N²) 注意力计算开销可忽略不计。
2.4 理论保证
命题 1(精确重建):当 时,原始 patch 序列可由压缩表示通过确定性解码器精确还原(数学归纳法可证)。
命题 2(有界重建误差):当 时,编码器使用预测值(而非原始值)作为后续预测的邻居,确保每个被省略 patch 的误差严格不超过 ,误差不累积传播。
2.5 与现有方法的位置对比
输入图像
↓
[PixelPrune] ← 本文方法(pre-ViT,加速整条流水线)
↓
ViT 编码器 ← IPCV(压缩中间特征)
↓
Patch Merger ← ShowUI(ViT 内部跳过注意力)
↓
LLM 投影器 ← Q-Former / TokenPacker(Projector-based)
↓
LLM 解码器 ← FastV / ZipVL / PyramidDrop(Inside-LLM)
3. 实验设置
模型与数据集
- 基础模型:Qwen3-VL(2B / 4B / 8B Dense 变体)
- 文档理解(7 个基准):DocVQA、AI2D、ChartQA、InfoVQA、OCRBench、MMLongBench-Doc、olmOCRBench
- GUI 理解(9 个基准):ScreenSpot V2(Web/Mobile/Desktop)、ScreenSpot Pro(Scientific/Office/OS/Creative/Development/CAD)
对比基线
| 基线 | 说明 |
|---|---|
| Full | 保留所有视觉 Token(上限参考) |
| Random | 随机选择 patch 以匹配 Token 预算 |
| ConnComp | 基于 ShowUI 的连通分量策略随机保留 |
| Resize | 下采样输入图像以匹配 Token 预算 |
4. 主要实验结果
4.1 文档理解(训练自由)
| 模型 | 方法 | DocVQA | ChartQA | InfoVQA | OCRBench | 平均 |
|---|---|---|---|---|---|---|
| 2B | Full | 92.7 | 78.8 | 72.3 | 86.9 | 69.2 |
| 2B | PixelPrune | 92.0 | 77.0 | 71.5 | 87.3 | 68.3 |
| 2B | Random | 66.8 | 57.3 | 62.9 | 76.0 | 55.3 |
| 4B | Full | 94.8 | 82.9 | 79.5 | 88.1 | 74.1 |
| 4B | PixelPrune | 94.7 | 82.4 | 79.2 | 88.0 | 73.7 |
| 8B | Full | 95.7 | 83.4 | 83.1 | 90.6 | 75.5 |
| 8B | PixelPrune | 95.5 | 82.9 | 82.8 | 90.4 | 75.3 |
结论:PixelPrune 在三个模型规模上均接近 Full 精度(最大差距 0.2 点),显著优于 Random 和 ConnComp,并与 Resize 持平或更优(保留了 Resize 会丢失的细粒度细节)。
4.2 GUI 理解(Qwen3-VL-2B)
| 方法 | SSv2 Avg | SSPro Avg |
|---|---|---|
| Full | 90.6 | 50.2 |
| Resize | 89.0 | 43.4(-6.8!) |
| PixelPrune(训练自由) | 81.4 | 36.5 |
| PixelPrune (+KD) | 90.6 | 47.6 |
- 训练自由:在 position-sensitive 的 grounding 任务上存在差距
- 知识蒸馏(+KD):在 SSv2 完全追平 Full,SSPro 仅差 2.6 点
- GUI 图像冗余远高于文档:Web 仅保留 39.7% Token,Scientific 仅保留 26.3%
4.3 从头训练(GUI,消融)
| 训练 | 推理 | SSv2 Avg | SSPro Avg |
|---|---|---|---|
| Full | Full | 81.8 | 31.5 |
| PixelPrune | PixelPrune | 84.8 | 31.4 |
| PixelPrune | Full | 85.1 | 31.6 |
跨模式泛化:用压缩 Token 训练、用全 Token 推理,性能不降反升(81.8→85.1),说明压缩训练可能提供了隐式正则化。
5. 效率分析
5.1 推理效率
| 数据集 | 方法 | 保留率 | FLOPs 加速 | TTFT 加速 | KV Cache 节省 |
|---|---|---|---|---|---|
| MMLongBench-Doc | Full | 100% | 1.0× | 1.0× | — |
| MMLongBench-Doc | PixelPrune | 50.3% | 3.5× | 3.0× | 45% |
| SSPro Scientific | Full | 100% | 1.0× | 1.0× | — |
| SSPro Scientific | PixelPrune | 26.2% | 6.6× | 4.2× | 63% |
5.2 训练效率
| 指标 | Full | PixelPrune | 提升 |
|---|---|---|---|
| 前向传播 | 7.9 s | 3.9 s | 2.0× |
| 反向传播 | 35.3 s | 18.0 s | 2.0× |
| 峰值显存 | 57.8 GB | 38.4 GB | ↓33.6% |
| 总训练时间 | 49.1 h | 25.3 h | 1.9× |
6. 消融研究
6.1 预测策略比较
Pred-2D 在保持相近精度的前提下实现最低保留率,作为默认策略:
| 策略 | DocVQA 保留率 | GUI-Desktop 保留率 |
|---|---|---|
| Raster | 70.1% | 64.4% |
| Serpentine | 70.0% | 64.1% |
| Pred-2D | 70.1% | 61.9% |
6.2 匹配阈值与距离度量
- Max 距离(逐像素最大差值)显著优于 MAE(均值会掩盖关键异常值)
- (Max):DocVQA 保留率降至 45.1%,精度损失不足 1%
- ChartQA 对 最敏感(需要空间布局推理)
6.3 ViT 不同深度剪枝的对比
| 剪枝位置 | ViT FLOPs 节省 | DocVQA | ChartQA |
|---|---|---|---|
| ViT 之后 | 0% | 92.2 | 76.8 |
| 第17层后 | 29% | 91.9 | 76.1 |
| 第4层后 | 83% | 92.2 | 77.0 |
| 第0层后 | 96% | 92.1 | 76.9 |
| ViT 之前(PixelPrune) | 100% | 92.0 | 77.0 |
关键发现:对结构化图像,保留哪些 patch 比在哪个深度剪枝更重要;pre-ViT 剪枝在精度相当的情况下节省 100% ViT FLOPs。
7. 跨架构泛化
在 Qwen3.5(2B/4B/9B)上验证,平均精度差距 ≤ 0.8%,证明方法对 NaViT 系列架构具有良好泛化性。
8. 通用域图像表现
| (Max) | 平均保留率 | MMBench | MMMU | 说明 |
|---|---|---|---|---|
| 0(精确) | 80–100% | 77.1 | 49.2 | 精度几乎无损 |
| 0.05 | 72–89% | 76.5 | 50.3 | 大多数基准 ≤0.6% 下降 |
| 0.10 | 68–83% | 76.5 | 48.2 | 降幅仍温和(≤2%) |
通用域图像冗余较少,但 PixelPrune 仍能自适应压缩,不会造成明显性能下降。
9. 主要贡献总结
| # | 贡献 | 核心价值 |
|---|---|---|
| 1 | 量化文档/GUI 图像的像素级 patch 冗余 | 提供了新视角:pixel-unique patch 仅占 22–71% |
| 2 | 提出参数自由的 pre-ViT 压缩方法 PixelPrune | 无需训练即可应用,具有精确/有界误差理论保证 |
| 3 | 加速整条推理流水线 | ViT + Patch Merger + LLM 全程受益,最高 4.2× 推理加速 |
| 4 | 与训练流程无缝集成 | 1.9× 训练加速,33.6% 显存节省,支持跨模式泛化部署 |
10. 方法特点对比
| 维度 | PixelPrune | 典型后 ViT 方法 |
|---|---|---|
| 操作阶段 | pre-ViT(像素空间) | post-ViT(特征空间) |
| 参数需求 | 无参数 | 通常需要训练或学习参数 |
| ViT 加速 | ✅ 完全加速 | ❌ ViT 开销不变 |
| FlashAttention 兼容 | ✅ 完全兼容 | 部分方法不兼容 |
| 精度保证 | 理论精确重建(τ=0) | 近似,无严格保证 |
| 适用场景 | 文档、GUI(亦适用通用域) | 通用域为主 |
总结整理:基于 arXiv:2604.00886