news 2026/4/22 9:47:00

从零构建人体姿态数据集:基于Labelme的实战标注指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从零构建人体姿态数据集:基于Labelme的实战标注指南

1. 为什么需要自己构建人体姿态数据集

在计算机视觉领域,人体姿态估计是一个非常重要的研究方向。无论是健身动作识别、跌倒检测,还是虚拟试衣、动画制作,都需要准确的人体姿态数据作为基础。虽然网上可以找到一些公开的数据集,比如COCO、MPII等,但这些数据集往往存在几个问题:

首先,公开数据集的场景比较固定,可能无法满足特定项目的需求。比如你要做一个专门检测老年人跌倒的系统,公开数据集中的跌倒样本可能不够多。其次,公开数据集中的人体姿态、着装、体型可能和你的目标用户群体有差异。最后,使用公开数据集做研究时,很难有独特的创新点。

我自己在做毕业设计时就深有体会。当时想做一个篮球动作分析系统,找遍了公开数据集都找不到足够多的投篮、运球样本。后来咬咬牙自己采集数据,虽然费时费力,但最终的模型效果比用公开数据集训练的好很多。这也让我明白了一个道理:在AI时代,高质量的数据往往比复杂的算法更重要。

2. 数据采集全流程指南

2.1 拍摄设备与环境准备

很多人觉得采集数据需要专业相机,其实不然。现在的智能手机摄像头完全够用,我实测过iPhone和主流安卓机拍摄的图片,在480p分辨率下都能满足标注需求。关键是要注意以下几点:

拍摄环境最好选择纯色背景,比如白墙或者绿幕。如果条件有限,至少要确保背景不会太杂乱。光线要充足均匀,避免出现明显的阴影。拍摄时要保持手机与被拍摄者眼睛平齐,这个高度拍出来的图片最符合人体姿态估计的需求。

建议让被拍摄者站在距离镜头2-3米的位置,这样既能拍到全身,又不会因为距离太远而丢失细节。可以在地上贴个标记点帮助定位。

2.2 拍摄姿势规范

根据我的经验,一个完整的人体姿态数据集应该包含三种基本状态:

  • 站立状态(UP):正面、侧面、背面各3-4张
  • 中间状态(BENDING):弯腰、蹲下等过渡姿势
  • 跌倒状态(FALL):坐下、躺下等着地姿势

每种状态要从多个角度拍摄,建议至少包含正面、左侧面、右侧面三个视角。每个姿势要拍摄10-15张,这样可以确保有足够的样本量。拍摄时可以让人物自然移动,连续抓拍,这样得到的姿态会更自然。

特别注意要覆盖各种体型和着装的被拍摄者。如果条件允许,最好能找到不同身高体重的人参与拍摄,这样训练出来的模型泛化性会更好。

2.3 文件命名与组织规范

规范的命名和组织方式可以节省后期大量时间。我推荐使用以下命名规则:状态_编号_序号.jpg比如:

  • UP_001_01.jpg(站立状态)
  • BENDING_001_02.jpg(弯腰状态)
  • FALL_001_03.jpg(跌倒状态)

建议把所有图片放在一个文件夹中,不要分多个子文件夹。这样在用Labelme标注时会方便很多。文件夹结构可以这样:

dataset/ ├── UP_001_01.jpg ├── UP_001_02.jpg ├── BENDING_001_01.jpg ├── FALL_001_01.jpg └── ...

3. Labelme安装与配置详解

3.1 多种安装方式对比

Labelme作为最流行的图像标注工具之一,提供了多种安装方式。对于初学者,我推荐使用Anaconda来管理Python环境,这样可以避免很多依赖问题。

先创建一个新的conda环境:

conda create -n labelme python=3.8 conda activate labelme

然后安装Labelme:

pip install labelme

如果下载速度慢,可以尝试清华镜像源:

pip install labelme -i https://pypi.tuna.tsinghua.edu.cn/simple

对于不熟悉命令行的用户,也可以直接下载打包好的exe文件。Windows用户可以从GitHub Release页面下载最新的.exe安装包,双击安装即可。

3.2 界面功能全解析

安装完成后,在命令行输入labelme就能启动程序。主界面主要分为以下几个区域:

左侧是图像显示区,在这里可以看到要标注的图片。右侧是文件列表,会显示当前文件夹中的所有图片。上方菜单栏包含各种功能选项,最常用的是"Open Dir"(打开文件夹)和"Save"(保存标注)。

工具栏上有各种标注工具:

  • 矩形框(目标检测用)
  • 多边形(图像分割用)
  • 线条(车道线等标注用)
  • 点(人体关键点标注用)

对于人体姿态估计,我们主要使用"点"标注工具。标注时建议先勾选"Auto Save"选项,这样每标注完一个点都会自动保存,避免意外丢失数据。

4. 人体关键点标注实战技巧

4.1 标注规范详解

人体姿态估计通常使用17个关键点的标注方案,这些关键点对应人体的主要关节。标注时要特别注意顺序和位置准确性。下面是我总结的关键点编号和对应部位:

  1. 鼻子
  2. 左眼
  3. 右眼
  4. 左耳
  5. 右耳
  6. 左肩
  7. 右肩
  8. 左肘
  9. 右肘
  10. 左手腕
  11. 右手腕
  12. 左髋
  13. 右髋
  14. 左膝
  15. 右膝
  16. 左脚踝
  17. 右脚踝

标注时一定要按照这个顺序进行,因为很多姿态估计算法都依赖固定的关键点顺序。如果某个部位被遮挡,也要尽量估计位置进行标注,不要直接跳过。

4.2 标注流程分步指导

