资讯动态

Mini-InternVL2-2B-DA-DriveLM视觉编码器深度解析:从448×448 Patch到pixel_shuffle四倍下采样

发布时间:2026/10/17 16:07:38 来源:尧图企业网站定制
【免费下载链接】Mini-InternVL2-2B-DA-DriveLM项目地址https://ai.gitcode.com/OpenGVLab/Mini-InternVL2-2B-DA-DriveLM点击查看免费下载Mini-InternVL2-2B-DA-DriveLM 是面向自动驾驶领域的口袋级多模态大模型VLM其视觉编码器把一张 448×448 的图像切分成 Patch再经过 InternViT 编码并用pixel_shuffle做2×2 四倍 token 下采样最终以极少的视觉 token 送入语言模型实现高精度、低开销的图文理解。本文带你完整走通这条图像 → 视觉特征 → LLM的流水线。一、模型速览一个小身体、大性能的 VLM Mini-InternVL 系列只用约5% 的参数就能保住约 90% 的性能是端侧 / 边缘部署的热门选择。本模型在 Mini-InternVL2-2B 基础上用统一适配框架Unified Domain-Adaptation针对自动驾驶做了领域微调可理解行车图像并输出场景描述、目标识别、决策问答等。它由两部分组成组件作用关键参数InternViT 视觉编码器把图像编码成视觉特征hidden_size1024、24 层、16 头InternLM2 语言模型结合视觉 token 做语言生成hidden_size2048、24 层mlp1 投影层把视觉特征对齐到 LLM 空间4096 → 2048下面逐层拆解视觉编码器的瘦身魔法。二、448×448 输入为什么固定这个尺寸模型对图像做了统一的预处理配置见 preprocessor_config.jsoncrop_size/size448使用 ImageNet 均值/方差归一化image_mean [0.485, 0.456, 0.406]而每个 448×448 图像块tile会按14×14 的 Patch切分448 ÷ 14 32 → 32 × 32 1024 个 Patch也就是说一张 448×448 的图进入 ViT 前就被切成了 1024 个小方块。Patch 嵌入由一个卷积完成kernel 和 stride 都是 14相关代码在 modeling_intern_vit.py。 小知识448 能被 14 整除、又能被 2 整除下采样用是分辨率—token 数—下采样三者平衡的结果。三、InternViT24 层 Transformer 编码 1024 个 Patch token 进入编码器后先加上可学习的CLS token和位置编码支持双三次插值重采样因此可适配动态分辨率再经过 24 层标准 Transformer 编码Attention MLP LayerNorm。本模型视觉部分的实际配置见 config.json配置项值含义hidden_size1024每个 token 的维度num_hidden_layers24ViT 层数num_attention_heads16注意力头数intermediate_size4096MLP 中间维度norm_typelayer_norm归一化类型use_flash_attntrue开启 FlashAttention 加速编码器主体在 InternVisionEncoder它还会用梯度检查点gradient checkpointing在训练时节省显存。这一步之后模型拿到的是1024 个 1024 维 token——对 LLM 来说太多了于是登场了本文的主角。四、pixel_shuffle四倍下采样是核心瘦身术 ✂️在 modeling_internvl_chat.py 中extract_feature把 ViT 输出去掉 CLS重排回空间网格32×32然后调用pixel_shuffledownsample_ratio0.5空间上 2×2 合并相邻的 4 个 token 拼成 1 个token 数 ÷432×32 1024→16×16 256维度 ×41024→4096因为 4 个 token 的维度被拼接。这正是标题里四倍下采样的含义——空间分辨率降一半token 总数降为 1/4信息却通过拼接维度完整保留。每个 448×448 块最终只贡献256 个视觉 token计算方式如下代码见 modeling_internvl_chat.pynum_image_token (448 // 14)² × (0.5)² 1024 × 0.25 256为什么用pixel_shuffle而不是直接平均池化因为它是无参数的纯重排reshape permute既省计算又保信息非常适合先压 token 数、再让 LLM 学语义的设计。五、mlp1把视觉特征对齐到 LLM 空间 下采样后的256 × 4096特征还不能直接喂给语言模型。模型用一个轻量投影网络mlp1完成对齐见 modeling_internvl_chat.pyLayerNorm(4096) → Linear(4096→2048) → GELU → Linear(2048→2048)输出维度 2048正好等于语言模型的hidden_size。随后这些视觉 token 被替换进文本序列里的IMG_CONTEXT占位符位置语言模型就能像读词一样读图了。六、动态分辨率一图多块 缩略图 ️真实行车画面往往是宽幅的。Mini-InternVL 支持动态分辨率dynamic tiling把大图切成多块 448×448 tilemin_dynamic_patch1、max_dynamic_patch12并在多块时追加一张 448×448缩略图use_thumbnailtrue帮助模型掌握全局。配置项见 config.jsondynamic_image_size: trueforce_image_size: 448use_thumbnail: true因此一张宽幅图像最多可产生12 块 1 缩略图 13个 448×448 tile每个 tile 各贡献 256 个视觉 token模型据此理解整幅场景。七、关键文件导航 文件说明modeling_intern_vit.pyInternViT 视觉编码器Patch 嵌入、位置编码、Attention、MLPconfiguration_intern_vit.py视觉编码器超参数定义modeling_internvl_chat.py视觉特征提取、pixel_shuffle、mlp1投影与图文融合config.json模型总配置downsample_ratio、动态分辨率、ViT/LLM 参数preprocessor_config.json图像预处理448 尺寸、归一化conversation.py对话模板与IMG_CONTEXT等占位符八、小结 Mini-InternVL2-2B-DA-DriveLM 的视觉编码器用一条清晰链路完成瘦身448×448 输入→ 14×14 Patch 切分为 1024 token24 层 InternViT→ 编码出 1024 个 1024 维特征pixel_shuffleratio0.5→ 2×2 合并token 四倍降采样为 256 个 4096 维mlp1 投影→ 对齐到 LLM 的 2048 维空间。凭借这套高分辨率编码 无参数下采样压缩的设计它既能看清行车细节又用极少的视觉 token 把推理成本压到最低非常适合自动驾驶这类既要精度、又要低延迟的边缘场景。理解这条流水线你就能看懂 InternVL 家族所有模型的视觉编码核心。赞分享【免费下载链接】Mini-InternVL2-2B-DA-DriveLM项目地址https://ai.gitcode.com/OpenGVLab/Mini-InternVL2-2B-DA-DriveLM点击查看免费下载相关推荐为什么Mini-InternVL2-2B-DA-DriveLM能理解道路场景领域适配DA技术完整解析为什么Mini InternVL2 2B DA DriveLM能理解道路场景领域适配DA技术完整解析 Mini InternVL2 2B DA DriveMini-InternVL2-2B-DA-DriveLM部署实战指南从环境搭建到FlashAttention加速的完整教程Mini InternVL2 2B DA DriveLM部署实战指南从环境搭建到FlashAttention加速的完整教程 本文带你快速完成 Mini Intticket-purchase大麦自动抢票 5 分钟上手的 Web移动端完整指南ticket purchase大麦自动抢票 5 分钟上手的 Web移动端完整指南 ticket purchase 是一个 Python 大麦自动抢票工具网创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

免费获取报价 →
↑