本博客演示了将DeepLabCut用于您自己的项目的必要步骤。 这显示了最简单的代码,但许多功能都有其他功能,所以请查看概述和协议文件!
本博客说明了如何:
-- 创建一个项目
-- 提取训练框架
-- 标记框架
-- 绘制标记图像
-- 创建一个训练集
-- 训练网络
-- 评估网络
-- 分析一个新的视频
-- 创建一个自动标记的视频
-- 绘制轨迹
注意:在“Demo-labeledexample-MouseReaching.ipynb”中说明了仅在几个标记图像上训练网络后的网络。 此演示还包含已标记的数据集,可能是全新用户的最佳起点。
本人创建了一个文件夹名为Test-felix-DLC初始文件目录如下:此文件夹下只有一个文件夹videos,在videos 文件夹下只有一个待训练的视频文件。
# 激活环境
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)
命令运行后查看文件结构如下:
成功的特征检测器的关键点是选择不同的帧,这是典型的标记行为。此功能选择从特定视频(或文件夹)均匀采样的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 从视频中随机提取帧。如果是多个视频,将会分别存放在以视频文件名命名的多个文件中。
文件目录结构:
在“Do you want to crop the frames? ” 选择 “No”,否则无法捕获图像。
deeplabcut.extract_frames(path_config_file,'manual')
拖动视频进度条,在合适的图像时点击“Grab Frames”。新增捕获的图像帧,也会存放在文件 labeled-data/test/ 下。
标记图像
deeplabcut.label_frames(path_config_file)
左键移动,右键标记。标记完成后,点击 “Save”。之后会在 labeled-data/test/文件下生成 CollectedData_felix.csv, CollectedData_felix.h5。
注意:“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)” 开始创建训练。
训练集的数据将保存在 “training-datasets” 和 “dlc-models” 文件夹中,未开始训练前是空的。
deeplabcut.create_training_dataset(path_config_file)
# 可以通过可选参数 num_shuffles = n 创建多个训练子集
# deeplabcut.create_training_dataset(path_config_file, num_shuffles = 3)
文件目录结构:
(本人训练30分钟左右,ctrl+c 停止训练。关于训练和操作,可以参看上一篇博客,基本相同。
deeplabcut.train_network(path_config_file)
# 此函数有很多可选参数,学会基本操作后,可以慢慢学习其他参数的使用。
之后的步骤与上一篇博客基本相同,不在赘述。参看上一篇博客