DeepLabCut使用教程之三--示例:创建自己的项目

引言

本博客演示了将DeepLabCut用于您自己的项目的必要步骤。 这显示了最简单的代码,但许多功能都有其他功能,所以请查看概述和协议文件!
本博客说明了如何:
                             -- 创建一个项目
                             -- 提取训练框架
                             -- 标记框架
                             -- 绘制标记图像
                             -- 创建一个训练集
                             -- 训练网络
                             -- 评估网络
                             -- 分析一个新的视频
                             -- 创建一个自动标记的视频
                             -- 绘制轨迹
注意:在“Demo-labeledexample-MouseReaching.ipynb”中说明了仅在几个标记图像上训练网络后的网络。 此演示还包含已标记的数据集,可能是全新用户的最佳起点。

开始操作:

本人创建了一个文件夹名为Test-felix-DLC初始文件目录如下:此文件夹下只有一个文件夹videos,在videos 文件夹下只有一个待训练的视频文件。

DeepLabCut使用教程之三--示例:创建自己的项目_第1张图片

# 激活环境
source activate deeplabcut-py36

# python 交互环境
python

新建一个项目:

# 自己命名项目名称/实验人/训练视频路径
task = 'Test-felix-DLC'
exprimenter = 'felix'
video =['/home/felix/DeepLabCut-Felix/Test-felix-DLC/videos/test.mp4']   

# 创建项目,并指定工作文件夹  工作文件夹的命名规则: task-exprimenter-日期
# 本案例指定工作文件夹为 /home/felix/DeepLabCut-Felix/Test-felix-DLC/videos
# 本案例 则为 Test-felix-DLC-felix-2019-04-03

deeplabcut.create_new_project(task,experimenter,video,working_directory='/home/felix/DeepLabCut-Felix/Test-felix-DLC/videos',copy_videos=True)


命令运行后查看文件结构如下:

DeepLabCut使用教程之三--示例:创建自己的项目_第2张图片

从视频中随机提取帧:

成功的特征检测器的关键点是选择不同的帧,这是典型的标记行为。此功能选择从特定视频(或文件夹)均匀采样的N帧(algo =='uniform')。 注意:如果行为稀疏分布(考虑使用kmeans)和/或手动选择帧等。同时确保从不同(行为)会话和不同动物中获取选择数据(如果这些会有很大差异)(以训练不变特征检测器)。单个图像不应太大(即<850 x 850像素)。 虽然这也可以在以后处理,但建议裁剪框架,尽可能地去除框架中不必要的部分。始终检查裁剪的输出。 如果您对结果感到满意,请继续进行标记。

# 设置一个文件配置变量,方便下面使用
path_config_file = '/home/felix/DeepLabCut-Felix/Test-felix-DLC/videos/Test-felix-DLC-felix-2019-04-03/config.yaml'

deeplabcut.extract_frames(path_config_file,'automatic','uniform',crop=True, checkcropping=True)
# 在文件 labeled-data/test/ 下生成若干提取图片 

执行上述命令后,会跳出一个画面窗口,输入 yes 从视频中随机提取帧。如果是多个视频,将会分别存放在以视频文件名命名的多个文件中。

文件目录结构:

DeepLabCut使用教程之三--示例:创建自己的项目_第3张图片

或者从视频中手动提取帧:

在“Do you want to crop the frames? ” 选择 “No”,否则无法捕获图像。

deeplabcut.extract_frames(path_config_file,'manual')

DeepLabCut使用教程之三--示例:创建自己的项目_第4张图片

DeepLabCut使用教程之三--示例:创建自己的项目_第5张图片

拖动视频进度条,在合适的图像时点击“Grab Frames”。新增捕获的图像帧,也会存放在文件 labeled-data/test/ 下。

标记图像

deeplabcut.label_frames(path_config_file)

左键移动,右键标记。标记完成后,点击 “Save”。之后会在 labeled-data/test/文件下生成 CollectedData_felix.csv, CollectedData_felix.h5。

DeepLabCut使用教程之三--示例:创建自己的项目_第6张图片

 

DeepLabCut使用教程之三--示例:创建自己的项目_第7张图片

注意:“select a bodypart to label” 由config.yaml 文件中 bodyparts 中的参数决定。每一个项目根据自己的需求自定义。

检查标签:

deeplabcut.check_labels(path_config_file)

新生成一个 test_labeled 文件夹,其中保存着被标记的图片。(labeled-data 下的两个文件夹 test 和test_labeled中保存的图像是一致的,唯一的区别在于是否被标记)。接下来就可以使用  “create_training_dataset(path_config_file)” 开始创建训练。

DeepLabCut使用教程之三--示例:创建自己的项目_第8张图片

 

生成训练前的训练集:

训练集的数据将保存在 “training-datasets” 和 “dlc-models” 文件夹中,未开始训练前是空的。

deeplabcut.create_training_dataset(path_config_file)

# 可以通过可选参数  num_shuffles = n 创建多个训练子集
# deeplabcut.create_training_dataset(path_config_file, num_shuffles = 3)

文件目录结构:

DeepLabCut使用教程之三--示例:创建自己的项目_第9张图片

DeepLabCut使用教程之三--示例:创建自己的项目_第10张图片

开始训练:

(本人训练30分钟左右,ctrl+c 停止训练。关于训练和操作,可以参看上一篇博客,基本相同。

deeplabcut.train_network(path_config_file)

# 此函数有很多可选参数,学会基本操作后,可以慢慢学习其他参数的使用。

之后的步骤与上一篇博客基本相同,不在赘述。参看上一篇博客

你可能感兴趣的:(DeepLabCut)