深度学习模型需要大量的训练数据,特别是标注数据。数据的标注非常重要,这对标注软件提出了很高的要求,易用、免费、高效的标注软件是深度学习从业人员的必备工具。deeplabcut 是一款面向位姿识别的标注软件(也可以进行模型训练),它开源、高效、易用,本篇介绍该软件的安装与简单使用。

deeplabcut 的安装

假设已经按照好了 miniconda,下面介绍安装 deeplabcut

1
2
3
4
5
6
7
8
git clone https://github.com/DeepLabCut/DeepLabCut.git
cd DeepLabCut/conda-environments


# 如果不想克隆源代码仓库,可以直接从官网下载配置文件
wget http://www.mackenziemathislab.org/s/DEEPLABCUT.yaml

conda env create -f DEEPLABCUT.yaml

deeplabcut 的使用

1
2
3
4
5
6
conda env list
conda activate DEEPLABCUT

pythonw -m deeplabcut
# 或者,会将后台信息打印在控制台上
python -m deeplabcut

此时,会打开 deeplabcut 的 GUI 界面。

创建工程

在首次打开软件时,需要创建一个工程(如果已经有工程的配置文件,可选择加载存在的工程),输入工程名和实验名,选择视频,选择工程保存路径(路径中不能有中文字符)并选择标注对象是否是多个目标。点击确定,则会生成配置文件。

建议打开配置文件,根据个人情况设置里面的参数。下面介绍几个重要参数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
bodyparts:  # 这里是你要标注的对象的关键点,可以根据字节情况设置,如 head, middle, tail 等
- bodypart1
- bodypart2
- bodypart3
- objectA

numframes2pick: 20 # 这里是设置提取帧的个数,设置成你需要提取的图像个数

# Plotting configuration
skeleton: # 骨架,和 bodyparts 对应,标识通过依次链接关键点得到对象的骨架网络
- - bodypart1
- bodypart2
- - objectA
- bodypart3

# 当选择的是多个对象时,配置信息会像下面这样
individuals: # 几个对象
- nematodes1
- nematodes2
- nematodes3
uniquebodyparts: []
multianimalbodyparts: # 每个对象标注的关键点位置
- head
- middle
- tail

提取帧

当创建工程后,界面会增加多个标题栏,首先我们需要对视频进行帧随机提取,用于标注。假设我的配置文件已经根据标注要求进行设置完成。那么首先我们选择配置文件,然后提取方法我们可以选择自动或手动。如果选择自动提取,则下面会有选择的算法。

提取的图片会自动放到 工程名/labeled-data/视频名 目录下,图片格式为 .png。如果自动提取的帧不能够很好的用来进行标注,可以选择手动的提取方法。但这种方法对于视频较长的情况将会非常耗时的。此时,可以使用程序先将视频转化为图片序列,然后人工筛选质量较好的图片,并将筛选的图片格式转化为 .png. 视频转图片序列以及图片格式转换可参考我的代码库:toolkit. 然后将转换好的图片序列放到 工程名/labeled-data/视频名 目录下。

标注数据

假设上面的图片已经提取完成,此时,可以选择标注数据标题。首先选择配置文件,然后选择标注帧,其次,选择加载帧,选择上面的放置提取的图片序列的文件夹。此时,图片会按照文件名顺序加载到标注工具框中。右上角为对象(当配置多个对象时)和关键点。默认打开图像时选择第一个关键点。右键为标注关键点,点击缩放 zoom 可以对小对象放大然后精细标注,点击 home 则返回正常尺寸。如果标注好当前图片,可以点击 save 保存标注信息,也可以标注多张图像后再点击保存。previous 和 next 分别标识前一帧和后一阵,可查看前后两种对象的变化情况。鼠标中键可以删除某个标注,需要先选择该标注,然后点击鼠标中键,然后点击 save,然后切换帧,返回当前帧后可重新标注。更多可查看 help 页面。

标注完成后,点击 quit 退出当前标注。标注的信息会保存在 工程名/labeled-data/视频名 下的 CollectedData_实验名.csvCollectedData_实验名.h5 中。

其他功能

除了进行图像标注以外,deeplabcut 还提供了:create traing dataset, train, evaluate, analyze videos, create videos 等功能。有兴趣的伙伴可以探索。

参考文献

  1. How To Install DeepLabCut
  2. deeplabcut