资讯动态

MMPose 中 VGG16-BN Top-down 热图人体姿态估计模型:COCO 256x192 训练全流程解析

发布时间:2026/9/16 15:53:36 来源:尧图企业网站定制
MMPose 中 VGG16-BN Top-down 热图人体姿态估计模型COCO 256x192 训练全流程解析【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose本文以 vgg_coco.md 这一模型库页面为核心完整讲解 MMPose 中基于 VGG16-BN 骨干网络的 Top-down 热图法人体姿态估计模型包括其在 COCO 数据集上的评测结果、完整的训练/评测配置优化器、学习率策略、数据增强管线、热图编码与翻转测试、VGG 骨干与 MSRA 热图编解码器的源码级实现以及对应的训练与推理命令帮助读者能够复现该模型并理解其各配置项的实际作用。模型定位与评测结果该模型属于 MMPosebody_2d_keypoint/topdown_heatmap/coco任务目录下的 Top-down 热图法基线模型之一。Top-down 方法将姿态估计拆分为两个阶段先用人体检测器得到每个人体的边界框再在框内对单个人进行姿态估计估计器不直接回归关键点坐标而是输出表示关键点出现概率的热图heatmap这一范式源自 Simple Baselines for Human Pose Estimation and Tracking。其整体思路可参考 topdown_heatmap README 中对方法类别的介绍。vgg_coco.md页面给出的核心结论是Results on COCO val2017 with detector having human AP of 56.4 on COCO val2017 datasetArchInput SizeAPAP50AP75ARAR50ckptlogvgg16-bn256x1920.6990.8900.7690.7540.927vgg16_bn_coco_256x192-7e7c58d6_20210517.pthvgg16_bn_coco_256x192_20210517.log.json需要特别注意评测前提该结果使用了一个在 COCO val2017 上 human AP 为 56.4 的检测器提供的预测框即配置中指定的COCO_val2017_detections_AP_H_56_person.json预生成 bbox 文件Top-down 方法在检测框质量固定时比较的是单框姿态估计能力。对应的模型元数据架构标签 SimpleBaseline2D VGG、训练数据 COCO、权重地址等也收录在 vgg_coco.yml 与 model-index.yml 中。从 topdown_heatmap README 的 COCO 结果总表来看VGG16-BN 的 AP 0.699 处于该目录中位数水平介于 CSPNeXt-s 的 0.697 与 ResNet-50 的 0.718 之间是一个典型的经典 CNN 骨干 热图回归参考基线。该模型页面还附有两篇参考文献的 BibTeXVGGSimonyan Zisserman, ICLR2015, arXiv:1409.1556用于骨干网络COCOLin et al., ECCV2014用于训练与评测数据。完整训练配置逐项解析模型的完整配置见 td-hm_vgg16-bn_8xb64-210e_coco-256x192.py文件名即完整描述了实验设置td-hmtop-down heatmap、vgg16-bnVGG16 加 BatchNorm、8xb648 卡 x 每卡 64 的批量、210e210 个 epoch、coco-256x192COCO 数据集、输入 256x192。该配置继承自 default_runtime.py下面按配置顺序逐项说明。训练轮数与验证间隔train_cfg dict(max_epochs210, val_interval10)训练 210 个 epoch每 10 个 epoch 在 val2017 上评估一次。基座 default_runtime.py 提供了默认的 hooks计时、日志、检查点保存、种子同步、可视化、badcase 分析等与SyncBuffersHook每个 epoch 结束同步 BN 的 running_mean/running_var保证多卡下 BN 统计量一致。优化器与学习率策略optim_wrapper dict(optimizerdict(typeAdam, lr5e-4)) param_scheduler [ dict(typeLinearLR, begin0, end500, start_factor0.001, by_epochFalse), dict(typeMultiStepLR, begin0, end210, milestones[170, 200], gamma0.1, by_epochTrue) ] auto_scale_lr dict(base_batch_size512)优化器为 Adam初始学习率 5e-4前 500 个 iteration 使用LinearLR从5e-4 * 0.001线性升温到 5e-4warm-up之后由MultiStepLR在第 170、200 个 epoch 将学习率各乘以 0.1这与 MMPose 热图系列模型通用的 210e 170/200 调度模板一致auto_scale_lr以 512 为基准批量8 卡 x 64 512 时学习率不变若改用其他卡数或 batch size学习率会按线性比例自动缩放default_hooks dict(checkpointdict(save_bestcoco/AP, rulegreater))会在验证 COCO AP 创新高时额外保存最佳权重。数据预处理、骨干与头部model dict( typeTopdownPoseEstimator, data_preprocessordict( typePoseDataPreprocessor, mean[123.675, 116.28, 103.53], std[58.395, 57.12, 57.375], bgr_to_rgbTrue), backbonedict( typeVGG, depth16, norm_cfgdict(typeBN), init_cfgdict(typePretrained, checkpointmmcls://vgg16_bn)), headdict( typeHeatmapHead, in_channels512, out_channels17, lossdict(typeKeypointMSELoss, use_target_weightTrue), decodercodec), test_cfgdict( flip_testTrue, flip_modeheatmap, shift_heatmapTrue))各字段含义data_preprocessor按 ImageNet 均值方差做 BGR→RGB 归一化backboneVGG骨干depth16对应 (2,2,3,3,3) 的卷积块结构norm_cfgdict(typeBN)使每个卷积块为 Conv-BN-ReLU即 VGG16-BNinit_cfg从 mmclassification 注册的mmcls://vgg16_bnImageNet 预训练权重加载headHeatmapHead输出 17 通道COCO 17 个人体关键点in_channels512对应 VGG 最后一个卷积阶段的通道数损失为KeypointMSELoss且use_target_weightTrue即使用数据集中的关键点置信度权重keypoint_weights加权 MSEdecodercodec使同一套热图编解码配置同时驱动训练标签生成与测试解码test_cfg测试时开启翻转增强flip_modeheatmap表示对热图整体做水平翻转后取平均而非对解码出的坐标翻转shift_heatmapTrue在翻转解码时平移一个关键点偏移以补偿水平翻转带来的亚像素错位。关于 VGG 骨干的实现mmpose/models/backbones/vgg.py 中arch_settings定义了 11/13/16/19 四种深度对应的每阶段卷积块数depth16取(2, 2, 3, 3, 3)各阶段的输出通道数为64 * 2**i最后阶段封顶 512每阶段末尾接一个 2x2 MaxPool。由于配置未指定num_classes默认为 -1且未指定out_indices从源码结构看out_indices默认取(4,)即只输出最后一个阶段的特征图恰好与HeatmapHead的in_channels512匹配。骨干还支持frozen_stages冻结前若干阶段、norm_eval在训练时固定 BN 统计量等参数本配置均未启用。热图编解码codeccodec dict(typeMSRAHeatmap, input_size(192, 256), heatmap_size(48, 64), sigma2)MSRAHeatmap编码器将离散关键点标注编码为高斯热图在 48x64 的热图网格上为每个可见关键点生成一个 sigma2 的高斯峰。其实现位于 mmpose/codecs/msra_heatmap.py构造函数中scale_factor input_size / heatmap_size本例为 4 倍下采样encode输出形状为 (K, 48, 64) 的heatmaps与形状为 (N, K) 的keypoint_weights后者正是KeypointMSELoss(use_target_weightTrue)使用的逐关键点权重。sigma2也与该模块 docstring 中 DarkPose 经验公式sigma 0.3*((ks-1)*0.5-1)0.8在 blur_kernel_size11 时的取值一致。测试时同一 codec 的decode从预测热图中提取关键点位置并还原回原图坐标系。数据管线与数据加载train_pipeline [ dict(typeLoadImage), dict(typeGetBBoxCenterScale), dict(typeRandomFlip, directionhorizontal), dict(typeRandomHalfBody), dict(typeRandomBBoxTransform), dict(typeTopdownAffine, input_sizecodec[input_size]), dict(typeGenerateTarget, encodercodec), dict(typePackPoseInputs) ]训练管线为读图 → 从 bbox 推算裁剪中心与尺度 → 水平随机翻转 → 随机半身体裁剪 → 随机框变换缩放/平移/旋转→ 仿射变换裁剪并缩放到 256x192 → 用 MSRAHeatmap 编码器生成热图标签 → 打包输入。验证/测试管线则去掉所有随机增强且不做GenerateTarget。数据集关键设置训练集annotations/person_keypoints_train2017.jsontrain2017/图像验证/测试集annotations/person_keypoints_val2017.json并指定bbox_filedata/coco/person_detection_results/COCO_val2017_detections_AP_H_56_person.json即前文提到的 AP 56.4 检测器的预生成框——这正是该模型页面标注结果的复现前提批量大小训练 64、验证 32num_workers2评估器CocoMetric基于 val2017 标注计算 AP/AR 等指标实现见 mmpose/evaluation/metrics/coco_metric.py。COCO 的 17 个关键点定义、左右对称映射、骨骼连接关系以及评测用的joint_weights与sigmas均集中声明在 configs/base/datasets/coco.py 的dataset_info中Head的out_channels17与之一一对应。训练、评估与推理以下命令基于仓库根目录执行需先安装 MMPose 并下载 COCO 数据集至data/coco/# 8 卡分布式训练 bash tools/dist_train.sh \ configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_vgg16-bn_8xb64-210e_coco-256x192.py 8 # 单卡训练学习率会通过 auto_scale_lr 自动缩放到 1/8 python tools/train.py \ configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_vgg16-bn_8xb64-210e_coco-256x192.py # 验证集评估 python tools/test.py \ configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_vgg16-bn_8xb64-210e_coco-256x192.py \ work_dir/best_coco_AP_epoch_210.pth --show # 使用仓库发布的权重做图片推理 python demo/image_demo.py \ configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_vgg16-bn_8xb64-210e_coco-256x192.py \ vgg16_bn_coco_256x192-7e7c58d6_20210517.pth \ demo/MMPose_Tutorial.png --out-dir vis_result适用前提与限制该配置面向 COCO 17 关键点、topdown 数据模式验证依赖预生成的 AP 56.4 检测框文件demo/image_demo.py内部会先调用人体检测器可通过--detector指定 MMetection 配置如demo/mmdetection_cfg中的 Faster R-CNN 等再用本配置的姿态模型在检测框内估计关键点因此推理速度与结果都受检测器影响。小结vgg_coco.md及其配套配置展示了 MMPose 中一个完整、可复现的 Top-down 热图基线VGG16-BN 骨干mmpose/models/backbones/vgg.py 17 通道HeatmapHeadMSRAHeatmap编解码sigma248x64 热图 加权 MSE 损失 210 epoch 170/200 步进 的 Adam 训练模板 热图翻转测试在 AP 56.4 检测框下取得 COCO val2017 AP 0.699 / AR 0.754。该配置文件的每一部分——runtime、codec、backbone、head、pipeline、dataloader——都可以作为在 MMPose 中搭建新的 topdown 热图模型的模板替换骨干如 ResNet、HRNet或调整输入分辨率即可派生出同目录下的其他模型配置。【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

免费获取报价