
人工智能计算机视觉深度学习【免费下载链接】ViTPoseThe official repo for [NeurIPS22] ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation and [TPAMI23] ViTPose: Vision Transformer for Generic Body Pose Estimation项目地址https://gitcode.com/gh_mirrors/vi/ViTPose点击查看免费下载本文以 configs/body/2d_kpt_sview_rgb_img/topdown_heatmap/ochuman/hrnet_ochuman.md 为核心系统讲解 ViTPose 仓库中 HRNet 系列模型在 OCHuman 数据集上的评测设定、四套官方配置的完整参数含义以及训练/测试/评估的端到端实操方法。读完本文你将掌握 top-down 姿态估计在严重遮挡场景下的交叉数据集评测流程并能对照 OCHuman 数据集基础配置 与 HRNet 评测配置 自行复现与扩展实验。OCHuman为遮挡鲁棒性而生的评测基准OCHumanOccluded Human数据集出自 CVPR2019 论文Pose2Seg: Detection Free Human Instance Segmentation从源码文档 mmpose/datasets/datasets/top_down/topdown_ochuman_dataset.py 可知其规模与定位OCHuman dataset contains 8110 heavily occluded human instances within 4731 images. OCHuman dataset is designed for validation and testing. To evaluate on OCHuman, the model should be trained on COCO training set, and then test the robustness of the model to occlusion using OCHuman.即OCHuman 包含4731 张图像、8110 个重度遮挡人体实例其设计目的就是仅用于验证与测试专门考察模型在人体间相互遮挡、自遮挡等困难场景下的关键点回归能力。因此仓库中的全部 OCHuman 评测实验都遵循同一个约定Following the common setting, the models are trained on COCO train dataset, and evaluate on OCHuman dataset.也就是在 COCO train2017 上训练在 OCHuman 上直接评估的跨数据集评测范式用于检验模型对遮挡的泛化鲁棒性。OCHuman 的关键点定义与 COCO 完全一致17 个关键点对应关系在 topdown_ochuman_dataset.py 中列明0: nose、1: left_eye、2: right_eye、3: left_ear、4: right_ear、5: left_shoulder、6: right_shoulder、7: left_elbow、8: right_elbow、9: left_wrist、10: right_wrist、11: left_hip、12: right_hip、13: left_knee、14: right_knee、15: left_ankle、16: right_ankle。正因为与 COCO 同构模型无需改动输出通道即可跨数据集评测。官方评测结果总览GT 框设定原文档给出的是ground-truth bounding boxesGT 框设定下的评测结果即测试时不使用外部检测器直接用标注框裁剪人体区域。完整结果表继承如下ArchInput SizeAPAP50AP75ARAR50pose_hrnet_w32256x1920.5910.7480.6410.6310.775pose_hrnet_w32384x2880.6060.7480.6500.6470.776pose_hrnet_w48256x1920.6110.7520.6630.6480.778pose_hrnet_w48384x2880.6160.7490.6630.6530.773对应的模型元数据、任务类型、指标与权重字段均登记在 hrnet_ochuman.yml 中每个模型均标注Training Data: OCHuman、Task: Body 2D KeypointWeights字段记录了官方权重文件。从表中可以读出两点规律分辨率红利同一骨干下384x288 输入普遍优于 256x192w32 的 AP 从 0.591 提升到 0.606w48 从 0.611 提升到 0.616说明遮挡场景下更精细的空间分辨率有助于关键点定位骨干容量红利同一分辨率下w48 优于 w32256x192 时 AP 0.611 vs 0.591384x288 时 0.616 vs 0.606更宽的高分辨率分支带来更强的表征能力。配置文件逐段精读以 hrnet_w32_ochuman_256x192.py 为例其余三份配置结构一致仅分辨率、骨干宽度与部分超参不同逐段拆解其含义。基础继承与评测策略_base_ [ ../../../../_base_/default_runtime.py, ../../../../_base_/datasets/ochuman.py ] evaluation dict(interval10, metricmAP, save_bestAP)default_runtime.py见 configs/base/default_runtime.py提供运行时基础设定checkpoint_config dict(interval10)每 10 个 epoch 存一次 checkpointlog_config每 50 个 iter 输出一次日志TextLoggerHook可切换 TensorboardLoggerHookdist_params dict(backendnccl)支持分布式训练workflow [(train, 1)]为纯训练工作流还包含opencv_num_threads 0关闭 OpenCV 多线程防系统过载与mp_start_method fork多进程启动方式。ochuman.py见 configs/base/datasets/ochuman.py提供 OCHuman 的dataset_info17 个关键点的名称/颜色/类型upper/lower/左右对称swap关系、19 条skeleton_info骨架连线、逐关节的joint_weights损失权重手腕 1.5、肘/膝 1.2其余 1.0以及sigmas用于 OKS 计算的逐关节归一化半径如鼻 0.026、肩 0.079、踝 0.089。evaluation每 10 个 epoch 做一次验证指标为mAP并以AP作为保存最优模型的依据。优化器与学习率策略optimizer dict(typeAdam, lr5e-4) optimizer_config dict(grad_clipNone) lr_config dict( policystep, warmuplinear, warmup_iters500, warmup_ratio0.001, step[170, 200]) total_epochs 210使用 Adam 优化器初始学习率5e-4不设梯度裁剪学习率采用 step 衰减策略前 500 个 iteration 做线性 warmup起始比例0.001在第 170 与 200 epoch 处两次衰减总训练210个 epoch——这是从零训练而非微调的典型配置。通道配置 channel_cfgchannel_cfg dict( num_output_channels17, dataset_joints17, dataset_channel[[0, 1, ..., 16]], inference_channel[0, 1, ..., 16])由于 OCHuman 与 COCO 的 17 关键点完全对齐dataset_channel与inference_channel均为恒等映射无需做通道重排这也是跨数据集评测能够无缝进行的前提之一。模型结构HRNet 简单热图头model dict( typeTopDown, pretrainedhttps://download.openmmlab.com/mmpose/pretrain_models/hrnet_w32-36af842e.pth, backbonedict( typeHRNet, in_channels3, extradict( stage1dict(num_modules1, num_branches1, blockBOTTLENECK, num_blocks(4, ), num_channels(64, )), stage2dict(num_modules1, num_branches2, blockBASIC, num_blocks(4, 4), num_channels(32, 64)), stage3dict(num_modules4, num_branches3, blockBASIC, num_blocks(4, 4, 4), num_channels(32, 64, 128)), stage4dict(num_modules3, num_branches4, blockBASIC, num_blocks(4, 4, 4, 4), num_channels(32, 64, 128, 256)))), keypoint_headdict( typeTopdownHeatmapSimpleHead, in_channels32, out_channelschannel_cfg[num_output_channels], num_deconv_layers0, extradict(final_conv_kernel1, ), loss_keypointdict(typeJointsMSELoss, use_target_weightTrue)), train_cfgdict(), test_cfgdict(flip_testTrue, post_processdefault, shift_heatmapTrue, modulate_kernel11))检测器类型为TopDown见 mmpose/models/detectors/top_down.py即标准的 top-down 热图回归范式HRNet骨干保持高分辨率表示stage1 用 1 个 BOTTLENECK 模块、单分支 64 通道stage2~stage4 依次扩展为 2/3/4 分支通道宽度逐级加倍w32 即主分支 32 通道最高分辨率分支始终保留 32 通道配 64/128/256 的并行低分辨率分支TopdownHeatmapSimpleHead直接接骨干输出in_channels32num_deconv_layers0表示不使用反卷积上采样只保留 1x1 卷积输出 17 通道热图因为 HRNet 本身输出已是高分辨率损失为JointsMSELoss见 mmpose/models/losses/mse_loss.pyuse_target_weightTrue启用逐关节加权对应上文joint_weights测试配置中flip_testTrue开启水平翻转测试对原始与翻转图分别推理再融合热图post_processdefault、shift_heatmapTrue、modulate_kernel11对应高斯调制解码参数。注意 mmpose/core/evaluation/top_down_eval.py 中keypoints_from_heatmaps的注释调制核大小需与训练热图高斯 sigma 匹配——K17 for sigma3 and k11 for sigma2此处训练TopDownGenerateTarget, sigma2故modulate_kernel11严格对应。数据配置 data_cfg 与 NMS 参数data_cfg dict( image_size[192, 256], heatmap_size[48, 64], num_output_channels17, num_joints17, dataset_channel..., inference_channel..., soft_nmsFalse, nms_thr1.0, oks_thr0.9, vis_thr0.2, use_gt_bboxTrue, det_bbox_thr0.0, bbox_filedata/coco/person_detection_results/COCO_val2017_detections_AP_H_56_person.json)image_size[192, 256]W×H、heatmap_size[48, 64]即输入 256x192、热图下采样 4 倍为 64x48384x288 配置则为[288, 384]与[72, 96]use_gt_bboxTrue是本文档评测结果成立的关键——使用 GT 框而非检测框bbox_file指向 COCO 的检测结果 JSON供检测框模式使用GT 模式下不生效soft_nmsFalse、nms_thr1.0、oks_thr0.9、vis_thr0.2控制多候选人的后处理关键点置信度高于vis_thr才参与 rescore高于oks_thr的框在 OKS NMS 中被抑制。训练/验证数据管线train_pipeline [ dict(typeLoadImageFromFile), dict(typeTopDownRandomFlip, flip_prob0.5), dict(typeTopDownHalfBodyTransform, num_joints_half_body8, prob_half_body0.3), dict(typeTopDownGetRandomScaleRotation, rot_factor40, scale_factor0.5), dict(typeTopDownAffine), dict(typeToTensor), dict(typeNormalizeTensor, mean[0.485, 0.456, 0.406], std[0.229, 0.224, 0.225]), dict(typeTopDownGenerateTarget, sigma2), dict(typeCollect, keys[img, target, target_weight], meta_keys[...]), ] val_pipeline test_pipeline [ LoadImageFromFile → TopDownAffine → ToTensor → NormalizeTensor → Collect(keys[img]) ]训练侧数据增强随机水平翻转50% 概率、半身变换30% 概率、至少 8 个关键点、随机缩放旋转旋转 ±40°、尺度 0.5、仿射变换、ImageNet 均值方差归一化、高斯热图目标生成sigma2384x288 配置中为sigma3以匹配更大的热图验证/测试管线保持最小化仅做仿射变换与归一化不做任何随机增强保证评测可复现Collect负责聚合张量与meta_keys元信息image_file/center/scale/rotation/bbox_score/flip_pairs等供推理与后处理使用。数据划分COCO 训练、OCHuman 评测data_root data/ochuman data dict( samples_per_gpu64, workers_per_gpu2, val_dataloaderdict(samples_per_gpu32), test_dataloaderdict(samples_per_gpu32), traindict(typeTopDownCocoDataset, ann_filedata/coco/annotations/person_keypoints_train2017.json, img_prefixdata/coco/train2017/, ...), valdict(typeTopDownOCHumanDataset, ann_filef{data_root}/annotations/ochuman_coco_format_val_range_0.00_1.00.json, img_prefixf{data_root}/images/, ...), testdict(typeTopDownOCHumanDataset, ann_filef{data_root}/annotations/ochuman_coco_format_test_range_0.00_1.00.json, img_prefixf{data_root}/images/, ...))这一段的交叉评测设定是整个配置的核心train使用TopDownCocoDataset读 COCO 官方标注val/test使用TopDownOCHumanDataset定义于 topdown_ochuman_dataset.py继承自TopDownCocoDataset读取 OCHuman 的 COCO 格式标注val 范围 0.00~1.00 与 test 范围 0.00~1.00 两个 JSON。数据集类内部_get_db通过assert self.use_gt_bbox强制要求 GT 框模式见 topdown_ochuman_dataset.py这也印证了本文档结果基于 GT 框的事实。数据准备OCHuman 官方提供的是与 COCO 兼容的标注格式仓库约定按以下目录结构放置data/ochuman/ ├── annotations/ │ ├── ochuman_coco_format_val_range_0.00_1.00.json │ └── ochuman_coco_format_test_range_0.00_1.00.json └── images/COCO 侧则需准备data/coco/annotations/person_keypoints_train2017.json与data/coco/train2017/图像。数据集的具体下载与目录组织方式可参考 docs/zh_cn/data_preparation.md 或英文版 docs/en/data_preparation.md 中关于 COCO 的说明并按上述 OCHuman 目录结构放置标注与图像。训练与评测命令单卡训练python tools/train.py configs/body/2d_kpt_sview_rgb_img/topdown_heatmap/ochuman/hrnet_w32_ochuman_256x192.py训练入口为 tools/train.py。由于本配置在 COCO 上从零训练 210 个 epoch属于完整训练任务建议使用分布式训练脚本 tools/dist_train.shbash tools/dist_train.sh configs/body/2d_kpt_sview_rgb_img/topdown_heatmap/ochuman/hrnet_w32_ochuman_256x192.py 88为 GPU 卡数可按实际环境调整。测试与评估python tools/test.py configs/body/2d_kpt_sview_rgb_img/topdown_heatmap/ochuman/hrnet_w32_ochuman_256x192.py \ /path/to/checkpoint.pth --eval mAPmmpose/apis/test.py 负责加载模型与数据tools/test.py 提供命令行入口其中--eval mAP指定评测指标mAP是 OCHuman 数据集唯一支持的指标见下方评估实现还可使用--out指定结果文件、--work-dir指定工作目录、--fuse-conv-bn融合 BN 加速推理、--gpu-id指定 GPU、--cfg-options覆盖任意配置项例如--cfg-options data_cfg.image_size[288,384]。分布式测试可运行bash tools/dist_test.sh configs/body/2d_kpt_sview_rgb_img/topdown_heatmap/ochuman/hrnet_w32_ochuman_256x192.py \ /path/to/checkpoint.pth 8 --eval mAP注意测试配置中的val/test均指向 OCHuman 标注因此无论--eval mAP默认评估哪个 split得到的都是遮挡场景下的评测指标。评估原理mAP 与 OKS 的源码级解读OCHuman 的评测指标mAP走的是 COCO 关键点评估协议。从 topdown_coco_dataset.py 可见allowed_metrics [mAP]且evaluate()对metricPCK等其他指标会直接抛出KeyError——这一点在测试用例 tests/test_datasets/test_top_down_dataset.py 中也有验证with pytest.raises(KeyError): _ custom_dataset.evaluate(results, metricPCK)。完整的评估链路如下结果聚合evaluate()将每张图的预测关键点、center/scale/area/score、bbox_id汇总并按bbox_id去重排序_sort_and_unique_bboxesRescore重打分对每个候选实例用关键点置信度与可见性阈值vis_thr计算关键点平均分与检测框分数融合得到最终score见 topdown_coco_dataset.pyOKS NMS按 OKSObject Keypoint Similarity相似度抑制重复候选阈值由oks_thr0.9控制COCOeval写入result_keypoints.json后调用COCOeval(self.coco, coco_det, keypoints, self.sigmas)完成评估与汇总见_do_python_keypoint_evaltopdown_coco_dataset.py输出的统计量包括AP、AP .5、AP .75、AP (M)、AP (L)、AR、AR .5、AR .75、AR (M)、AR (L)。其中 OKS 的逐关节 sigma 正是来自 configs/base/datasets/ochuman.py 的sigmas字段与 COCO 官方数值一致说明评估协议与 COCO 完全兼容。推理后处理热图解码的关键参数模型输出的是 17 通道热图解码流程由 mmpose/core/evaluation/top_down_eval.py 的keypoints_from_heatmaps实现其post_process参数支持None / default / unbiased / megvii四种模式default对热图做高斯调制_gaussian_blur核大小modulate_kernel后取最大值位置对应配置中的默认值unbiased采用 Distribution-Aware 无偏解码CVPR2020需配合kernel 0megviiMegvii 风格解码启用flip_testTrue时原始图与水平翻转图的热图会先各自解码再融合shift_heatmapTrue负责翻转热图的坐标回移。本文配置采用post_processdefaultmodulate_kernel11与训练sigma2匹配配合翻转测试是文档结果表背后的标准推理设置。扩展阅读同目录下的其他评测配置OCHuman 目录下configs/body/2d_kpt_sview_rgb_img/topdown_heatmap/ochuman除本文详述的 4 个 HRNet 配置外还包含两类同设定评测ResNet 系列res50/res101/res152 × 256x192/384x288共 6 个配置与对应结果文档 resnet_ochuman.md、resnet_ochuman.ymlViTPose 系列ViTPose_small/base/large/huge_ochuman_256x192.py四个配置。以 ViTPose_small_ochuman_256x192.py 为例其data_cfg、train/val/test划分与 HRNet 配置完全一致同为 COCO 训练、OCHuman 评测、GT 框差异仅体现在模型部分骨干换成typeViTimg_size(256,192)、patch_size16、embed_dim384、depth12、num_heads12、mlp_ratio4、drop_path_rate0.3head 变为TopdownHeatmapSimpleHead配 2 层反卷积上采样num_deconv_layers2、num_deconv_filters(256,256)、num_deconv_kernels(4,4)输入通道改为in_channels384base 为 768。这组配置可直接用于对比 CNN 骨干与 ViT 骨干在遮挡场景下的鲁棒性差异。小结围绕 hrnet_ochuman.md 这份评测文档本文完整梳理了OCHuman 数据集的重遮挡评测定位、COCO 训练 → OCHuman 测试的交叉评测范式、HRNet w32/w48 在两种分辨率下的官方指标AP 0.591~0.616、hrnet_w32_ochuman_256x192.py 的逐段配置语义以及从数据准备、训练、测试到 OKS/mAP 评估协议与热图解码后处理的完整链路。如果你希望在遮挡人体姿态估计上复现或改进基线这份配置与文档组合就是最直接的起点。赞分享人工智能计算机视觉深度学习【免费下载链接】ViTPoseThe official repo for [NeurIPS22] ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation and [TPAMI23] ViTPose: Vision Transformer for Generic Body Pose Estimation项目地址https://gitcode.com/gh_mirrors/vi/ViTPose点击查看免费下载相关推荐ViTPose 仓库 PoseTrack18 上的 HRNet 人体姿态估计COCO 预训练微调配置与评估全解析ViTPose 仓库 PoseTrack18 上的 HRNet 人体姿态估计COCO 预训练微调配置与评估全解析 本文以 configs/body/2d_kp人工智能计算机视觉深度学习ViTPose 仓库 Associative Embedding HRNet COCO 自底向上人体姿态估计配置全解析ViTPose 仓库 Associative Embedding HRNet COCO 自底向上人体姿态估计配置全解析 导读 本文以 hrnet_coco.人工智能计算机视觉深度学习基于 HRNet 的 COCO 人体姿态估计ViTPose 仓库 topdown heatmap 配置全解析基于 HRNet 的 COCO 人体姿态估计ViTPose 仓库 topdown heatmap 配置全解析 导读 本文以 ViTPose 仓库中 hrnet人工智能计算机视觉深度学习创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考