拓冰建站拓冰建站
首页 / 资讯中心 / 正文

InternVL3_5-14B如何看懂超高分辨率图片?动态分块(Dynamic Resolution)机制详解

InternVL3_5-14B如何看懂超高分辨率图片动态分块Dynamic Resolution机制详解【免费下载链接】InternVL3_5-14B项目地址: https://ai.gitcode.com/hf_mirrors/OpenGVLab/InternVL3_5-14BInternVL3_5-14B 是开源多模态大模型 InternVL3.5 系列的 14B 版本其最大亮点是动态分块Dynamic Resolution机制模型会根据图片宽高比自动把一张大图切成 1~12 个 448×448 的小图块再附加一张全局缩略图从而在看得全和看得清之间取得平衡轻松驾驭超高分辨率图片。本文面向新手用 3 个步骤讲透这套动态分辨率机制的原理、关键参数与快速上手方法。 一、InternVL3_5-14B 是什么InternVL3_5-14B 是一个「图片 文本 → 文本」的开源多模态大模型Apache-2.0 协议总参数约 15.1B由三部分组成组件规模作用视觉编码器 InternViT-300M0.3B把每个图块编码成视觉特征像素打乱层Pixel Shuffle MLP—将 1024 个视觉 token 压缩到 256 个语言模型 Qwen3-14B14.8B融合图文信息并生成回答它的架构沿用了 InternVL1.5 提出的动态高分辨率Dynamic High Resolution策略这也是本文的主角。模型配置可参考 config.json核心推理逻辑在 modeling_internvl_chat.py 中。 二、为什么需要动态分块固定分辨率的视觉模型面临两难强行压缩超大图片 → 文字、细节糊成一团OCR 和细粒度理解失效保留原始尺寸→ 输入 token 爆炸显存和速度都扛不住。动态分块的思路是按图切块图片越大、越细长就切得越多接近正方形的小图只切 1 块。这样既保证每个图块都是模型最擅长的 448×448 尺寸又让 token 数量始终可控最多 12 块 1 张缩略图。开关就是配置里的dynamic_image_size: true见 config.json。✂️ 三、动态分块三步走核心机制整个流程由 README.md 中的dynamic_preprocess函数实现分三步第 1 步宽高比匹配找出最优切法 (i, j)程序会枚举所有满足1 ≤ i×j ≤ 12的矩形组合如 1×1、1×2、2×3、3×4……共 30 余种选出与图片真实宽高比最接近的 (i, j)。举例一张 3:4 的竖版图会精确命中 3×4 12 块一张 16:9 的宽屏图则选 2×1 2 块。第 2 步等比缩放后切成 i×j 个图块图片先缩放到448×i × 448×j的画布再均匀裁剪成 i×j 张 448×448 的小图块。每个图块送入视觉编码器InternViTpatch 大小 14源码见 modeling_intern_vit.py产出 32×32 1024 个视觉 token。第 3 步附加一张全局缩略图当分块数大于 1 时use_thumbnail: true还会把整张图压缩成一张 448×448 的缩略图一并输入。图块负责看细节缩略图负责看全局模型既能读清小字又不会漏掉整体构图。 四、token 是怎么压缩的如果 12 块 1 缩略图全部按 1024 token 送入语言模型一张图就要 1.3 万个 token。InternVL3_5-14B 用**像素打乱Pixel Shuffle**做了 4 倍空间压缩1024 token (32×32) → 256 token (16×16) # downsample_ratio 0.5对应源码在 modeling_internvl_chat.py 的pixel_shuffle方法压缩后的特征再经mlp1投影到语言模型的维度。这样单张图最坏情况也只需13 × 256 3328 个视觉 token12 张图块就能塞进 32K 上下文里。 五、InternVL3_5-14B 动态分块参数清单以下参数均可在 config.json 中查到理解它们就能完全掌控分块行为参数本模型取值含义dynamic_image_sizetrue开启动态分辨率动态分块force_image_size448每个图块的边长像素min_dynamic_patch1最少分块数max_dynamic_patch12最多分块数use_thumbnailtrue额外附加一张全图缩略图downsample_ratio0.5像素打乱压缩比例1024→256 tokenps_versionv2像素打乱版本v2 修复了 v1 的转置问题配置类的默认值定义在 configuration_internvl_chat.pyHF 标准格式下的预处理参数见 preprocessor_config.json。 六、如何快速用起来使用 transformers 加载模型后动态分块由load_image自动完成你只需指定分块上限max_numpixel_values load_image(./examples/image1.jpg, max_num12).to(torch.bfloat16).cuda() response model.chat(tokenizer, pixel_values, image\nPlease describe the image in detail., generation_config)max_num12与配置中的max_dynamic_patch对应——正方形小图会自动只用 1 块 缩略图而超大竖版图则切满 12 块。完整的单图/多图/视频调用示例见 README.md 的 Quick Start 章节。❓ 七、新手常见问题FAQQ1max_num 应该设多少默认 12 是精度与显存的平衡点。显存紧张可降到 6处理整页文档、密集表格等 OCR 场景可保持 12。Q2小图片如手机截图会被切成 12 块吗不会。算法按宽高比匹配接近正方形且较小的图只会分 1 块外加 1 张缩略图共 2 × 256 512 个视觉 token开销很小。Q3和 InternVL3.5-Flash 的ViR是什么关系视觉分辨率路由器ViR是 Flash 版特有的第二级压缩它按图块的语义丰富程度把 256 token 进一步路由压缩到 64 token可减少约 50% 视觉 token 且几乎不掉点。本文的 InternVL3_5-14B 属于标准版不含 ViR但动态分块机制完全一致。Q4视频支持动态分块吗支持。逐帧采样后每帧同样走dynamic_preprocess通常设max_num1再拼接送入模型。 八、相关文件速查文件说明README.md模型介绍、架构说明与全部用法示例config.json模型主配置含动态分块全部参数configuration_internvl_chat.py对话模型配置类modeling_internvl_chat.py前向推理、pixel_shuffle 与特征融合modeling_intern_vit.py视觉编码器 InternViT 实现preprocessor_config.json图片预处理参数归一化、最大分块数chat_template.jinja / tokenizer.json对话模板与分词器一句话总结动态分块让 InternVL3_5-14B 用切块 缩略图的方式把任意尺寸、任意宽高比的超高分辨率图片稳定编码进最多约 3328 个视觉 token——这正是它读得清小字、看得全画面的关键所在。【免费下载链接】InternVL3_5-14B项目地址: https://ai.gitcode.com/hf_mirrors/OpenGVLab/InternVL3_5-14B创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门