公司动态

MMPOSE实验记录26.7.22

📅 2026/7/24 19:20:04
MMPOSE实验记录26.7.22
一、下载CrowdPose数据集CrowdPose是 OpenDataLab 官方托管的数据集OpenDataLab 提供统一的 命令行工具CLI 来下载数据集在根目录mmpose下执行openxlab dataset download --dataset-repo OpenDataLab/CrowdPose --source-path / --target-path data注首次使用需要配置 OpenXLab 的 AK/SK否则会被拦截。你需要先在 OpenXLab 网站上注册账号并创建 AK/SK然后在本机执行一次登录配置。1.在 OpenXLab 网站上获取 AK/SK打开 OpenXLab 官网https://openxlab.org.cn注册 / 登录你的账号。进入「个人中心 → 密钥管理 / AK SK 管理」添加一对新的 Access Key / Secret Key。Access Key (AK) 类似用户名Secret Key (SK) 类似密码这两个要自己保存好后面要用。2.在本机用 CLI 配置 AK/SK在当前终端执行openxlab login然后按提示依次粘贴OpenXLab Access Key ID粘贴你的 AKOpenXLab Secret Access Key粘贴你的 SK3.再次下载 CrowdPose 数据集下载完成后运行预处理脚本bash tools/dataset_converters/scripts/preprocess_crowdpose.sh data data/pose完成上述操作后项目目录如图展示二、下载OCHuman数据集OCHuman不是 OpenDataLab 托管需要到官方发布的 GitHub 仓库进行下载下载地址GitHub - liruilong940607/OCHumanApi: API for the dataset proposed in Pose2Seg: Detection Free Human Instance Segmentation CVPR2019. · GitHubOCHuman 官方已提供 COCO 格式的标注文件不需要额外转换将数据按以下结构放在项目目录下三、配置 CrowdPose 数据集1.下载RTMPose-m 在 CrowdPose 上的完整模型预训练权重backbone head 全部参数模型物理结构RTMPose-mCSPNeXt-m 主干网络 RTMCCHead将预训练权重下载到mmpose/checkpoints中1检查checkpoints是否存在mkdir -p checkpoints如果不存在在当前终端所在的目录下创建一个名为checkpoints的新文件夹如果存在命令不会报错2进入checkpoints文件夹cd ~/mmpose/checkpoints3下载权重wget https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-m_simcc-crowdpose_pt-aic-coco_210e-256x192-e6192cac_20230224.pth权重名称解析举例{模型名}-{规格}_{Head类型}-{关键点定义}_{预训练标记}-{预训练数据}_{训练轮数}-{分辨率}-{commit}_{日期}.pth2.找到crowdpose的配置文件find ~/mmpose/configs -iname *crowdpose* -o -iname *crowd* | grep rtmpose /home/administrator/mmpose/configs/body_2d_keypoint/rtmpose/crowdpose /home/administrator/mmpose/configs/body_2d_keypoint/rtmpose/crowdpose/rtmpose_crowdpose.md /home/administrator/mmpose/configs/body_2d_keypoint/rtmpose/crowdpose/rtmpose-m_8xb64-210e_crowdpose-256x192.py /home/administrator/mmpose/configs/body_2d_keypoint/rtmpose/crowdpose/rtmpose_crowdpose.ymlfind ~/mmpose/configs -iname *crowdpose* /home/administrator/mmpose/configs/body_2d_keypoint/rtmpose/crowdpose /home/administrator/mmpose/configs/body_2d_keypoint/rtmpose/crowdpose/rtmpose_crowdpose.md /home/administrator/mmpose/configs/body_2d_keypoint/rtmpose/crowdpose/rtmpose-m_8xb64-210e_crowdpose-256x192.py /home/administrator/mmpose/configs/body_2d_keypoint/rtmpose/crowdpose/rtmpose_crowdpose.yml /home/administrator/mmpose/configs/body_2d_keypoint/dekr/crowdpose /home/administrator/mmpose/configs/body_2d_keypoint/dekr/crowdpose/dekr_hrnet-w32_8xb10-300e_crowdpose-512x512.py /home/administrator/mmpose/configs/body_2d_keypoint/dekr/crowdpose/dekr_hrnet-w48_8xb5-300e_crowdpose-640x640.py /home/administrator/mmpose/configs/body_2d_keypoint/dekr/crowdpose/hrnet_crowdpose.yml /home/administrator/mmpose/configs/body_2d_keypoint/dekr/crowdpose/hrnet_crowdpose.md /home/administrator/mmpose/configs/body_2d_keypoint/topdown_heatmap/crowdpose /home/administrator/mmpose/configs/body_2d_keypoint/topdown_heatmap/crowdpose/td-hm_res152_8xb64-210e_crowdpose-256x192.py /home/administrator/mmpose/configs/body_2d_keypoint/topdown_heatmap/crowdpose/resnet_crowdpose.yml /home/administrator/mmpose/configs/body_2d_keypoint/topdown_heatmap/crowdpose/cspnext_udp_crowdpose.yml /home/administrator/mmpose/configs/body_2d_keypoint/topdown_heatmap/crowdpose/hrnet_crowdpose.yml /home/administrator/mmpose/configs/body_2d_keypoint/topdown_heatmap/crowdpose/td-hm_res101_8xb64-210e_crowdpose-256x192.py /home/administrator/mmpose/configs/body_2d_keypoint/topdown_heatmap/crowdpose/td-hm_hrnet-w32_8xb64-210e_crowdpose-256x192.py /home/administrator/mmpose/configs/body_2d_keypoint/topdown_heatmap/crowdpose/td-hm_res101_8xb64-210e_crowdpose-320x256.py /home/administrator/mmpose/configs/body_2d_keypoint/topdown_heatmap/crowdpose/cspnext_udp_crowdpose.md /home/administrator/mmpose/configs/body_2d_keypoint/topdown_heatmap/crowdpose/hrnet_crowdpose.md /home/administrator/mmpose/configs/body_2d_keypoint/topdown_heatmap/crowdpose/td-hm_res50_8xb64-210e_crowdpose-256x192.py /home/administrator/mmpose/configs/body_2d_keypoint/topdown_heatmap/crowdpose/resnet_crowdpose.md /home/administrator/mmpose/configs/body_2d_keypoint/rtmo/crowdpose /home/administrator/mmpose/configs/body_2d_keypoint/rtmo/crowdpose/rtmo-s_8xb32-700e_crowdpose-640x640.py /home/administrator/mmpose/configs/body_2d_keypoint/rtmo/crowdpose/rtmo_crowdpose.yml /home/administrator/mmpose/configs/body_2d_keypoint/rtmo/crowdpose/rtmo-m_16xb16-700e_crowdpose-640x640.py /home/administrator/mmpose/configs/body_2d_keypoint/rtmo/crowdpose/rtmo-l_16xb16-700e_body7-crowdpose-640x640.py /home/administrator/mmpose/configs/body_2d_keypoint/rtmo/crowdpose/rtmo_crowdpose.md /home/administrator/mmpose/configs/body_2d_keypoint/rtmo/crowdpose/rtmo-l_16xb16-700e_crowdpose-640x640.py /home/administrator/mmpose/configs/_base_/datasets/crowdpose.py找到CrowdPose 配置文件configs/body_2d_keypoint/rtmpose/crowdpose/rtmpose-m_8xb64-210e_crowdpose-256x192.py查看基础数据集定义configs/_base_/datasets/crowdpose.py这边检查配置文件后发现我之前crowdpose数据集放置的位置不对配置文件将图片和标注放在了不同文件夹下对配置文件和数据集进行了修改数据集放置路径如下3.使用crowdpose数据集进行测试python tools/test.py configs/body_2d_keypoint/rtmpose/crowdpose/rtmpose-m_8xb64-210e_crowdpose-256x192.py checkpoints/rtmpose-m_simcc-crowdpose_pt-aic-coco_210e-256x192-e6192cac_20230224.pth生成文件在work_dirs/rtmpose-m_8xb64-210e_crowdpose-256x192/特别是 Hard 指标它代表了严重遮挡和拥挤情况下的姿态估计精度。这就是你后续工作要努力提升的数字。四、配置 OCHuman 数据集1.下载RTMPose-m 在 OCHuman 上的完整模型预训练权重wget https://download.openmmlab.com/mmpose/v1/projects/rtmposev1/rtmpose-m_simcc-aic-coco_pt-aic-coco_420e-256x192-63eb25f7_20230126.pth该模型权重同上没有变化只不过OCHuman 数据集使用的是COCO 的 17 个关键点标注标准比如有鼻子、眼睛等。之前跑 CrowdPose 用的那个权重它的神经网络最后一层被训练成只输出14 个关键点没有鼻子、眼睛等细节。2.使用OCHuman 数据集进行测试OCHuman 没有独立训练的配置官方用法是用 COCO 训练的模型 覆盖 OCHuman 数据集来测试。直接复用官方的 COCO 配置用--cfg-options在命令行里临时把数据路径和评测参数改写成 OCHuman。python tools/test.py configs/body_2d_keypoint/rtmpose/coco/rtmpose-m_8xb256-420e_aic-coco-256x192.py checkpoints/rtmpose-m_simcc-aic-coco_pt-aic-coco_420e-256x192-63eb25f7_20230126.pth --cfg-options test_dataloader.dataset.typeCocoDataset test_dataloader.dataset.data_rootdata/ochuman/ test_dataloader.dataset.ann_fileannotations/ochuman_coco_format_test_range_0.00_1.00.json test_dataloader.dataset.data_prefix.imgimages/ test_dataloader.dataset.bbox_file test_evaluator.ann_filedata/ochuman/annotations/ochuman_coco_format_test_range_0.00_1.00.json test_evaluator.use_areaFalse test_evaluator.prefixochuman五、实验结果对比这两个实验的核心任务都是2D人体姿态估计2D Human Pose Estimation具体来说使用模型架构RTMPose-m通过自上而下Top-down的方式定位图像中人体关键点keypoints的位置。目前使用的是数据集自带的真实边界框GT bboxGround Truth。这种做法叫做Oracle 协议先知协议。具体流程如下测试脚本直接读取数据集标注文件如ochuman_coco_format_test_range_0.00_1.00.json里每个人体的真实边界框坐标。把这些完美的框截取下来送入姿态估计网络RTMPose去预测关键点。配置文件里的bbox_file就是为了清空预计算检测框的路径强制系统去使用标注自带的 GT 框。为什么不用检测器因为这是建立纯姿态估计基线。如果用检测器后排被严重遮挡的学生很可能被漏检导致分数很低但这样就分不清“是检测器漏检导致的低分”还是“姿态网络预测不准导致的低分”。用 GT 框可以排除检测误差的干扰精准地测出 RTMPose 在给定人体位置时能多准地把关键点找出来。这就为你以后加补全网络提供了一个干净、纯粹的对比基准。六、RTMPose-m模型介绍RTMPose-m是一个自上而下Top-Down的2D人体姿态估计模型其架构主要由以下三部分构成1.主干网络BackboneCSPNeXt1作用作为特征提取器将输入的人体图像256×192转化为高语义、低分辨率的特征图为后续关键点定位提供表征基础2实现原理略2.定位头HeadSimCC Head1作用接收主干网络输出的特征预测每个人体关键点在图像中的精确坐标位置2实现原理略3.端到端的流程PipelineTop-Down1作用实现多人的姿态估计将“人体检测”与“单人姿态估计”两个阶段串联构成完整的推理流水线2实现原理略