MMPose 中的 AlexNet 骨干网络从 ImageNet 分类到 2D 姿态估计的经典实践【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose导读本文围绕 docs/src/papers/backbones/alexnet.md 所记录的 AlexNet 论文深入解析它在 OpenMMLab 姿态估计工具箱 MMPose 中的落地实现包括网络结构逐层拆解、num_classes双模式设计、注册机制、以及基于 COCO 数据集的完整 2D 姿态估计训练配置。读完本文你将掌握如何在 MMPose 中直接复用一个经典分类骨干将其改造为姿态估计任务的特征提取器并理解其性能边界与适用场景。AlexNet 论文核心内容AlexNet 是 2012 年由 Alex Krizhevsky、Ilya Sutskever 和 Geoffrey E. Hinton 提出的深度卷积神经网络论文发表于 NeurIPS 2012原 NIPS标题为Imagenet classification with deep convolutional neural networks。原文的官方摘要要点如下在包含 120 万张高分辨率图像的 ImageNet LSVRC-2010 数据集上训练了一个大规模深度卷积网络完成 1000 类别分类在测试集上取得 top-1 错误率 37.5%、top-5 错误率 17.0%显著优于当时的 SOTA网络包含约 6000 万参数、65 万神经元由 5 个卷积层部分后接最大池化层和 3 个全连接层组成末端为 1000 路 softmax通过使用非饱和激活函数ReLU与高效的 GPU 卷积实现来加速训练在全连接层上引入 dropout 正则化以缓解过拟合在 ILSVRC-2012 竞赛中以 top-5 错误率 15.3% 夺冠而第二名成绩为 26.2%。原文档同时给出了标准的 BibTeX 引用krizhevsky2012imagenet在撰写论文或复现报告时可直接引用。MMPose 中的 AlexNet 实现MMPose 将 AlexNet 作为骨干网络backbone收录于 mmpose/models/backbones/alexnet.py通过MODELS.register_module()装饰器注册到全局模型注册表中与仓库中的 HRNet、ResNet、MobileNetV2 等骨干平级见 mmpose/models/backbones/init.py。网络结构逐层拆解MMPose 的实现完全复刻了 AlexNet 的经典结构其输入约定为 224×224 的 RGB 图像。features子模块依次堆叠为层类型参数说明1Conv2d3→64, kernel11, stride4, padding2大卷积核快速降采样2ReLUinplace非饱和激活3MaxPool2dkernel3, stride2池化4Conv2d64→192, kernel5, padding2第二卷积层5ReLUinplace激活6MaxPool2dkernel3, stride2池化7Conv2d192→384, kernel3, padding1第三卷积层8ReLUinplace激活9Conv2d384→256, kernel3, padding1第四卷积层10ReLUinplace激活11Conv2d256→256, kernel3, padding1第五卷积层12ReLUinplace激活13MaxPool2dkernel3, stride2最终池化classifier子模块则在num_classes 0时启用包含两个带 Dropout 的 4096 维全连接层与最终的Linear(4096, num_classes)输出层。三个全连接层之间的 ReLU 同样使用inplaceTrue以节省显存。从源码结构看该实现与原始论文中的 AlexNet 一致但全连接层之间保留了 Dropout 这一关键正则化设计忠实保留了原论文在全连接层使用 dropout 缓解过拟合的核心思想。num_classes参数与双模式设计构造函数签名如下def __init__(self, num_classes-1, init_cfgNone):num_classes -1默认仅保留卷积特征提取部分features此时 AlexNet 作为纯特征提取器forward返回特征图元组(x, )不经过全连接分类头num_classes 0在特征后接扁平化与完整分类头输出类别分数等价于 ImageNet 分类用途。这一设计对姿态估计任务至关重要MMPose 中骨干的输出会直接送入 HeatmapHead 等头部网络因此必须以num_classes-1去掉分类头。forward的返回类型为元组(x, )这与BaseBackbone继承自 mmengine 的BaseModule的抽象约定一致便于后续 neck/head 统一处理具体见 mmpose/models/backbones/base_backbone.py。在 2D 姿态估计中的实战配置完整配置解析仓库为 AlexNet 提供了完整的 COCO 人体关键点检测配置configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_alexnet_8xb64-210e_coco-256x192.py。该配置属于 topdown heatmap 范式核心要点如下模型部分TopdownPoseEstimator由三部分组成——data_preprocessor使用PoseDataPreprocessor设置 ImageNet 统计的 mean/std[123.675, 116.28, 103.53]与[58.395, 57.12, 57.375]并开启bgr_to_rgbTruebackbonedict(typeAlexNet, num_classes-1)即上文所述的特征提取器模式headdict(typeHeatmapHead, in_channels256, out_channels17, ...)从骨干的 256 通道特征直接预测 17 个 COCO 关键点热图配合KeypointMSELoss(use_target_weightTrue)训练并使用MSRAHeatmapcodecinput_size(192, 256)heatmap_size(40, 56)sigma2完成坐标与热图的编解码。训练策略部分采用 Adam 优化器lr5e-4LinearLR前 500 iter 线性预热start_factor0.001随后MultiStepLR在 epoch 170/200 处以gamma0.1衰减共训练 210 个 epochauto_scale_lr以base_batch_size512为基准自动缩放学习率default_hooks中checkpoint以coco/AP为指标保存最优权重。数据管线部分训练侧依次执行LoadImage → GetBBoxCenterScale → RandomFlip → RandomHalfBody → RandomBBoxTransform → TopdownAffine → GenerateTarget → PackPoseInputs验证侧去掉随机增强并借助外部检测器COCO_val2017_detections_AP_H_56_person.json提供的框进行 topdown 推理最终以CocoMetric评估。推理阶段技巧配置中的test_cfg开启了三项经典设置flip_testTrue水平翻转测试将原图与翻转图的热图结果融合提升 APflip_modeheatmap指定翻转融合在热图层面进行shift_heatmapTrue融合时对翻转热图做像素偏移修正补偿 topdown 仿射变换造成的对齐误差。已有性能基准根据 configs/body_2d_keypoint/topdown_heatmap/coco/alexnet_coco.mdCOCO val2017检测器人体 AP 为 56.4该 AlexNet 姿态估计模型在 256×192 输入下的指标为指标APAP^50AP^75ARAR^50数值0.4480.7670.4610.5210.829该结果同时汇总于 configs/body_2d_keypoint/topdown_heatmap/README.md。需要客观看待的是作为 2012 年的经典结构AlexNet 在精度上已显著落后于 RTMPose、HRNet 等现代骨干其价值更多体现在教学演示、结构对照与轻量级基线对比上。测试用例验证仓库在 tests/test_models/test_backbones/test_alexnet.py 中提供了单元测试覆盖两种模式的形状断言AlexNet(-1)特征提取器模式输入torch.randn(1, 3, 256, 192)断言输出为 tuple 且末元素形状为(1, 256, 7, 5)—— 即 256 通道、空间尺寸 7×5 的特征图可直接对接HeatmapHead(in_channels256)AlexNet(1)分类模式输入torch.randn(1, 3, 224, 224)断言输出形状为(1, 1)即单类别分数。这组测试从侧面印证了姿态估计场景下输入尺寸并非必须为 224×224TopdownAffine会按codec[input_size]如 256×192缩放图像而特征图的最终空间尺寸由输入尺寸与卷积/池化步长共同决定。总结经典骨干的现代复用范式通过 AlexNet 在 MMPose 中的实现可以提炼出一套清晰的骨干复用范式结构即文档features与classifier的分离设计使得分类头可摘除、卷积骨架可复用成为可能这是后续几乎所有骨干网络ResNet 的deep_stem、HRNet 的多分支设计思想的源头注册即用任何继承BaseBackbone并注册到MODELS的骨干都可以通过dict(typeAlexNet, ...)直接出现在姿态估计配置中无需修改训练/推理代码配置驱动骨干、codec、head、数据管线、优化策略全部由配置文件声明见上述 COCO 配置便于快速做消融与基线对比。对于希望从零理解分类骨干如何迁移到姿态估计的开发者而言AlexNet 是最简短的入门范本而对于追求精度的生产场景则建议选用仓库中精度更高的 RTMPose 或 HRNet 系列模型。【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考