DeepLabCut使用Demo项目示范

官方详细的教程地址https://github.com/AlexEMG/DeepLabCut/blob/master/examples/Demo_labeledexample_MouseReaching.ipynb

本博客主要内容:

                      --导入相关库
                       --加载demo数据(官方提供)
                       --训练网络
                       --评估网络
                       --分析一个新的视频
                       --创建一个自动标记的视频
                       --绘制分析视频的轨迹
                       --提取异常帧                     

                       --手动注释异常值帧
                       --合并数据集并更新训练集
                       --再次训练网络

导入相关库

#激活环境
source activate deeplabcut-py36
#进入python交互环境
python
#导入相关库
import tensorflow as tf
import deeplabcut
import os
from pathlib import Path

加载demo数据:

加载之前的文件的文件结构是这样的:

#定义一个变量来设置config.yaml地址,也就是说找到config.yaml的地址,然后交给path_config_file
path_config_file = os.path.join(os.getcwd(),''Reaching-Mackenzie-2018-08-30/config.yaml')
print(path_config_file)
#加载数据
deeplabcut.load_demo_data(path_config_file)
#检查数据标签
deeplabcut.check_labels(path_config_file)

加载之后文件的变化:

训练数据:

deeplabcut.train_network(path_config_file,shuffle=1,saveiters=300,displayiter=10)
#训练大约 30分钟后,ctrl+c手动停止训练

训练期间,可以查看 GPU 状态:

文件结构变化:主要两点:一是 trian 文件夹中文件的增加;二是新增 reachingvideo1_labeled 文件,里面是照片。

评估训练网络:

deeplabcut.evaluate_network(path_config_file,plotting=True)

# 此函数用于评估特定训练状态(快照)或所有状态下特定随机播放/随机播放的训练模型。
# 在数据集(图像)上对网络进行评估,并将结果作为.csv文件存储在评估结果下的子目录中

根据设置,有时会出现一些“matplotlib错误,但这些错误并不重要。现在你可以去看看照片了。因为需要大约20分钟。

分析视频

#创建新的视频路径
videofile_path = os.path.join(os.getcwd(),'Reaching-Mackenzie-2018-08-30/videos/reachingvideo1.avi')
# 注意保存视频的目录下选择一个视频即可

print("Start Analyzing the video!")

#分析视频,需要大概10分钟……
deeplabcut.analyze_video(path_config_file,[videofile_path])

对应的新增文件:

创建一个自动标记的视频

这个函数是创建带有预测标签的.mp4视频。这个视频与未标记的视频保留在一个目录下

deeplabcut.create_labeled_video(path_config_file,[videofile_path], draw_skeleton=True)

绘制轨迹

此函数绘制整个视频中所有身体部位的轨迹。每个身体部位都有一种独特的颜色。底层函数可以很容易地定制

%matplotlib notebook
deeplabcut.plot_trajectories(path_config_file,[videofile_path],showfigures=True)

此时结束后,多了两个文件:

提取异常帧         

这一步骤是可选择步骤,当结果不太令人满意且需要更多的样本时,使用这个函数来提取错误预测标签的帧。

deeplabcut.extract_outlier_frames(path_config_file,videofile_path,outlieralgorithm='uncertain',p_bound=.2)

此时,新增一个文件夹,里面保存的新增提取的帧

手动更改标签:

此步骤是让用户更正提取帧中的标签。

deeplabcut.refine_label(path_config_file)

此时会弹出GUI窗口,手动更改标签:

合并数据集:

deeplabcut.merge_datasets(path_config_file)

创建训练数据集的新迭代,检查并训练...(现在剩下的步骤便是重复上面的步骤,在新的数据集上训练)

# 检查标签
deeplabcut.check_labels(path_config_file)
 
# 创建训练数据集
deeplabcut.create_training_dataset(path_config_file)

重新训练

# 在新的数据集重新训练
deeplabcut.train_network(path_config_file)
发布了16 篇原创文章 · 获赞 1 · 访问量 4001

猜你喜欢

转载自blog.csdn.net/Wu_whiteHyacinth/article/details/104796809