【DeepLabCut】初识姿势估计 | DeepLabCut教程 | 单动物实现

📢前言:姿势估计作为计算机视觉领域中的一个重要分支,本章将介绍姿势估计和一个用于姿势估计的工具。并以斑马鱼的运动视频为例,手把手教你如何用deeplabcut训练自己的数据。

目录

Ⅰ  初识姿势估计 

0x00 姿势估计介绍

Ⅱ 初识姿势估计工具:DeepLabCut

0x00 简单介绍

0x01 工作流程

Ⅲ  实际演示

0x00 运行DeepLabCut

0x01 创建项目

0x02  标记数据

0x03 训练过程


Ⅰ  初识姿势估计 

0x00 姿势估计介绍

姿势估计(Pose Estimation)是指从图像或视频中识别和推断人体或物体的姿势或关节位置的过程。它是计算机视觉领域中的一个重要任务,具有广泛的应用领域,包括人机交互、运动分析、医疗诊断、安防监控等。

姿势估计是指通过计算机视觉和机器学习技术,从图像或视频数据中推断出目标物体或人体的姿势信息,即确定其关节的位置和姿态。姿势估计在许多领域中都有广泛的应用,包括人机交互、行为分析、运动捕捉、姿势识别等。

姿势估计可以分为两类:2D姿势估计和3D姿势估计。

  1. 2D姿势估计:2D姿势估计旨在从二维图像中推断出目标物体或人体的关节点位置。通常采用的方法是使用深度学习技术,通过训练模型来学习从图像中检测和定位关节点。常见的2D姿势估计方法包括基于人工标记数据的姿势估计和基于单人姿势估计的方法。

  2. 3D姿势估计:3D姿势估计旨在从图像或视频中推断出目标物体或人体的三维关节位置和姿态。由于从单个图像中无法直接获取深度信息,因此3D姿势估计是一个具有挑战性的问题。常见的方法包括基于多视角的3D姿势估计、基于深度学习的3D姿势估计和基于运动捕捉系统的3D姿势估计。

❓问题1:常见的姿势估计的方法有哪些呢?

  1. 基于关键点的方法:这是最常见和广泛应用的姿势估计方法之一。它通过检测和定位目标物体或人体的关节点来推断姿势信息。这些关节点通常代表身体的关键部位,如头部、肩膀、手臂、腿部等。该方法通常使用机器学习技术,如卷积神经网络(CNN)和图像处理算法,对关节点进行检测和定位。

  2. 基于模型的方法:这种方法利用预定义的人体模型或姿势模型来推断姿势信息。模型可以是基于物理学原理的刚体模型或者是统计学模型,如人体骨架模型或隐变量模型。基于模型的方法通常需要先进行模型拟合或参数估计,然后根据拟合结果推断姿势。

  3. 基于深度学习的方法:随着深度学习的发展,基于深度学习的姿势估计方法获得了很大的成功。这些方法使用深度神经网络来学习从图像或视频中直接推断姿势信息。常见的深度学习模型包括卷积神经网络(CNN)、递归神经网络(RNN)和卷积神经网络与长短期记忆网络(CNN-LSTM)等。

  4. 基于传感器的方法:除了使用图像和视频数据,还可以使用其他传感器数据来进行姿势估计。例如,使用惯性测量单元(IMU)或深度摄像头(如Microsoft Kinect)获取的深度和运动信息。这些传感器可以提供更丰富的数据,用于姿势估计和运动捕捉。

  5. 结合方法:姿势估计的方法也可以结合多种技术和方法,以提高准确性和鲁棒性。例如,可以结合基于关键点和基于模型的方法,或者将传感器数据与视觉数据相结合,实现多模态姿势估计。

