Sapiens 2D 人体全身姿态估计(Whole-Body Pose)Demo 实战指南:从图片、视频到 Inferencer 推理

发布时间:2026/10/13 1:59:16
Sapiens 2D 人体全身姿态估计(Whole-Body Pose)Demo 实战指南:从图片、视频到 Inferencer 推理 人工智能基础模型计算机视觉预训练深度学习【免费下载链接】sapiensHigh-resolution models for human tasks.项目地址https://gitcode.com/gh_mirrors/sa/sapiens点击查看免费下载本篇技术指南聚焦 Sapiens 仓库中 2D 人体全身姿态估计Human Whole-Body Pose Estimation的完整 Demo 实战路径覆盖三种主流推理方式整图作为 bounding box 的单图推理demo/image_demo.py、MMDet 检测 MMPose 估计的 Top-Down 图片/视频推理demo/topdown_demo_with_mmdet.py以及基于模型别名的统一推理接口 Inferencerdemo/inferencer_demo.py。读者读完本文将掌握 Sapiens whole-body 关键点模型133 点从命令行推理、结果保存、可视化到推理加速的完整技能并理解各参数背后的源码实现。一、背景与适用场景什么是 2D 人体全身姿态估计人体全身姿态估计Whole-Body Pose Estimation在传统 COCO 17 关键点的基础上进一步覆盖面部、手部等全身细节关键点。在 Sapiens 仓库中该任务由 pose/configs/sapiens_pose/coco_wholebody/ 目录下的配置定义其中 sapiens_0.3b-210e_coco_wholebody-1024x768.py 等 4 个配置文件对应 Sapiens-0.3B/0.6B/1B/2B 四个规格均以num_keypoints133num_keypoints133见该配置第 29 行作为输出维度覆盖全身、面部与手部关键点而 goliath 配置则进一步扩展到 308 点含 274 个面部关键点遵循 Sociopticon 关键点格式。本文以pose/demo/docs/zh_cn/2d_wholebody_pose_demo.md为骨架结合仓库 Demo 脚本源码展开。仓库根目录下的整体说明可参考 docs/POSE_README.md其中给出了 wholebody 与 goliath 各规格模型的权重路径约定如$SAPIENS_CHECKPOINT_ROOT/pose/checkpoints/sapiens_0.3b/...。二、准备工作与环境要求在运行下方任何 Demo 之前请确保完成 Sapiens 环境安装仓库提供 conda 安装脚本 _install/conda.sh 与链接创建脚本 _install/make_links.sh并按各子仓库pose、det 等的requirements.txt安装依赖。MMDet 依赖topdown_demo_with_mmdet.py依赖 MMDetection版本 3.0。脚本源码在导入失败时会设置has_mmdet False并在main()中通过assert has_mmdet, Please install mmdet to run the demo.直接终止运行见 topdown_demo_with_mmdet.py因此使用该脚本前必须先安装 mmdet。预训练模型可以下载 MMPose Model Zoo 中预训练好的 whole-body 关键点模型或使用 Sapiens 官方权重参考 docs/POSE_README.md 中$SAPIENS_CHECKPOINT_ROOT目录约定的 checkpoint 路径。三、整图作为输入的单图推理image_demo.py3.1 命令格式与参数当输入图片中只有一个或无需精确检测目标时可以直接把整张图片当作 bounding box使用通过 pose/demo/image_demo.py 完成推理python demo/image_demo.py \ ${IMG_FILE} ${MMPOSE_CONFIG_FILE} ${MMPOSE_CHECKPOINT_FILE} \ --out-file ${OUTPUT_FILE} \ [--device ${GPU_ID or CPU}] \ [--draw_heatmap]3.2 完整示例以 coco-wholebody 的vipnas_res50_dark模型为例下文命令中的配置/权重路径来自原文档实际运行时可替换为 Sapiens 的 coco_wholebody 配置 与对应权重python demo/image_demo.py \ tests/data/coco/000000000785.jpg \ configs/wholebody_2d_keypoint/topdown_heatmap/coco-wholebody/td-hm_vipnas-res50_dark-8xb64-210e_coco-wholebody-256x192.py \ https://download.openmmlab.com/mmpose/top_down/vipnas/vipnas_res50_wholebody_256x192_dark-67c0ce35_20211112.pth \ --out-file vis_results.jpg使用 CPU 推理适合无 GPU 环境验证流程python demo/image_demo.py \ tests/data/coco/000000000785.jpg \ configs/wholebody_2d_keypoint/topdown_heatmap/coco-wholebody/td-hm_vipnas-res50_dark-8xb64-210e_coco-wholebody-256x192.py \ https://download.openmmlab.com/mmpose/top_down/vipnas/vipnas_res50_wholebody_256x192_dark-67c0ce35_20211112.pth \ --out-file vis_results.jpg \ --devicecpu3.3 源码级参数解读从 image_demo.py 的parse_args()可以看到脚本支持的完整可视化参数除文档列出的--device与--draw-heatmap外还包括参数默认值说明--out-fileNone输出可视化结果的保存路径--devicecuda:0推理设备传cpu或cuda:N--draw-heatmapFalsestore_true是否绘制模型预测的 heatmap--show-kpt-idxFalse是否显示关键点索引--skeleton-stylemmpose骨架样式可选mmpose/openpose--kpt-thr0.3关键点可视化置信度阈值--radius3关键点绘制半径--thickness1骨架连线粗细--alpha0.8bounding box 透明度关键源码逻辑heatmap 输出当指定--draw_heatmap时脚本会通过cfg_options dict(modeldict(test_cfgdict(output_heatmapsTrue)))在加载模型时覆盖配置使测试阶段输出 heatmapimage_demo.py。推理链路init_model()构建模型 →inference_topdown(model, args.img)对单张图做 Top-Down 推理 →merge_data_samples()合并批次结果image_demo.py。可视化器定制model.cfg.visualizer.radius / alpha / line_width会分别被--radius、--alpha、--thickness覆盖随后通过VISUALIZERS.build()构建可视化器image_demo.py。四、MMDet 人体检测 MMPose 姿态估计topdown_demo_with_mmdet.py当输入图片包含多人、需要精确定位人体时使用 pose/demo/topdown_demo_with_mmdet.py 走完整的 Top-Down 流程MMDet 先检测出人体 bounding boxMMPose 再对每个 box 做姿态估计。4.1 命令格式python demo/topdown_demo_with_mmdet.py \ ${MMDET_CONFIG_FILE} ${MMDET_CHECKPOINT_FILE} \ ${MMPOSE_CONFIG_FILE} ${MMPOSE_CHECKPOINT_FILE} \ --input ${INPUT_PATH} \ [--output-root ${OUTPUT_DIR}] [--save-predictions] \ [--show] [--draw-heatmap] [--device ${GPU_ID or CPU}] \ [--bbox-thr ${BBOX_SCORE_THR}] [--kpt-thr ${KPT_SCORE_THR}]4.2 图片推理示例python demo/topdown_demo_with_mmdet.py \ demo/mmdetection_cfg/faster_rcnn_r50_fpn_coco.py \ https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth \ configs/wholebody_2d_keypoint/topdown_heatmap/coco-wholebody/td-hm_hrnet-w48_dark-8xb32-210e_coco-wholebody-384x288.py \ https://download.openmmlab.com/mmpose/top_down/hrnet/hrnet_w48_coco_wholebody_384x288_dark-f5726563_20200918.pth \ --input tests/data/coco/000000196141.jpg \ --output-root vis_results/ --show若要在本地保存识别结果关键点预测 JSON请务必加上--save-predictions。4.3 视频推理示例同一脚本自动支持视频输入--input传视频文件或 URL脚本会逐帧执行检测与姿态估计并将可视化结果写成 mp4保存帧率 25 fps见 topdown_demo_with_mmdet.pypython demo/topdown_demo_with_mmdet.py \ demo/mmdetection_cfg/faster_rcnn_r50_fpn_coco.py \ https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_1x_coco/faster_rcnn_r50_fpn_1x_coco_20200130-047c8118.pth \ configs/wholebody_2d_keypoint/topdown_heatmap/coco-wholebody/td-hm_hrnet-w48_dark-8xb32-210e_coco-wholebody-384x288.py \ https://download.openmmlab.com/mmpose/top_down/hrnet/hrnet_w48_coco_wholebody_384x288_dark-f5726563_20200918.pth \ --input https://user-images.githubusercontent.com/87690686/137440639-fb08603d-9a35-474e-b65f-46b5c06b68d6.mp4 \ --output-root vis_results/ --show另外将--input webcam传入即可读取摄像头源码中if args.input webcam分支会打开cv2.VideoCapture(0)见 topdown_demo_with_mmdet.py并在--output-root下生成webcam.mp4。4.4 源码级流程与参数main()中的核心流程topdown_demo_with_mmdet.py输入类型判断通过mimetypes.guess_type(args.input)[0].split(/)[0]判断是image、video还是webcam第 205-208 行。单帧处理process_one_image()inference_detector(detector, img)得到检测结果依据--det-cat-id默认0即 person 类与--bbox-thr默认0.3过滤检测框再经过nms(bboxes, args.nms_thr)NMS IoU 阈值默认0.3去除重叠框topdown_demo_with_mmdet.py将过滤后的 bboxes 交给inference_topdown(pose_estimator, img, bboxes)逐框估计关键点第 50 行。预测保存--save-predictions时图片模式通过split_instances()保存实例视频模式按frame_id instances逐帧累积最终以 JSON 写入{output_root}/results_{输入文件名}.json包含meta_info数据集元信息与instance_info两部分topdown_demo_with_mmdet.py。该脚本其余可视化参数与image_demo.py一致--draw-heatmap、--show-kpt-idx、--skeleton-style、--radius、--thickness、--alpha、--draw-bbox等另支持--show-interval每帧展示间隔秒数。关于人体检测器配置仓库还提供针对 person 单类优化的 RTMDet 配置 pose/demo/mmdetection_cfg/rtmdet_m_640-8xb32_coco-person.py含bbox_headdict(num_classes1)、score_thr0.05、max_per_img100等参数可用于替换更重的 Faster R-CNN 以提升速度。五、使用 Inferencer 进行 2D 全身姿态识别inferencer_demo.py5.1 便捷的模型别名推理Inferencer 提供统一的推理接口无需手动指定模型配置文件和 checkpoint 路径直接使用 model alias如wholebody即可。它支持图片路径、视频路径、图片文件夹路径和 webcams 等多种输入。示例python demo/inferencer_demo.py tests/data/crowdpose \ --pose2d wholebody --vis-out-dir vis_results/crowdpose该命令会对tests/data/crowdpose目录下所有图片进行推理并把可视化结果保存到vis_results/crowdpose文件夹。5.2 模型别名的解析机制从源码看alias 的解析链路清晰可查inferencer_demo.py中--pose2d参数既可传模型名alias也可传配置路径--pose2d-weights可指定自定义权重若不指定且pose2d是 metafile 中的模型名权重会从 metafile 自动加载inferencer_demo.py。MMPoseInferencer.__init__根据是否提供pose2d/pose3d选择底层Pose2DInferencer或Pose3DInferencermmpose_inferencer.py。get_model_aliases(scope)会从对应 scope 的 metafile 中读取所有配置的Alias字段并建立别名映射运行python demo/inferencer_demo.py --show-alias即可在终端打印全部可用别名get_model_alias.py。5.3 默认检测器与参数wholebody别名的检测器复用human的默认配置default_det_models[wholebody] default_det_models[human]即默认使用RTMDet-m检测器cat_ids(0,)对应 person 类权重从 metafile 加载default_det_models.py。因此无需额外安装/配置检测器即可开箱推理。inferencer_demo.py还支持以下常用参数参数默认值说明--pose2d-weightsNone自定义 2D 姿态模型权重路径--det-model/--det-weightsNone自定义检测模型配置 / 权重--det-cat-ids0检测模型类别 id--bbox-thr0.3检测框得分阈值--nms-thr0.3检测框 NMS IoU 阈值--kpt-thr0.3关键点得分阈值--vis-out-dir可视化结果保存目录--pred-out-dir推理结果预测 JSON保存目录--draw-bbox/--draw-heatmapFalse是否绘制检测框 / heatmap--device自动推理设备未指定时自动选择可用设备--showFalse弹窗显示结果--skeleton-stylemmpose骨架样式mmpose/openpose5.4 预测结果的保存Inferencer 支持保存姿态检测结果通过--pred-out-dir指定预测 JSON 输出目录或者在__call__中传入out_dir可视化与预测结果会分别写入{out_dir}/visualizations与{out_dir}/predictionsmmpose_inferencer.py。可视化相关参数通过visualize_kwargsreturn_vis、show、radius、thickness、kpt_thr、draw_heatmap、black_background等在调用时分发mmpose_inferencer.py。六、加速推理技巧对于 Top-Down 结构的模型可以通过修改配置与更换检测器两个方向加速关闭翻转测试flip test在模型配置中设置model.test_cfg.flip_testFalse。翻转测试会额外做一次水平翻转推理并融合热图显著增加耗时关闭后可获得近一倍的速度提升。参考配置示例可见 pose/configs/sapiens_pose/coco_wholebody/sapiens_0.3b-210e_coco_wholebody-1024x768.py 中的test_cfg默认flip_testTrue、flip_modeheatmap、shift_heatmapFalse将其中的flip_test改为False即可。注意Sapiens 官方权重通常依赖翻转测试达到最佳精度关闭后精度会有所下降建议在精度与速度间权衡。使用更快的人体 bounding box 检测器Top-Down 流程的耗时很大一部分来自人体检测。可替换为更轻量的检测器例如仓库提供的 rtmdet_m_640-8xb32_coco-person.pyRTMDet-m仅检测 person 单类num_classes1、score_thr0.05、max_per_img100相比两阶段 Faster R-CNN 在保持较高检测精度的同时速度更快也可进一步换用 RTMDet-s/tiny 等更小规格参考 det/configs/rtmdet 目录下的系列配置。七、Sapiens 专属 whole-body 配置速览若要在 Sapiens 自带的 whole-body 模型上运行上述 Demo可直接复用 pose/configs/sapiens_pose/coco_wholebody/ 下的 4 个配置0.3B / 0.6B / 1B / 2B输入尺寸统一为1024×768其关键结构如下以 0.3B 为例见 sapiens_0.3b-210e_coco_wholebody-1024x768.py骨干网络mmpretrain.VisionTransformerarchsapiens_0.3bembed_dim1024num_layers24patch_size16img_size(768, 1024)out_typefeatmap头部HeatmapHeadout_channels133对应 whole-body 133 个关键点decoder 采用UDPHeatmapinput_size(768,1024)heatmap_size(192,256)sigma6测试配置test_cfgdict(flip_testTrue, flip_modeheatmap, shift_heatmapFalse)数据集CocoWholeBodyDataset训练/验证分别使用coco_wholebody_train_v1.0.json与coco_wholebody_val_v1.0.json。对应模型权重参考 docs/POSE_README.md 的$SAPIENS_CHECKPOINT_ROOT/pose/checkpoints/sapiens_{0.3b,0.6b,1b,2b}/目录如sapiens_0.3b_coco_wholebody_best_coco_wholebody_AP_620.pth。若追求更高细粒度的面部关键点308 点可改用 pose/configs/sapiens_pose/goliath/ 下的配置。八、常见问题与排查运行topdown_demo_with_mmdet.py报 Please install mmdet to run the demo.说明 mmdet 未安装或版本过低请安装 mmdet 3.0 后重试源码通过try/except ImportError捕获导入失败并断言终止。--show与--output-root同时为空脚本会断言失败assert args.show or (args.output_root ! )见 topdown_demo_with_mmdet.py必须至少指定一种输出方式。想保存预测 JSON 但没生效--save-predictions需要同时指定--output-root源码assert args.output_root ! 且视频模式会输出results_{视频名}.json。CPU 推理较慢Top-Down 模型在高分辨率输入如 1024×768下 CPU 计算量大建议关闭flip_test、选用更小规格模型0.3B并使用更轻量的检测器。如何查看可用模型别名运行python demo/inferencer_demo.py --show-alias终端会打印所有 alias 与其对应的模型名称。赞分享人工智能基础模型计算机视觉预训练深度学习【免费下载链接】sapiensHigh-resolution models for human tasks.项目地址https://gitcode.com/gh_mirrors/sa/sapiens点击查看免费下载相关推荐Sapiens 2D 人体姿态推理 Demo 实战指南从 Top-Down 图片检测到 Inferencer 加速推理Sapiens 2D 人体姿态推理 Demo 实战指南从 Top Down 图片检测到 Inferencer 加速推理 本文以 Sapiens 仓库 pose人工智能基础模型计算机视觉预训练深度学习Sapiens 项目实战2D 动物姿态估计 Demo 完整指南——图像、视频与 Inferencer 推理Sapiens 项目实战2D 动物姿态估计 Demo 完整指南——图像、视频与 Inferencer 推理 本篇技术指南以 Sapiens 仓库中 pose/人工智能基础模型计算机视觉预训练深度学习Sapiens 2D 人体全身姿态估计 Demo 实战单图整图推理、检测驱动推理与 Inferencer 统一接口全解析Sapiens 2D 人体全身姿态估计 Demo 实战单图整图推理、检测驱动推理与 Inferencer 统一接口全解析 本文以 Sapiens 仓库 pos人工智能基础模型计算机视觉预训练深度学习上一篇Thanos终极指南如何实现完美的Prometheus格式兼容下一篇10倍提速Searx静态资源优化完全指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询