ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

MMPose 中的 RSN 人体关键点估计:Topdown 热图配置的完整解析与 COCO 基准结果

MMPose 中的 RSN 人体关键点估计:Topdown 热图配置的完整解析与 COCO 基准结果 MMPose 中的 RSN 人体关键点估计Topdown 热图配置的完整解析与 COCO 基准结果【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose本文围绕 MMPose 仓库中 RSNResidual Steps Network在 COCO 数据集上的人体 2D 关键点估计展开基于 configs/body_2d_keypoint/topdown_heatmap/coco/rsn_coco.md 及其关联的 4 份训练配置系统讲解 RSN 主干的网络结构与源码实现、MSPNHead 多头热图预测机制、MegviiHeatmap 多尺度标签编码、完整训练/测试配置参数以及 COCO val2017 上的官方基准结果帮助读者能够独立复现、微调并深入理解该算法在 MMPose 中的落地细节。一、算法背景与 COCO 基准结果RSN 出自 ECCV 2020 论文 Learning Delicate Local Representations for Multi-Person Pose EstimationCai et al.其核心思想是通过残差步骤块Residual Steps Block, RSB在极小感受野内堆叠多级局部卷积学习精细的局部特征表示再配合小时玻璃hourglass-like的多阶段下采样/上采样结构同时保持高分辨率特征输出与细粒度局部细节。原文引用见 rsn_coco.md 中的 BibTeXmisc{cai2020learning, title{Learning Delicate Local Representations for Multi-Person Pose Estimation}, author{Yuanhao Cai and Zhicheng Wang and Zhengxiong Luo and Binyi Yin and Angang Du and Haoqian Wang and Xinyu Zhou and Erjin Zhou and Xiangyu Zhang and Jian Sun}, year{2020}, eprint{2003.04030}, archivePrefix{arXiv}, primaryClass{cs.CV} }在 COCO 数据集ECCV 2014Microsoft COCO: Common Objects in Context上使用 human AP 为 56.4 的人体检测器bbox_file 指向COCO_val2017_detections_AP_H_56_person.json官方在 COCO val2017 上报告的基准结果如下表格继承自 rsn_coco.md模型输入尺寸APAP50AP75ARAR50配置文件RSN-18256x1920.7040.8870.7810.7730.927td-hm_rsn18RSN-50256x1920.7240.8940.7990.7900.935td-hm_rsn502xRSN-50256x1920.7480.9000.8210.8100.939td-hm_2xrsn503xRSN-50256x1920.7500.9000.8240.8140.941td-hm_3xrsn50从结果可以读出两个规律其一主干加深RSN-18 → RSN-50AP 0.704 → 0.724收益明显其二增加小时玻璃阶段数RSN-50 → 2xRSN-50 → 3xRSN-50带来约 2 个点的进一步提升但 3xRSN-50 相对 2xRSN-50 的增益0.002已经很小计算开销却随阶段数线性增长选型时可按精度/速度权衡。预训练权重ckpt与训练日志log托管在 OpenMMLab 资源站上原文档 rsn_coco.md 中每行附有对应的下载地址。二、RSN 主干的源码实现RSN 主干实现在 mmpose/models/backbones/rsn.py 中由以下组件自底向上组成ResNet_toprsn.py#L499轻量前置卷积7x7、stride2 卷积 3x3 MaxPool输出通道数为res_top_channels默认 64是小时玻璃结构的输入起点。RSBResidual Steps Blockrsn.py#L14RSN 的核心算子。先用 1x1 卷积将通道扩展为num_steps * branch_channels并切分为num_steps份然后做num_steps步 3x3 卷积每一步的 j 路特征都依赖同一步的第 j-1 路特征与上一步第 j 路特征inputs inputs outputs[i - 1][j]见 rsn.py#L101-L115 的 forward 循环形成残差步骤式的局部分支细化最后拼接num_steps个对角分支输出经 1x1 卷积回缩通道并与 identity 相加。默认num_steps4、expand_times26。Downsample_module / Upsample_modulersn.py#L128、rsn.py#L361各由 4 个单位num_units4构成。下采样模块中相邻 unit 通道数翻倍、空间尺寸减半共输出 4 个不同尺度的中间特征64/128/256/512 对应 1/2、1/4、1/8、1/16 分辨率上采样模块对 4 个尺度分别做 1x1 卷积并沿单位链路上采样相加最终恢复出 4 个unit_channels默认 256通道的多尺度特征图。Single_stage_RSNrsn.py#L435一次下采样 上采样即一个完整的小时玻璃阶段。RSNrsn.py#L529注册于MODELS的总入口堆叠num_stages个 Single_stage_RSN。forward 中前一个阶段的 cross 特征作为下一阶段的输入非首阶段通过has_skipTrue接收前一阶段上采样模块生成的 skip1/skip2 残差连接见 rsn.py#L613-L628。每个阶段输出 4 个尺度的特征元组即配置中level_indices[0, 1, 2, 3]所引用的 4 个层级。这与论文中的命名约定一致RSN-18 对应num_blocks[2, 2, 2, 2]RSN-50 对应num_blocks[3, 4, 6, 3]每个下采样 unit 中 RSB 的数量2x/3x 前缀对应num_stages2/3即小时玻璃重复的级数。num_stages越大多尺度特征在更深层被反复重构细节与上下文融合越充分但参数量与耗时也随之增长。三、MSPNHead 多头预测与损失设计头部使用 MSPNHeadMulti-Scale Pose Network Head实现在 mspn_head.py。它以 backbone 每阶段输出的 4 个尺度特征为输入每个尺度由一个PredictHeatmap分支独立上采样到out_shape(64, 48)并预测 17 通道热图该头部还支持论文中的PRMPose Refine Machinemspn_head.py#L23即对预测热图做全局路径1x1 全局池化 MLP与局部路径深度可分离卷积联合的置信度精化。4 份配置中的损失写法完全一致均为每阶段/每 unit 的KeypointMSELoss权重 0.25共 3 个 1 个KeypointOHKMMSELoss权重 1.0OHKM 即 Outlier-robust Huber-style Keypoint MSELoss用于抑制离群点热图对梯度的影响2x/3x 版本按阶段数整体复制该损失组loss(...) * 2/* 3。level_indices则声明每个 unit 应消费哪个层级的 backbone 特征RSN-18 / RSN-50单阶段level_indices[0, 1, 2, 3]2xRSN-50两阶段且 codec 多一个 kernel 15 层级level_indices[0, 1, 2, 3] [1, 2, 3, 4]3xRSN-50三阶段level_indices[0, 1, 2, 3] * 2 [1, 2, 3, 4]四、MegviiHeatmap多 kernel 热力图标签编码训练 pipeline 中GenerateTarget(multilevelTrue, encodercodec)使用 MegviiHeatmap 编解码器实现位于 mmpose/codecs/megvii_heatmap.py它按配置中的kernel_sizes列表为每个层级生成不同高斯核宽度的热图目标RSN-18 / RSN-50kernel_sizes [11, 9, 7, 5]4 个层级对应 4 个 unit 特征2xRSN-50 / 3xRSN-50kernel_sizes [15, 11, 9, 7, 5]多出一个更粗的 kernel与第二/三阶段更深层特征匹配粗尺度特征配宽高斯核、细尺度特征配窄高斯核使每个 PredictHeatmap 分支都在与自身分辨率匹配的标签下训练。解码端则取codec[-1]kernel5 的精细层级作为最终热图用于推理时把热图反解为关键点坐标。五、训练配置逐项解读以 td-hm_rsn50_8xb32-210e_coco-256x192.py 为代表RSN-18 差异在优化器与调度下文单独说明关键配置如下配置项取值说明train_cfgmax_epochs210, val_interval10训练 210 轮每 10 轮验证一次optim_wrapperAdam,lr5e-3RSN-18 为2e-2浅网用更激进的学习率param_schedulerLinearLR warmup 500 步start_factor0.001 MultiStepLRmilestones[170, 200]RSN-18 为 [170, 190, 200]gamma0.1与论文配方一致auto_scale_lrbase_batch_size256按实际 batch 线性缩放学习率8x32256 为基准codecMegviiHeatmapinput(192, 256)heatmap(48, 64)kernel_sizes[11, 9, 7, 5]多尺度高斯热图标签backboneRSNunit_channels256, num_stages1, num_units4, num_blocks[3, 4, 6, 3], num_steps4对应 RSN-50 主干headMSPNHeadout_channels17COCO 17 关键点num_stages/num_units1/44 个尺度各出一组热图test_cfgflip_testTrue, flip_modeheatmap, shift_heatmapFalse测试时热图级水平翻转增强数据增强RandomFlip、RandomHalfBody、RandomBBoxTransform、TopdownAffine标准 topdown 增强组合fp16dict(loss_scaledynamic)半精度训练动态损失缩放评估CocoMetricnms_modenoneCOCO 标准 PCK/AP 指标数据部分训练使用annotations/person_keypoints_train2017.json验证/测试使用annotations/person_keypoints_val2017.json并通过bbox_file指定人体检测结果data/coco/person_detection_results/COCO_val2017_detections_AP_H_56_person.json——这正是结果表注中 detector having human AP of 56.4 的来源即 topdown 结果的可复现性依赖该固定检测器。数据集准备可参考 prepare_datasets.md。训练与测试命令在已安装 MMPose 并准备好 COCO 数据data_rootdata/coco/后# 单卡训练 RSN-50 python tools/train.py configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_rsn50_8xb32-210e_coco-256x192.py # 多卡训练8 卡 bash tools/dist_train.sh 8 configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_rsn50_8xb32-210e_coco-256x192.py # 测试指定 checkpoint python tools/test.py configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_rsn50_8xb32-210e_coco-256x192.py checkpoint_path其中 tools/train.py、tools/test.py 为标准入口多卡脚本为 tools/dist_train.sh / tools/dist_test.sh。default_hooks中checkpointdict(save_bestcoco/AP, rulegreater)会自动按验证集 COCO AP 保存最优权重。六、模型选型与扩展建议精度优先选择 3xRSN-50AP 0.750或 2xRSN-50AP 0.748耗时约为其 2/3 量级从源码结构看计算量随num_stages线性增长速度敏感RSN-18AP 0.704主干最浅num_blocks全为 2是部署场景的合理起点自定义扩展可调整num_steps、unit_channels、expand_times均见 RSN 构造函数 的默认值或 codec 的kernel_sizes组合但需保持num_units len(num_blocks)源码中有断言约束以及level_indices与阶段/层级数一致验证可复现性注意结果表的前提是人体检测器 AP 为 56.4若更换 bbox_file同配置的 AP 会随之波动这属于 topdown 评测的固有属性。七、相关文件索引类别路径结果文档configs/body_2d_keypoint/topdown_heatmap/coco/rsn_coco.mdRSN-18 配置configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_rsn18_8xb32-210e_coco-256x192.pyRSN-50 配置configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_rsn50_8xb32-210e_coco-256x192.py2xRSN-50 配置configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_2xrsn50_8xb32-210e_coco-256x192.py3xRSN-50 配置configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_3xrsn50_8xb32-210e_coco-256x192.pyRSN 主干实现mmpose/models/backbones/rsn.pyMSPNHead 实现mmpose/models/heads/heatmap_heads/mspn_head.pyMegviiHeatmap 编解码器mmpose/codecs/megvii_heatmap.py主干测试tests/test_models/test_backbones【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表