最近我们项目需要标注数据集的人体关键点,所以我们开发了一套标注的简单流程,这里来记录一下。

因为关键点太多,不可能人为的取标注很多东西,所以我们要借助现有的算法先计算在矫正。

一、标注工具 LabelMe

项目地址: https://github.com/wkentaro/labelme

安装: 建议在python3环境下运行,python2我自己未测试过,具体的相关的可以到项目地址看

1.创建虚拟环境

conda create -n labelme python=3.6

2.激活环境

source activate labelme

3.安装labelme

pip install labelme

使用:

激活虚拟环境后,输入 labelme 打开软件

二、数据标注流程

  1. 用写好的脚本把视频拆分成单帧;
  2. OpenPose跑出所有的图片的帧(或者OpenPose直接在视频上跑),会得到每张图片的关键点的一个json文件;
  3. 用我们写好的脚本把json转换成labelme格式的json;
  4. labelme打开文件夹进行标注
  5. 标注完成后在执行一次脚本,补充删除得点

labelme之后的标注流程可以参考下面的gif动图:


目前这套流程已经开始测试使用。

关于上面提到的脚本,我回头都会集成到实用工具类下面,或者会单独一个labelme的项目上传到github。

三、标注指南

一、关键点位置

Body

Hand

  • 手的坐标用原来的21个太多了,人也看不清楚,所以选取了其中11个点(手指尖、手心),需要矫正

15858151193861585815119386


二、标注相关

1.遮挡问题

如果遇到手部遮挡,这样人也是标不出来的,所以直接删除被遮挡的手关节,(身体关节被遮挡、出画后如果检测不出来是(0,0)坐标,这时候就不用管)一个个点的删除比较慢,如果需要批量删除,可以如下操作:(动图pdf无法播放,会在群里再发一份)

注意: 所有的左上角(0,0)的点都可以不用去考虑

其中,如果没有polygon Labels这个控制框,可以再view菜单下调出来

2.运动模糊问题

碰到人的手很模糊,人眼都很难分辨出来,手的点又比较大,这时候标注会很困难,碰到这种情况,直接保留手的关键点,可以跳过手的标注。例如下图:

1585816044541

附加:服务器与本地同步

关于服务器与本地同步很慢的问题,可以在服务器使用百度云即可。