❓问题2:常见的姿势估计的工具有哪些呢?

  1. OpenPose:OpenPose是一个开源的姿势估计工具,使用深度学习技术实现对人体姿势的估计。它可以检测和定位人体的关节点,并生成与姿势相关的信息,如关节角度和身体姿态等。

  2. DeepPose:DeepPose是一个基于深度学习的姿势估计框架,由微软研究院开发。它使用卷积神经网络(CNN)来实现对人体关节点的检测和定位,能够在复杂背景和遮挡情况下进行准确的姿势估计。

  3. DeepLabCut:DeepLabCut是一个开源的姿势估计工具,主要用于动物行为学研究。它使用深度学习技术进行身体部位的识别和跟踪,可以用于分析和解释动物的运动模式和行为。

  4. MediaPipe Pose:MediaPipe Pose是Google开发的一个实时姿势估计框架,提供高效的姿势估计算法和预训练模型。它可以在移动设备和桌面平台上实现实时的姿势跟踪,并支持多人姿势估计。

  5. Kinect:Kinect是微软推出的一款深度摄像头设备,可以实现对人体姿势的实时跟踪。它结合了RGB图像和深度信息,通过自带的软件进行姿势估计和运动捕捉,广泛应用于游戏、虚拟现实和运动分析等领域。

既然提到了姿势估计,那肯定离不开另外一个技术:姿势识别

姿势识别(Pose Recognition)是指通过计算机视觉和机器学习技术,对特定的姿势或动作进行分类和理解。姿势识别的目标是将从图像或视频中提取的姿势信息与预定义的动作类别进行匹配,或者进行行为分析和动作识别。

姿势识别可以分为两个主要方面:

  1. 姿势分类:姿势分类是指将输入的姿势或动作与预定义的类别进行匹配。这需要训练一个分类模型,通过学习不同动作类别的特征和模式,来对输入的姿势进行分类。例如,可以识别出人体的站立、行走、跑步、举手等动作。

  2. 行为分析:行为分析旨在理解和分析特定的动作序列或行为模式。与姿势分类不同,行为分析更注重动作的上下文和序列信息。它涉及对一系列动作的分析,以推断出整个行为的含义和目的。例如,在体育领域,可以识别出篮球运动员的投篮动作、传球动作和防守动作,并分析出战术策略和技术能力。

❓问题3:姿势估计和姿势识别有什么区别呢?

可以说,姿势估计和姿势识别是两个相关但不同的概念。

姿势估计旨在从图像或视频数据中推断出目标物体或人体的姿势信息,即确定其关节的位置和姿态。

姿势识别旨在识别和理解特定姿势或动作的意义。它涉及对姿势进行分类或标记,以识别特定的动作或姿势模式。

姿势估计关注的是从图像或视频中推断出目标物体或人体的关节点位置和姿态,而姿势识别关注的是对特定姿势或动作进行分类和理解。姿势估计是实现姿势识别的基础,而姿势识别则在更高层次上对姿势进行语义理解和分析。两者相辅相成,共同为人体行为分析和人机交互提供重要的技术支持。

Ⅱ 初识姿势估计工具:DeepLabCut

0x00 简单介绍

本篇主要介绍一个用于姿态估计和运动跟踪的开源软件工具:DeepLabCut(DLC),并介绍该如何使用该工具对录制的视频进行姿势估计。

DeepLabCut基于深度学习技术,通过对图像和视频数据进行训练,能够识别和跟踪特定物体或生物的身体部位。它主要应用于行为学、神经科学和运动学等领域,在实验室研究和动物行为分析中得到广泛应用。

0x01 工作流程

