
用 MMPose 把关键点标注周期砍掉 80%从模型预标到 COCO 格式落盘【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose手头一批图要标 17 个人体关键点用 MMPose 的半自动标注流程让 RTMPose 模型先把点猜出来人只负责修正关键点标注周期能砍掉大半结果直接落成 MMPose 能训练的 COCO 格式。8000 张运动照片要标 17 个关节点人工标得动吗假设你接了个健身动作识别的活儿8000 张训练图每张要标 17 个关节点。按老办法纯手点熟练工一张也要三四分钟8000 张折算下来一个标注员标一个多月还没算遮挡、小人的返工。外包报价更是按人天算万级数据轻松破五位数。更要命的是质量同样一个肘部今天标在皮肤边缘、明天标在关节中心人工标到十万张一致性必然崩。所以这类活的标准打法不是更努力地人工标而是让模型先干粗活。半自动标注到底在做什么模型先猜人只管改一句话半自动标注 预训练模型批量猜关键点 人工只改猜得没把握的部分。RTMPose 这类在 COCO 上训好的模型对单张图出 17 个点加置信度不到 2 秒猜对的部分你一行代码都不用动人的工时全花在低置信度样本和遮挡区域上。整条关键点标注流程如下⚡ 三步跑通最小闭环整条闭环就是三件事装环境、让模型猜、把结果变成 COCO。下面每步只留可执行代码细节踩坑部分放到后面。5.1 环境就位git clone https://gitcode.com/GitHub_Trending/mm/mmpose cd mmpose conda create -n mmpose python3.9 -y conda activate mmpose pip install -r requirements.txt5.2 选一个预训练模型去猜推荐 RTMPose-mCOCO 17 关节点精度和速度平衡最好MMPose 的body别名默认就指向它等价于仓库里的 configs/body_2d_keypoint/rtmpose/coco/rtmpose-m_8xb256-420e_aic-coco-256x192.py。加载代码就这么几行权重首次运行会自动下载from mmpose.apis import MMPoseInferencer inferencer MMPoseInferencer( modelbody, # 别名默认指向 RTMPose-mCOCO 17 点 bbox_thr0.5, # 检测框分数低于 0.5 直接丢弃 nms_thr0.3, # 重叠框 NMS 的 IoU 阈值 kpt_thr0.3) # 关键点置信度阈值这三个阈值别嫌琐碎——它们就是后面质量闸门的开关先按默认值跑通回头再调。5.3 批量推理 → 人工修正 → 格式落盘把图片丢进data/raw_images逐张的预测会自动写成 JSON每个实例带keypoints、keypoint_scores、bboxes三个字段for result in inferencer(data/raw_images, pred_out_diroutput/predictions, show_progressTrue): pass # 每张图的预测已自动落盘为什么还要过一遍人工修正因为预标 JSON 带着模型的错误先验直接拿去训练等于把偏差固化进数据。修正走 Label Studio导入图片标注界面按 docs/en/user_guides/label_studio.md 里的 XML 配置KeyPointLabels RectangleLabels注意先点关键点再框 bbox且关键点顺序要和 dataset_info 一致修正完导出 JSON用仓库自带脚本做 COCO 格式转换python tools/dataset_converters/labelstudio2coco.py \ data/label_interface.xml \ output/labelstudio_corrected.json \ output/coco_final.json把图片目录挪到output/images/和coco_final.json放一起就是一个完整 COCO 数据集训练配置里改一行ann_file就能用。落盘前想肉眼过一遍用 browse_dataset.py 把数据集可视化出来检查。标注质量的三道闸门MMPose 标注工具怎么用答案是把预标当草稿人改之前先过三道闸门每道都对应预测 JSON 里的一个字段。闸门一置信度过滤预测 JSON 里每个实例都带keypoint_scores均值偏低的实例整条不可信先拉出来优先修import json, glob for f in glob.glob(output/predictions/*.json): pred json.load(open(f))[predictions] for inst in pred[instances]: if inst[keypoint_scores].mean() 0.5: print(f, 低置信人工复核) break低置信样本通常只占 10%–20%人工工时全砸在这里比无差别全量检查省得多。闸门二遮挡特判遮挡关节是模型最爱一本正经地编的地方置信度照样高点却落在背景上。这类错误调kpt_thr救不了因为分数本身没报错。处理原则被挡住的关节按 COCO 约定标visibility0不要替模型脑补坐标。多模型融合确实也能压遮挡误差但对标注流程来说标 0 不猜永远是性价比最高的一招。闸门三多人场景消歧密集场景最容易出骨架串人。两个旋钮bbox_thr调低保住小人nms_thr调高压掉重框RTMO 这类 bottom-up 模型建议再加pose_based_nmsTrue用姿态相似度消重。视频数据里 ID 跳变用跟踪算法关联相邻帧静态图给每个人体上不同颜色编码避免修正时张冠李戴。手头没有检测器候选框时可以用 generate_bbox_file.py 单独生成框文件再推理。数据规模大了怎么办量级不同打法完全不同按三档定策略数据规模策略1k 张人工全标为主模型预标只当第二意见交叉核对一遍过1k–10k 张标准半自动标注RTMPose 自动标注 Label Studio 修正优先处理低置信样本10k 张按场景分片预标注、多人分布式修正用置信度挑难例优先结果分版本增量保存⚠️ 踩过的坑下面是复现率最高的三个坑都按现象 → 原因 → 解法三行交代。坑一关键点整体偏移现象小人图中骨架偏离肢体几个像素手脚处最明显。 原因检测框偏紧crop 到固定分辨率时被挤压变形。 解法换 384x288 输入分辨率的配置重推或放宽bbox_thr保留更大的框。坑二遮挡关节被模型脑补现象被手臂挡住的肘关节点稳稳落在背景上置信度还不低。 原因网络用姿态先验填补遮挡区分数高但无图像依据。 解法人工标visibility0不填坐标别和模型争谁对。坑三视频里人体 ID 跳变现象第 N 帧标的是甲N1 帧骨架跳到乙身上。 原因相邻帧检测框 ID 互换姿态贴错了人。 解法启用跟踪关联相邻帧或先标关键帧再补中间帧。明天就能动手装好环境把图片目录丢进data/raw_images跑一遍预标下午开始修低置信样本。第一份coco_final.json落盘那天你的姿态估计数据准备闭环就转起来了。【免费下载链接】mmposeOpenMMLab Pose Estimation Toolbox and Benchmark.项目地址: https://gitcode.com/GitHub_Trending/mm/mmpose创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考