案例研究:DeepLabCut 3D 姿态估计

micehandanim
使用 DeepLabCut 分析小鼠手部运动#
(来源:www.deeplabcut.org )

开源软件正在加速生物医学发展。DeepLabCut 利用深度学习实现动物行为的自动化视频分析。

——Alexander Mathis,洛桑联邦理工学院 (EPFL) 助理教授

关于 DeepLabCut#

DeepLabCut 是一个开源工具箱,使全球数百家机构的研究人员能够以极少的训练数据、达到人类水平的精度来追踪实验动物的行为。借助 DeepLabCut 技术,科学家可以更深入地了解跨动物物种和时间尺度的运动控制和行为的科学原理。

包括神经科学、医学和生物力学在内的多个研究领域都使用动物运动追踪数据。DeepLabCut 通过解析电影记录的动作,帮助理解人类和其他动物正在做什么。DeepLabCut 利用自动化完成繁琐的标记和监控任务,并结合基于深度神经网络的数据分析,使涉及观察动物(如灵长类动物、小鼠、鱼类、苍蝇等)的科学研究变得更快、更准确。

horserideranim
彩色点追踪赛马身体部位的位置#
(来源:Mackenzie Mathis)

DeepLabCut 通过提取动物姿态进行非侵入性行为追踪,这对于生物力学、遗传学、动物行为学和神经科学等领域的科学研究至关重要。在动态变化的背景下,从视频中非侵入性地测量动物姿态——无需标记——在技术上以及资源需求和所需训练数据方面都具有计算挑战性。

DeepLabCut 允许研究人员估算对象的姿态,从而通过基于 Python 的软件工具包有效地量化其行为。使用 DeepLabCut,研究人员可以从视频中识别出不同的帧,使用定制的 GUI 在几十帧中数字标注特定的身体部位,然后 DeepLabCut 中基于深度学习的姿态估计架构会学习如何在视频的其余部分以及其他类似的动物视频中识别出相同的特征。它适用于各种动物物种,从常见的实验动物如苍蝇和小鼠,到更不寻常的动物如猎豹

DeepLabCut 使用一种名为迁移学习的原理,这大大减少了所需的训练数据量,并加快了训练周期的收敛速度。根据需求,用户可以选择提供更快推理的不同网络架构(例如 MobileNetV2),这些架构还可以与实时实验反馈相结合。DeepLabCut 最初使用了来自一种顶尖的人体姿态估计架构的特征检测器,该架构名为DeeperCut,这也是其名称的灵感来源。现在该软件包已进行了重大修改,包含了额外的架构、增强方法和完整的用户前端体验。此外,为了支持大规模生物实验,DeepLabCut 提供了主动学习功能,用户可以随着时间的推移增加训练集,以覆盖边缘情况,并使其姿态估计算法在特定背景下更具鲁棒性。

最近,DeepLabCut 模型库被引入,它提供了适用于各种物种和实验条件的预训练模型,从灵长类动物的面部分析到狗的姿态。例如,这可以在云中运行,无需任何新数据标记或神经网络训练,也不需要编程经验。

主要目标和成果#

  • 科学研究中动物姿态分析的自动化

    DeepLabCut 技术的主要目标是在不同环境下测量和追踪动物的姿态。这些数据可用于例如神经科学研究,以了解大脑如何控制运动,或阐明动物如何进行社会互动。研究人员观察到 DeepLabCut 带来了十倍的性能提升。姿态可以离线推理,速度高达每秒 1200 帧 (FPS)。

  • 创建用于姿态估计的易于使用的 Python 工具包

    DeepLabCut 希望以易于使用的工具形式分享他们的动物姿态估计技术,以便研究人员轻松采用。因此,他们创建了一个完整、易用的 Python 工具箱,其中也包含了项目管理功能。这些功能不仅实现了姿态估计的自动化,还通过帮助 DeepLabCut 工具包用户从数据集收集阶段到创建可共享和可重用的分析管道,实现了项目的端到端管理。

    他们的工具包现已开源。

    典型的 DeepLabCut 工作流程包括

    • 通过主动学习创建和完善训练集
    • 为特定动物和场景创建定制的神经网络
    • 用于视频大规模推理的代码
    • 使用集成可视化工具进行推理
dlcsteps
DeepLabCut 姿态估计步骤#
(来源:DeepLabCut)

挑战#

  • 速度

    快速处理动物行为视频,以便测量其行为,同时提高科学实验的效率和准确性。在动态变化的背景下,无需标记地提取实验动物的详细姿态,在技术上以及资源需求和所需训练数据方面都具有挑战性。开发一个易于使用的工具,无需计算机视觉等专业技能,使科学家能够在更真实的场景中进行研究,这是一个不容忽视的难题。

  • 组合性

    组合性涉及将多个肢体的运动组装和整合为单个动物行为。将关键点及其连接组装成单个动物的运动,并跨时间将它们链接起来是一个复杂的过程,需要大量的数值分析,特别是在实验视频中追踪多动物运动的情况下。

  • 数据处理

    最后但同样重要的是,数组操作——处理对应于各种图像、目标张量和关键点的大量数组堆栈——相当具有挑战性。

challengesfig
姿态估计的多样性和复杂性#
(来源:Mackenzie Mathis)

NumPy 在应对姿态估计挑战中的作用#

NumPy 解决了 DeepLabCut 技术在行为分析方面高速数值计算的核心需求。除了 NumPy,DeepLabCut 还采用了多种以 NumPy 为核心的 Python 软件,例如 SciPyPandasmatplotlibTensorpackimgaugscikit-learnscikit-imageTensorflow

NumPy 的以下特性在解决 DeepLabCut 姿态估计算法中的图像处理、组合性要求和快速计算需求方面发挥了关键作用

  • 矢量化
  • 掩码数组操作
  • 线性代数
  • 随机采样
  • 大型数组的重塑

DeepLabCut 在工具包提供的工作流程中全面利用了 NumPy 的数组功能。特别是,NumPy 用于对不同的帧进行采样以进行人工标注,以及用于编写、编辑和处理标注数据。在 TensorFlow 中,DeepLabCut 技术通过数千次迭代训练神经网络,以从帧中预测真实标注。为此,会创建目标密度(得分图)以将姿态估计转换为图像到图像的翻译问题。为了使神经网络具有鲁棒性,采用了数据增强,这需要根据各种几何和图像处理步骤计算目标得分图。为了加快训练速度,利用了 NumPy 的矢量化能力。对于推理,需要从目标得分图中提取最可能的预测,并且需要有效地“将预测链接起来以组装单个动物”。

workflow
DeepLabCut 工作流程#
(来源:Mackenzie Mathis)

总结#

观察和有效描述行为是现代动物行为学、神经科学、医学和技术的核心原则。DeepLabCut 允许研究人员估算对象的姿态,从而有效地量化其行为。DeepLabCut Python 工具箱仅需少量训练图像,即可训练神经网络达到人类水平的标注精度,从而将其应用范围扩展到不仅是实验室行为分析,还包括潜在的体育、步态分析、医学和康复研究。DeepLabCut 算法所面临的复杂组合性、数据处理挑战,均通过使用 NumPy 的数组操作功能得到解决。

numpy benefits
利用的 NumPy 主要功能#

在本页