ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

MMPose 人体姿态估计:HRNet 在 Human-Art 艺术场景数据集上的 Top-Down 热图训练与评测实践

2026/9/16 19:02:15 拓冰建站 浏览量
MMPose 人体姿态估计:HRNet 在 Human-Art 艺术场景数据集上的 Top-Down 热图训练与评测实践 MMPose 人体姿态估计HRNet 在 Human-Art 艺术场景数据集上的 Top-Down 热图训练与评测实践【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose本文围绕 MMPose 模型库中「HRNet Human-Art」这组 Top-Down 热图姿态估计模型展开介绍 Human-Art 艺术/人工场景数据集对姿态估计的挑战与价值、完整的模型库评测结果检测框、真实框、COCO 三组基准并深入解析仓库中对应的训练配置文件与数据集实现帮助你在艺术插画、游戏立绘等自然—人工混合场景中完成姿态模型的训练、评测与选型。一、背景为什么需要 Human-Art 数据集Human-ArtCVPR2023Human-Art: A Versatile Human-Centric Dataset Bridging Natural and Artificial Scenes是一个专门覆盖自然场景与人工创作场景插画、漫画、3D 渲染、CG 角色等的人体姿态数据集。真实照片中训练的姿态模型在面对艺术风格图像时往往出现明显性能衰减Human-Art 正是为弥合这一自然—人工域差距而构建的基准。该数据集的论文与数据信息在 MMPose 中由 Human-Art 数据集基础配置 维护其中定义了17 个关键点与 COCO 人体关键点命名和骨架结构完全一致nose、双眼、双耳、双肩、双肘、双腕、双髋、双膝、双踝因此可以直接复用 COCO 风格的标注格式与CocoMetric评测器关键点元信息每个关键点的id、颜色color、归属上/下身typeupper/lower供半身增强RandomHalfBody使用、左右互换关系swap供RandomFlip使用19 条骨架连线skeleton_info以及用于 PCK 等指标计算的joint_weights与sigmas。由于关键点定义与 COCO 对齐在 Human-Art 上训练/继续训练姿态模型并同时在 COCO 与 Human-Art 两个基准上评测成为一套完整的迁移学习评估范式——这正是本文档所呈现的内容。二、模型库与核心评测结果MMPose 模型库中的 hrnet_humanart.md 给出了 HRNet 系列模型在三个基准下的完整结果全部使用经典解码器classic decoder即基于高斯热图峰值的后处理解码。相关论文引用如下inproceedings{sun2019deep, title{Deep high-resolution representation learning for human pose estimation}, author{Sun, Ke and Xiao, Bin and Liu, Dong and Wang, Jingdong}, booktitle{Proceedings of the IEEE conference on computer vision and pattern recognition}, pages{5693--5703}, year{2019} }inproceedings{ju2023humanart, title{Human-Art: A Versatile Human-Centric Dataset Bridging Natural and Artificial Scenes}, author{Ju, Xuan and Zeng, Ailing and Jianan, Wang and Qiang, Xu and Lei, Zhang}, booktitle{Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR), year{2023}}2.1 Human-Art 验证集检测框human AP 56.2使用检测器在 Human-Art 验证集上给出人体框检测器 human AP 为 56.2架构输入尺寸APAP50AP75ARAR50HRNet-W32仅 COCO 训练256x1920.2520.3970.2550.3210.485HRNet-W32Human-ArtCOCO 训练256x1920.3990.5450.4200.4660.613HRNet-W48仅 COCO 训练256x1920.2710.4130.2770.3390.499HRNet-W48Human-ArtCOCO 训练256x1920.4170.5530.4420.4810.6172.2 Human-Art 验证集真实框 GT BBox用人工标注的真实边界框评测剥离检测误差考察纯姿态回归能力架构输入尺寸APAP50AP75ARAR50HRNet-W32仅 COCO 训练256x1920.5330.7710.5620.5740.792HRNet-W32Human-ArtCOCO 训练256x1920.7540.9060.8120.7830.916HRNet-W48仅 COCO 训练256x1920.5570.7820.5930.5950.804HRNet-W48Human-ArtCOCO 训练256x1920.7690.9060.8250.7960.9192.3 COCO val2017检测框human AP 56.4同时在 COCO 上评测检验加入艺术场景数据后对自然域是否产生负迁移架构输入尺寸APAP50AP75ARAR50HRNet-W32仅 COCO 训练256x1920.7490.9060.8210.8040.945HRNet-W32Human-ArtCOCO 训练256x1920.7410.9020.8140.7950.941HRNet-W48仅 COCO 训练256x1920.7560.9080.8260.8090.945HRNet-W48Human-ArtCOCO 训练256x1920.7510.9050.8220.8050.943从三组结果可以读出几个关键结论域提升显著在 Human-Art 检测框设置下加入 Human-Art 数据训练使 HRNet-W32 的 AP 从 0.252 提升到 0.39914.7 个百分点W48 从 0.271 提升到 0.417真实框设置下提升同样巨大0.533 → 0.754。无明显负迁移在 COCO 上混合训练模型的 AP 仅比纯 COCO 模型低约 0.0050.008说明艺术场景数据与真实数据可以兼顾。宽度的边际收益在艺术域更明显W48 相对 W32 在 Human-Art 检测框设置下 AP 提升约 0.0180.399 → 0.417但在 COCO 上几乎持平选型时可结合算力预算决定。模型库元数据hrnet_humanart.yml中这两个人体模型登记的训练数据为COCO Human-Art并给出了每个模型对应的权重与训练日志下载地址download.openmmlab.com上的.pth权重与.json日志。三、训练配置逐段解析下面以 td-hm_hrnet-w32_8xb64-210e_humanart-256x192.py 为例逐段解析配置内容W48 版本 td-hm_hrnet-w48_8xb32-210e_humanart-256x192.py 结构完全一致。配置文件基于 默认运行时配置。3.1 训练策略210 epoch 与学习率调度train_cfg dict(max_epochs210, val_interval10) optim_wrapper dict(optimizerdict( typeAdam, lr5e-4, )) param_scheduler [ dict( typeLinearLR, begin0, end500, start_factor0.001, by_epochFalse), # warm-up dict( typeMultiStepLR, begin0, end210, milestones[170, 200], gamma0.1, by_epochTrue) ] auto_scale_lr dict(base_batch_size512) default_hooks dict(checkpointdict(save_bestcoco/AP, rulegreater))要点说明优化器Adam基础学习率5e-4Warm-up前 500 个 iteration 用LinearLR从0.001 × lr线性升到基础学习率by_epochFalse表示按 iteration 计衰减MultiStepLR在第 170、200 个 epoch 将学习率乘以gamma0.1auto_scale_lr以base_batch_size512为基准按实际总 batch size 线性缩放学习率。W32 配置单卡batch_size648 卡即 512不缩放W48 配置单卡batch_size328 卡即 256学习率自动减半这是两个配置最直接的训练差异最佳权重保存以验证集coco/AP越大越好的规则保存 best checkpoint。3.2 模型结构TopdownPoseEstimator HRNet HeatmapHeadmodel dict( typeTopdownPoseEstimator, data_preprocessordict( typePoseDataPreprocessor, mean[123.675, 116.28, 103.53], std[58.395, 57.12, 57.375], bgr_to_rgbTrue), backbonedict( typeHRNet, in_channels3, extradict( stage1dict(num_modules1, num_branches1, blockBOTTLENECK, num_blocks(4,), num_channels(64,)), stage2dict(num_modules1, num_branches2, blockBASIC, num_blocks(4, 4), num_channels(32, 64)), stage3dict(num_modules4, num_branches3, blockBASIC, num_blocks(4, 4, 4), num_channels(32, 64, 128)), stage4dict(num_modules3, num_branches4, blockBASIC, num_blocks(4, 4, 4, 4), num_channels(32, 64, 128, 256))), init_cfgdict( typePretrained, checkpointhttps://download.openmmlab.com/mmpose/ pretrain_models/hrnet_w32-36af842e.pth), ), headdict( typeHeatmapHead, in_channels32, out_channels17, deconv_out_channelsNone, lossdict(typeKeypointMSELoss, use_target_weightTrue), decodercodec), test_cfgdict( flip_testTrue, flip_modeheatmap, shift_heatmapTrue, ))各部分职责TopdownPoseEstimatorTop-Down 范式入口输入为单个人体裁剪区域输出单个人体的关键点热图PoseDataPreprocessor按 ImageNet 统计量mean/std归一化并做 BGR→RGB 转换HRNet ImageNet 预训练权重的标准预处理HRNet主干四阶段多分辨率结构stage24 分别维护 2、3、4 条分支并通过交换融合exchange fusion保持高分辨率特征。W32 与 W48 的差异仅在分支通道数W32 为(32, 64, 128, 256)W48 为(48, 96, 192, 384)约为 1.5 倍宽度。HRNet 主干实现见 mmpose/models/backbones/hrnet.pyHeatmapHead取 HRNet 最高分辨率分支W32 为 32 通道、W48 为 48 通道作为in_channels输出 17 通道热图deconv_out_channelsNone表示不做反卷积上采样解码器直接以input_size对应 1/4 分辨率的(48, 64)热图工作损失为KeypointMSELoss且use_target_weightTrue按关键点可见性权重加权test_cfg测试时开启水平翻转增强flip_testTrueflip_modeheatmap表示对预测热图做翻转后平均shift_heatmapTrue在解码时做 1/2 像素偏移修正。3.3 热图编解码MSRAHeatmapcodec dict( typeMSRAHeatmap, input_size(192, 256), heatmap_size(48, 64), sigma2)输入裁剪图256x192宽 x 高热图为64x48宽 x 高1/4 分辨率目标热图用均值为 0.5、标准差sigma2像素的高斯核生成MSRAHeatmap编码器的经典参数。3.4 数据管线训练与验证train_pipeline [ dict(typeLoadImage), dict(typeGetBBoxCenterScale), dict(typeRandomFlip, directionhorizontal), dict(typeRandomHalfBody), dict(typeRandomBBoxTransform), dict(typeTopdownAffine, input_sizecodec[input_size]), dict(typeGenerateTarget, encodercodec), dict(typePackPoseInputs) ] val_pipeline [ dict(typeLoadImage), dict(typeGetBBoxCenterScale), dict(typeTopdownAffine, input_sizecodec[input_size]), dict(typePackPoseInputs) ]训练管线的增强组合与 COCO Top-Down 配置完全一致随机水平翻转依赖keypoint_info中的swap关系、随机半身裁剪依赖typeupper/lower标记、随机边界框形变中心/宽高抖动最后由TopdownAffine将人体裁剪到256x192。验证管线不含随机增强保证评测可复现。3.5 数据加载与评测器dataset_type HumanArtDataset data_mode topdown data_root data/ train_dataloader dict( batch_size64, ... datasetdict( typedataset_type, data_rootdata_root, data_modedata_mode, ann_fileHumanArt/annotations/training_humanart_coco.json, data_prefixdict(img), pipelinetrain_pipeline, )) val_dataloader dict( batch_size32, ... datasetdict( ... ann_fileHumanArt/annotations/validation_humanart.json, bbox_filef{data_root}HumanArt/person_detection_results/ HumanArt_validation_detections_AP_H_56_person.json, data_prefixdict(img), test_modeTrue, pipelineval_pipeline, )) val_evaluator dict( typeCocoMetric, ann_filedata_root HumanArt/annotations/validation_humanart.json) test_evaluator val_evaluator从源码结构看几个值得注意的实现事实HumanArtDataset定义在 mmpose/datasets/datasets/body/humanart_dataset.py它直接继承 COCO 风格的基类BaseCocoStyleDataset仅在类级METAINFO中指向 configs/base/datasets/humanart.py 的元信息文件——这解释了为何它能无缝复用CocoMetric评测器与全套 COCO 风格数据管线bbox_file只在评测时生效val_dataloader指定了检测器结果文件HumanArt_validation_detections_AP_H_56_person.json评测时使用检测结果提供的边界框对应结果表 2.1 的human AP 56.2若评测时不设置该文件则使用真实框对应 2.2 的 GT BBox 设置。HumanArtDataset的文档字符串明确说明bbox_file仅用于评测、test_modeFalse时被忽略评测器CocoMetric实现见 mmpose/evaluation/metrics/coco_metric.py输出的coco/AP等指标也是 checkpoint 保存的依据。此外仓库还提供了 21 关键点的变体数据集HumanArt21Datasetmmpose/datasets/datasets/body/humanart21_dataset.py与 configs/base/datasets/humanart21.py 元信息供需要更多关节点的场景使用同目录下还有 ViTPose 的 Human-Art 配置small/base/large/huge 四种规格可作为 Transformer 主干的对照选择。四、训练与评测命令在准备好 Human-Art 数据集标注文件data/HumanArt/annotations/training_humanart_coco.json与validation_humanart.json、验证集检测框文件data/HumanArt/person_detection_results/HumanArt_validation_detections_AP_H_56_person.json数据集准备方法可参考 准备数据集指南后可在仓库根目录执行以下命令复现训练以 W32 为例8 卡单机# 单卡训练 python tools/train.py \ configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-256x192.py # 8 卡分布式训练 bash tools/dist_train.sh 8 \ configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-256x192.py评测与推理# 单卡测试使用 val_dataloader 中的检测框评测 python tools/test.py \ configs/body_2d_keypoint/topdown_heatmap/humanart/td-hm_hrnet-w32_8xb64-210e_humanart-256x192.py \ checkpoint.pth --out results.jsonW48 配置只需把配置路径换成 td-hm_hrnet-w48_8xb32-210e_humanart-256x192.py配置名中的8xb32即 8 卡 × 每卡 32 的总 batch size 256auto_scale_lr会据此把学习率按比例下调。若想在 COCO 与 Human-Art 两个基准上同时评测混合训练的模型可分别使用 COCO 的 W32 训练配置 对应的val_dataloaderCOCO_val2017_detections_AP_H_56_person.json检测框进行交叉评测这正是模型库结果表 2.3 的评测口径。五、关键要点小结配置定位Human-Art 上的 HRNet Top-Down 热图模型配置集中在 configs/body_2d_keypoint/topdown_heatmap/humanart/模型库结果页为 hrnet_humanart.md机器可读的元数据为 hrnet_humanart.yml结构不变、数据域改变与 COCO 版 HRNet 配置相比Human-Art 版本在模型结构、codec、增强管线上完全一致核心差异是数据集类型HumanArtDataset、标注/检测框文件路径与评测 GT——这是做新艺术域微调时最简且可对照的实验设计性能口径引用结果时务必区分三种评测设置——Human-Art 检测框AP_H 56.2、Human-Art 真实框、COCO val2017 检测框AP_H 56.4三组 AP 数值相差很大不可混用实现可查证数据集类 humanart_dataset.py、关键点元信息 humanart.py、主干 hrnet.py、评测器 coco_metric.py 均在仓库内便于逐行核对行为。【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考