🐀训练您的第一个 DeepLabCut 模型 – 分步示例

type
status
date
slug
summary
tags
category
icon
password
本文来自:Training your first DeepLabCut Model – A step by step example | Guillermo Hidalgo Gadea,安装教程随着 DeepLabCut 官方的更新,有些已经不可用,仅供参考。
notion image
你有没有觉得除了你之外的每个人都在使用DeepLabCut,你开始感到被冷落了?(注:其实没有。)好吧,不要。立即开始您自己的机器学习项目,进行基于视频的跟踪和无标记姿势估计!
有关如何安装DeepLabCut的快速指南,请参阅上一篇文章:安装DeepLabCut-三步指南。如果您已经安装了它,我们开始吧。

您需要的内容

您将需要一台安装了 DeepLabCut 的计算机(不需要 GPU),以及一个有效的 Google 帐户,并在您的 Google Drive 中留出一些空间。如果你想立即开始,你可以在这里找到演示数据和代码,但如果你带上自己的视频和你想要跟踪的内容的初步想法,会更有趣。原始论文跟踪小鼠和其他动物的运动和姿势(Mathis等人,2018),但您也可以跟踪人类的面部表情(见此处),甚至在魔术期间硬币的位置(见Zaghi-Lara等人,2019)。这是你的第一个项目,做任何你想做的事!我很高兴听到这个消息,看看结果如何。

您将学到什么

在此示例中,您将训练机器学习模型来读取模拟时钟,只是为了实现自动化的乐趣。更重要的是,您将学习如何在DeepLabCut中创建一个新项目,如何标记框架以及如何不迷失在项目目录结构中。您还将学习如何在 jupyter 笔记本和 google colab 中使用 python 命令来训练和评估您的模型。最后但并非最不重要的一点是,您将使用新模型来分析视频数据。如何处理您的输出将在单独的帖子中解决,但现在,请欣赏您的跟踪视频。
注意:这只是帮助您入门的初学者指南。除了提供的 python 笔记本之外,我只建议花一些时间查看 Github 上的这些 DeepLabCut 资源,特别是为了开始分析您的真实数据。

让我们从一个例子开始:

DeepLabCut是关于跟踪视频帧中的移动对象的,这个例子是关于跟踪移动的时钟指针来读取模拟时钟。DeepLabCut工具箱既可以通过用户界面使用,也可以与脚本、笔记本中的python函数列表一起使用,也可以直接通过终端使用。虽然图形用户界面是最容易开始的,但我相信,了解表面之下使用的 python 函数对于清楚地理解分析过程至关重要。此外,当将分析转移到 google colab 以在云中使用他们的 GPU 时,python 笔记本将是唯一的出路。因此,从长远来看,从一开始就将用户界面和一组 python 函数结合起来将是非常有益的。
对于这个项目,我从 pexels.compixabay.com 收集了 14 个不同的库存视频,而不是使用自己的时钟滴答作响的视频。目标是建立一个不同外观的时钟的多样化数据集,而我没有那么多闲逛。
Video preview
一个典型的 DeepLabCut 项目包括以下 4 个步骤:
  • 创建项目并编辑 config.yaml 文件
  • 提取和标记帧
  • 训练模型以学习标记
  • 分析视频并提取坐标
这个过程可以通过在训练后评估模型、优化异常值标签、合并新框架和多次重新训练模型来随意扩展。整个过程的概述和相应的 python 命令可以在作为第 I 部分提供的 jupyter notebook 中找到。如果您的计算机上有 GPU,则可以按照以下步骤操作。因为对于我们大多数人来说,情况并非如此,至少在开始时,我们将从 DLC-CPU 环境工作,并将模型训练外包给 google colab 中的云计算环境。对于此步骤,您将需要作为第 II 部分提供的 colab 笔记本。

步骤 1:创建新项目