打开Labelme后,按照以下步骤操作:

  1. 点击"Open Dir"选择存放图片的文件夹
  2. 选择第一张要标注的图片
  3. 点击"Create Point"工具开始标注
  4. 按照1-17的顺序依次点击各个关键点
  5. 每标注完一个点,在弹出框中输入对应的编号
  6. 全部标完后点击"Save"保存json文件

这里有个小技巧:标注时可以先用矩形框把整个人框出来,这样有助于确定各个关键点的位置。标注过程中如果发现位置不对,可以随时右键点击关键点进行修改。

4.3 常见问题解决方案

在实际标注过程中,经常会遇到一些问题。这里分享几个我踩过的坑:

问题1:标注到一半程序崩溃 解决方案:开启"Auto Save"功能,或者每标完几个点就手动保存一次。

问题2:关键点被遮挡 解决方案:根据可见部位推测被遮挡点的位置。比如左肘被身体挡住,可以根据左肩和左手腕的位置来估计。

问题3:标注顺序混乱 解决方案:严格按照1-17的顺序标注,可以在纸上打印出关键点编号对照表放在旁边参考。

问题4:json文件损坏 解决方案:Labelme生成的json是标准格式,可以用文本编辑器打开检查。如果损坏不严重,可以手动修复。

5. 数据增强与质量检查

5.1 数据增强技巧

标注完基础数据集后,可以通过数据增强来扩充样本量。常用的增强方法包括:

  • 旋转:±15度内的小角度旋转
  • 平移:上下左右10%范围内的移动
  • 缩放:0.9-1.1倍的随机缩放
  • 亮度调整:±20%的亮度变化

可以使用OpenCV或Albumentations库来实现这些增强。这里给出一个简单的Python示例:

import albumentations as A transform = A.Compose([ A.Rotate(limit=15, p=0.5), A.HorizontalFlip(p=0.5), A.RandomBrightnessContrast(p=0.2), ], keypoint_params=A.KeypointParams(format='xy'))

5.2 质量检查方法

标注数据的质量直接影响模型效果,所以必须严格检查。我通常采用三级检查机制:

第一级:标注时自查 每标完一张图,立即检查:

  • 是否所有关键点都标了
  • 关键点顺序是否正确
  • 关键点位置是否准确

第二级:批量检查 使用脚本检查所有json文件:

import json import os for file in os.listdir('annotations'): if file.endswith('.json'): with open(os.path.join('annotations', file)) as f: data = json.load(f) assert len(data['shapes']) == 17, f"{file} has wrong number of points"

第三级:抽样检查 随机抽取10%的样本进行人工复查,确保没有系统性错误。

6. 进阶技巧与注意事项

6.1 多人场景处理

当图片中有多个人时,标注要特别注意:

  1. 每个人都要单独标注17个关键点
  2. 不同人的关键点要用不同的group_id区分
  3. 标注顺序要一致,比如都从左到右

Labelme支持多人标注,只需要在标注不同人时点击"Create Point"重新开始一组即可。保存的json文件中会用"group_id"字段区分不同人。

6.2 标注效率提升技巧

标注工作很耗时,我总结了一些提升效率的方法:

  1. 使用快捷键:
    • Ctrl+Z 撤销
    • Ctrl+S 保存
    • P 切换到点标注工具
  2. 先标注容易的点(如鼻子、眼睛),再标注难的点
  3. 相似姿势批量标注,保持节奏
  4. 适当休息,避免疲劳导致标注质量下降

6.3 与其他工具的对比

除了Labelme,还有其他一些标注工具:

  • CVAT:功能更强大,但配置复杂
  • LabelImg:只支持矩形框标注
  • VGG Image Annotator:在线工具,无需安装

经过对比,Labelme在人体关键点标注上依然是最方便的选择,特别是在自定义标注方案和本地使用方面。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 9:40:11

AI浪潮下全球大厂估值困境:微软、腾讯等为何被AI杀估值?

突发!AI从概念股变成价值毁灭股市场对科技公司提出的要求存在矛盾,理论上,任何老业务都可能被AI颠覆,只有无老业务的全新创业公司才符合要求,但创业公司多处于亏损中,不符合市场对盈利的要求。在全球大厂里…

作者头像 李华
网站建设 2026/4/22 9:39:10

基于C语言实现的通用寄存器实验

♻️ 资源 大小: 22.9MB ➡️ 资源下载:https://download.csdn.net/download/s1t16/87425386 1.通用寄存器组实验内容 1.1 实验目的 1.了解通用寄存器组的用途及对CPU的重要性; 掌握通用寄存器组的设计方法。 1.2 实验原理 …

作者头像 李华
网站建设 2026/4/22 9:37:05

抖音批量下载神器:3分钟搞定无水印视频采集的完整指南

抖音批量下载神器:3分钟搞定无水印视频采集的完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback suppo…

作者头像 李华
网站建设 2026/4/22 9:36:25

Jetson Orin NX 开发指南(9): MAVROS 的安装、配置与运行

1. MAVROS简介与Jetson Orin NX适配性 MAVROS是ROS(Robot Operating System)与MAVLink协议之间的桥梁,专门用于无人机和地面站之间的通信。在Jetson Orin NX这类高性能嵌入式平台上部署MAVROS,可以实现与PX4或ArduPilot飞控的高效…

作者头像 李华
网站建设 2026/4/22 9:35:28

解放双手,游戏自由:《第七史诗》自动化助手E7Helper完全指南

解放双手,游戏自由:《第七史诗》自动化助手E7Helper完全指南 【免费下载链接】e7Helper 【Epic Seven Auto Bot】第七史诗多功能覆盖脚本(刷书签🍃,挂讨伐、后记、祭坛✌️,挂JJC等📛,多服务器支…

作者头像 李华