资讯动态

ViTPose 仓库 MHP 人体姿态估计实战:ResNet 简单基线(SimpleBaseline2D)配置、训练与评测全解析

发布时间:2026/10/17 12:59:26 来源:尧图企业网站定制
人工智能计算机视觉深度学习【免费下载链接】ViTPoseThe official repo for [NeurIPS22] ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation and [TPAMI23] ViTPose: Vision Transformer for Generic Body Pose Estimation项目地址https://gitcode.com/gh_mirrors/vi/ViTPose点击查看免费下载导读本文以 ViTPose 仓库中 MHP 人体姿态估计模型结果页 为核心系统讲解在 MHP v2.0Multi-Human Parsing数据集上以 ResNet-50 为骨干网络、采用 SimpleBaseline2D 思路的 top-down 热图姿态估计方案的完整落地流程。读完本文你将掌握该模型的实验指标解读、配置文件中每个关键参数的语义、MHP 数据集准备方法以及基于 tools/train.py 与 tools/test.py 的训练、分布式训练与评估命令并能理解底层TopDownMhpDataset数据集实现与 mAP 评测口径的细节。一、模型与数据集背景1.1 算法组件SimpleBaseline2D ResNet该结果页明确标注了三个核心组件来源见 resnet_mhp.mdSimpleBaseline2DECCV2018Bin Xiao 等人提出的“人体姿态估计与追踪的简单基线”其核心观点是仅用少量反卷积层deconv配合分类骨干网络即可达到媲美复杂结构的效果是 top-down 热图方法的代表性工作。ResNetCVPR2016Kaiming He 等人的深度残差网络此处作为特征提取骨干具体使用 depth50 的 ResNet-50权重由torchvision://resnet50预训练初始化。MHPACM MM2018Zhao Jian 等人提出的多人体解析基准Multi-Human Parsing关注拥挤场景下对多人的理解。三篇论文的 BibTeX 引用均可直接在结果页中复制用于论文引用inproceedings{xiao2018simple, title{Simple baselines for human pose estimation and tracking}, author{Xiao, Bin and Wu, Haiping and Wei, Yichen}, booktitle{Proceedings of the European conference on computer vision (ECCV)}, pages{466--481}, year{2018} } inproceedings{he2016deep, title{Deep residual learning for image recognition}, author{He, Kaiming and Zhang, Xiangyu and Ren, Shaoqing and Sun, Jian}, booktitle{Proceedings of the IEEE conference on computer vision and pattern recognition}, pages{770--778}, year{2016} } inproceedings{zhao2018understanding, title{Understanding humans in crowded scenes: Deep nested adversarial learning and a new benchmark for multi-human parsing}, author{Zhao, Jian and Li, Jianshu and Cheng, Yu and Sim, Terence and Yan, Shuicheng and Feng, Jiashi}, booktitle{Proceedings of the 26th ACM international conference on Multimedia}, pages{792--800}, year{2018} }1.2 MHP 关键点定义MHP 数据集采用 16 个关键点的定义与 COCO 的 17 点略有差异定义在 configs/base/datasets/mhp.py 中索引关键点名称部位类型对称配对swap0right_anklelowerleft_ankle1right_kneelowerleft_knee2right_hiplowerleft_hip3left_hiplowerright_hip4left_kneelowerright_knee5left_anklelowerright_ankle6pelvislower—7thoraxupper—8upper_neckupper—9head_topupper—10right_wristupperleft_wrist11right_elbowupperleft_elbow12right_shoulderupperleft_shoulder13left_shoulderupperright_shoulder14left_elbowupperright_elbow15left_wristupperright_wrist该文件还定义了 15 条骨架连接skeleton_info、每个关节的joint_weights四肢末端权重更高如脚踝 1.5、膝盖 1.2以及用于 OKS 计算的sigmas从 COCO 适配而来如脚踝 0.089、手腕 0.062 等这些参数直接影响热图回归损失与评测打分。二、MHP v2.0 验证集实验结果原结果页给出了在 MHP v2.0 val 集上的完整指标模型名虽标注为 pose_resnet_101实际对应配置为 res50_mhp_256x192.py即 ResNet-50ArchInput SizeAPAP50AP75ARAR50ckptlogpose_resnet_101256x1920.5830.8970.6690.6360.918ckptlog注意此处的评测指标为从 COCO 适配而来的 mAP使用 COCO 风格的关键点评测协议可能与 MHP 官方评测代码的结果不同。若在论文中使用该结果请务必谨慎并注明评测口径原文档已明确提示。对应地模型注册信息Architecture、Training Data、各指标也记录在 resnet_mhp.yml 中作为模型索引model-index供自动汇总使用。三、核心配置文件逐项解读完整配置见 res50_mhp_256x192.py其通过_base_机制继承 default_runtime.py 与 mhp.py。3.1 优化器与学习率调度optimizer dict( typeAdam, lr5e-4, ) optimizer_config dict(grad_clipNone) # learning policy lr_config dict( policystep, warmuplinear, warmup_iters500, warmup_ratio0.001, step[170, 200]) total_epochs 210优化器使用Adam初始学习率 5e-4不做梯度裁剪grad_clipNone。学习率采用step 衰减策略前 500 个 iteration 线性 warmupwarmup 初始比例 0.001在第 170 与第 200 epoch 各衰减一次共训练210 epochs。使用tools/train.py的--autoscale-lr参数时学习率会按 GPU 数量线性缩放lr * len(gpu_ids) / 8详见 tools/train.py。3.2 模型结构与通道配置channel_cfg dict( num_output_channels16, dataset_joints16, dataset_channel[[0, 1, ..., 15]], inference_channel[0, 1, ..., 15]) model dict( typeTopDown, pretrainedtorchvision://resnet50, backbonedict(typeResNet, depth50), keypoint_headdict( typeTopdownHeatmapSimpleHead, in_channels2048, out_channelschannel_cfg[num_output_channels], loss_keypointdict(typeJointsMSELoss, use_target_weightTrue)), train_cfgdict(), test_cfgdict( flip_testTrue, post_processdefault, shift_heatmapTrue, modulate_kernel11))检测器类型为TopDowntop-down 两阶段范式先检测人体框再对每个框估计关键点。骨干为ResNet-50输入特征通道 2048送入TopdownHeatmapSimpleHead。TopdownHeatmapSimpleHead实现在 topdown_heatmap_simple_head.py默认由3 层反卷积每层 256 通道、kernel 4、stride 2 1x1 卷积组成将 2048 通道的骨干特征上采样 8 倍并投影到 16 通道热图48x64每个通道对应一个关节。损失函数JointsMSELossmse_loss.py为加权 MSEuse_target_weightTrue时按target_weight逐关节加权即上文joint_weights生效。推理侧开启flip_test水平翻转测试融合、shift_heatmap翻转热图平移修正与modulate_kernel11关键点后处理调制核可参考 top_down_eval.py 理解其实现。3.3 数据配置与预处理管道data_cfg dict( image_size[192, 256], heatmap_size[48, 64], num_output_channels16, num_joints16, soft_nmsFalse, nms_thr1.0, oks_thr0.9, vis_thr0.2, bbox_thr1.0, use_gt_bboxTrue, image_thr0.0, bbox_file, )输入图像裁剪为192x256对应热图尺寸48x641/4 分辨率。use_gt_bboxTrue训练与验证阶段使用数据集中提供的人体框标注Ground Truth bbox无需外部检测器。这对 MHP 数据集是强制的——TopDownMhpDataset._get_db中assert self.use_gt_bbox会直接断言见 topdown_mhp_dataset.py。训练管道train_pipeline依次包含图像加载 → 随机水平翻转0.5 概率→ 半身变换半身关键点≥8 时以 0.3 概率只取半身→ 随机旋转/缩放rot_factor40, scale_factor0.5→ 仿射变换 → Tensor 化与 ImageNet 归一化 → 生成高斯热图目标sigma2→ Collect。验证/测试管道则只做仿射变换与归一化不做数据增强。3.4 数据组织data_root data/mhp data dict( samples_per_gpu64, workers_per_gpu2, traindict(typeTopDownMhpDataset, ann_filef{data_root}/annotations/mhp_train.json, img_prefixf{data_root}/train/images/, ...), valdict(... ann_file.../mhp_val.json, img_prefix.../val/images/, ...), testdict(... ann_file.../mhp_val.json, ...), )训练 batch size 为每 GPU 64验证/测试为每 GPU 32。评估配置evaluation dict(interval10, metricmAP, save_bestAP)表示每 10 个 epoch 在验证集上评估一次并保存最优 AP 权重。四、MHP 数据集准备按照 docs/zh_cn/tasks/2d_body_keypoint.md 中的说明从 MHP 官方主页下载数据文件并从 openmmlab 提供的链接下载转换后的标注文件放置于data目录并整理为如下结构mmpose ├── mmpose ├── docs ├── tests ├── tools ├── configs ── data │── mhp │-- annotations │ │-- mhp_train.json │ │-- mhp_val.json │ -- train │ │-- images │ │ │-- 1004.jpg │ │ │-- 10050.jpg │ │ │-- ... │ -- val │ │-- images │ │ │-- 10059.jpg │ │ │-- 10068.jpg │ │ │-- ...标注文件采用 COCO 风格 JSON 格式因此数据集类可直接复用 COCO 的加载逻辑见下文源码剖析。五、训练与评估命令5.1 单卡训练python tools/train.py configs/body/2d_kpt_sview_rgb_img/topdown_heatmap/mhp/res50_mhp_256x192.py常用可选参数--work-dir指定日志与权重保存目录默认./work_dirs/res50_mhp_256x192。--no-validate训练过程中不进行评估。--gpu-id指定使用的 GPU 编号默认 0。--seed/--deterministic设置随机种子与 CUDNN 确定性。--cfg-options临时覆盖配置例如--cfg-options model.backbone.depth18。--autoscale-lr按 GPU 数线性缩放学习率。5.2 多卡分布式训练使用 tools/dist_train.shbash tools/dist_train.sh configs/body/2d_kpt_sview_rgb_img/topdown_heatmap/mhp/res50_mhp_256x192.py 8该脚本通过torch.distributed.launch启动--nproc_per_node$GPUS个进程并以--launcher pytorch进入分布式模式PORT环境变量可指定通信端口默认 29500。5.3 测试与评估python tools/test.py configs/body/2d_kpt_sview_rgb_img/topdown_heatmap/mhp/res50_mhp_256x192.py \ /path/to/res50_mhp_256x192-28c5b818_20201229.pth --eval mAP--eval mAP指定评估指标MHP 采用 COCO 风格的mAP。--out将预测结果保存为文件。--fuse-conv-bn融合卷积与 BN 层以略微提升推理速度。测试流程tools/test.py会先将cfg.data.test.test_mode置为 True、加载权重、构建数据加载器最后调用dataset.evaluate(outputs, ...)输出各指标。六、源码级实现剖析6.1 TopDownMhpDataset复用 COCO 协议的 MHP 数据集类实现在 topdown_mhp_dataset.py并通过 top_down/init.py 注册DATASETS.register_module() class TopDownMhpDataset(TopDownCocoDataset):关键实现事实直接继承TopDownCocoDataset因为 MHP 标注为 COCO 风格 JSON可直接复用_load_coco_keypoint_annotations等加载逻辑。_get_db中强制assert self.use_gt_bbox即 MHP 实验一律使用 GT 人体框这与配置中use_gt_bboxTrue对应配置文件中的image_thr已被标记 deprecated建议改用det_bbox_thr。评测使用xtcocotools.cocoeval.COCOeval并以use_areaFalse调用对姿态任务不按面积加权依次执行evaluate() → accumulate() → summarize()输出 AP、AP.5、AP.75、AP(M)、AP(L)、AR 等 10 项统计量——这正是结果表中 mAP 系列指标的来源。6.2 测试用例验证仓库在 tests/test_datasets/test_top_down_dataset.py 中提供了test_top_down_MHP_dataset测试使用tests/data/mhp/test_mhp.json与tests/data/mhp/图片目录构造数据集断言dataset_name mhp、use_gt_bboxFalse时会触发AssertionError且对构造的预测结果评估mAP应为 1.0完美预测。这一测试同时验证了仅支持 GT bbox与mAP 评测两条关键约束。6.3 损失与头部实现JointsMSELossmse_loss.py将预测热图与目标热图按关节切分逐关节计算nn.MSELossuse_target_weightTrue时先按target_weight加权再求均值最终除以关节数并乘loss_weight默认 1.0。TopdownHeatmapSimpleHeadtopdown_heatmap_simple_head.pyforward依次经过输入变换、3 层反卷积每层 stride2BNReLU与 1x1 最终卷积层输出 16 通道热图inference_model支持flip_pairs水平翻转融合与shift_heatmap偏移修正与配置中test_cfg一一对应。七、评测口径的重要提醒原文档末尾的提示对复现与论文写作至关重要在此重申本结果页展示的 AP/AR 指标使用从 COCO 适配的 mAP 评测协议xtcocotoolsuse_areaFalse与 MHP 官方评测代码Multi-Human-Pose 评估脚本结果可能不同若在论文中引用这些数字请明确标注评测方法来源避免与其他工作按不同口径比较结果页与 resnet_mhp.yml 中记录的权重文件res50_mhp_256x192-28c5b818_20201229.pth与训练日志可用于直接复现指标。八、总结与扩展方向MHP 上的 ResNet-50 配置是理解 ViTPose 仓库 top-down 热图范式的理想样例它串联了COCO 风格数据集MHP→ ResNet 骨干 → SimpleHead 反卷积解码 → 加权 MSE → mAP 评测的完整链路。基于此配置你可以将model.backbone替换为仓库中的其他骨干如 HRNet、ViTPose 系列见 mmpose/models/backbones进行对比实验通过--cfg-options调整输入尺寸、heatmap_size、数据增强强度等超参数参考 configs/body/2d_kpt_sview_rgb_img/topdown_heatmap 下其他数据集的同类配置快速迁移到新数据集。只要遵循上文的数据准备、配置修改与命令用法即可在本地复现表中 0.583 AP 的结果并以此为基础开展拥挤场景人体姿态估计的进一步研究。赞分享人工智能计算机视觉深度学习【免费下载链接】ViTPoseThe official repo for [NeurIPS22] ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation and [TPAMI23] ViTPose: Vision Transformer for Generic Body Pose Estimation项目地址https://gitcode.com/gh_mirrors/vi/ViTPose点击查看免费下载相关推荐ViTPose 仓库 ResNetSimpleBaseline2D 人体姿态估计实战COCO Top-Down 热图配置、训练与评测深度解析ViTPose 仓库 ResNetSimpleBaseline2D 人体姿态估计实战COCO Top Down 热图配置、训练与评测深度解析 本篇技术指南以人工智能计算机视觉深度学习ViTPose 仓库 CrowdPose 人体姿态估计实战基于 ResNet SimpleBaseline 的 Top-Down 配置解析与训练评估指南ViTPose 仓库 CrowdPose 人体姿态估计实战基于 ResNet SimpleBaseline 的 Top Down 配置解析与训练评估指南人工智能计算机视觉深度学习ViTPose 仓库实战基于 SimpleBaseline2D ResNet 的 Animal-Pose 动物姿态估计配置全解ViTPose 仓库实战基于 SimpleBaseline2D ResNet 的 Animal Pose 动物姿态估计配置全解 本文以 ViTPose 仓人工智能计算机视觉深度学习创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

免费获取报价 →
↑