要创建新的 DeepLabCut 项目,可以从 jupyter notebook 运行以下行:
或者您可以启动 DeepLabCut 接口并设置与上述相同的参数:
notion image
创建项目后,在您的计算机中找到它,然后使用您喜欢的文本编辑器打开 config.yaml 文件。在“身体部位”部分中,列出了要从视频中跟踪的所有点。尽量保持有意义的顺序,因为这将是每一帧的标签顺序。
下面的剖面骨架是指最终的绘图配置。在这里,您可以定义要显示的身体部位之间的连接(例如,中心和小时之间的连接代表时钟中的时针),以及大小和颜色。
保存编辑后的配置文件并继续标记。

步骤 2:提取和标记框架

下一步包括从项目中的所有视频(即许多视频)中抽取所有帧,然后从每个视频中仅选择一小部分帧子样本进行手动标记。在 python 笔记本中,可以运行以下命令:
或者使用屏幕从 DeepLabCut GUI 中提取帧:
notion image
此过程完成后,检查终端输出中的消息,然后开始标记帧。这部分将花费最长的时间,喝杯咖啡,让自己舒服。您不想匆忙完成这部分,因为整体模型精度将取决于您标记这些帧的准确性。中间休息一下,然后坚持下去。
notion image

步骤 3:训练 DLC 模型

现在是需要额外 GPU 算力的时候了,所以你必须将整个 DLC 项目文件夹上传到 google drive 并打开 google colab notebook(注:国内不推荐,自己的实验数据更不推荐)。按照笔记本中的说明在 colab 环境中设置一些配置,挂载您的 google drive 存储并更新 config.yaml 文件中的项目目录路径。从标记的数据创建训练数据集,然后开始使用 colab 环境中的 GPU 访问来训练模型。这个过程需要很多小时,所以不要熬夜。我建议在晚上甚至周末进行训练。
notion image
注意:就我个人而言,我不想在发布之前将大型科学数据上传到谷歌驱动器上。在投资昂贵的 GPU 升级之前,Google colab 是学习 DeepLabCut 的一个很好的起点,但这并不是使用 google 来保存数据的建议。请自行承担使用风险。
在此示例中,我的模型在失去与 GPU 的连接之前运行了 36800 次迭代。对于演示,这完全没问题,但对于实际数据分析,建议运行 50k 到 200k 迭代。要从上次保存的迭代重新开始训练,我们需要在 dlc-models 目录中找到 train 子目录并查找最新的快照。打开同一文件夹中的 pose_cfg.yaml 文件,然后编辑参数 init_weights 以添加最后一个快照,不带任何文件类型结尾。然后,您将在一夜之间重新训练模型。

步骤 4:分析您的所有视频

如果一切按计划进行,您现在拥有自己的机器学习模型,可以识别您在手动标记过程中定义的标记。如前所述,建议评估和完善您的模型,直到达到所需的精度,但为了对 DeepLabCut 的工作原理有第一印象,您训练的任何模型现在都应该有效。
您可以继续在 google colab 中工作以完成下一部分,但不再需要 GPU。因此,我们将把项目文件夹下载到本地机器上,将配置文件中的路径目录改回原处,然后再次启动DeepLabCut。您必须加载现有的 config.yaml 文件,而不是创建一个新项目,然后跳转水龙头来分析您的视频、过滤坐标预测、创建轨迹图并创建带标签的输出视频。您甚至可以导出模型,并在所有未来的项目中跳过步骤 2 和 3。
这是使用上面训练的模型分析的标记视频之一,读取城堡塔楼上的时钟:
Video preview
主要 DLC 输出是每个视频的 csv 文件,其中包含每个视频帧处每个标记的坐标和预测精度。要开始处理您的 DeepLabCut 输出,请查看我的下一篇文章,了解如何分析这些坐标以提取运动、姿势或行为。如果您觉得自己很舒服,还可以查看我之前的帖子,了解如何使用无监督机器学习将 DeepLabCut 应用于面部表情分析
安装 DeepLabCut - 三步指南用于分析面部表情的快速机器学习指南
  • Twikoo