DeepLabCut的工作流程包括以下几个步骤:

  1. 数据采集:使用摄像机记录目标物体或生物的行为,并生成图像或视频数据集。采集的数据应涵盖各种行为和姿势的变化,以及不同视角和环境条件下的情况。

  2. 标记数据:在数据集中手动标记目标物体或生物的身体部位。DeepLabCut提供了一个可视化界面,允许用户在每个帧中标记关键点或身体部位。这些标记将用于训练深度学习模型。

  3. 数据预处理:在训练模型之前,需要对数据进行预处理。这可能包括图像或视频的裁剪、大小调整、亮度和对比度的调整等,以确保数据质量和一致性。

  4. 训练网络:使用标记数据训练深度学习模型。DeepLabCut使用卷积神经网络(CNN)来学习从图像中检测和定位目标物体的身体部位。训练过程中,模型将学习关键点的空间位置和特征,以便在后续的测试中准确地识别和跟踪目标。

  5. 测试和优化:对测试数据进行预测和验证,评估训练好的模型的性能。可以使用未标记的数据集来测试模型的泛化能力和准确性。根据需要,可以对模型进行调整和优化,以提高其性能。

  6. 应用于新数据:使用训练好的模型对新的图像或视频数据进行姿态估计和运动跟踪。模型将识别和跟踪目标物体的关键点,并输出其位置和姿态信息。这些信息可以用于进一步的分析和研究,例如行为分析、运动模式分析等。

Ⅲ  实际演示

0x00 运行DeepLabCut

🚩注:这里默认读者已经安装好DeepLabCut,DLC共有两个版本,分别为GPU和CPU版本。

