尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

MMPose 动物二维关键点估计实战指南:Top-Down 热图范式与五大动物数据集模型库解析

MMPose 动物二维关键点估计实战指南:Top-Down 热图范式与五大动物数据集模型库解析 MMPose 动物二维关键点估计实战指南Top-Down 热图范式与五大动物数据集模型库解析【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose本文聚焦 OpenMMLab 姿态估计工具箱 MMPose 中configs/animal_2d_keypoint/topdown_heatmap目录所承载的完整能力从 Top-Down 两阶段思路与热图Heatmap编码原理出发逐数据集解读 Animal-Pose、AP-10K、Desert Locust、Grévys Zebra 与 Animal-Kingdom 五个动物关键点基准的官方配置、评估指标与可复现结果并结合mmpose/codecs、mmpose/models/heads等源码剖析 Heatmap 范式在 MMPose v1 中的底层实现。读完本文你将能够直接复现官方榜单结果、理解并修改相关训练配置以及将模型接入单目图像推理流程。一、Top-Down 热图范式两阶段流程与核心思想在动物关键点估计任务中Top-Down 方法将问题分解为两个阶段目标检测与单目标姿态估计。第一阶段先用检测器在图像中框出目标动物第二阶段基于检测到的边界框对框内单个动物实例估计关键点坐标。这一思路最早由Simple Baselines for Human Pose Estimation and TrackingECCV2018确立MMPose 的动物 Top-Down 模型库同样遵循该范式。与直接回归关键点坐标不同Top-Down 热图方法让网络输出一组热图Heatmap每张热图对应一个关键点热图中像素的响应值表示该位置是关键点的似然概率。训练阶段使用高斯核把标注关键点扩散成热图作为监督目标推理阶段则从网络输出的热图中寻找峰值位置再映射回原图坐标。由于热图保留了空间结构信息、监督信号平滑且天然具备不确定性表达该范式在精度上长期优于直接坐标回归也是 MMPose 中积累最丰富的范式之一。仓库中本范式对应的主入口文档为 configs/animal_2d_keypoint/topdown_heatmap/README.md所有子目录均围绕该 README 组织。二、目录结构与模型库总览configs/animal_2d_keypoint/topdown_heatmap/下按数据集划分为 5 个子目录每个子目录内包含若干组td-hm_*命名规则td表示 Top-Downhm表示 Heatmap的训练配置文件以及对应的*.md结果页与*.yml元数据子目录数据集支持的骨干网络主要评估指标animalpose/Animal-Pose (ICCV2019)HRNet-w32/w48、ResNet-50/101/152AP / ARap10k/AP-10K (NeurIPS2021)HRNet-w32/w48、ResNet-50/101、CSPNeXt-mAPlocust/Desert Locust (eLife2019)ResNet-50/101/152PCK0.2 / AUC / EPEzebra/Grévys Zebra (eLife2019)ResNet-50/101/152PCK0.2 / AUC / EPEak/Animal-Kingdom (CVPR2022)HRNet-w32PCK(0.05)配置文件采用 MMPose v1 的模块化注册机制每个.py配置都完整描述了数据加载、编码器codec、模型backbone head、训练策略与评估器。接下来我们逐个数据集深入。三、Animal-Pose跨域自适应动物姿态基准3.1 数据集与关键点定义Animal-Pose 由Cross-Domain Adaptation for Animal Pose EstimationICCV2019提出其验证集包含 1117 个实例。数据集定义了 20 个关键点L/R Eye、L/R EarBase、Nose、Throat、TailBase、Withers、各肢体 Elbow/Knee/Paw 等完整定义可在数据集元信息 configs/base/datasets/animalpose.py 中查看其中还包含每类关键点的swap配对用于水平翻转增强、sigmas用于 AP 计算的 OKS 归一化与joint_weights。对应的数据集实现类为 mmpose/datasets/datasets/animal/animalpose_dataset.py 中的AnimalPoseDataset它继承自BaseCocoStyleDataset通过METAINFO指向上述animalpose.py元信息文件。3.2 配置逐段拆解以 HRNet-w32 为例以 td-hm_hrnet-w32_8xb64-210e_animalpose-256x256.py 为例这是一份最具代表性的 Top-Down 热图训练配置核心段落如下运行与优化器设置_base_ [../../../_base_/default_runtime.py] 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))训练 210 个 epoch每 10 个 epoch 验证一次优化器为 Adam初始学习率5e-4先做 500 次迭代的线性 warm-up再在 170/200 epoch 处以 0.1 倍率阶梯下降auto_scale_lr声明基准 batch size 为 512当实际 batch size 不同时 MMPose 会自动线性缩放学习率检查点保存策略为取coco/AP指标更大者default_runtime.py见 configs/base/default_runtime.py中额外挂载了PoseVisualizationHook、BadCaseAnalysisHook、SyncBuffersHook等默认钩子。编码器Codec与模型codec dict( typeMSRAHeatmap, input_size(256, 256), heatmap_size(64, 64), sigma2) model 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(...), init_cfg...), headdict( typeHeatmapHead, in_channels32, out_channels20, deconv_out_channelsNone, lossdict(typeKeypointMSELoss, use_target_weightTrue), decodercodec), test_cfgdict(flip_testTrue, flip_modeheatmap, shift_heatmapTrue))codec选用MSRAHeatmap输入图 256×256下采样 4 倍得到 64×64 热图高斯核sigma2模型外壳为TopdownPoseEstimator实现见 mmpose/models/pose_estimators/topdown.py由 backbone head 组成HRNet-w32 保持高分辨率特征Head 输出的通道数out_channels20正好对应 Animal-Pose 的 20 个关键点对 HRNet 主干deconv_out_channelsNone表示不需要 SimpleBaselines 式反卷积上采样flip_testTrue开启翻转测试增强将原图与水平翻转图的热图按flip_modeheatmap方式合并取平均后再解码。数据管道Pipeline与加载器train_pipeline [ dict(typeLoadImage), dict(typeGetBBoxCenterScale), dict(typeRandomFlip, directionhorizontal), dict(typeRandomHalfBody), dict(typeRandomBBoxTransform), dict(typeTopdownAffine, input_sizecodec[input_size]), dict(typeGenerateTarget, encodercodec), dict(typePackPoseInputs) ]训练管道依次完成读取图像 → 由标注框计算中心点与尺度 → 随机水平翻转 → 随机取半身样本 → 随机平移/缩放/旋转边界框 → 仿射变换裁剪到输入尺寸 → 用 codec 把关键点编码成高斯热图 → 打包成模型输入。验证管道则去掉所有随机增强只保留裁剪与打包。数据加载部分声明dataset_type AnimalPoseDataset、data_root data/animalpose/训练用annotations/animalpose_train.json验证用annotations/animalpose_val.json评估器为CocoMetric以 COCO 风格的 AP/AR 作为指标。3.3 官方结果验证集 1117 实例下表完整继承自结果文档 animalpose/hrnet_animalpose.md 与 animalpose/resnet_animalpose.md模型输入尺寸APAP50AP75ARAR50HRNet-w32256×2560.7400.9590.8330.7800.965HRNet-w48256×2560.7380.9580.8310.7780.962ResNet-152256×2560.7040.9360.7820.7480.947ResNet-101256×2560.6960.9330.7810.7360.944ResNet-50256×2560.6910.9300.7730.7360.943对应配置文件分别为td-hm_hrnet-w32_8xb64-210e_animalpose-256x256.py、td-hm_hrnet-w48_8xb64-210e_animalpose-256x256.py以及td-hm_res{50,101,152}_8xb{64,64,32}-210e_animalpose-256x256.py其中 ResNet 系列配置使用HeatmapHead默认的三层反卷积256→256→256进行上采样out_channels同样为 20backbone 预训练权重来自torchvision://resnet{50,101,152}。四、AP-10K野外动物姿态大基准AP-10KNeurIPS2021是首个大规模野外动物姿态基准覆盖 10K 张图片中的多种动物每张热图配置输出 17 个关键点。数据集类实现为 mmpose/datasets/datasets/animal/ap10k_dataset.py 中的AP10KDataset。该子目录下的模型组合最为丰富官方结果如下验证集完整数据见 ap10k/hrnet_ap10k.md、ap10k/resnet_ap10k.md 与 ap10k/cspnext_udp_ap10k.md模型输入尺寸APAP50AP75APMAPLHRNet-w48256×2560.7280.9360.8020.5770.735HRNet-w32256×2560.7220.9350.7890.5570.729CSPNeXt-m (UDP)256×2560.7030.9440.7760.5130.710ResNet-101256×2560.6810.9210.7510.5450.690ResNet-50256×2560.6800.9260.7380.5520.687其中 HRNet / ResNet 系列采用MSRAHeatmap编码input_size(256,256), heatmap_size(64,64), sigma2而 CSPNeXt-m 配置 cspnext-m_udp_8xb64-210e_ap10k-256x256.py 具有几个值得注意的差异点编码器升级为UDPHeatmapUnbiased Data ProcessingCVPR2020且所有TopdownAffine变换都带use_udpTrue用于消除坐标变换过程中的量化误差骨干网络换用来自 MMDetection 的CSPNeXt_scope_mmdetRTMDet 系列骨干输入 768 通道特征配合AdamWlr4e-3、weight_decay0.05与余弦退火学习率引入两阶段训练custom_hooks中挂载mmdet.PipelineSwitchHook在max_epochs - 30时切换为更温和的第二阶段管道缩小旋转/缩放幅度、降低 CoarseDropout 概率并配合EMAHookExpMomentumEMAmomentum0.0002做指数滑动平均数据增强更激进训练管道中加入了mmdet.YOLOXHSVRandomAug颜色抖动与基于 albumentations 的Blur、MedianBlur、CoarseDropout遮挡增强数据组织上拆分为 train/val/test 三个 jsonap10k-train-split1.json等分别配置独立的CocoMetric评估器。五、Desert Locust 与 Grévys ZebraDeepPoseKit 生态的小物体姿态任务这两个数据集均来自DeepPoseKiteLife2019分别用于沙漠蝗虫与格列维斑马的关键点估计且只使用 ResNet 系列骨干、输入分辨率降低到 160×160——相比猫狗等动物这两类目标的尺寸与纹理复杂度更低因此采用更小的输入即可达到很高的精度。对应的数据集实现为 mmpose/datasets/datasets/animal/locust_dataset.py 与 mmpose/datasets/datasets/animal/zebra_dataset.py。以 td-hm_res50_8xb64-210e_locust-160x160.py 为例与 Animal-Pose 配置相比主要有三处不同codec dict( typeMSRAHeatmap, input_size(160, 160), heatmap_size(40, 40), sigma2) train_pipeline [ dict(typeLoadImage), dict(typeGetBBoxCenterScale, padding0.8), dict(typeRandomFlip, directionhorizontal), dict(typeRandomBBoxTransform, shift_factor0.25, rotate_factor180, scale_factor(0.7, 1.3)), dict(typeTopdownAffine, input_sizecodec[input_size]), dict(typeGenerateTarget, encodercodec), dict(typePackPoseInputs) ] val_evaluator [ dict(typePCKAccuracy, thr0.2), dict(typeAUC), dict(typeEPE), ]输入 160×160、热图 40×40下采样 4 倍GetBBoxCenterScale增加padding0.8以扩大裁剪视野旋转增强范围提高到 ±180°以适应昆虫姿态的多向性评估指标从 COCO AP 切换为PCKAccuracy阈值为 0.2、AUC与EPEcheckpoint 保存策略相应改为save_bestAUC。官方测试集结果完整表见 locust/resnet_locust.md 与 zebra/resnet_zebra.mdDesert Locust测试集模型输入尺寸PCK0.2AUCEPEResNet-152160×1601.0000.9251.49ResNet-101160×1601.0000.9072.03ResNet-50160×1601.0000.9002.27Grévys Zebra测试集模型输入尺寸PCK0.2AUCEPEResNet-152160×1601.0000.9211.67ResNet-101160×1601.0000.9151.83ResNet-50160×1601.0000.9141.87注意两个数据集的out_channels不同Locust 配置为 35 个关键点Zebra 为 9 个关键点见 zebra/td-hm_res50_8xb64-210e_zebra-160x160.py 的head.out_channels9。六、Animal-Kingdom按类别拆分的 23 关键点基准Animal-KingdomCVPR2022是一个覆盖多物种的大规模动物行为理解数据集MMPose 提供 7 个类别子模型全部使用 HRNet-w32 MSRAHeatmap训练 300 epochout_channels23数据集类为 mmpose/datasets/datasets/animal/animalkingdom_dataset.py 中的AnimalKingdomDataset。配置示例见 td-hm_hrnet-w32_8xb32-300e_animalkingdom_P1-256x256.py其评估器为val_evaluator [dict(typePCKAccuracy, thr0.05), dict(typeAUC)]各子类别的验证集结果PCK0.05如下完整表见 ak/hrnet_animalkingdom.md同时列出了官方仓库与论文报告值供对照类别配置文件PCK(0.05)Official RepoPaperP1..._P1-256x256.py0.63230.63420.6606P2..._P2-256x256.py0.37410.37260.393P3_mammals..._P3_mammal-256x256.py0.5710.57190.6159P3_amphibians..._P3_amphibian-256x256.py0.53580.54320.5674P3_reptiles..._P3_reptile-256x256.py0.510.50.5606P3_birds..._P3_bird-256x256.py0.76710.76360.7735P3_fishes..._P3_fish-256x256.py0.64060.6360.6825从 P1 到 P3_* 的划分体现了按动物类别分别训练的实用策略不同类别鸟类、鱼类、两栖类等的姿态结构差异显著单独建模可获得更可靠的结果。七、源码级原理Heatmap 范式在 MMPose v1 中的实现7.1 编码器CodecMSRAHeatmap与UDPHeatmapHeatmap 编码/解码逻辑被抽象为独立的 codec 模块统一继承BaseKeypointCodec并注册到KEYPOINT_CODECS。MSRAHeatmapmmpose/codecs/msra_heatmap.py实现了 Simple Baselines 的高斯热图方案encode()将关键点坐标按其与热图尺寸的比例scale_factor input_size / heatmap_size即 256/644投影到热图平面用sigma控制的高斯核生成(K, H, W)的监督热图并输出用于加权损失的关键点权重keypoint_weights解码时通过get_heatmap_maximum定位峰值并支持可选的高斯调制精修DarkPose 风格的refine_keypoints_dark对应unbiasedTrue与blur_kernel_size11此时 sigma 与核宽满足经验公式sigma 0.3*((ks-1)*0.5-1)0.8。UDPHeatmapmmpose/codecs/udp_heatmap.py则针对坐标变换中的量化偏差做了无偏化处理支持gaussian与combined二值标签图 X/Y 偏移图两种编码类型并内置refine_keypoints_dark_udp解码精修。这正是 AP-10K 上 CSPNeXt-m 配置选用它的原因。7.2 HeadHeatmapHead与测试时增强mmpose/models/heads/heatmap_heads/heatmap_head.py 中的HeatmapHead是全部 5 个数据集共享的头部输入低分辨率特征图后先经过若干反卷积层上采样默认deconv_out_channels(256,256,256)核宽(4,4,4)再通过final_layer1×1 卷积输出 K 通道热图。其predict()方法完整实现了翻转测试增强逻辑if test_cfg.get(flip_test, False): # feats [orig, flipped] flip_indices batch_data_samples[0].metainfo[flip_indices] _batch_heatmaps self.forward(_feats) _batch_heatmaps_flip flip_heatmaps( self.forward(_feats_flip), flip_modetest_cfg.get(flip_mode, heatmap), flip_indicesflip_indices, shift_heatmaptest_cfg.get(shift_heatmap, False)) batch_heatmaps (_batch_heatmaps _batch_heatmaps_flip) * 0.5训练损失为KeypointMSELossuse_target_weightTrue表示按可见性权重加权并同步计算热图级 PCK 精度作为日志输出_load_state_dict_pre_hook还负责把 v1.0 之前旧版TopdownHeatmapSimpleHead的权重自动转换为新格式。7.3 评估指标AP/AR 与 PCK/AUC/EPE两种指标族在源码中分属不同实现COCO 风格 AP/AR由CocoMetricmmpose/evaluation/metrics/coco_metric.py按 OKS 阈值计算Animal-Pose 与 AP-10K 使用PCK / AUC / EPE分别对应 mmpose/evaluation/metrics/keypoint_2d_metrics.py 中的PCKAccuracy、AUC、EPE三个类其底层数值计算函数位于 mmpose/evaluation/functional/keypoint_eval.pykeypoint_pck_accuracy计算预测点与真值的归一化距离统计小于阈值thr的比例keypoint_auc在 0 到norm_factor默认 30 像素之间均匀取 20 个阈值对每个阈值计算平均 PCK 后求曲线下面积keypoint_epe直接计算端到端平均像素误差数值越低越好。因此在 Locust / Zebra 配置中同时挂载三个评估器便可在一次验证中同时获得 PCK、AUC、EPE 三项指标Animal-Kingdom 则用thr0.05的严格 PCK 阈值衡量精细关键点的定位精度。八、开箱即用训练、测试与推理以 Animal-Pose HRNet-w32 为例仓库提供了完整的训练/测试脚本见 tools/train.py 与 tools/test.py在完成数据集准备后即可复现# 单卡训练 python tools/train.py configs/animal_2d_keypoint/topdown_heatmap/animalpose/td-hm_hrnet-w32_8xb64-210e_animalpose-256x256.py # 多卡分布式训练8 卡 bash tools/dist_train.sh configs/animal_2d_keypoint/topdown_heatmap/animalpose/td-hm_hrnet-w32_8xb64-210e_animalpose-256x256.py 8 # 测试需按 README 说明准备预训练权重 python tools/test.py configs/animal_2d_keypoint/topdown_heatmap/animalpose/td-hm_hrnet-w32_8xb64-210e_animalpose-256x256.py checkpoint路径 --work-dir ./work_dir离线推理可以直接使用高层的 Inferencer 接口demo/inferencer_demo.pypython demo/inferencer_demo.py 动物图片或视频路径 \ --pose2d configs/animal_2d_keypoint/topdown_heatmap/animalpose/td-hm_hrnet-w32_8xb64-210e_animalpose-256x256.py \ --vis-out-dir ./vis_output由于 Top-Down 方法依赖检测框在含多个动物的图像上可组合 MMDetection 检测器与姿态估计器进行端到端推理示例脚本见 demo/topdown_demo_with_mmdet.py检测器配置可参考 demo/mmdetection_cfg 下的各检测模型。九、总结configs/animal_2d_keypoint/topdown_heatmap/是 MMPose 动物关键点估计中最成熟、覆盖最广的范式目录它以 Simple Baselines 确立的 Top-Down 热图思路为骨架在 5 个差异化的动物数据集上提供了 HRNet、ResNet、CSPNeXt 等骨干网络的完整配置、可复现指标与配套源码。理解这份模型库等于同时掌握了 MMPose v1 中 codec、estimator、head、pipeline 与 evaluator 五个核心抽象的使用方式——它既是直接可用的动物姿态工具箱也是学习如何在自定义动物数据集上落地热图方法的范本。【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表