FYP

使用Labelme标注Skeleton

2020 Summer FYP

Posted by Sizhe Song on 2020-05-25

这篇笔记约定了如何使用Labelme来纠正已有数据中错误的skeleton

安装Labelme

  1. 在Anaconda中新建一个环境,用于安装Labelme。这里用Anaconda Prompt做演示

    1
    conda create --name=labelme
  2. 进入这个新建的环境

    1
    activate labelme
  3. 安装依赖pyqt,这是一个python的GUI包

    1
    conda install pyqt
  4. 安装Labelme

    1
    pip install labelme

安装好之后每次使用时只需要打开Anaconda Prompt,进入labelme环境,然后使用命令labelme即可

1
labelme

下载服务器上的skeleton图片

将已经生成好的skeleton图片从服务器上下载到本地。路径为

1
/data/ssongad/skeleton_img/<classname>

为了避免可能的重复劳动,约定宋思哲从字母正序开始检查,倪啸元从字母逆序开始检查。另外,为了方便查看进度,在以下路径已经建好两个txt文本,在完成下载和完成检查之后都可以记录到文本中

1
2
/data/ssongad/ssongad_log.txt
/data/ssongad/xniac_log.txt

配置Labelme

按上述方式运行Labelme后

  1. 打开一个视频文件夹,对应的路径格式为<yourLocalPath>/<classname>/<classname>_<index>,比如...workspace\skeleton_img\abseiling\abseiling_000
    打开文件夹
  2. 更改输出路径,否则默认输出到图片的同路径,为了方便后续操作,我们要输出到一个单独的文件夹中。先新建好输出文件夹,格式应该与图片保持一致,即<classname>/<classname>_<index>。然后将这个文件夹设置成输出文件夹
    更改输出文件夹
  3. 打开自动保存,否则每次询问是否保存
    打开自动保存

开始检查

如果skeleton正确,或者部分正确,则对于这一部分无须任何操作。只需要重新标记那些识别错误的关节即可。首先,约定的关节序号如下
关节序号
上图中的左边即为人物的左手,你可以认为这个人背对着你,相应节点的含义已在右侧给出。需要注意的是,0号关节是鼻子,虽然大多数时候它看起来像头部。眼睛和耳朵有数据但并未在skeleton中画出,本次检查也不需要管这两个关节。
关节之间的连接颜色也在图中给出了,左右半侧并不对称,可以依据这一点判断skeleton是否左右颠倒。尚不清楚左右颠倒是否影响未来的操作,但最好全部订正一遍。

我们需要做的操作就是标记关节的位置,Labelme有提供标记点模式,需要手动打开
打开标记点模式

然后只需要在图片上点击正确的关节位置,就可以创建一个标记点,然后会弹出窗口要求输入label,输入关节对应的序号即可
输入关节序号

一张图中可以标记数个点,全部完成后可以直接前往下一张图片,节点信息会以一个json文件的形式自动输出到指定的路径下
前往下一张图片

完成

注意每完成一个video之后,都需要重新设置输出路径,然后继续工作。完成一个class之后,可以把整个class的文件夹上传到服务器的如下路径

1
/data/ssongad/labelme/