2026/9/20 20:11:21

MXNet Gluon Model Zoo Vision 模型库完全指南:从 `get_model` 到 ResNet/VGG/MobileNet 的预训练模型使用

MXNet Gluon Model Zoo Vision 模型库完全指南:从 `get_model` 到 ResNet/VGG/MobileNet 的预训练模型使用 深度学习机器学习人工智能【免费下载链接】mxnetLightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Scala, Go, Javascript and more项目地址https://gitcode.com/gh_mirrors/mxnet1/mxnet点击查看免费下载本指南围绕 MXNet 官方文档 gluon.model_zoo.vision 索引 所定义的模型库展开系统梳理mxnet.gluon.model_zoo.vision中所有内置视觉模型ResNet、VGG、AlexNet、DenseNet、SqueezeNet、Inception、MobileNet的 API 清单、统一构造入口get_model、预训练权重加载机制与数据预处理约定。读完本文你将能够按名称实例化任意内置模型、正确加载 ImageNet 预训练权重并完成迁移学习同时理解这些模型在源码中的真实实现与参数语义。一、模型库总览vision子模块包含哪些架构在 MXNet Gluon 中预定义视觉模型统一收纳在mxnet.gluon.model_zoo.vision模块下其模块级文档见 vision/init.py明确列出了 9 类架构AlexNet经典 8 层卷积网络5 层卷积 3 层全连接DenseNet密集连接卷积网络Densenet-BC 变体121/161/169/201 层Inception V3多分支 Inception 架构ResNet V1原始残差网络18/34/50/101/152 层ResNet V2Identity Mappings 残差网络同层数规格SqueezeNet以极少参数量达到 AlexNet 级精度的轻量网络1.0/1.1 两个版本VGG极深卷积网络11/13/16/19 层可选 BatchNormMobileNet面向移动端的深度可分离卷积网络4 种宽度系数MobileNetV2倒残差 线性瓶颈架构4 种宽度系数这些架构对应的源码实现分布在 vision/ 目录下的 7 个文件中架构源码文件主要导出符号AlexNetalexnet.pyAlexNet,alexnetDenseNetdensenet.pyDenseNet,densenet121/161/169/201Inceptioninception.pyInception3,inception_v3ResNetresnet.pyResNetV1,ResNetV2,BasicBlockV1/V2,BottleneckV1/V2,get_resnet,resnet*_v1/v2SqueezeNetsqueezenet.pySqueezeNet,squeezenet1_0,squeezenet1_1VGGvgg.pyVGG,get_vgg,vgg11/13/16/19及_bn变体MobileNetmobilenet.pyMobileNet,MobileNetV2,mobilenet*,mobilenet_v2_*模块通过from .alexnet import *等一系列通配导入见 vision/init.py将所有构造器暴露到vision命名空间。二、统一入口get_model按名称实例化任意模型模型库提供唯一的字符串化入口get_model(name, **kwargs)vision/init.py其核心逻辑是维护一张name - 构造器的注册表然后按名称分派并转发所有关键字参数def get_model(name, **kwargs): models { resnet18_v1: resnet18_v1, resnet34_v1: resnet34_v1, # ... 全部 34 个模型名 mobilenetv2_0.25: mobilenet_v2_0_25, } name name.lower() if name not in models: raise ValueError(Model %s is not supported. Available options are\n\t%s % ( name, \n\t.join(sorted(models.keys())))) return modelsname参数说明均通过**kwargs透传给具体构造器name模型名称字符串大小写不敏感内部会.lower()归一化pretrained布尔值是否加载预训练权重默认Falseclasses输出层类别数默认1000ImageNetctx权重加载的设备上下文默认 CPUmx.cpu()root预训练权重存放目录默认$MXNET_HOME/models由mxnet.base.data_dir()解析。从源码可确认get_model支持的全部 34 个合法名称与官方索引页 autosummary 清单一一对应ResNetresnet18_v1resnet34_v1resnet50_v1resnet101_v1resnet152_v1resnet18_v2resnet34_v2resnet50_v2resnet101_v2resnet152_v2VGGvgg11vgg13vgg16vgg19vgg11_bnvgg13_bnvgg16_bnvgg19_bnAlexNetalexnetDenseNetdensenet121densenet161densenet169densenet201SqueezeNetsqueezenet1.0squeezenet1.1注意名称中为英文句点与函数名squeezenet1_0的下划线写法不同Inceptioninceptionv3MobileNetmobilenet1.0mobilenet0.75mobilenet0.5mobilenet0.25MobileNetV2mobilenetv2_1.0mobilenetv2_0.75mobilenetv2_0.5mobilenetv2_0.25单元测试 test_gluon_model_zoo.py 对上述全部 34 个名称逐一执行了get_model(name, ...)构造 前向推理验证可作为名称正确性与可用性的直接依据。典型用法from mxnet.gluon.model_zoo import vision # 随机初始化模型 resnet18 vision.resnet18_v1() # 加载 ImageNet 预训练权重 alexnet vision.alexnet(pretrainedTrue) # 通过统一入口按名称构造 net vision.get_model(densenet121, pretrainedTrue, ctxmx.gpu(0))三、按架构展开每个模型的构造器与实现细节3.1 ResNetV1/V2ResNet 系列由get_resnet(version, num_layers, ...)统一构造resnet.py。version取值 1 或 2num_layers取值 18/34/50/101/152不合法取值会直接触发断言。resnet_spec表resnet.py定义了各层数的块类型与通道配置resnet_spec {18: (basic_block, [2, 2, 2, 2], [64, 64, 128, 256, 512]), 34: (basic_block, [3, 4, 6, 3], [64, 64, 128, 256, 512]), 50: (bottle_neck, [3, 4, 6, 3], [64, 256, 512, 1024, 2048]), 101: (bottle_neck, [3, 4, 23, 3], [64, 256, 512, 1024, 2048]), 152: (bottle_neck, [3, 8, 36, 3], [64, 256, 512, 1024, 2048])}从源码结构看18/34 层使用两段式BasicBlockV1/V250 层及以上使用三段式BottleneckV1/V21×1 降维 → 3×3 → 1×1 升维通道比为 4:1。V1 与 V2 的核心区别在残差连接的位置V1 在残差相加后做 ReLUresnet.pyV2 则先把 BatchNorm 前置到卷积之前ResNetV2在首个卷积前插入nn.BatchNorm(scaleFalse, centerFalse)见 resnet.py对应两篇论文的演进。每个构造器如resnet18_v1(**kwargs)只是get_resnet(1, 18, **kwargs)的薄封装完整参数为pretrainedFalse, ctxcpu(), root$MXNET_HOME/models另可透传classes、thumbnailV2 独有启用后使用 3×3 小卷积替代 7×7 大卷积以适配小尺寸输入。3.2 VGGget_vgg(num_layers, ...)依据vgg_spec表vgg.py展开层结构5 个特征块中的 3×3 卷积层数与 64→512 的通道翻倍规律固定vgg_spec {11: ([1, 1, 2, 2, 2], [64, 128, 256, 512, 512]), 13: ([2, 2, 2, 2, 2], [64, 128, 256, 512, 512]), 16: ([2, 2, 3, 3, 3], [64, 128, 256, 512, 512]), 19: ([2, 2, 4, 4, 4], [64, 128, 256, 512, 512])}VGG类vgg.py在特征提取后接两个 4096 维全连接层各带 0.5 的 Dropout最终输出层维度由classes决定。vgg*_bn变体在每层卷积后插入 BatchNorm预训练权重文件名也会带_bn后缀见 vgg.py。3.3 AlexNetAlexNet类alexnet.py完整复刻原始结构11×11/stride 4 首层卷积 → 5×5 → 3 个 3×3 卷积穿插 3×3 MaxPool最后接 4096-4096 全连接含 0.5 Dropout与输出层。构造器alexnet(pretrainedFalse, ctxcpu(), root..., **kwargs)仅接受classes作为附加关键字参数。3.4 DenseNetDenseNet类densenet.py实现 DenseNet-BC每个 dense block 内各层按growth_rate增长率 k累加通道block 间以 1×1 卷积 2×2 平均池化的 transition 层过渡。densenet_spec表densenet.py定义四种规格的初始通道数与增长率densenet_spec {121: (64, 32, [6, 12, 24, 16]), 161: (96, 48, [6, 12, 36, 24]), 169: (64, 32, [6, 12, 32, 32]), 201: (64, 32, [6, 12, 48, 32])}DenseNet构造器还暴露bn_size瓶颈倍率默认 4、dropoutdense 层后丢弃率默认 0与classes默认 1000三个可调参数。3.5 SqueezeNetget_squeezenet(version, ...)squeezenet.py按版本选择 Fire 模块布局。1.0 为原始布局3×3 与 1×1 混合1.1 计算量约为 1.0 的 2.4 倍减少2.4× less computation且参数量更少两者预训练权重文件名分别为squeezenet1.0与squeezenet1.1对应_model_sha1表中的记录。3.6 Inception V3Inception3类实现 Inception V3 的卷积/池化多分支并行结构入口构造器为inception_v3(pretrainedFalse, ctxcpu(), root..., **kwargs)inception.py附加关键字参数仅classes。与其他模型不同Inception V3 的标准输入尺寸是 299×299这一点在模型库测试中被显式处理见下文。3.7 MobileNet / MobileNetV2两个系列由get_mobilenet(multiplier, ...)与get_mobilenet_v2(multiplier, ...)构造mobilenet.py核心参数multiplier宽度系数控制每层通道数按比例缩放文档与源码均注明仅支持不小于 0.25 的系数仓库内置了 1.0/0.75/0.5/0.25 四种档位。MobileNet 使用深度可分离卷积depthwise pointwiseMobileNetV2 进一步采用倒残差inverted residual与线性瓶颈结构。所有档位均提供预训练权重见_model_sha1表中mobilenet*系列 8 条记录。四、预训练权重下载、校验与本地存储机制所有带pretrainedTrue的构造器都走同一条加载链路调用 model_store.py 中的get_model_file(name, root)获取本地.params文件路径再执行net.load_parameters(file_path, ctxctx)。该模块的机制值得展开文件名规范本地文件名为{模型名}-{sha1前8位}.params例如resnet50_v1-a0666292.paramsshort_hash函数从_model_sha1表model_store.py取校验值本地命中校验若文件已存在先做 SHA1 完整性校验不匹配会打印警告并重新下载在线下载未命中时从apache_repo_urlApache MXNet 官方 S3 存储按{repo_url}gluon/models/{file_name}.zip格式下载 zip 并解压到root目录可通过环境变量MXNET_GLUON_REPO覆盖镜像源model_store.py二次校验解压后再次比对 SHA1不一致则抛出ValueError防止下载损坏清理purge(root)函数可删除本地全部.params缓存文件便于强制重新下载。_model_sha1表完整列出了全部 34 个模型的 SHA1 校验值覆盖本文第二节的全部名称可作为“该模型是否有官方预训练权重”的权威证据。五、数据预处理与输入约定迁移学习必读模块文档vision/init.py对预训练模型的输入做了统一约定这是直接使用预训练权重进行推理或微调的前提输入形状3 通道 RGB 图像的小批量形状为(N, 3, H, W)其中 H、W 至少为 224Inception V3 例外需要 299×299测试用例 test_gluon_model_zoo.py 对此做了分支处理像素范围图像先缩放到 [0, 1]归一化参数使用mean [0.485, 0.456, 0.406]、std [0.229, 0.224, 0.225]这是 ImageNet 预训练的标准统计量推荐工具MXNet 提供mx.image.color_normalize完成该变换import mxnet as mx image image / 255 # 先缩放到 [0, 1] normalized mx.image.color_normalize( image, meanmx.nd.array([0.485, 0.456, 0.406]), stdmx.nd.array([0.229, 0.224, 0.225]))在 example/image-classification/common 下的训练/微调脚本中可以看到这一归一化流程与vision.get_model(..., pretrainedTrue)配合使用的完整实践。六、模型库的正确性与可用性验证模型库的实现正确性由单元测试与 GPU 测试双重保障test_gluon_model_zoo.pyCPU 侧遍历全部 34 个模型名构造模型后对随机输入执行前向推理并wait_to_read()验证其中squeezenet1.1以pretrainedTrue加载真实权重参与测试其余模型使用collect_params().initialize()随机初始化测试还按模型区分输入尺寸Inception 用 299×299其余用 224×224test_gluon_model_zoo_gpu.pyGPU 环境下的对应验证test_gluon_gpu.py 等文件亦涉及模型库相关组件的覆盖。这些测试同时印证了所有模型均为gluon.HybridBlock子类支持hybridize()静态图编译加速并可通过get_model按名称统一获取。七、常见问题与使用建议get_model名称拼写注册表使用句点形式squeezenet1.0、mobilenet0.5、inceptionv3而 Python 函数名使用下划线形式squeezenet1_0、mobilenet0_5、inception_v3两者不可混用名称大小写不敏感。类别数调整默认输出层为 1000 类做迁移学习时传classesN会重建输出层若同时传pretrainedTrue预训练权重中与输出层不匹配的参数不会被加载Gluonload_parameters的默认行为需要自行微调新输出层。权重缓存目录默认$MXNET_HOME/models可通过root参数或环境变量MXNET_GLUON_REPO镜像源控制下载位置与来源网络受限环境建议预先下载后复用root目录。输入尺寸除 Inception V3 外均支持 ≥224×224 的输入V2 系列 ResNet 的thumbnailTrue可降低首层感受野以适配更小输入。首次加载耗时pretrainedTrue首次使用会触发在线下载zip 解压 SHA1 校验耗时取决于网络之后直接命中本地缓存。八、API 参考速查以下为官方索引页 index.rst 定义的完整 API 面按模块分组的构造器/类清单对应mxnet.gluon.model_zoo.vision分组函数类通用入口get_model—ResNetresnet18_v1resnet34_v1resnet50_v1resnet101_v1resnet152_v1、resnet18_v2resnet34_v2resnet50_v2resnet101_v2resnet152_v2、get_resnetResNetV1ResNetV2BasicBlockV1BasicBlockV2BottleneckV1BottleneckV2VGGvgg11vgg13vgg16vgg19、vgg11_bnvgg13_bnvgg16_bnvgg19_bn、get_vggVGGAlexNetalexnetAlexNetDenseNetdensenet121densenet161densenet169densenet201DenseNetSqueezeNetsqueezenet1_0squeezenet1_1SqueezeNetInceptioninception_v3Inception3MobileNetmobilenet1_0mobilenet0_75mobilenet0_5mobilenet0_25、mobilenet_v2_1_0mobilenet_v2_0_75mobilenet_v2_0_5mobilenet_v2_0_25MobileNetMobileNetV2所有构造器的统一签名模式为(pretrainedFalse, ctxcpu(), root$MXNET_HOME/models, **kwargs)其中**kwargs可透传classes输出类别数默认 1000DenseNet 额外支持bn_size/dropoutResNetV2 支持thumbnailMobileNet 系列的宽度由multiplier决定。需要深入某一架构的算子级实现时可继续阅读对应源码文件与单元测试例如 resnet.py 与 test_gluon_model_zoo.py 的对照研读。赞分享深度学习机器学习人工智能【免费下载链接】mxnetLightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Scala, Go, Javascript and more项目地址https://gitcode.com/gh_mirrors/mxnet1/mxnet点击查看免费下载相关推荐MXNet Gluon 模型库gluon.model_zoo.vision完全指南预训练视觉模型与 get_model 实战MXNet Gluon 模型库gluon.model_zoo.vision完全指南预训练视觉模型与 get_model 实战 导读 mxnet.gluon人工智能深度学习机器学习AutoGluon Time Series 模型库Model Zoo完全指南从基线模型到预训练大模型AutoGluon Time Series 模型库Model Zoo完全指南从基线模型到预训练大模型 导读 本文面向 AutoGluon TimeSeri人工智能机器学习AutoML深度学习数据科学如何用StreamFX插件为OBS Studio解锁专业级视觉效果如何用StreamFX插件为OBS Studio解锁专业级视觉效果 价值定位解决直播创作者三大核心痛点 StreamFX作为OBS Studio的增强插深度学习机器学习开发工具上一篇Manta音效系统终极指南如何为桌面应用添加交互反馈声音下一篇从使用者到贡献者向kubectl-plugins生态添加自定义插件的完整路径创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考