使用DeepLabCut训练自己的数据

1. Deeplabcut安装

1.1 下载安装文件

安装地址

进入安装地址后,选择step2中的下载链接点击,下载DEEPLABCUT.yaml文件

使用DeepLabCut训练自己的数据

; 1.2 创建环境并安装

选择Anaconda目录下的Anaconda Navigator

使用DeepLabCut训练自己的数据

依次点击Enviroments—Import—选择DEEPLABCUT.yaml文件的下载目录

使用DeepLabCut训练自己的数据
选中后点击import即可安装DEEPLABCUT

使用DeepLabCut训练自己的数据

2. 模型训练

2.1 训练前准备

使用Anaconda Navigator进入

选择安装好的环境,选择Open with IPython

使用DeepLabCut训练自己的数据

在命令框中输入 进入操作界面

import deeplabcut

deeplabcut.launch_dlc()

使用DeepLabCut训练自己的数据

如果没有GPU的话,会出现下面的error,可以直接无视

使用DeepLabCut训练自己的数据

使用DeepLabCut训练自己的数据

此处输入任务的名称和操作者的名字,新的文件夹将以这两者的名字命名,为减少报错可能,尽量用英文+数字,不要使用汉字,设置完成后点击OK

使用DeepLabCut训练自己的数据

2.2 模型标注

创建成功后,会进入下面的界面

使用DeepLabCut训练自己的数据

抽取关键帧

上一步完成后,会在下图所示的目录中创建一个config.yaml文件,这个文件中包含了整个训练过程的所有主要设置,后面还会用到

由于输入的是连续的视频,此处需要定义抽取关键帧的方法,用于后续的标注

这里可以选择手动或自动提取(一般自动就可以 手动需要一帧帧挑有点麻烦)

并可以选择自动抽帧的方法(kmeans和uniform),由于我用的视频背景比较简单,没有仔细对比过这两种方法的差别

设置完成后点击OK 这里需要一点时间来读入视频和提取关键帧

使用DeepLabCut训练自己的数据

关键点标注设置

点击OK后,选择Label Data进入到下面的界面

使用DeepLabCut训练自己的数据

进入config.yaml所在的目录,并使用记事本打开config.yaml文件

这里的bodyparts和skeleton分别代表了需要在图中标识的关键点和关键点间可能的联系

如果和默认的关键点定义不一样,直接删掉修改就可以

使用DeepLabCut训练自己的数据

修改完的文件如下

这里需要注意skeleton的写法,当点比较多的时候,写成这样会比较方便

另外,针对不同的场景,设置关键点的大小也非常重要

使用DeepLabCut训练自己的数据

然后回到界面,选择Label frames

使用DeepLabCut训练自己的数据

按顺序选择待标注图像所在的文件,就可以进入标注界面

使用DeepLabCut训练自己的数据

然后就可以开始愉快的标注了,如果前面导入了多段视频的话,每个视频会生成一个文件夹,需要对每个文件夹分别标注

使用DeepLabCut训练自己的数据

在标注完成后,回到主页面,并选择Check Labels,就可以看到在任务文件夹下的labled-data文件中找到一个带有-labeled的文件,点进去后可以看到标注的点和骨架已经被绘制在了图中

使用DeepLabCut训练自己的数据

然后就可以点击Creaete Training Dataset进入到创建训练集的部分(如果用服务器训练的可以直接跳过这部分)

此处可以选择特征提取网络,主要影响后续的运算速度和精度,配置好的可以选择resnet家族的,配置一般的可以选择mobilenet

还可以选择数据增强的方法,这里我也没对比过几种有什么差别

使用DeepLabCut训练自己的数据

全部选完后就可以点击OK

然后会在IPython中看到创建成功的提示

使用DeepLabCut训练自己的数据

; 2.3 正式训练

然后就是正式训练的过程,这里由于我自己的电脑性能比较拉,所以选择了使用服务器训练,有条件的可以直接进入主界面中的train来训练

下面是我的租用配置,怕麻烦的可以直接copy

使用DeepLabCut训练自己的数据

我的训练是在矩池云上进行的,这个配置可以直接在镜像里找到,简单是挺简单,但这个平台确实是贵……

首先当然需要在服务器上安装deeplabcut

然后把整个文件 就是那个由任务名+人名组成的文件打包上传

使用DeepLabCut训练自己的数据

然后进入网盘,解压,用Jupyter打开文件

在目录下新建一个.ipynb文件 效果如下

使用DeepLabCut训练自己的数据

接下来的事情就很简单了


ProjectFolderName = 'dog-S10ow-2022-03-09'
VideoType = 'mp4'

videofile_path = ['./videos/test.mp4']
videofile_path
import os
os.environ["DLClight"]="True"
import deeplabcut

path_config_file = '/mnt/dog-S10ow-2022-03-09/config.yaml'

deeplabcut.create_training_dataset(path_config_file, net_type='resnet_50', augmenter_type='imgaug')

deeplabcut.train_network(path_config_file, shuffle=1, displayiters=10,saveiters=500)

deeplabcut.evaluate_network(path_config_file,plotting=True)

deeplabcut.analyze_videos(path_config_file,videofile_path, videotype=VideoType)

deeplabcut.plot_trajectories(path_config_file,videofile_path, videotype=VideoType)

Original: https://blog.csdn.net/fjy930911/article/details/123690524
Author: SlOooow
Title: 使用DeepLabCut训练自己的数据

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/533495/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球