资讯动态

MMPose 中的 Grévy‘s Zebra 动物姿态估计数据集:DeepPoseKit 数据接入与 ResNet 实战指南

发布时间:2026/9/18 5:59:37 来源:尧图企业网站定制
MMPose 中的 Grévys Zebra 动物姿态估计数据集DeepPoseKit 数据接入与 ResNet 实战指南【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose本文以 docs/src/papers/datasets/zebra.md 记录的数据集论文为核心结合 MMPose 仓库中该数据集的实际实现数据集类、基础配置、训练配置、模型库与测试用例系统讲解 Grévys Zebra 数据集在 OpenMMLab MMPose 中是如何接入、配置、训练与评测的。读者读完后将掌握该数据集的 9 个关键点定义与骨架结构、ZebraDataset的底层解析逻辑、160×160 输入下基于 MSRA 热图编解码的 top-down 训练配置以及 ResNet-50/101/152 三档模型的评测指标与复现方法。一、数据集背景与论文出处Grévys Zebra格列维斑马数据集由 Graving 等人提出原始出处为 2019 年发表于 eLife 的论文DeepPoseKit, a software toolkit for fast and robust animal pose estimation using deep learning。该论文的核心贡献是发布了一套面向野生动物斑马、沙漠蝗虫等的姿态估计标注数据与配套工具链后续被广泛用作动物姿态估计领域的 benchmark。仓库中数据集目录页 docs/src/papers/datasets/zebra.md 以标准格式登记了该数据集的论文元信息并附带了可直接引用的 BibTeXarticle{graving2019deepposekit, title{DeepPoseKit, a software toolkit for fast and robust animal pose estimation using deep learning}, author{Graving, Jacob M and Chae, Daniel and Naik, Hemal and Li, Liang and Koger, Benjamin and Costelloe, Blair R and Couzin, Iain D}, journal{Elife}, volume{8}, pages{e47994}, year{2019}, publisher{eLife Sciences Publications Limited} }在 MMPose 中该数据集的完整支持位于两条线索上一是实现层的ZebraDataset数据集类与元信息配置文件二是模型库层的三份 ResNet top-down 热图训练配置及对应评测结果。以下各节将分别展开。二、9 个关键点定义与骨架结构Zebra 数据集的全部关键点语义、左右配对关系与骨架连接关系定义在基础配置 configs/base/datasets/zebra.py 中。数据集的keypoint_info定义了 9 个关键点id 0–8id名称说明对称配对swap0snout口鼻部—1head头部—2neck颈部—3forelegL1左前腿第一关键点forelegR14forelegR1右前腿第一关键点forelegL15hindlegL1左后腿第一关键点hindlegR16hindlegR1右后腿第一关键点hindlegL17tailbase尾根部—8tailtip尾尖—关键点划分上斑马数据集将身体分为头颈0–2、四肢3–6与尾部7–8三组。其中前后腿的关键点互为水平翻转配对swap字段这一信息在训练时会被RandomFlip变换消费用于在图像水平翻转后交换左右腿关键点的标签是数据增强正确性的关键前提。dataset_info中同时定义了 8 条骨架连接skeleton_info用于可视化与结构约束头部链head → snout、neck → head前腿链forelegL1 → neck、forelegR1 → neck后腿链hindlegL1 → tailbase、hindlegR1 → tailbase躯干与尾部tailbase → neck、tailtip → tailbase此外joint_weights[1.] * 9表示 9 个关键点在损失计算中权重一致sigmas[]表明该数据集不采用基于对象关键点相似度OKS的 AP 评测而是采用 PCK/AUC/EPE 指标详见第五节。从源码结构看这些元信息通过ZebraDataset.METAINFO dict(from_fileconfigs/_base_/datasets/zebra.py)被数据集类直接加载MMPose 会据此自动生成keypoint_id2name、keypoint_name2id、flip_pairs、skeleton_links等运行时元数据供变换、损失与可视化模块统一使用。三、ZebraDataset 的实现原理整图作为检测框数据集的接入实现位于 mmpose/datasets/datasets/animal/zebra_dataset.py。ZebraDataset继承自BaseCocoStyleDataset并通过DATASETS.register_module()注册因此在配置文件中可直接以typeZebraDataset使用。该类最核心的逻辑在parse_data_info方法zebra_dataset.py#L72-L116中它把原始 COCO 风格的标注逐实例转换为 MMPose 内部统一的数据结构。值得注意的实现细节有三点检测框即整幅图像Zebra 数据集的原始图像统一为 160×160且每张图只有一个个体因此代码直接构造bbox np.array([0, 0, 160, 160])zebra_dataset.py#L94即用整幅图像作为实例的包围盒无需外部检测器。这是该数据集与 COCO、AnimalPose 等一图多实例 实例框数据集的关键差异也是它能以 top-down 流程直接训练的原因。关键点与可见性解耦原始标注的 keypoints 为[N, K, 3]形式最后一维为 x、y、可见性标志代码将其切分为keypoints[..., :2]与keypoints_visible np.minimum(1, _keypoints[..., 2])把可见性标志收敛到{0, 1}供后续GenerateTarget生成训练目标时做遮挡过滤。输出字段对齐统一范式解析结果输出img_id / img_path / bbox / bbox_score / num_keypoints / keypoints / keypoints_visible / iscrowd / id等字段与 MMPose 其他 COCO 风格数据集保持一致确保下游 pipelineGetBBoxCenterScale、TopdownAffine、PackPoseInputs等可以无差别复用。四、数据目录结构与准备根据训练配置中的data_root data/zebra/与data_prefixdict(imgimages/)数据集在仓库使用时的标准目录结构为data/zebra/ ├── annotations/ │ ├── zebra_train.json # 训练标注 │ └── zebra_test.json # 测试标注 └── images/ └── (160x160 的斑马图像)仓库自带的测试数据位于 tests/data/zebra包含test_zebra.json与两幅样例图像用于单元测试与快速冒烟验证可作为理解标注 JSON 结构的最小样例。生产训练时需按照上述布局准备完整数据。五、训练配置逐项解析以 ResNet-50 版本为例完整训练配置见 configs/animal_2d_keypoint/topdown_heatmap/zebra/td-hm_res50_8xb64-210e_zebra-160x160.py。该配置遵循 MMPose 的 top-down 热图范式先由检测器/整图框定位个体再由姿态估计器输出关键点热图该范式源自 ECCV 2018 的 Simple Baselines论文条目见 resnet_zebra.md。5.1 编解码器MSRAHeatmapcodec dict( typeMSRAHeatmap, input_size(160, 160), heatmap_size(40, 40), sigma2)MSRAHeatmap是经典的高斯热图编解码器将输入图像缩放到 160×160并生成 40×40 的高斯热图下采样 4 倍sigma2控制高斯核的标准差。训练时GenerateTarget依据它生成监督目标测试时由 head 的decoder将热图解码回关键点坐标。5.2 模型结构model dict( typeTopdownPoseEstimator, data_preprocessordict( typePoseDataPreprocessor, mean[123.675, 116.28, 103.53], std[58.395, 57.12, 57.375], bgr_to_rgbTrue), backbonedict( typeResNet, depth50, init_cfgdict(typePretrained, checkpointtorchvision://resnet50), ), headdict( typeHeatmapHead, in_channels2048, out_channels9, lossdict(typeKeypointMSELoss, use_target_weightTrue), decodercodec), test_cfgdict( flip_testTrue, flip_modeheatmap, shift_heatmapTrue, ))关键点说明backboneResNet-50/101/152in_channels2048对应 ResNet 最后一个 stage 的输出通道数使用 ImageNet 预训练权重初始化。headHeatmapHead输出通道out_channels9与关键点数量严格对应损失为带目标权重的KeypointMSELoss。test_cfg开启flip_testTrue的水平翻转测试集成flip_modeheatmap表示在热图层面做翻转融合并执行shift_heatmap像素偏移校正可稳定提升约 0.5–1 个百分点的指标。5.3 数据增强 pipeline训练 pipeline 依次执行LoadImage → GetBBoxCenterScale → RandomFlip → RandomBBoxTransform → TopdownAffine → GenerateTarget → PackPoseInputstrain_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) ]由于 Zebra 图像为 160×160 的小图rotate_factor180允许绕中心全角度旋转增强配合 0.7–1.3 的尺度扰动和 0.25 的平移扰动有效扩充了仅有 9 个关键点的小型数据集。padding0.8控制框外围留白比例。水平翻转时前述flip_pairs左右腿配对会被自动应用到标签上。验证 pipeline 则只保留仿射对齐不做随机增强。5.4 训练策略与评测指标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), dict(typeMultiStepLR, begin0, end210, milestones[170, 200], gamma0.1, by_epochTrue) ] auto_scale_lr dict(base_batch_size512) default_hooks dict(checkpointdict(save_bestAUC, rulegreater)) val_evaluator [ dict(typePCKAccuracy, thr0.2), dict(typeAUC), dict(typeEPE), ]共训练 210 epoch每 10 epoch 验证一次优化器为 Adamlr5e-4前 500 步做 0.001 起步的线性 warm-up随后在 epoch 170/200 处以 0.1 倍率阶梯下降。auto_scale_lr以 512 为基准批量大小自动换算学习率。评测使用三个指标PCK0.2阈值 0.2 归一化的正确关键点比例、AUC关键点误差累积分布曲线下面积、EPE端点平均误差。模型保存以AUC为准则取最优。由于不使用 OKS 系指标这也解释了为什么该数据集无需sigmas。六、模型库与评测结果Zebra 数据集在 MMPose 中提供三个 backbone 深度的预训练模型完整模型注册见 resnet_zebra.yml论文级结果表格见 resnet_zebra.md汇总页见 configs/animal_2d_keypoint/topdown_heatmap/README.md 的 Grévys Zebra Dataset 小节。模型输入尺寸PCK0.2AUCEPE配置文件ResNet-50160×1601.0000.9141.87td-hm_res50_8xb64-210e_zebra-160x160.pyResNet-101160×1601.0000.9151.83td-hm_res101_8xb64-210e_zebra-160x160.pyResNet-152160×1601.0000.9211.67td-hm_res152_8xb32-210e_zebra-160x160.py三档模型均已在测试集上达到 PCK0.2 1.000说明小图上 9 个关键点的定位已接近饱和AUC 随网络加深从 0.914 提升至 0.921EPE 从 1.87 降至 1.67ResNet-152 综合最优。预训练权重下载地址与训练日志均登记在对应配置的模型库条目yml中可直接用于推理与迁移。注意 ResNet-152 因显存占用采用8xb32批量其余两档为8xb64。七、训练、评测与推理实操在按照第四节准备好data/zebra/数据目录后可使用仓库根目录的标准工具脚本tools/train.py / tools/test.py进行训练与评测# 单机单卡训练 python tools/train.py configs/animal_2d_keypoint/topdown_heatmap/zebra/td-hm_res50_8xb64-210e_zebra-160x160.py # 分布式多卡训练8 卡示例 bash tools/dist_train.sh configs/animal_2d_keypoint/topdown_heatmap/zebra/td-hm_res50_8xb64-210e_zebra-160x160.py 8 # 评测加载模型库中登记的预训练权重 python tools/test.py configs/animal_2d_keypoint/topdown_heatmap/zebra/td-hm_res50_8xb64-210e_zebra-160x160.py checkpoint路径 --out res50_zebra_results.pkl评测结束后可调用 tools/analysis_tools/analyze_logs.py 对训练日志做曲线可视化与对比分析如需用模型库权重快速跑通推理流程可参考 demo/topdown_demo_with_mmdet.py配合整图框或 demo/inferencer_demo.py 的姿态推理接口。由于该数据集默认整图作为框实际部署时可省去检测器环节直接对裁剪后的单个体图像调用姿态模型。八、单元测试数据接入的正确性保障仓库通过 tests/test_datasets/test_datasets/test_animal_datasets/test_zebra_dataset.py 对ZebraDataset进行了完整验证覆盖metainfo 校验断言dataset_name zebra、num_keypoints 9并逐一检查关键点颜色、权重、骨架连接等元数据完整性topdown/bottomup 两种 data_mode验证两种模式下返回的数据字段类型与数据集长度基于tests/data/zebra的 2 条样本异常分支bbox_file仅在test_modeTrue的 topdown 模式下合法、bbox_score_thr仅限 topdown 模式等确保配置误用能被及时拦截报错。该测试从侧面印证了第五节配置中各字段data_modetopdown、ann_file等与实现类参数的对应关系读者在自定义动物数据集接入时可将其作为类实现 元信息 测试三段式接入范式的参考模板。结语Grévys Zebra 是 MMPose 动物姿态估计Animal 2D Keypoint任务线中一个轻量但完整的接入范例论文元信息登记于 docs/src/papers/datasets/zebra.md实现上以BaseCocoStyleDataset为基础、以整图作框完成 top-down 适配评测上使用 PCK/AUC/EPE 三项指标。通过本文的配置解析与源码佐证读者既能直接复现 ResNet-50/101/152 的 Zebra 模型也能以它为模板快速将新的 COCO 风格动物数据集接入 MMPose。【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

免费获取报价