资讯动态

InternVL2_5-78B动态高分辨率原理详解:dynamic_preprocess一行代码搞定OCR小字识别

发布时间:2026/10/17 13:25:11 来源:尧图企业网站定制
【免费下载链接】InternVL2_5-78B项目地址https://ai.gitcode.com/OpenGVLab/InternVL2_5-78B点击查看免费下载InternVL2_5-78B 是 OpenGVLab 推出的开源多模态大模型MLLM由 InternViT-6B 视觉编码器与 Qwen2.5-72B 语言模型融合而成。它的杀手锏是动态高分辨率一张高清图可以被自动切成多块 448×448 的瓦片让模型真正看清图片里的小字——只需一行dynamic_preprocess代码文档 OCR、图表解析、密集文字识别都能轻松搞定。为什么普通模型会把图里的小字糊掉大多数视觉模型为了控制计算量会把输入图像固定缩放到 224×224 或 448×448。一张包含密密麻麻文字的文档照片经过这种粗暴压缩后小字瞬间糊成一片模型自然看不见。InternVL2_5-78B 的思路完全不同——它采用**动态高分辨率Dynamic High-Resolution**策略❌ 不做固定缩放不强行压缩整张图✅ 根据图片宽高比把图像分割成若干 448×448 像素的瓦片tiles✅ 每张瓦片保留原始细节小字、公式、表格线都能清晰呈现这套策略早在 InternVL 1.5 中提出并在 2.0 / 2.5 中扩展到多图和视频场景。上图就是仓库自带的测试图片 examples/image1.jpg1000×747约 4:3 横版它正好用来演示瓦片切分的效果。dynamic_preprocess 工作原理5 步拆图解码 打开 README.md 中的dynamic_preprocess源码整个流程可以概括为 5 步第 1 步测量宽高比读取原图的orig_width / orig_height得到 aspect_ratio。第 2 步枚举候选网格在min_num到max_num默认最多 12的范围内枚举所有可能的i × j网格布局例如(1,1)、(2,1)、(3,2)、(4,3)……第 3 步挑选最贴合的网格通过find_closest_aspect_ratio函数找到与原图宽高比最接近的那个网格——这样缩放时图片几乎不变形、不裁边。第 4 步缩放并切块把整图缩放到448×i × 448×j再均匀切成i×j块 448×448 的瓦片。 以 1000×747 的示例图为例最接近的网格是4×3切出12 块瓦片。第 5 步追加缩略图thumbnail若开启use_thumbnailTrue会额外添加一张 448×448 的全局缩略图。局部瓦片负责看清细节缩略图负责把握全局——二者结合模型既不会漏掉版面结构也不会错过角落的小字。一行代码启用动态高分辨率 对新手来说完全不用手写切图逻辑。仓库已封装好 load_image 函数核心调用只有一行# 一行搞定动态切图 缩略图 images dynamic_preprocess(image, image_size448, use_thumbnailTrue, max_num12) pixel_values [transform(image) for image in images]再配合build_transform完成归一化就能直接喂给模型pixel_values load_image(./examples/image1.jpg, max_num12) response model.chat(tokenizer, pixel_values, image\n请识别图中的文字)完整的推理示例含多图、视频、批处理都在 README.md 中照着改路径即可运行。关键参数速查表 ⚙️参数默认值作用调参建议image_size448每块瓦片的边长像素一般保持默认max_num12单张图最多切多少块文档/密集小字场景可调大到 24min_num1最少切块数大图可设为 2~4避免整图被压成一块use_thumbnailTrue是否追加全局缩略图需要理解版面/整体布局时保留这些默认值也写在 config.json 中max_dynamic_patch: 12、min_dynamic_patch: 1、force_image_size: 448、use_thumbnail: true。幕后揭秘切好的瓦片如何进入大模型 InternVL2_5-78B 遵循ViT-MLP-LLM三段式架构瓦片的旅程是这样的ViT 视觉编码器每块 448×448 瓦片被切成 14×14 的小 patch得到 32×32 1024 个视觉特征Pixel Shuffle 下采样在 modeling_internvl_chat.py 中pixel_shuffle把相邻 2×2 的特征合并token 数直接减少到 1/4——每块瓦片只需256 个视觉 tokenMLP 投影 LLM投影后的特征与文本 token 拼接送入 Qwen2.5-72B 统一理解与生成。12 块瓦片 1 张缩略图 13 × 256 ≈3300 个视觉 token这就是动态高分辨率看得清又控得住成本的秘密。处理多图或视频时通过num_patches_list参数告诉模型每张图各占几块瓦片即可见 README.md 的视频示例。OCR 小字识别实战技巧 密集文档调大max_num发票、论文、代码截图建议max_num16~24瓦片越多细节越足注意显存预算瓦片数线性增加视觉 token 数长图请配合 Flash Attention 与多卡部署README 提供了split_model方案保留缩略图识别表格、图表时缩略图帮助模型理解行列结构减少串行错行短视频逐帧切片每帧同样走dynamic_preprocess默认 448×448示例视频见 examples/red-panda.mp4多语言 OCRInternViT 2.5 的增量预训练专门强化了多语言 OCR 与数学图表能力中英文混排文档也能应对。写在最后一句话总结 InternVL2_5-78B 的动态高分辨率测宽高比 → 选最贴合网格 → 切成 448×448 瓦片 → 加缩略图一行dynamic_preprocess就全部搞定。想动手体验克隆仓库后照着 README.md 的 Quick Start 加载模型几分钟就能看到小字识别的效果。赞分享【免费下载链接】InternVL2_5-78B项目地址https://ai.gitcode.com/OpenGVLab/InternVL2_5-78B点击查看免费下载相关推荐5分钟掌握Windows屏幕取色神器ColorWanted专业指南5分钟掌握Windows屏幕取色神器ColorWanted专业指南 还在为网页设计、UI开发或图像处理中需要精确获取颜色而烦恼吗ColorWanted作为一Cherry Studio 分层预设配置模式Layered Preset Pattern实战指南Preference 增量覆盖与 SQLite 实体合并的架构实践Cherry Studio 分层预设配置模式Layered Preset Pattern实战指南Preference 增量覆盖与 SQLite 实体合并的Java OCR实战指南三小时搞定图像文字识别Java OCR实战指南三小时搞定图像文字识别 还在为从图片中提取文字而烦恼吗想象一下这样的场景你手头有一堆扫描的纸质文档需要快速转换为可编辑的电子文本上一篇10分钟跑通WeChatFerry微信自动回复实战指南下一篇CANN驱动DCMI认证证书API创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