使用DeepLabCut训练自己的数据

1. Deeplabcut安装

1.1 下载安装文件

安装地址

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

在这里插入图片描述

1.2 创建环境并安装

选择Anaconda目录下的Anaconda Navigator

在这里插入图片描述

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

在这里插入图片描述
选中后点击import即可安装DEEPLABCUT

在这里插入图片描述

2. 模型训练

2.1 训练前准备

使用Anaconda Navigator进入

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

在这里插入图片描述

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

import deeplabcut

deeplabcut.launch_dlc()

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

2.2 模型标注

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

在这里插入图片描述

抽取关键帧

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

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

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

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

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

在这里插入图片描述

关键点标注设置

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

在这里插入图片描述

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

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

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

在这里插入图片描述

修改完的文件如下

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

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

在这里插入图片描述

然后回到界面,选择Label frames

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

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

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

在这里插入图片描述

全部选完后就可以点击OK

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

在这里插入图片描述

2.3 正式训练

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

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

在这里插入图片描述

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

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

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

在这里插入图片描述

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

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

在这里插入图片描述

接下来的事情就很简单了

# 设置
ProjectFolderName = 'dog-S10ow-2022-03-09'
VideoType = 'mp4' 

#这里不需要修改
videofile_path = ['./videos/test.mp4'] #Enter the list of videos or folder to analyze.
videofile_path
import os
os.environ["DLClight"]="True"
import deeplabcut
#设置config.yaml的位置
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')
#开始训练 displayiters=多久展示一次结果;saveiters=多久保存一次结果
#需要注意的是,这里的训练是持续进行的,自己觉得OK了就点停止
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)
  • 3
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
您可以将DeepLabCut训练数据导入MySQL数据库,以下是一种可能的方法: 1. 创建一个MySQL数据库,确保已经安装了MySQL服务器并设置好相应的权限。 2. 在数据库中创建一个表,用于存储DeepLabCut训练数据的相关信息。您可以根据需要定义表的结构,例如可以包括图像文件名、标记点坐标、标签等字段。 3. 在Python使用MySQL连接库(例如`mysql-connector-python`)连接到MySQL数据库。 4. 使用DeepLabCut库加载训练数据,并遍历每个数据点。 5. 将每个数据点的相关信息插入到MySQL数据库的表中,可以使用SQL的`INSERT INTO`语句实现。您可以使用参数化的方式来插入数据,以防止SQL注入攻击。 以下是一个简单的示例代码: ```python import mysql.connector import deeplabcut # 连接到MySQL数据库 cnx = mysql.connector.connect(user='your_username', password='your_password', host='your_host', database='your_database') cursor = cnx.cursor() # 创建表 create_table_query = """ CREATE TABLE IF NOT EXISTS deeplabcut_data ( id INT AUTO_INCREMENT PRIMARY KEY, image_filename VARCHAR(255), x_coordinate FLOAT, y_coordinate FLOAT, label VARCHAR(255) ) """ cursor.execute(create_table_query) # 加载DeepLabCut训练数据 deeplabcut.load_data('path_to_training_data') # 遍历每个数据点并插入到数据库 for data_point in deeplabcut.get_data(): image_filename = data_point['image_filename'] x_coordinate = data_point['x_coordinate'] y_coordinate = data_point['y_coordinate'] label = data_point['label'] insert_data_query = """ INSERT INTO deeplabcut_data (image_filename, x_coordinate, y_coordinate, label) VALUES (%s, %s, %s, %s) """ cursor.execute(insert_data_query, (image_filename, x_coordinate, y_coordinate, label)) # 提交更改并关闭连接 cnx.commit() cursor.close() cnx.close() ``` 请注意,上述代码仅为示例,您需要根据自己的实际情况进行相应的修改和调整。另外,建议在插入大量数据使用事务来提高性能和数据完整性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值