DeepLabCut使用教程之二--示例:Demo项目

引言

为快速深刻的理解 DeepLabCut,本文按照官方给出的案例做相关的讲解,具体的实践步骤在文件 DeepLabCut/examples/Demo_labeledexample_MouseReaching.ipynb  给出,如有兴趣,可直接参考官方文档。图片是DeepLabCut 的整体流程结构。 

本博客主要内容:
                       --绘制标记图像
                       --训练网络
                       --评估网络
                       --分析一个新的视频
                       --创建一个自动标记的视频
                       --绘制轨迹
                       --识别异常值框架
                       --手动注释异常值帧
                       --合并数据集并更新训练集
                       --训练网络
注意:此笔记本从已初始化的带有标记数据的项目开始。

开始操作:

(限于篇幅只讲解了流程,但没有对文件结构变化及相关的具体含义进行解释说明,有时间续写......)

# 激活环境
source activate deeplabcut-py36

# python 交互环境
python

导入相关库:

import deeplabcut
import tensorflow as tf
import os
from pathlib import Path

导入案例数据库:

加载数据前的文件结构

3 directories,24files
# 路径
path_config_file = os.path.join(os.getcwd(),'DeepLabCut-Felix/examples/Reaching-Mackenzie-2018-08-30/config.yaml')
# 加载数据
deeplabcut.load_demo_data(path_config_file)
# 注意文件夹的 文件变化

# 检查标签数据
deeplabcut.check_labels(path_config_file)

加载后文件结构变化

11 directories,30files 

训练数据:

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

# 建议训练半小时即可, ctrl+C 停止训练

训练期间,可以查看 GPU 状态:(本人电脑配置低,处于满负荷运转)

扫描二维码关注公众号,回复: 5873778 查看本文章

文件结构变化:(一个截屏呈现有点小,两个截屏)主要两点:一是 trian 文件夹中文件的增加;二是新增 reachingvideo1_labeled 文件,里面是照片。

13directories, 62files

 评估网络:

# ctrl + c 停止训练
# 开始评估模型
deeplabcut.evaluate_network(path_config_file,plotting=True)

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

对应的新增文件:

17directories, 84files

分析视频:

# 创建路径
videofile_path = ['/home/DeepLabCut-Felix/examples/Reaching-Mackenzie-2018-08-30/videos/MovieS2_Perturbation_noLaser_compressed.avi']
# 注意保存视频的目录下有两个视频,但不是同一个视频。
# 一个用于训练,一个(MovieS2_Perturbation_noLaser_compressed.avi)用于分析

# 分析视频
print("Start Analyzing the video!")
deeplabcut.analyze_videos(path_config_file, videofile_path )
# 需要较长的时间分析


新增两个文件:

创建带有标签的视频:


deeplabcut.create_labeled_video(path_config_file,videofile_path)

(此功能用于可视化目的,可用于创建带有预测标签的.mp4格式视频。此视频保存在(未标记的)视频所在的同一目录中。)即基于训练的效果,在之前用于分析的视频创建标签。

新增的标签视频目录:

绘制分析视频的轨迹:

(此函数绘制整个视频中所有身体部位的轨迹。每个身体部位都有一种独特的颜色。底层函数可以很容易地定制)新增的四幅图片在 videos 文件夹下的子文件夹 plot-poses。此时由上一步的 17 directories, 87 files 变成 19directories, 91 files。

deeplabcut.plot_trajectories(path_config_file,videofile_path,showfigures=True)

 

当提取异常值帧,预测结束

(这是可选步骤,允许在评估结果较差时添加更多训练数据。 在这种情况下,用户可以使用以下功能来提取错误预测标签的帧。 确保提供正确的“迭代”值,因为它将用于创建将保存提取的帧的唯一目录。)

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

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

20directories,133files

手动更正标签:

(此步骤允许用户更正提取的帧中的标签。)

deeplabcut.refine_labels(path_config_file)

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

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

20directories,135files

合并数据集:

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)

猜你喜欢

转载自blog.csdn.net/JACK_YOUNG007/article/details/88972780
今日推荐