资讯动态

InternImage配置参数完全指南:config.json逐行解读,depths、groups与21841类背后是什么

发布时间:2026/10/20 19:42:33 来源:尧图企业网站定制
【免费下载链接】internimage_h_jointto22k_384项目地址https://ai.gitcode.com/OpenGVLab/internimage_h_jointto22k_384点击查看免费下载InternImageinternimage_h_jointto22k_384是 OpenGVLab 推出的 1.08B 参数视觉大模型其 config.json 文件定义了网络深度、DCNv3 分组数和 21841 类分类头。本文逐行解读这份 InternImage 配置参数带你一次看懂 depths、groups 和 21841 类的含义。 快速上手config.json 是什么在 Hugging Facetransformers体系中加载模型前会先读取config.json把网络结构按图施工地搭建出来。本仓库的三个关键文件各司其职config.json —— 网络结构的全部超参数configuration_internimage.py —— 参数对应的 Python 类InternImageConfig带默认值modeling_internimage.py —— 真正消费这些参数、搭建网络的主干代码_name_or_path字段写着模型名auto_map则告诉框架自定义类在哪个文件auto_map: { AutoConfig: configuration_internimage.InternImageConfig, AutoModel: modeling_internimage.InternImageModel, AutoModelForImageClassification: modeling_internimage.InternImageModelForImageClassification }也就是说用AutoModel.from_pretrained(..., trust_remote_codeTrue)加载时AutoModel得到的是不带分类头的纯主干内部强制num_classes0而AutoModelForImageClassification才会接上 21841 类的分类头见 modeling_internimage.py。️ 参数速查总表参数值作用一句话channels320第一阶段的特征图通道数后续阶段依次翻倍depths[6, 6, 32, 6]4 个阶段各自堆叠的 block 数量groups[10, 20, 40, 80]各阶段 DCNv3 的分组数可变形卷积的注意力头数dw_kernel_size5生成偏移量/权重前用的深度卷积核大小H/G 专用mlp_ratio4.0MLP 隐层展宽倍率num_classes21841分类头输出的类别数use_clip_projectortrue启用 CLIP 风格的特征投影分类头H/G 专用core_opDCNv3核心算子第三代可变形卷积drop_rate/drop_path_rate0.0正则化强度推理仓库中均为 0torch_dtypefloat32推理默认精度 depths4 个阶段、50 个 block 怎么排布depths: [6, 6, 32, 6]表示网络分成4 个阶段stage每个阶段由若干个InternImageBlock串联。在 InternImageBlock 中depth直接决定nn.ModuleList里创建多少个InternImageLayerself.blocks nn.ModuleList([InternImageLayer(...) for i in range(depth)])阶段depths通道数384px 输入下的特征图Stage 1632096 × 96Stage 2664048 × 48Stage 332128024 × 24Stage 46256012 × 12两个细节值得注意通道数翻倍、分辨率减半每个阶段末尾最后阶段除外有一个 DownsampleLayer用 3×3、stride2 卷积把特征图减半、通道翻倍。num_features因此是channels × 2³ 2560modeling_internimage.py。Stage 3 占了 32 个 block是计算量的大头——深层语义理解主要靠它这种中间厚、两头薄的布局与主流大模型一致。 groupsDCNv3 的注意力头数为什么是 10/20/40/80groups: [10, 20, 40, 80]传给 DCNv3 的group参数dcnv3.py。DCNv3 是 InternImage 的灵魂算子每个像素动态预测一组偏移量offset和一组 softmax权重mask实现注意力式的可变形采样。groups 本质上就是这种采样注意力的头数。它与通道数存在一条必须整除的硬约束见 dcnv3.pyif channels % group ! 0: raise ValueError(channels must be divisible by group, but got {channels} and {group})本配置恰好满足320 ÷ 10 32、640 ÷ 20 32、1280 ÷ 40 32、2560 ÷ 80 32每个 head 分到 32 个通道——是 2 的幂次。源码里有一行注释专门解释了原因CUDA 实现中每个 attention head 维度为 2 的幂更高效。这正是 groups 逐阶段翻倍、始终比通道数慢一拍的原因。另外groups也决定了偏移量的参数量每个像素要输出group × kernel² × 2个 offset 和group × kernel²个 maskdcnv3.py所以 groups 越大DCNv3 越精打细算但参数和计算也越多。 num_classes21841 到底是什么num_classes: 21841是这份配置最有故事的字段它是ImageNet-22k 的类别数原始类别表约 21843 项去掉第 0 位未使用类和缺失类后为 21841。模型名里的jointto22k指的是 InternImage-H 先在内部 427M 数据集上联合预训练、再在IN-22KImageNet-22k上继续预训练。而仓库 README 中 README.md 标注的 90.1% Top-1 是在ImageNet-1K1000 类子集评测的结果——1K 的类正是 22k 类别的子集所以同一个 21841 维的分类头天然兼容两种评测。分类头长什么样对 H 这一档use_clip_projector: true启用了专门的 CLIP 风格分类头modeling_internimage.pyStage 4 特征经 1×1 卷积 PixelShuffle 投影到 1024 维Stage 3 特征经 1×1 卷积后相加融合多尺度信息过 AttentionPoolingBlock16 头注意力池化压到 768 维CLIP 文本塔维度最后Linear(768 → 21841)输出 logits。cls_scale: 1.5则用于非 CLIP 头的路径把 1×1 卷积输出通道放大 1.5 倍2560 × 1.5 3840再送入分类层modeling_internimage.py。 核心算子组core_op、dw_kernel_size、offset_scale参数值解读core_opDCNv3指定核心算子没装 CUDA 版 DCNv3 时自动回退到纯 PyTorch 实现modeling_internimage.pydw_kernel_size5H/G 专用先用 5×5 深度卷积提特征再算 offset/mask感受野比 3×3 更大offset_scale1.0偏移量缩放系数控制动态采样点的移动幅度center_feature_scaletrueH/G 专用动态融合采样结果与中心像素投影保留中心信息remove_centerfalse采样时是否去掉中心点要求卷积核为奇数在 DCNv3.forward 中流程很直观input_proj→ 深度卷积dw_conv→ 线性层出 offset/mask → 核心采样 → 可选的 center 融合 →output_proj。 归一化策略res_post_norm 与 level2_post_norm这份配置里归一化参数看似平淡实则藏着 H/G 模型特有的稳定性设计post_norm: false—— 使用标准的 pre-norm先 norm 再过 DCNv3/MLP见 InternImageLayer.forward。res_post_norm: true—— H/G 专用改进在每个残差分支输出之后再加一层 LNres_post_norm1/2即x norm(branch(x))抑制深层特征幅值漂移。level2_post_norm: truelevel2_post_norm_block_ids: [5, 11, 17, 23, 29]—— 只在 Stage 332 个 block中对每 6 个 block 的末尾各插一次额外 LN。5 个 id 对应第 6/12/18/24/30 个 block恰好均匀切分 Stage 332 5×6 2。这个开关在组网时只对第 2 级生效modeling_internimage.py。norm_layer: LN—— 全程 LayerNormact_layer: GELU—— 全程 GELU 激活。 正则化与推理开关参数值说明drop_rate0.0Dropout 率。源码默认是 0.2本仓库为已训练完的推理权重置 0 保证输出确定drop_path_rate0.0Stochastic Depth随机深度率drop_path_typelinearStochastic Depth 的分配方式随深度线性递增torch.linspacemodeling_internimage.pywith_cpfalse是否用梯度检查点省显存纯推理场景恒为 falsetorch_dtypefloat32加载默认精度可按需改为 bfloat16 等transformers_version4.37.2记录生成配置时的 transformers 版本仅作兼容性参考️ 配套输入preprocessor_config.json模型吃什么也由 preprocessor_config.json 定义这里全是 ImageNet 标准配方size: 384/crop_size: 384—— 与模型名中的384对应先缩放到短边 384再中心裁剪 384×384对应 StemLayer 两次 stride2输出 96×96 进入 Stage 1。image_mean: [0.485, 0.456, 0.406]/image_std: [0.229, 0.224, 0.225]—— ImageNet 经典归一化均值/标准差。resample: 3—— PIL 的双三次插值BICUBIC。feature_extractor_type: CLIPFeatureExtractor—— 直接复用 CLIP 的图像处理器这也与use_clip_projector的 CLIP 血统一脉相承。❓ 三个高频疑问1. depths 和 groups 能改吗参数层面可以任意填但 model.safetensors 的权重是按当前配置训练的改depths/groups/channels会导致权重形状对不上加载直接报错。这套配置是为 1.08B 权重的 InternImage-H 量身定制的。2. 为什么 groups 不是 [3, 6, 12, 24]小模型如 T/S/B通道数少64 起步groups 小H 的通道是 320 起步为保持每 head 32 通道且为 2 的幂的 CUDA 高效布局groups 相应放大到 10/20/40/80。3. 21841 维 logits 想只测 1K 怎么办ImageNet-1K 的 1000 类是 22k 类别的子集取对应索引的 logits 即可评测仓库 README 中 90.1% 的 Top-1 就是这么算出来的。✅ 小结一份 config.json 读完InternImage-H 的骨架已尽览320 通道起步、[6, 6, 32, 6] 的四级深浅布局、[10, 20, 40, 80] 的 DCNv3 分组、5 像素深度卷积、21841 类 CLIP 风格分类头、384px 输入。想进一步动手推荐沿着 configuration_internimage.py → modeling_internimage.py → dcnv3.py 的顺序读源码每行配置都能找到它落地的那几行 Python。赞分享【免费下载链接】internimage_h_jointto22k_384项目地址https://ai.gitcode.com/OpenGVLab/internimage_h_jointto22k_384点击查看免费下载相关推荐internimage_xl_22k_384的config.json全解读depths、groups、layer_scale等20参数逐个讲透internimage_xl_22k_384的config.json全解读depths、groups、layer_scale等20参数逐个讲透 InternIN-22K与IN-1K预训练差异详解internimage_l_22k_384的21841类分类头背后是什么IN 22K与IN 1K预训练差异详解internimage_l_22k_384的21841类分类头背后是什么 一句话导读 internimage_逐行解读Mellum2-12B-A2.5B-Instruct-mxfp4的config.json300行配置背后的模型真相逐行解读Mellum2 12B A2.5B Instruct mxfp4的config.json300行配置背后的模型真相 Mellum2 12B A2.5B上一篇Vibe-Trading 一目均衡表信号系统实战TK 交叉三重过滤引擎与 78 根 K 线预热机制下一篇OpenViking 资源管理命令实战指南ov CLI 下的增删改查、定时刷新与语义检索创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

免费获取报价 →
↑