拓冰建站拓冰建站
首页 / 资讯中心 / 正文

MMPose 可视化完全指南:单张推理、数据集浏览与训练验证过程可视化

MMPose 可视化完全指南单张推理、数据集浏览与训练验证过程可视化【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmposeMMPoseOpenMMLab 姿态估计工具箱围绕PoseLocalVisualizer提供了贯穿推理、数据准备、训练与验证全流程的姿态可视化能力。本文以 docs/en/visualization.md 为核心结合 demo/image_demo.py、tools/misc/browse_dataset.py、mmpose/visualization/local_visualizer.py 等源码实现系统讲解单张图像的骨架/热力图可视化、数据集标注浏览以及训练与测试阶段借助PoseVisualizationHook的实时可视化方案。读完本文你将掌握这三类场景的完整命令行用法、参数含义与底层绘制机制能够在自己的实验流程中直接复用。一、单张图像推理结果可视化1.1 工具与用途demo/image_demo.py用于可视化单张图像的姿态估计预测结果包括关键点骨架skeleton和预测热力图heatmap。它会加载配置与权重构建模型对输入图像执行推理并把结果绘制保存到指定位置。完整用法python demo/image_demo.py ${IMG} ${CONFIG} ${CHECKPOINT} [-h] [--out-file OUT_FILE] [--device DEVICE] [--draw-heatmap]参数说明ARGS说明IMG待测试图像路径CONFIG配置文件路径CHECKPOINT权重文件路径--out-file OUT_FILE输出图像保存路径--device DEVICE推理所用设备--draw-heatmap是否同时可视化预测热力图1.2 从源码看参数的更多细节对照 demo/image_demo.py 中的parse_args该脚本实际支持的参数比文档表格更丰富默认值如下参数默认值作用--out-fileNone输出文件路径不指定则不保存--devicecuda:0推理设备CPU 环境下可改为cpu--draw-heatmapFalse开关绘制预测热力图--show-kpt-idxFalse开关是否显示关键点索引序号--skeleton-stylemmpose骨架绘制风格可选mmpose/openpose--kpt-thr0.3关键点可视化置信度阈值低于该值的点不绘制--radius3关键点绘制半径像素--thickness1骨架连线宽度像素--alpha0.8检测框透明度--showFalse开关是否弹出外部窗口实时显示例如打开 openpose 风格骨架、显示关键点序号并同时输出热力图python demo/image_demo.py \ tests/data/coco/000000000785.jpg \ configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_hrnet-w32_8xb64-e210_coco-256x192.py \ https://download.openmmlab.com/mmpose/top_down/hrnet/hrnet_w32_coco_256x192-c78dce93_20200708.pth \ --draw-heatmap --show-kpt-idx --skeleton-style openpose \ --out-file demo_result.jpg --device cpu1.3 底层调用链从 demo/image_demo.py 的main可以看出其内部流程若指定--draw-heatmap会通过cfg_options dict(modeldict(test_cfgdict(output_heatmapsTrue)))在加载配置时打开model.test_cfg.output_heatmaps从而让模型在推理时额外输出预测热力图字段调用init_model位于 mmpose/apis/inference.py从配置和权重构建模型并设置model.cfg.visualizer.radius/alpha/line_width将命令行参数注入可视化配置通过注册表VISUALIZERS.build(model.cfg.visualizer)构建可视化器并调用set_dataset_meta(model.dataset_meta, skeleton_style...)注入数据集元信息关键点颜色、骨架连接等调用inference_topdown(model, args.img)执行推理merge_data_samples合并 batch 结果最后visualizer.add_datasample(...)完成绘制draw_gtFalse只画预测、draw_bboxTrue画检测框、draw_heatmapargs.draw_heatmap决定是否叠加热力图结果按out_file保存或按show弹窗显示。热力图可视化时最终输出会由 local_visualizer.py 将原图与热力图在垂直方向np.concatenate(..., axis0)拼接上半部分是带关键点标注的 RGB 图像下半部分是预测热力图。二、数据集可视化浏览browse_dataset.py2.1 工具与用途tools/misc/browse_dataset.py帮助用户可视化浏览姿态数据集原图 标注或将浏览结果保存到指定目录。它可以直观检查数据集的标注质量、数据预处理管线pipeline的实际效果是数据准备阶段最常用的调试工具之一。完整用法python tools/misc/browse_dataset.py ${CONFIG} [-h] [--output-dir ${OUTPUT_DIR}] [--not-show] [--phase ${PHASE}] [--mode ${MODE}] [--show-interval ${SHOW_INTERVAL}]参数说明ARGS说明CONFIG配置文件路径--output-dir OUTPUT_DIR可视化结果保存目录不指定则只显示不保存--not-show不弹外部窗口显示--phase {train, val, test}选择浏览的数据集阶段--mode {original, transformed}original显示未经过预处理的原图transformed显示经数据管线处理后的图像--show-interval SHOW_INTERVAL相邻两张可视化图像之间的显示间隔秒2.2 实操示例以 COCO 人体姿态数据集为例查看原始图像上的标注检测框 关键点python tools/misc/browse_dataset.py configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_hrnet-w32_8xb64-e210_coco-256x192.py --mode original原始图像在被送入模型前需要经过裁剪、缩放等预处理。若要查看预处理后的图像与对应标注例如检查 topdown 裁剪后的人体区域是否正确将mode改为transformedpython tools/misc/browse_dataset.py configs/body_2d_keypoint/topdown_heatmap/coco/td-hm_hrnet-w32_8xb64-e210_coco-256x192.py --mode transformed如果数据管线中生成的热力图目标存在如 topdown 热力图方法的GenerateTarget变换在transformed模式下热力图目标也会一并绘制出来方便检查高斯峰值是否正确落在关键点位置上。无显示环境如远程服务器时配合--output-dir与--not-show将结果批量保存python tools/misc/browse_dataset.py ${CONFIG} --mode transformed --output-dir ./vis_coco --not-show --show-interval 0.52.3 源码实现细节对照 tools/misc/browse_dataset.py该脚本实际还提供了两个文档之外的参数--max-item-per-dataset默认 50每个数据集最多处理的样本数--cfg-options以keyvalue形式临时覆盖配置项。--mode的实现逻辑browse_dataset.py非常巧妙original模式直接把cfg[phase_dataloader].dataset.pipeline []清空即构建一个不做任何变换的原始数据集transformed模式把 pipeline 最后一个变换的pack_transformed置为True使PackPoseInputs额外打包经过变换的关键点坐标从而可视化预处理后的标注。脚本内部用build_from_cfg从配置构建数据集并支持 CombinedDataset多数据集组合场景对每个子数据集各取--max-item-per-dataset个样本用accumulate计算各子数据集在组合数据集中的起始索引后依次遍历browse_dataset.py。当同一图像存在多个实例时输出文件会通过generate_dup_file_name自动追加(1)、(2)等后缀避免覆盖browse_dataset.py。original模式会读取磁盘原图并伪造PoseDataSample的gt_instances含 keypoints、keypoints_visible、bboxes后绘制transformed模式则直接使用数据集返回的inputs张量与data_samples。绘制时draw_predFalse、draw_bbox(modeoriginal)、draw_heatmapTruebrowse_dataset.py。三、训练与验证过程可视化Visualizer Hook3.1 基本原理MMPose 内置PoseVisualizationHook注册为HOOKS实现在 mmpose/engine/hooks/visualization_hook.py 中。它在default_runtime配置中默认关闭enableFalse只有通过命令行显式打开--show或--show-dir时tools/train.py才会改写cfg.default_hooks.visualization的show、out_dir、interval等字段tools/train.py。该 Hook 的作用机制after_val_iter/after_test_iter在每次迭代后触发enableFalse时直接返回每interval个 iteration 可视化一次取当前 batch 的第一张图data_batch[data_samples][0]按原图路径重新读图以还原到原始分辨率visualization_hook.py通过merge_data_samples合并单样本预测再调用visualizer.add_datasample(..., draw_gtFalse, draw_bboxTrue, draw_heatmapTrue, ...)绘制showTrue时 Hook 会主动清空_vis_backends仅弹窗显示而不落盘out_dir指定时结果保存到该目录两者都未指定时结果交给vis_backends如 TensorBoard、WandB存储visualization_hook.py。3.2 测试阶段可视化测试时弹窗实时显示预测结果python tools/test.py ${CONFIG} ${CHECKPOINT} --show将可视化结果保存到指定目录SHOW_DIRpython tools/test.py ${CONFIG} ${CHECKPOINT} --show-dir${SHOW_DIR}3.3 验证阶段可视化训练验证时弹窗显示INTERVAL为可视化的迭代间隔python tools/train.py ${CONFIG} --work-dir ${WORK_DIR} --show --interval ${INTERVAL}建议如需在验证过程中弹窗可视化请使用较大的INTERVAL如 50。因为每张可视化样本都需要等待窗口关闭过小的间隔会使验证过程变得非常缓慢。验证时将结果保存到SHOW_DIRpython tools/train.py ${CONFIG} --work-dir ${WORK_DIR} --show-dir${SHOW_DIR}3.4 可视化相关参数的完整语义tools/train.py与tools/test.py中与可视化相关的参数可参见 train_and_test 指南 的参数表参数默认值说明--show-dir SHOW_DIRNone保存可视化结果图像的目录--showFalse是否在窗口中显示预测结果--interval INTERVAL1每间隔多少个样本可视化一次tools/test.py默认 1tools/train.py建议调大--wait-time WAIT_TIME1每个窗口的显示时长秒对应的 Hook 侧配置为 configs/base/default_runtime.py 中的default_hooks dict( ... visualizationdict(typePoseVisualizationHook, enableFalse), )3.5 可视化预测热力图默认情况下模型推理不会输出热力图。若使用基于热力图的方法如 topdown_heatmap 系列且希望在验证/测试时同时可视化预测热力图有两种等价方式在配置文件中手动为model.test_cfg指定output_heatmapsTruemodel dict( test_cfgdict(output_heatmapsTrue), ... )在命令行末尾追加python tools/test.py ${CONFIG} ${CHECKPOINT} --show-dir${SHOW_DIR} --cfg-optionsmodel.test_cfg.output_heatmapsTrue打开output_heatmaps后PoseVisualizationHook与add_datasample会自动检测data_sample.pred_fields中的heatmaps字段并绘制。热力图输出后会被绘制在原图下方上下拼接从而可以直观对比解码出的关键点与预测热力图峰值是否一致local_visualizer.py。补充说明对于 top-down 模型每个样本只包含一个实例因此同一张图像中检测到的每个人体会产生一份独立裁剪样本最终会得到多份可视化结果每份对应一个裁剪后的人体区域。四、可视化器底层原理PoseLocalVisualizer所有上述场景最终都汇聚到 mmpose/visualization/local_visualizer.py 中的PoseLocalVisualizer在VISUALIZERS注册表中注册__init__已在 mmpose/visualization/init.py 中导出。4.1 构造参数参数默认值说明namevisualizer实例名vis_backendsNone可视化后端列表如 Local / TensorBoard / WandBsave_dirNone各存储后端的保存目录bbox_colorgreen检测框颜色BGR 元组或颜色名kpt_colorred关键点颜色link_colorNone骨架连线颜色line_width1连线宽度radius3关键点半径show_keypoint_weightFalse是否按关键点置信度调整透明度alpha1.0检测框透明度4.2 数据集元信息注入关键步骤是set_dataset_meta(dataset_meta, skeleton_stylemmpose)local_visualizer.py它会从数据集元信息中读取keypoint_colors关键点颜色、skeleton_link_colors连线颜色、skeleton_links骨架连接覆盖默认值当skeleton_styleopenpose时还会自动从configs/_base_/datasets/coco_openpose.py等配置文件加载 openpose 风格的关键点重排与连接并以椭圆多边形方式绘制躯干连线、以更小半径绘制手部/脸部点local_visualizer.py。4.3 绘制与拼图逻辑add_datasamplelocal_visualizer.py的核心行为若 GT 与预测同时绘制左侧为 GT、右侧为预测水平拼接成一张图若同时绘制热力图热力图垂直拼接在原图下方showTrue时弹窗显示并忽略存储后端指定out_file时通过mmcv.imwrite保存注意绘制过程使用 RGB 通道写盘前转为 BGR否则将图像交给vis_backends如 TensorBoard记录。关键点与骨架绘制的过滤规则_draw_instances_kptslocal_visualizer.py置信度低于kpt_thr的关键点、位于图像边界外的点、任一端点低于阈值的连线均被跳过show_keypoint_weightTrue时连线透明度由两端点可见度的均值调制。4.4 可视化后端配置在 configs/base/default_runtime.py 中默认开启 LocalVisBackendTensorBoard 与 WandB 后端以注释形式预留vis_backends [ dict(typeLocalVisBackend), # dict(typeTensorboardVisBackend), # dict(typeWandbVisBackend), ] visualizer dict( typePoseLocalVisualizer, vis_backendsvis_backends, namevisualizer)需要把验证可视化结果写入 TensorBoard 时可在配置中追加dict(typeTensorboardVisBackend)然后用tensorboard --logdir ${WORK_DIR}/vis_data查看。五、总结与选用建议场景工具关键命令/配置单张图像推理效果demo/image_demo.pypython demo/image_demo.py ${IMG} ${CONFIG} ${CHECKPOINT} [--draw-heatmap] [--out-file]数据集标注/预处理检查tools/misc/browse_dataset.pypython tools/misc/browse_dataset.py ${CONFIG} --mode original/transformed [--output-dir]测试过程可视化tools/test.py--show/--show-dir验证过程可视化tools/train.py--show --interval/--show-dir预测热力图输出配置项model.test_cfg.output_heatmapsTrue或--cfg-options覆盖自定义绘制样式local_visualizer.pykpt_color、link_color、skeleton_links、radius、alpha等可视化贯穿了 MMPose 的数据准备、模型调试与实验分析全流程数据阶段用browse_dataset.py校验标注与预处理管线推理阶段用image_demo.py快速验证单图效果训练与测试阶段则依靠PoseVisualizationHook按间隔采样展示或落盘预测结果并可通过output_heatmaps深入检查热力图质量。理解其背后的PoseLocalVisualizer绘制机制还可以通过修改vis_backends、颜色与透明度参数将可视化能力平滑集成到 TensorBoard、WandB 等实验管理平台中。更多训练与测试参数的完整说明可进一步阅读 train_and_test 指南。【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门