此篇为 二 具体如何使用 在这儿我将使用DLC进行新建工程、标记数据、训练、预测等,这是简化版流程。
如果你还不清楚DLC如何安装或者DLC是什么,请查看 一 从零开始安装 ,链接为:
DeepLabCut教程(一 从零开始安装) -
一、使用前言
在DLC官网上,已有官方使用教程:
https://github.com/DeepLabCut/DeepLabCut/blob/master/docs/UseOverviewGuide.md
实际上,DLC自从有了自己的GUI后,图形化操作确实非常简单,但因为这个GUI有时会卡BUG,且不利于我们理解DLC背后的代码,故在此我将从新建工程、标记、训练、预测等步骤详细介绍如何使用DLC。
二、使用流程
1、导入包
import deeplabcut
当然是先导入dlc的包,如果这一步出错,可能是没有wxPython,在环境中直接pip即可。如果是Spyder,将Graphs显示方式由Inline调整为Qt5。如果是tensorflow的问题,将环境中的tensorflow的uninstall后再安装一下。记得是要安tensorflow-gpu版本的,CPU太慢了(tai man le)。
2、新建工程
deeplabcut.create_new_project('ProjectName','YourName', ['/usr/FullPath/OfVideo1.avi','/usr/FullPath/OfVideo2.avi','/usr/FullPath/OfVideo1.avi'],copy_videos=True/False,multianimal=True/False)
注:这里新建工程后,工程文件夹的路径在这个.py脚本同级的路径下。工程名+作者名不要太长,否则会出一堆错!
使用 deeplabcut.create_new_project 函数进行新建工程,参数如上所示,分别是工程名、作者名、视频路径、是否拷贝视频到工程目录中、是否多只动物。其中,DLC2.2目前虽然支持了多只动物的跟踪,但效果一(bu)般(xing),所以大多数情况下DLC是用来追踪单只动物的。也说不定过两天DLC的多动物追踪也变得十分强大。
3、查看配置文件config.yaml
注:config.yaml位置在工程目录下
为什么这里要特别提到yaml文件,因为这个文件中包含了对整个工程的配置,我们修改其中一些选项,达到对整个工程的控制。讲一些常用的配置选项:
project_path: 工程文件夹所在路径,包括文件夹名。
bodyparts: 自定义的身体点名称。
numframes2pick: 每个视频选择多少张图片作为训练集。
dotsize: 追踪点的显示大小。
iteration: 当前工程中第几次训练。
resnet: 选用resnet的哪个网络。
batch_size: 训练的时候batch大小,显存小、GPU运算能力不足时,适当降低batch_size。
4、从视频中自动提取训练帧
deeplabcut.extract_frames(config_path,mode='automatic',algo='kmeans',crop=True/False)
使用 deeplabcut.extract_frames 函数自动从传入的视频中提取训练集。其中参数分别为config.yaml文件路径、是否自动提取、哪种算法提取、是否需要crop裁剪。一般第一个参数传入路径,第二、三个参数不用动,第四个选False。这里可以裁剪但没必要,DLC非常强大,全局特征和局部特征都能有效提取。
5、开始标记训练集(humdrum)
deeplabcut.label_frames(config_path)
使用 deeplabcut.label_frames 函数来进行标记训练集。其中参数为config.yaml文件路径。没错,DLC内部自带标记的GUI,且标记好后自动生成数据集,无需用Labelme等工具标记训练集,也无需自己搞训练集,极大降低了入门门槛。
6、检查训练集
deeplabcut.check_labels(config_path)
使用 deeplabcut.check_labels 函数检查是否将训练集标记完成。
7、创建训练环境
deeplabcut.create_training_dataset(config_path)
使用 deeplabcut.create_training_dataset 进行创建训练环境。这一步如果没有pre_model,则会报错。由于res_net官网访问不了,所以下载预训练模型总会出错。解决方法是在网上搜res_net50或者101或者其他的模型,然后下载解压到Anaconda\envs\DLC-GPU\Lib\site-packages\deeplabcut\pose_estimation_tensorflow\models\pretrained 路径下即可。
8、开始训练
deeplabcut.train_network(config_path)
使用 deeplabcut.train_network 训练你的网络。如果你的GPU、CUDA、CUDNN、TensorFlow、训练环境都没问题,则可以开始愉快地开始训练了。GPU能力越强,则训练速度越快,时间越短。推荐RTX2080Ti及以上,如TiTan、Tesla、RTX3080等。如果GPU的显存较小,则适当调小config.yaml中的batch_size。
9、评估网络
deeplabcut.evaluate_network(config_path,plotting=True)
评估网络使用 deeplabcut.evaluate_network。这条函数可以在工程目录下生成评估文件夹,在这个文件夹下可以查看网络一些评估参数的图等。词条语句可以跳过(如果不需要评估网络的话)。
10、预测
deeplabcut.analyze_videos(config_path,['/fullpath/project/videos/'],videotype='.mp4',save_as_csv=True)
使用 deeplabcut.analyze_videos 进行视频的预测。参数分别为:config.yaml文件路径、预测的视频路径、预测的视频格式、是否保存为csv格式。通过这一步生成网络产生的输出,并保存为csv文件,保存在预测视频同级的文件夹下。
11、生成带有标记的视频
deeplabcut.create_labeled_video(config_path, [`/analysis/project/videos/reachingvideo1.avi','/fullpath/project/videos/reachingvideo2.avi'],filtered=True)
使用 deeplabcut.create_labeled_video 函数进行生成带有标记的视频图像。参数为:config.yaml文件路径、原视频名、是否需要滤波。生成的标记视频会保存在原视频同级的目录下。
至此,DLC简化版操作完成,可以尝试修改这些函数中的参数,玩出更多可能。
三、错误总结
这里会不定期更新一些错误及解决方法,敬请期待。
错误和解决方案见下连接:常见错误和解决方法