完整指南:人体 / 手部 / 脸部 / 动物检测器配置、性能与实战)
MMPose 预训练 Bounding Box 检测模型仓库Model Zoo完整指南人体 / 手部 / 脸部 / 动物检测器配置、性能与实战【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose本指南系统梳理 OpenMMLab 姿态估计工具箱 MMPose 在demo/mmdetection_cfg目录下为 Top-Down 姿态估计流程配套维护的预训练检测模型Bounding Box Detector清单涵盖人体、手部、脸部、动物四个任务域的模型架构、测试集 Box AP 性能、对应配置文件的源码级解读以及如何在demo/topdown_demo_with_mmdet.py中将其与关键点估计模型组合使用。读完本文你将能够根据任务场景快速选型检测模型、读懂单类别1-class检测配置的改动要点并直接复现仓库提供的检测 姿态估计端到端推理示例。一、为什么姿态估计需要独立的检测模型MMPose 中最常用的姿态估计范式是Top-Down 两阶段流程检测阶段先用目标检测模型在整张图中定位目标人体、手部、脸部或动物输出 Bounding Box估计阶段再将每个 Bounding Box 裁剪出来送入关键点估计模型如 RTMPose、HRNet、SimCC 等预测关键点坐标。因此检测器的质量直接影响后续姿态估计的精度与召回率——框偏了、漏了关键点再准也无济于事。这一调用关系在仓库的 demo/topdown_demo_with_mmdet.py 中有明确体现脚本先用inference_detector(detector, img)获取检测结果按类别与置信度过滤后经 NMS 得到 bboxes再调用inference_topdown(pose_estimator, img, bboxes)完成姿态估计。基于这一需求MMPose 在 demo/mmdetection_cfg 目录下维护了一套预训练检测模型的配置文件作为官方 Model Zoo 的补充供用户在姿态估计任务中直接使用。二、检测模型仓库概览仓库在demo/mmdetection_cfg目录下提供了覆盖四个任务域的检测模型配置任务域代表配置检测器架构训练数据 / 测试集人体rtmdet_m_640-8xb32_coco-person.py等RTMDet / Faster R-CNN / Mask R-CNN / YOLOv3 / SSDLite 等COCO含person类别手部rtmdet_nano_320-8xb32_hand.py、cascade_rcnn_x101_64x4d_fpn_1class.pyRTMDet-nano / Cascade R-CNNOneHand10K含 FreiHand、RHD、Halpe 数据增强脸部yolox-s_8xb8-300e_coco-face.pyYOLOX-sCOCO-Face动物faster_rcnn_r50_fpn_1class.py、cascade_rcnn_x101_64x4d_fpn_1class.pyFaster R-CNN / Cascade R-CNNMacaquePose、COCO 动物类其中带1class后缀的配置是 MMPose 专门针对单类别如纯手部、纯动物检测任务调整过的版本核心改动是将检测头的num_classes设为 1。下面按任务域逐一展开。三、人体 Bounding Box 检测模型MMDetection 提供了基于 COCO 数据集训练的、包含 80 个类别的预训练模型其中第 1 个类别即为person人体。用户在人体姿态估计任务中可以直接从 MMDetection Model Zoo 下载 80 类模型将其作为人体 Bounding Box 检测器使用无需重新训练。仓库中同时提供了多个面向人体检测的开箱即用配置rtmdet_m_640-8xb32_coco-person.py以 MMDetection 官方rtmdet_m_8xb32-300e_coco.py为基础将检测头改为单类别person。核心改动如下_base_ mmdet::rtmdet/rtmdet_m_8xb32-300e_coco.py model dict( backbonedict( init_cfgdict( typePretrained, prefixbackbone., checkpointcheckpoint)), bbox_headdict(num_classes1), test_cfgdict( nms_pre1000, min_bbox_size0, score_thr0.05, nmsdict(typenms, iou_threshold0.6), max_per_img100)) train_dataloader dict(datasetdict(metainfodict(classes(person, )))) val_dataloader dict(datasetdict(metainfodict(classes(person, )))) test_dataloader val_dataloaderfaster_rcnn_r50_fpn_coco.py、cascade_rcnn_x101_64x4d_fpn_coco.pyFaster R-CNN / Cascade R-CNN 的 COCO 80 类版本rtmdet_m_8xb32-300e_coco.py、rtmdet_tiny_8xb32-300e_coco.py、rtmdet_nano_320-8xb32_coco-person.py不同规格的 RTMDet 系列mask_rcnn_r50_fpn_2x_coco.pyMask R-CNN 实例分割模型同时输出 bbox 与 segm mask可兼顾检测与分割需求ssdlite_mobilenetv2-scratch_8xb24-600e_coco.py、yolov3_d53_320_273e_coco.py轻量级 / 经典一阶段检测器。人体检测的一个典型使用场景是动物姿态估计 demodemo/docs/zh_cn/2d_animal_demo.md 中直接使用 rtmdet_m_8xb32-300e_coco.py 的 80 类 COCO 模型作为人体检测器来演示姿态估计流程。四、手部 Bounding Box 检测模型对于手部检测MMPose 使用 MMDetection 在OneHand10K数据集上专门训练了手部 Bounding Box 检测模型共提供两个版本的配置与权重。4.1 基于 OneHand10K 测试集的测试结果架构Box AP权重ckpt训练日志logCascade_R-CNN X-101-64x4d-FPN-1class0.817https://download.openmmlab.com/mmpose/mmdet_pretrained/cascade_rcnn_x101_64x4d_fpn_20e_onehand10k-dac19597_20201030.pthhttps://download.openmmlab.com/mmpose/mmdet_pretrained/cascade_rcnn_x101_64x4d_fpn_20e_onehand10k_20201030.log.jsonRTMDet-nano0.760https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmdet_nano_8xb32-300e_hand-267f9c8f.pth-可以看出Cascade R-CNN X-101-64x4d精度更高Box AP 0.817而RTMDet-nano以明显更轻量的体量获得 0.760 的 Box AP更适合追求推理速度的实时场景。4.2 配置文件源码解读1cascade_rcnn_x101_64x4d_fpn_1class.py高精度方案该配置是一个完整、可直接训练的 Cascade R-CNN 单类检测器骨干网络ResNeXtdepth101、groups64、base_width44 个 stage输出 FPN 所需的(0, 1, 2, 3)四层特征frozen_stages1冻结第一层预训练权重为open-mmlab://resnext101_64x4d颈部标准FPNin_channels[256, 512, 1024, 2048]、out_channels256、num_outs5RPN 头Anchor 尺寸scales[8]、长宽比ratios[0.5, 1.0, 2.0]、stride 覆盖[4, 8, 16, 32, 64]ROI 头CascadeRoIHead3 个级联 stage各 stage 损失权重stage_loss_weights[1, 0.5, 0.25]逐级衰减这是 Cascade R-CNN 的核心思想——用逐级提高的 IoU 阈值0.5 → 0.6 → 0.7训练三个检测头见train_cfg.rcnn中三个assigner的pos_iou_thr检测头Shared2FCBBoxHeadnum_classes1只预测手这一类reg_class_agnosticTrue类别无关回归数据复用 COCO 格式的CocoDatasetdata_rootdata/coco/训练/验证标注分别指向instances_train2017.json与instances_val2017.json评估CocoMetricmetricbbox即表格中的 Box AP。2rtmdet_nano_320-8xb32_hand.py轻量实时方案该配置以mmdet::rtmdet/rtmdet_l_8xb32-300e_coco.py为基础进行缩放输入尺寸input_shape 320通过deepen_factor0.33、widen_factor0.25、use_depthwiseTrue得到 nano 规格的轻量骨干与 PAFPN 颈部bbox_head同样将num_classes设为 1test_cfg中score_thr0.05、nms的 IoU 阈值为 0.6、每图最多保留max_per_img100个框训练数据采用多数据集拼接ConcatDatasetOneHand10K、FreiHand、RHD、Halpe Hand 四个手部数据集联合训练并显式忽略各数据集元信息CLASSES、flip_indices、sigmas等以保证跨数据集训练时数据格式一致训练技巧custom_hooks中配置了EMAHookExpMomentumEMAmomentum0.0002与PipelineSwitchHook在第 280 epoch 切换到 stage2 无 Mosaic 的数据管线评估在 OneHand10K 测试集上以CocoMetric的bbox指标评测train_cfg中val_interval1每个 epoch 验证一次。4.3 在 Demo 中使用手部检测模型手部姿态估计 demodemo/docs/zh_cn/2d_hand_demo.md中官方直接组合RTMDet-nano 手部检测器 RTMPose-m 手部关键点模型进行推理python demo/topdown_demo_with_mmdet.py \ demo/mmdetection_cfg/rtmdet_nano_320-8xb32_hand.py \ https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmdet_nano_8xb32-300e_hand-267f9c8f.pth \ configs/hand_2d_keypoint/rtmpose/hand5/rtmpose-m_8xb256-210e_hand5-256x256.py \ https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-m_simcc-hand5_pt-aic-coco_210e-256x256-74fb594_20230320.pth \ --input tests/data/onehand10k/9.jpg \ --show --draw-heatmap如需保存可视化结果到本地将--show替换为--output-root vis_results如需保存预测 JSON 结果则追加--save-predictionsCPU 环境推理追加--device cpu。视频推理与图片共用同一命令--input支持本地视频文件路径或视频 URL。五、脸部 Bounding Box 检测模型脸部检测模型由 MMPose 使用 MMDetection 在COCO-Face数据上训练的YOLOX检测器提供。5.1 基于 COCO-face 测试集的测试结果架构Box AP权重ckptYOLOX-s0.408https://download.openmmlab.com/mmpose/mmdet_pretrained/yolo-x_8xb8-300e_coco-face_13274d7c.pth5.2 配置文件源码解读yolox-s_8xb8-300e_coco-face.py 的核心设计模型YOLOX-s 结构骨干为CSPDarknetdeepen_factor0.33、widen_factor0.5颈部YOLOXPAFPN检测头YOLOXHeadnum_classes1仅人脸一类训练配置SGD 优化器lr0.01、momentum0.9、weight_decay0.0005、nesterov300 epoch学习率采用QuadraticWarmupLR前 5 epoch 预热→CosineAnnealingLR→ConstantLR三段式调度数据管线使用Mosaic、RandomAffine、MixUp、YOLOXHSVRandomAug等 YOLOX 系列增广数据格式数据集metainfo中显式声明CLASSES(person,)COCO-Face 的人脸以person类别标注训练/验证标注分别为annotations/coco_face_train.json与annotations/coco_face_val.json权重初始化load_from指向 MMDetection 官方yolox_s_8x8_300e_coco预训练权重在此基础上做单类人脸检测的迁移训练。5.3 在 Demo 中使用脸部检测模型脸部姿态估计 demodemo/docs/zh_cn/2d_face_demo.md中使用YOLOX-s 脸部检测器 RTMPose-m 脸部关键点模型python demo/topdown_demo_with_mmdet.py \ demo/mmdetection_cfg/yolox-s_8xb8-300e_coco-face.py \ https://download.openmmlab.com/mmpose/mmdet_pretrained/yolo-x_8xb8-300e_coco-face_13274d7c.pth \ configs/face_2d_keypoint/rtmpose/face6/rtmpose-m_8xb256-120e_face6-256x256.py \ https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-m_simcc-face6_pt-in1k_120e-256x256-72a37400_20230529.pth \ --input tests/data/cofw/001766.jpg \ --show --draw-heatmap若使用 heatmap-based 关键点模型并开启--draw-heatmap预测热图会与关键点一同可视化视频推理时--input同样支持本地文件或 URL。六、动物 Bounding Box 检测模型6.1 COCO 中的 10 类常见动物COCO 数据集共 80 个目标类别其中包含 10 类常见动物类别 id 与名称如下14: bird, 15: cat, 16: dog, 17: horse, 18: sheep, 19: cow, 20: elephant, 21: bear, 22: zebra, 23: giraffe如果任务目标恰好属于上述类别可直接从 MMDetection Model Zoo 下载 80 类 COCO 预训练模型使用。6.2 基于 MacaquePose 测试集的测试结果对于猕猴Macaque姿态估计场景MMPose 使用 MMDetection 在 MacaquePose 数据上训练了两个单类动物检测器架构Box AP权重ckpt训练日志logFaster_R-CNN_Res50-FPN-1class0.840https://download.openmmlab.com/mmpose/mmdet_pretrained/faster_rcnn_r50_fpn_1x_macaque-f64f2812_20210409.pthhttps://download.openmmlab.com/mmpose/mmdet_pretrained/faster_rcnn_r50_fpn_1x_macaque_20210409.log.jsonCascade_R-CNN X-101-64x4d-FPN-1class0.879https://download.openmmlab.com/mmpose/mmdet_pretrained/cascade_rcnn_x101_64x4d_fpn_20e_macaque-e45e36f5_20210409.pthhttps://download.openmmlab.com/mmpose/mmdet_pretrained/cascade_rcnn_x101_64x4d_fpn_20e_macaque_20210409.log.json6.3 配置文件源码解读faster_rcnn_r50_fpn_1class.py 是二阶段检测器单类化的典型示例采用旧版 MMDetection 配置风格通过顶层data字典组织数据模型FasterRCNN骨干ResNetdepth50frozen_stages1norm_evalTrue预训练权重torchvision://resnet50颈部 FPNRPN StandardRoIHead检测头Shared2FCBBoxHeadnum_classes1reg_class_agnosticFalse训练SGDlr0.02、momentum0.9、weight_decay0.0001step 学习率调度step[8, 11]total_epochs12即 1x 训练计划线性 warmup 500 iters推理test_cfg.rcnn中score_thr0.05、nmsIoU 阈值 0.5、max_per_img100。值得注意的是同一个1class配置文件可以通过替换数据集的标注文件来适配不同动物任务——例如 cascade_rcnn_x101_64x4d_fpn_1class.py 既被用于手部OneHand10K训练也被用于猕猴MacaquePose训练这正是文档表格中该配置同时出现在手部与动物两个测试集下的原因。动物姿态估计 demodemo/docs/zh_cn/2d_animal_demo.md中则使用 COCO 预训练的 RTMDet 模型作为检测器进行演示。七、单类检测器配置要点总结对比上述配置可以看出将标准 COCO 多类检测器改造成姿态估计专用的单类检测器通常只需三步修改检测头类别数将bbox_head的num_classes由 80 改为 1如rtmdet_nano_320-8xb32_hand.py、yolox-s_8xb8-300e_coco-face.py、cascade_rcnn_x101_64x4d_fpn_1class.py中的做法同步更新数据集元信息通过dataloader.dataset.metainfo声明classes(person,)等单类列表见rtmdet_m_640-8xb32_coco-person.py、yolox-s_8xb8-300e_coco-face.py确保类别索引与标签对齐按需调整推理阈值test_cfg中的score_thr置信度阈值通常 0.01~0.05、nms的 IoU 阈值、max_per_img每图最大框数直接决定后续姿态估计的输入框数量与质量。此外当目标领域缺少大规模标注时可参考手部方案采用ConcatDataset拼接多个相关数据集联合训练并配合EMAHook、PipelineSwitchHook等训练技巧提升精度。八、检测器与姿态估计器的端到端组合实战所有上述检测器最终都通过 demo/topdown_demo_with_mmdet.py 与关键点模型组合使用。脚本的关键命令行参数如下参数默认值说明det_config/det_checkpoint必填检测器配置文件与权重pose_config/pose_checkpoint必填姿态估计模型配置与权重--input输入图片/视频路径或 URL支持webcam--output-root可视化结果输出目录--det-cat-id0检测模型输出的目标类别 id单类模型恒为 0--bbox-thr0.3Bounding Box 置信度阈值--nms-thr0.3BBox NMS 的 IoU 阈值--kpt-thr0.3关键点可视化置信度阈值--draw-heatmapFalse是否绘制 heatmap-based 模型的热图--devicecuda:0推理设备CPU 环境传cpu--save-predictionsFalse是否保存预测结果为 JSON脚本内部的工作流对应 demo/topdown_demo_with_mmdet.py为inference_detector得到pred_instances→ 按det_cat_id与bbox_thr过滤、按nms_thr做 NMS →inference_topdown逐框预测关键点 → 可视化或保存。运行前需确保环境安装了 MMDetection 3.0脚本顶部对mmdet.apis的导入做了 try/except 保护未安装时会提示Please install mmdet to run the demo.。以本文介绍的手部检测器为例一条完整的可运行命令为python demo/topdown_demo_with_mmdet.py \ demo/mmdetection_cfg/rtmdet_nano_320-8xb32_hand.py \ https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmdet_nano_8xb32-300e_hand-267f9c8f.pth \ configs/hand_2d_keypoint/rtmpose/hand5/rtmpose-m_8xb256-210e_hand5-256x256.py \ https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-m_simcc-hand5_pt-aic-coco_210e-256x256-74fb594_20230320.pth \ --input tests/data/onehand10k/9.jpg \ --output-root vis_results --save-predictions --device cuda:0结语MMPose 的检测模型仓库为 Top-Down 姿态估计提供了从通用COCO 80 类人体到专用单类手部、脸部、猕猴的完整检测器生态追求精度可选手部/动物的 Cascade R-CNN 系列Box AP 0.817 / 0.879追求速度可选用 RTMDet-nanoBox AP 0.760320 输入、YOLOX-s 等轻量方案。理解这些配置中num_classes1、数据metainfo与推理阈值三处关键改动即可轻松将任何 MMDetection 模型改造成姿态估计的检测前置模块。更多组合示例与参数细节可进一步阅读 demo/docs/zh_cn/2d_hand_demo.md、demo/docs/zh_cn/2d_face_demo.md 与 demo/docs/zh_cn/2d_animal_demo.md。【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考