打开Anaconda Prompt

 首先激活你为deeplabcut配置好的环境(建议大家创建一个新环境

 我设置的环境名称为DLC1

activate DLC1

进入ipython界面

ipython

打开deeplabcut

import deeplabcut
deeplabcut.launch_dlc()

 示例图如下:

 进入deeplabcut的页面,如下图:

0x01 创建项目

点击Manage Project 

  • 如果创建新的项目,点击create new project
  • 如果导入已有的项目,点击load existing project

本篇以创建一个新的项目且项目中用到的视频为单动物(即视频中只有一只运动的动物)为例,

视频内容为一条运动的斑马鱼。

首先创建新的项目,并为项目命名;选择一个地方存放

点击OK,再点击Edit config file。

对原文件进行编辑,内容包括:从视频中提取多少张照片进行标记,标记点的大小,设计哪些标记点以及标记点之间的联系等等。

可选择用记事本方式打开(示意图仅展示需要修改的地方):

 修改前的代码如下:

 修改bodyparts,skeleton,numframes2pic部分,按需修改skeleton_color(连接处的颜色),dotsize(标记点的大小)等。

本次演示需要标记斑马鱼的头部与尾部,由于视频中斑马鱼较小,所以修改dotsize,标记的更精细。

设置numframes2pick为20,从视频中截取20张图片用于标记

🚩注:skeleton部分为需要连接的部分,如需要将头部和尾部之间建立骨架(通俗说就是要连在一起),可在skeleton部分写出,格式为:

--head
 -tail

🚩注: numframes2pick部分为从视频中截取x张图片用于标记,此处设置为默认值20张。

0x02  标记数据

 修改结束后保存,进入Extract frames

可以选择自动提取,或者人工手工提取图片,是否裁剪框架等,可以根据需要自己选择。

可选择不同的算法进行提取,这里选择kmeans。

点击OK,进入Label frames

点击Label frames,再点击load frames对图片进行标记

🚩注:等终端显示successfully extracted时再进行下一步

 选择提取好的图片进行标记:

进入标记页面:

先介绍一下底部的按钮:

  • Home:回到当前主页面
  • Help:查看帮助文档
  • Zoom:将选中的区域放大(效果如下图)
  • Save:保存标记好的图片 

介绍一下右侧的按钮: 

由于斑马鱼较小,所以使用Zoom工具放大,并按鼠标右键进行标记。

 🚩注:若不小心标记错误,可以用鼠标左键进行拖动,移动到想要标记的地方。

此前numframes2pick的值为20,故一共要标记20张,标记完成后点击save。

0x03 训练过程

点击Create training dataset,创建训练数据集。

可以选择不同的经典网络模型进行训,如resnet_50,resnet_101等。

这里我们选择resnet_101为训练网络。

 可以选择不同的图像增强的方法 ,这里选择默认的imgaug。

可选择不同的网络进行比较:

 这里只选择resnet_101为训练网络,暂不比较其他网络。

点击ok,完成数据集的创建,点击Train network

在源文件中修改训练参数,如下图:

 分别修改display_iters, multi_step, save_iters

简单介绍一下这三个参数:

  • display_iters(显示迭代次数):它指定了在训练过程中每隔多少个迭代就显示一次训练损失或其他指标。通过显示训练过程中的指标,可以及时监控模型的训练进展和性能。

  • multi_step(多步调整学习率):它是一个列表或元组,用于指定在训练过程中何时调整学习率。通常,学习率在训练过程中会进行调整以提高模型的收敛性和性能。multi_step中的每个值表示在训练过程中经过多少个迭代后进行一次学习率调整。

  • save_iters(保存迭代次数):它指定了在训练过程中每隔多少个迭代就保存一次模型。通过定期保存模型,可以在训练过程中保留模型的中间状态,以防止意外中断或用于后续的模型评估和推理。

这里设置为:

 点击Update the parameters,更新修改后的参数。

得到如下示例图:

 点击ok,开始训练。

终端中显示“Staritng training”:

 🚩注:训练所花费的时间和迭代次数,电脑的显存,选择的训练网络等因素有关

训练中...... 

 训练完成后,点击Evaluate network

点击RUN Evaluate network,若不需要编辑视频,可直接进入Analyze videos

 若想要得到斑马鱼的运动的轨迹坐标图,可点击Want to plot the trajectories,并选择想要生成的部位。

 

 生成的运动轨迹坐标图可在项目——videos——plot_poses——1中找到:

 运动轨迹坐标图示例:

点击Step 1:Analyze Videos,分析结束后,进入Create videos

若想要生成的视频包含骨架,可点击Build skeleton,人工绘制骨架。

如果觉得标记点不够准确或视频效果不好,可点击Extract outlier framesRefine labels,进一步的提高标记点和视频的质量,本篇不再赘述。

💎如果在运行DeepLabCut的过程中出现问题,欢迎大家在评论区讨论,也可以在评论区留言,作者看到都会回复!

END


📝因为作者的能力有限,所以文章可能会存在一些错误和不准确之处,恳请大家指出!

### 回答1: PSPICE 17.2 是一种用于电子电路仿真和分析的软件工具。下面是一份简的 PSpice 17.2 使用初级教程: 1. 安装和启动:首先,你需要下载并安装 PSpice 17.2 软件。安装完成后,双击图标启动软件。 2. 创建电路:在软件界面上,选择“文件”>“新建”,然后在电路编辑器中创建你的电路。你可以从元件库中选择组件,并将其拖放到画布上。连接元件的引脚以构建电路。 3. 设置元件参数:双击元件以打开元件参数设置对话框。在对话框中,设置元件的值、名称和其他参数。对于电阻、电容等基本元件,可以直接输入数值。 4. 设置仿真配置:选择“仿真”>“设置和校验”,然后在仿真设置对话框中选择仿真的类型和参数。你可以选择直流分析、交流分析、暂态分析等。设置仿真参数后,点击“确定”。 5. 运行仿真:选择“仿真”>“运行”来启动仿真。在仿真过程中,软件将模拟电路的响应,并将结果输出到仿真波形窗口中。 6. 查看仿真结果:在仿真波形窗口中,你可以查看各个元件的电流、电压等参数随时间变化的波形。你还可以对波形进行放大、缩小、平移等操作,以更详细地分析电路的性能。 7. 保存和导出结果:在仿真过程中,你可以选择将结果保存为文件或导出为其他格式,如图像文件或数据文件。 以上是 PSpice 17.2 使用初级教程的基本步骤。随着实践的深入,你可以进一步了解复杂电路的建模和分析方法,并尝试更高级的功能和技术。 ### 回答2: PSPICE 17.2是一款电子电路仿真软件,用于对电路进行分析和验证。以下是PSPICE 17.2的使用初级教程: 1. 下载和安装:在官方网站上下载PSPICE 17.2并进行安装。 2. 组件库:打开PSPICE软件后,点击“Capture CIS”图标,进入组件库界面。选择适当的电子元件,如电阻、电容、二极管等,将它们拖放到画布上。 3. 电路连接:在画布上拖放所需元件后,使用导线工具连接它们。点击导线图标,选择合适的连接方式,并将其拖动到适当的端口上。 4. 参数设定:双击元件,弹出元件属性对话框。在这里设置元件的数值,例如电阻的阻值、电容的电容值等。 5. 电源设置:在画布上点击右键,选择“Power Sources”,然后选择适当的电源,如直流电源或交流电源。设置电源的电压或电流数值。 6. 仿真设置:点击画布上方的“PSpice”选项,选择“Edit Simulation Profile”打开仿真配置对话框。在仿真配置中,设置仿真参数,如仿真类型(直流、交流、脉冲等)、仿真时间等。 7. 仿真运行:在仿真配置对话框中点击“Run”按钮,开始进行电路仿真运行。仿真完成后,可以查看并分析仿真结果,如电流、电压、功率等。 8. 结果分析:通过菜栏中的“PSpice>Probe”选项,打开特定信号的仿真结果。通过选择信号节点,可以显示该信号的波形、幅值和频谱等信息。 9. 数据输出:仿真结束后,可以通过“PSpice>Results”菜栏选项,导出仿真结果到文本文件,以供后续分析。 10. 误差调整:如果仿真结果与预期不符,可以检查电路连接、元件参数等以找出问题。根据需要进行调整,重新运行仿真以验证改进效果。 以上就是PSPICE 17.2使用初级教程的简要介绍。在使用过程中,请参考软件的帮助文件和官方文档,以获取更详细的指导和解决方法。任何新的软件都需要不断的实践和尝试,希望这个教程能对你有所帮助。 ### 回答3: PSPICE 17.2是一款常用的电路仿真软件,用于电路设计和分析。下面是一个简要的PSPICE 17.2的初级教程: 1. 下载和安装:首先,从官方网站下载PSPICE 17.2,并按照安装向导进行安装。安装完成后,打开软件。 2. 创建新工程:在PSPICE 主界面上,点击“File”菜,然后选择“New Project”来创建一个新的工程。给工程起一个适当的名字,并选择工程的存储位置。 3. 添加电路元件:在工程界面上,点击“Place”图标,然后选择不同的元件来构建你的电路。你可以从库中选择各种电子元件,如电阻、电容、电感等,并将它们拖放到工程界面上。 4. 连接元件:选择“Wire”图标,然后点击元件的引脚来连接它们。确保连接顺序正确,以保证电路的正确性。 5. 设置元件参数:对于每个添加的元件,你需要设置它们的参数。右键点击元件,选择“Edit Propertiess”,然后在弹出的窗口中输入适当的参数值。 6. 添加电源:在电路中添加电源,以提供电路所需的电能。选择“Place”图标,然后选择合适的电源元件并将其拖放到电路中。同样,设置电源的参数值。 7. 设置仿真配置:在工程界面上,点击“PSpice”菜,然后选择“Edit Simulation Profile”来设置仿真配置参数。你可以选择仿真类型、仿真时间和仿真步长等。 8. 运行仿真:点击“PSpice”菜,选择“Run”来运行仿真。PSPICE将自动运行仿真并显示结果。 9. 分析和优化:根据仿真结果,可以分析和优化电路的性能。你可以观察电流、电压和功率等参数,以评估电路的性能,并根据需要进行调整。 10. 保存和导出结果:在分析和优化完成后,可以保存你的工程并导出结果。点击“File”菜,选择“Save Project”来保存工程,然后选择“Outut”菜,选择“Export”来导出结果。 以上是PSPICE 17.2的初级教程的简要介绍。通过以上步骤,你可以开始使用PSPICE 17.2进行电路设计和仿真。在实践中不断探索和学习,你将成为一个熟练的PSPICE用户。
评论 37
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流继承

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值