NanoVLM-AnyRes
AnyRes(动态高分辨率)是 LLaVA-NeXT 1.6 的核心创新,解决了固定分辨率下细节丢失的问题:将图像按纵横比自适应切分为多个 tile,每个 tile 独立编码后和全局缩略图一起送入 LLM。NanoVLM 在保留原始单图模式的基础上新增了 AnyRes 能力,两个模式通过一个布尔值切换。 问题:固定分辨率的瓶颈 NanoVLM 的基础版本将每张图 resize 到 384×384,经 SigLIP 编码为 729 个 visual token。这对大多数自然图像够用——但遇到高分辨率图像(文档、OCR、大场景)时,细节会被压缩到不可辨认。 一个具体的例子: 原始图像: 1920×1080 的截图(包含文字) ↓ resize 到 384×384 丢失了 (1920×1080) / (384×384) = 14× 的像素信息 ↓ 文字模糊到 LLM 无法识别 AnyRes 的思路很直接——不要压缩整张图,而是把大图切成多个小图,每个小图保持清晰。 核心算法 处理流程 原图 (如 1200×800, AR=1.5) │ ├─ Step 1: 选 grid → 2×2(4 tiles) │ ├─ Step 2: 生成缩略图 │ resize → 384×384 → 729 tokens(全局上下文) │ └─ Step 3: 切分 + 编码 tiles 原图 → resize_to_fit(768×768) → 切成 4 个 384×384 tile tile[0,0] → SigLIP → 729 tokens tile[0,1] → SigLIP → 729 tokens tile[1,0] → SigLIP → 729 tokens tile[1,1] → SigLIP → 729 tokens ───────── 总计: 5 × 729 = 3645 tokens 关键细节:缩略图保留全局上下文,tiles 保留局部细节。两者互补——缩略图告诉 LLM"这是一张包含文字和图表的信息图",tiles 告诉 LLM 文字具体写了什么。 ...