DeepLabCut教程(二 具体如何使用)

此篇为     二  具体如何使用         在这儿我将使用DLC进行新建工程、标记数据、训练、预测等,这是简化版流程。

如果你还不清楚DLC如何安装或者DLC是什么,请查看     一  从零开始安装     ,链接为:

DeepLabCut教程(一 从零开始安装) -


一、使用前言

        在DLC官网上,已有官方使用教程:

                https://github.com/DeepLabCut/DeepLabCut/blob/master/docs/UseOverviewGuide.md

DLC官方流程

        实际上,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简化版操作完成,可以尝试修改这些函数中的参数,玩出更多可能。


三、错误总结

        这里会不定期更新一些错误及解决方法,敬请期待。

        错误和解决方案见下连接:常见错误和解决方法

你可能感兴趣的:(DeepLabCut教程(二 具体如何使用))