MMPose 关键点半自动标注:5 步跑通实战
【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose
数据集到 5000 张还在一张张手标?单人 17 个关键点加上框和分割,纯人工标注不仅慢,遇到遮挡、密集多人场景时一致性还会崩。MMPose 在工具箱里内置了一整套关键点标注工具链:人工侧对接 Label Studio,半自动侧提供让姿态模型先"做一遍"、人工只改错的伪标签脚本,全部落在tools/目录,拿来即用。
工具定位:模型粗标,人工改错
一句话定位:Label Studio 负责"标",MMPose 负责"脏活"。Label Studio 本身无法把关键点数据直接导出成 MMPose 需要的 COCO 格式,tools/dataset_converters/labelstudio2coco.py补上了这个缺口;而tools/misc/下的伪标签脚本则让检测模型先出框、姿态模型先出点,人只修错。与纯人工标注平台的区别就在这一点——参考文章给出的估算里,千张图片的全流程周期从约 24 天压到 6 天以内。
几个关键默认值先记住:关键点置信度阈值--kpt-thr 默认 0.3,检测框 NMS 阈值默认 0.65,一个实例需要关键点、框、分割三类标注齐全。
最小可用的标注路径
从零到跑通只需 5 步,每步一条命令或一个动作:
- 装环境:MMPose 依赖 OpenMMLab 全家桶,用 mim 最省事:
pip install openmim mim install "mmpose"- 配置 Label Studio 标注界面:项目 Settings → Labeling Interface 粘贴官方示例 XML,必须包含
KeyPointLabels、PolygonLabels、RectangleLabels三种标签,且标注顺序严格"关键点在前、框或分割在后"(完整示例见 docs/zh_cn/user_guides/label_studio.md)。 - 模型先跑一遍:检测模型出框,RTMPose 出伪标签:
# 1) 目标检测先生成人体 bbox python tools/misc/generate_bbox_file.py <det_config> <det_weight> data/bbox.json \ --score-thr 0.5 --nms-thr 0.65 # 2) RTMPose 过一遍,输出 COCO 伪标签 python tools/misc/keypoints2coco_without_mmdet.py \ configs/body_2d_keypoint/rtmpose/coco/rtmpose-m_8xb256-420e_coco-256x192.py \ <ckpt> --json-file data/bbox.json --img-root data/imgs \ --out-json-file data/pseudo.json --kpt-thr 0.3- 人工修正:把伪标签结果导入 Label Studio,重点修遮挡关节、偏移的框和多人混淆点。
- 转换与校验:导出 JSON 转 COCO,再可视化抽查:
# config.xml 即标注界面 Code 内容 python tools/dataset_converters/labelstudio2coco.py config.xml export.json data/coco.json # 抽样浏览标注结果 python tools/misc/browse_dataset.py <train_config> --not-show --output-dir data/vis把图片文件夹和result.json放在同一目录,COCO 数据集就成型了。
进阶能力:按场景挑策略
- 密集多人场景:框重叠时先收紧
--score-thr(0.5 起步往上试),再看 NMS;仍混乱就换 bottom-up 模型出点。 - 遮挡关键点:Label Studio 无法标"可见性",转换脚本默认把非零点可见性置 2、原点 (0,0) 视为不可见(0)——所以被完全挡住的关节可以不标,脚本会正确处理。
- 质量提升:主动学习 ≈ 先全量做一遍,再挑错题重点练。按伪标签里关键点得分低的图像排序,优先人工复核这批"模型没把握"的样本,比平均用力省时间。
- 大规模处理:按场景类型(室内/室外)、人体密度拆分批次并行标注,每批用
browse_dataset.py抽样校验后再合流。
| 策略 | 适用规模 | 人工成本 | 质量 |
|---|---|---|---|
| 纯人工标注 | <1k 张 | 高 | 最高、最一致 |
| 伪标签 + 全量人工复核 | 1k–10k | 中 | 高,适合正式数据集 |
| 伪标签 + 抽检修正 | >10k | 低 | 够用,需定期抽检防漂移 |
高频坑与解法
| 现象 | 可能原因 | 快速验证 | 处理方向 |
|---|---|---|---|
| 转换后实例缺 bbox/segmentation | 标注顺序不是"关键点在前" | 转换脚本日志会出现 warning | 按 关键点→框/分割 顺序重标,对照 label_studio 文档 |
| 图片与标注对不上 | Label Studio 截断过长文件名 | 导出 COCO 格式比对图片目录 | 使用 COCO 导出压缩包内的图片文件夹,别用原上传文件 |
| 伪标签大量被丢弃 | --kpt-thr过高 | 降到 0.1 重跑,对比输出 annotation 数量 | 0.3 保干净;要召回就降阈值后人工筛 |
| 密集场景出框重复 | --score-thr过低 | 提到 0.6 重跑数框 | 与 NMS 默认 0.65 联动调整 |
| 看不出标注对错 | 没有可视化环节 | browse_dataset.py --not-show导出图 | 用--mode original/transformed对照原图 |
选型建议:按规模分层
- 如果你只有几百张:Label Studio 纯人工 + 转换脚本即可,伪标签是可选加速项,别过度设计。
- 如果是1k–10k 的中等规模:直接走本文最小路径,伪标签全量出点、人工全量复核,这是性价比最高的一档。
- 如果是万级以上:按场景与人体密度拆批并行,叠加低置信度优先修正的主动学习策略,每批校验通过再合流。
需要说明的是,本文没覆盖:3D 关键点/网格标注、视频逐帧时序一致性校验,以及多人实时协同标注平台——3D 相关可另行参考仓库中 H3.6M 等数据集的配置与文档。
收尾
MMPose 标注工具链的价值就一句话:模型粗标、人工改错、脚本校验,把标注从体力活变成审核活。跑通 5 步路径后,建议顺手读一遍 docs/zh_cn/user_guides/label_studio.md 和数据集准备文档,再看demo/inferencer_demo.py验证你的数据能直接喂给推理接口。
【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考