姿态识别入门 DeepPose: Human Pose Estimation via Deep Neural Networks

计算机视觉之姿态识别(原理+代码实操) 计算机视觉中的姿态识别原理+模型介绍,同时通过代码实操简单的演示基于mediapipe的单人姿态识别。 阅读详情

研究背景

人体姿态识别被定义为人体关键点的定位问题,一直以来是计算机视觉领域的重要关注点。这一问题有着一些常见的挑战,比如各式各样的关节姿态,小得难以看见的关节点,遮蔽的关节点,需要根据上下文判断的关节点,而这个领域主流的工作是各式样的关节姿态。
此前的姿态估计都是基于局部的为关节建模,这种方式对于表示能力是很有局限性的,因为它使用局部探测器,只能是为身体关节点之间所有关系的部分子集建立模型,很有局限性。于是作者提出了以整体的方式来预测人体关节点的方法,使用DNN强大的性能来处理人体关节点的预测。DNN有着强大的分类和定位能力,在此之前并没有人来使用DNN(Deep Neural Networks)对人体关节点的定位,作者Alexander Toshev和Christian Szegedy是第一个DNN应用于人体关节点检测的人。

作者将人体姿态估计定为关节点回归的问题,并且给出了如何将DNN用于人体关节点回归的方式,每一关节点的定位使用一整幅图像输入到7层CNN来做回归,这种做法又两个优点:

  1. DNN可以捕获每个人体关节点的全部上下文信息,每一个关节点回归都使用一整张图像的信息。
  2. 深度学习的方法特比容易实现,不需要显式地设计特征提取器和局部探测器,不需要为关节点建立拓扑结构和关节间的关系,通用的CNN可以用来解决这些问题。

更进一步,作者使用级联的DNN-based 姿态检测器。这种级联的检测器能够增加关节点定位的精确度。首先在一整幅图像上进行粗略的姿态估计,然后使用多个DNN-based 回归器对关节点的邻域子图像(有更高的分辨率)优化预测结果。

DNN for Pose Estimation

数学表示

人体的一个姿态可以用kkk个人体关节点的位置来表示,表示为向量
y=(⋯ ,yiT,⋯ )T,i={1,⋯ ,k} y = (\cdots, y_i ^ T, \cdots)^T, i = \{1, \cdots, k\} y=(⋯,yiT​,⋯)T,i={1,⋯,k}
yiy_iyi​表示第iii个关节点的坐标,一个带有标签的图像表示为(x,y)(x, \textbf{y})(x,y),检测框boxboxbox由b=(bc,bw,bh)b=(b_c, b_w, b_h)b=(bc​,bw​,bh​)表示,bcb_cbc​表示预测之后关节点的位置,表示需要剪裁图像的中心,bwb_wbw​表示图像的宽,bhb_hbh​表示图像的高,并且使用
N(yi,b)=(1/bw001/bh)(yi−bc)(1) N(\textbf{y}_i, b)=\begin{pmatrix} 1/b_w & 0 \\ 0 & 1/b_h \\ \end{pmatrix}(\textbf{y}_i-b_c) \tag{1} N(yi​,b)=(1/bw​0​01/bh​​)(yi​−bc​)(1)
将每个关节点的图像用这个boxboxbox的绝对坐标转换为相对坐标,并且将关节点yiy_iyi​标准化(这里的标准化也会将关节点周围的坐标相对化),例如N(x)\textbf{N}(x)N(x)表示将整幅图像标准化,就是将坐标原点移到图像中心位置,N(x;b)\textbf{N}(x;b)N(x;b)就是用box(bc,bw,bh)box(b_c,b_w,b_h)box(bc​,bw​,bh​)截取图像xxx对应部分,并且在boxboxbox做标准化处理。N(y;b)=(⋯ ,N(yi;b)T,⋯ )TN(\textbf{y};b)=(\cdots, N(\textbf{y}_i;b)^T,\cdots)^TN(y;b)=(⋯,N(yi​;b)T,⋯)T表示对每个关节点都进行box bbox \ bbox b的标准化处理。
作者将姿态估计当做回归问题来解决的,作者使用ψ(x;θ)∈R2k\psi(x;\theta)\in\textbf{R}^{2k}ψ(x;θ)∈R2k表示一个模型对图像xxx处理的标准化姿态向量,用下公式表示对预测的姿态向量的绝对坐标表示:
y∗=N−1(ψ(N(x);θ))(2) y^*=N^{-1}(\psi(N(x);\theta)) \tag{2} y∗=N−1(ψ(N(x);θ))(2)
由公式(2)知,应当也对训练集进行标准化处理:
DN={f(N(x),N(y)∣(x,y)∈D}(3) D_N = \{ f(N(x),N(\textbf{y})|(x, \textbf{y})\in D\} \tag{3} DN​={f(N(x),N(y)∣(x,y)∈D}(3)
所使用的损失函数是L2损失,那么模型可以写为:
arg⁡min⁡θ∑(x,y)∈DN∑i=1k∣∣y−ψ(x;θ)∣∣2(4) \mathop{\arg\min}\limits_{\theta}\sum_{(x,y)\in D_N}\sum_{i=1}^k||\textbf{y}-\psi (x;\theta)||^2 \tag{4} θargmin​(x,y)∈DN​∑​i=1∑k​∣∣y−ψ(x;θ)∣∣2(4)

模型框架

在这里插入图片描述
模型结构:
C(55×55×96)−LRN−P−C(27×27×256)−LRN−P−C(13×13×384)−C(13×13×256)−P−F(4096)−F(4096)C(55\times55\times96)-LRN-P-C(27\times27\times256)-LRN-P-C(13\times13\times384)-C(13\times13\times256)-P-F(4096)-F(4096)C(55×55×96)−LRN−P−C(27×27×256)−LRN−P−C(13×13×384)−C(13×13×256)−P−F(4096)−F(4096)
作者使用的CNN回归损失而不是分类损失,预测的关节点和GroundTruth的L2-Loss。由于训练数据量,模型参数很多,所以对图像做了简单数据增强以增加数据量。
初始阶段是可以粗略得到关节点的大概位置,它是基于整幅图像进行上下文推理的,但是它的尺寸被固定到了220×220220\times220220×220,而一般数据集里的图片大小都比较大,所以输入的时候会对图像进行下采样,这样的操作使得细节丢失,继而想要优化关节点的位置相对不够精确,但又不能增大图像的尺寸,因为会增加大量的参数和计算量。
为了得到更好的准确率,作者训练了一个级联的姿态回归器。在第一个阶段,先粗略估计出上个部分的姿态轮廓,在下一阶段不断优化关节点的位置。
每一步都使用已经预测的关键点来取出基于这个关键点的邻域,这个子图像将被用于接下来的网络输入,而接下来的网络就会看到更高清的图像从而获取跟多的细节信息,从而达到更高的准确率。
为了优化姿态,作者定义了一个回归框box bibox \ b_ibox bi​用于从整个图像上获取yiy_iyi​的邻域子图像bi(y;σ)=(yi,σdiam(y),σdiam(y))b_i(\textbf{y};\sigma)=(\textbf{y}_i,\sigma diam(\textbf{y}),\sigma diam(\textbf{y}))bi​(y;σ)=(yi​,σdiam(y),σdiam(y)),其中,姿态估计diam(y)=diam(\textbf{y}) =diam(y)=对立的关节点之间的距离,具体取决于数据集和相关的姿态定义。
根据以上可以写出初始阶段或者第一阶段的预测姿态,其中b0b^0b0表示整个图像:
stage1:y1←N−1(ψ(N(x;b0);θ1);b0)(5) stage1:y^1\leftarrow N^{-1}(\psi(N(x;b^0);\theta_1);b_0)\tag{5} stage1:y1←N−1(ψ(N(x;b0);θ1​);b0​)(5)
后面的阶段就是使用局部图像,即预测关节点邻域的图像,每个关节点会做一次回归。
stage2:yis←Ns−1(ψiN(x;b);θs);b)(6) stage2:y^s_i \leftarrow N^{s-1}(\psi_i N(x;b);\theta_s);b) \tag{6} stage2:yis​←Ns−1(ψi​N(x;b);θs​);b)(6)
for b=bi(s−1) for \ b = b^{(s-1)}_i for b=bi(s−1)​
bis←(yis,σdiam(ys),diam(ys)) b^s_i \leftarrow (y^s_i, \sigma diam(y^s), diam(y^s)) bis​←(yis​,σdiam(ys),diam(ys))
每个关键点yiy_iyi​对应一个边框bbb,每个边框boxboxbox都不一样,而且每个预测图像的中心都是取决于上个预测的关节点的坐标,因为深度学习有着强大的学习能力(为了防止过拟合),作者不是简单的使用预测后的数据,而是做了中间数据增强的处理,利用预测点在其邻域内生成多个关节点。该邻域使用的是二维高斯分布N(s−1)\mathcal{N}^{(s-1)}N(s−1),均值和方差来源于(yis−1−y)(y^{s-1}_i - y)(yis−1​−y),所有样本数据的预测和GroundTruth的差的方差和均值。这里使用δ\deltaδ表示从N(s−1)\mathcal{N}^{(s-1)}N(s−1)取出的样本,同样,这里的δ\deltaδ使用的是相对坐标。
DAs={(N(x;b),N(yi,b))∣(x,yi)∼D,δ∼N(s−1)b=(yi+δ,σdiam(y))} D^s_A=\{(N(x;b),N(\textbf{y}_i,b))|\\(x,\textbf{y}_i)\sim D,\delta \sim \mathcal{N}^{(s-1)} \\b=(\textbf{y}_i+\delta , \sigma diam(\textbf{y})) \} DAs​={(N(x;b),N(yi​,b))∣(x,yi​)∼D,δ∼N(s−1)b=(yi​+δ,σdiam(y))}
在(4)模型的基础上进行修改,模型(4)表示为第一阶段的过程,(8)为后面阶段的过程。
θs=arg⁡min⁡θ∑(x,yi)∈DAS∣∣yi−ψi(x;θ)∣∣2(8) \theta_s=\mathop{\arg\min}\limits_{\theta}\sum_{(x,\textbf{y}_i)\in D^S_A}||\textbf{y}_i-\psi_i (x;\theta)||^2 \tag{8} θs​=θargmin​(x,yi​)∈DAS​∑​∣∣yi​−ψi​(x;θ)∣∣2(8)

实验评估

setup

训练集

FLIC(Frames Labeled In Cinema):4000 训练图像 ;1000 测试图像; 10个上身关键点
LSP(Leeds Sports Dataset): 11000 训练 1000 测试; 14个全身关键点

Metrics:

Percentage of Correct Parts (PCP) –> Percent of DetectedJoints (PDJ)
如果两个预测的关节位置与真实肢体关节位置之间的距离最多为肢体长度的一半,则认为肢体被检出PCP是最初用于评估的首选度量,但是它具有惩罚较短的肢体(如下臂)的缺点,这些肢体通常较难检测。–> 为了解决此缺点,最近使用不同的检测标准报告了关节的检测率-如果预测的关节与真实的关节之间的距离在躯干直径的一定范围内,则认为已检测到关节。 通过改变该分数,可以获得针对不同程度的定位精度的检测率。 该度量标准减轻了PCP的缺点,因为所有关节的检测标准都基于相同的距离阈值。 我们将此度量标准称为“检测到的接头百分比”(PDJ)

实验结果

在这里插入图片描述

人体姿态估计-DeepPose 基于深度神经网络的人体姿态估计算法——DeepPose 文章目录基于深度神经网络的人体姿态估计算法——DeepPose参考简介关键点坐标的表示方式网络结构Initial StageCascade实现总结 参考 DeepPose: Human Pose Estimation via Deep Neural Networks 简介 Attention 1. 在本文中,人姿态估计=关键点检测=人体骨... 阅读详情

相关推荐

DeepPose:在Caffe上的DeepPose实施

深度姿势 注意: 这不是官方实施。 原始论文是《 此实施是我作为初学者进行深度学习研究的一个项目。 代码和性能在某种程度上是粗糙的。 但我希望它会有所帮助。 介绍 这是提出的DeepPose的上的一个实现,带有 Caffe是深度学习框架 @article {jia2014caffe,作者= {Jia,Yangqing和Shelhamer,Evan和Donahue,Jeff和Karayev,Sergey和Long,Jonathan和Girshick,Ross和Guadarrama,Sergio和Darrell,Trevor},杂志= {arXiv预印本arXiv:1408.5093} ,标题= {Caffe:用于快速特征嵌入的卷积体系结构},年份= {2014}} K2HPD来自 王克则,翟胜富,程慧,梁晓丹和林亮。 通过推理嵌入式多任务学习从深度图像进行人体姿态估计。 在2016年

阅读笔记——DeepPose: Human Pose Estimation via Deep Neural Networks

目录概述方法数据集指标及效果 概述 DeepPose 2014 年由谷歌的研究人员提出,是最先将神经网络应用在人体姿态估计和关键点定位方面的论文。 如下图所示,关键点定位中存在一些问题: 一些关键点可能很小或者几乎不可见; 关键点可能被遮挡,这时候它的位置只能靠猜测; 不同部位的关键点可能发生混淆等。 方法 DeepPose 直接回归关键点坐标,为了提高回归精度,首先基于人体 box 框对关键点坐标进行归一化: 模型结构如下图所示,使用 5 个卷积层和两个全连层,最后对于 k 个关键点输出 2k 个坐标

哇哇的博客 3241

浮栅晶体管原理深度解析:热电子注入与FN隧穿如何实现1/0存储

本文深入解析了浮栅晶体管的工作原理,重点探讨了热电子注入与FN隧穿机制如何实现1/0存储。作为现代闪存芯片的核心技术,浮栅晶体管通过独特的结构设计实现非易失性存储,文章详细分析了其编程与擦除的物理过程,并对比了两种机制的优缺点,为闪存性能优化提供了理论基础。

weixin_30363285的博客 373

人体姿态估计-论文精读--DeepPose: Human Pose Estimation via Deep Neural Networks

我们提出了一种基于深度神经网络(DNNs)的人体姿态估计方法。姿态估计被表述为一个基于DNN的身体关节回归问题。我们提出了一连串的DNN回归器,以输出高精度的姿态估计。该方法的优势是以一种整体的方式推理姿势,有一个简单但强大的公式,利用了深度学习的最新进展。我们提出了一个详细的实证分析,在各种真实图像的四个学术基准上具有最新或更好的性能。

小白不白 2008

Qt绘图实战:用QGraphicsItem实现可拖拽箭头连接(附完整代码)

本文详细介绍了如何使用Qt的QGraphicsItem框架实现一个功能完备的可拖拽箭头连接组件。通过核心代码示例,讲解了如何创建自定义图形项、实现智能吸附、碰撞检测以及实时拖拽编辑路径,为构建流程图、拓扑图等专业图形编辑器提供了完整的解决方案。

m2n3b4v5c6的博客 626

STM32F407通过SMBus协议精准读取BQ40Z50电池电量

本文详细介绍了STM32F407通过SMBus协议精准读取BQ40Z50电池电量的实现方法。从硬件连接到软件驱动开发,再到通信异常排查,提供了完整的解决方案。重点解析了SMBus协议的特殊时序要求、GPIO模拟驱动的关键代码,以及实际调试中的常见问题与对策,帮助开发者高效完成电池管理系统开发。

weixin_29189003的博客 251

计算机视觉人体姿态估计——DeepPose(Human Pose Estimation via Deep Neural Networks)

人体姿态估计是计算机视觉领域的重要研究方向,本周学习了DeepPose模型。DeepPose作为该领域的里程碑式工作,首次通过深度神经网络实现了端到端的关节坐标回归。该方法摒弃了传统算法中复杂的关节关系建模,直接从全局图像特征学习人体姿态。其核心创新在于提出了一种级联的深度回归框架:初始阶段通过全图回归粗略姿态,后续阶段基于高分辨率局部图像逐步细化关节位置。实验表明,该方法在关节定位精度和鲁棒性上显著优于传统基于图形模型的方法,为后续深度学习驱动的姿态估计研究奠定了基础。

weixin_51454889的博客 1587

YOLOv8工业级增强实战:小目标检测与HDR鲁棒性优化

YOLO(You Only Look Once)作为主流实时目标检测框架,其核心价值在于模块化架构与工程可扩展性。理解YOLOv8的Anchor-Free设计、C2f特征融合机制及Detect头部解耦原理,是实现性能突破的基础。在工业落地中,真实瓶颈往往不是模型版本迭代,而是小目标漏检、高动态范围(HDR)场景适应差、密集遮挡ID断裂等具体问题。通过配置层动态多尺度训练、物理感知数据增强、Neck跨尺度注意力注入、质量感知损失函数升级等七层增强策略,可在不更换主干的前提下显著提升mAP与边缘设备推理效率。本

weixin_32667439的博客 259

姿态识别(1):DeepPose : Human Pose Estimation via Deep Neural Networks

这篇文章是使用深度学习网络处理人体关节点定位的第一篇文章,发表于2014,August 20. 作者使用了级联的卷积神经网络来预测人体关节点。 1 研究背景 人体姿态识别被定义为人体关键点的定位问题,一直以来是计算机视觉领域的重要关注点。这一问题有着一些常见的挑战,比如各式各样的关节姿态,小得难以看见的关节点,遮蔽的关节点,需要根据上下文判断的关节点,而这个领域主流的工作是各式样的关节姿态...

专注!切记浮躁 3万+

研究生如何快速发CVPR

研究生如何快速发CVPR,找到科研方向

python_vb的博客 785

父子Agent架构:解决AI系统上下文污染的技术方案

在AI系统设计中,上下文管理是核心挑战之一。传统单Agent架构在处理复杂任务时,常面临上下文无限膨胀导致的信息淹没和性能下降问题。父子Agent架构通过职责分离和上下文隔离机制,采用分而治之的思想,将大任务拆解为多个子任务由专门子Agent处理。该架构中父Agent负责任务规划和结果汇总,子Agent执行具体任务后立即销毁中间状态,通过精炼摘要进行通信。这种设计不仅能有效控制上下文长度,还能提升系统稳定性和执行效率,特别适用于编程辅助、自动化测试等需要多步骤处理的场景。父子Agent架构体现了计算机科学中

weixin_42531710的博客 352

【姿态估计】DeepPose: 基于深度神经网络的人体姿态估计 Human Pose Estimation via Deep Neural Networks

Alexander Toshev Christian Szegedy Google 1600 Amphitheatre Pkwy Mountain View, CA 94043 toshev,szegedy@google.com 原文地址: https://arxiv.org/abs/1312.4659 引用请注明出处。 摘要 作者提出了一种基于深度神经网络(DNN)的人体姿态估计方法。...

hyczkg的博客 1万+

Classic AUTOSAR精讲专栏目录

欢迎大家来到钢琴上的汽车软件创建的《Classic AUTOSAR精讲系列专栏》,期待在这里能够与大家一起进步,分享成功,分享喜悦!下面蓝色的文章标题都是传送门,点击直接跳转到对应文章。

酒无忧的博客 3905

推荐开源项目:DeepPose —— 深度神经网络人体姿态估计

推荐开源项目:DeepPose —— 深度神经网络人体姿态估计 deepposeDeepPose implementation in Chainer项目地址:https://gitcode.com/gh_mirrors/de/deeppose 项目介绍 DeepPose 是一个基于深度学习的人体姿态估计项目,灵感来源于发表在 arXiv 上的论文 DeepPose: Human Pose Est...

gitblog_00601的博客 1281

手搓UDS Bootloader|全网独家复现0x10诊断会话控制、详解会话跳转规则与S3超时机制、助力ECU在线刷写、固件迭代、车规安全升级落地

在车载UDS诊断(ISO 14229)与Bootloader固件升级架构中,0x10诊断会话控制服务是所有高级诊断、固件刷写功能的前置核心与权限管控入口,属于UDS基础必实现服务。车载ECU通过分级会话模式,隔离常规故障诊断、高级标定、固件重编程等高、低权限操作,从协议层面保障车载电控系统的安全性与稳定性。多数嵌入式开发者开发UDS Bootloader时,仅简单实现会话切换报文应答,未吃透会话强制跳转规则、S3安全超时机制、会话权限绑定、APP在线刷写跳转逻辑。

getusushu的博客 465

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

(CVPR-2014)DeepPose:通过深度神经网络进行人体姿态估计

我们提出了一种基于深度神经网络 (DNN) 的人体姿态估计方法。姿势估计被表述为基于 DNN 的针对身体关节的回归问题。我们提出了一系列这样的 DNN 回归器,从而产生高精度的姿态估计。该方法具有以整体方式推理姿势的优势,并且具有简单但强大的公式,它利用了深度学习的最新进展。我们对不同真实世界图像的四个学术基准进行了详细的实证分析,具有最先进或更好的性能。

顾道长生的科研笔记 3430

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

使用DeepPose进行实时人体姿态估计:技术解析与应用指南

使用DeepPose进行实时人体姿态估计:技术解析与应用指南 项目简介 是一个开源项目,它基于深度学习技术实现了实时的人体姿态估计。通过这款工具,你可以轻松地检测和追踪图像或视频中人物的各种关节位置,为各种应用场景如运动分析、虚拟现实(VR)、游戏开发等提供了强大的技术支持。 技术分析 DeepPose的核心是基于神经网络的模型,特别采用了经典的**卷积神经网络(CNN)**架构,例如最初的VGG...

gitblog_00086的博客 782

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【第二十五周】:DeepPose:通过深度神经网络实现人体姿态估计

这篇博客介绍了DeepPose,这是首个基于深度神经网络(DNN)的人体姿态估计框架,其核心思想是通过端到端回归直接预测人体关节坐标,摒弃了传统方法依赖手工特征和图形模型的局限性。针对传统算法在遮挡、复杂背景和小关节定位中的不足,DeepPose提出级联回归的方法:初始阶段利用全局低分辨率图像预测粗略关节点位置,后续级联阶段通过高分辨率局部图像块逐步修正误差,实现从粗到细的优化。为消除尺度差异,DeepPose对输入图像使用了归一化,且对级联网络进行独立训练,每个阶段参数分离以适配不同的输入尺度。

m0_59510256的博客 1581

【DeepPose】《DeepPose:Human Pose Estimation via Deep Neural Networks》

CVPR-2014 用 Deep learning 方法做 Human Pose Estimation 的鼻祖 文章目录1 Background and Motivation2 Advantages / Contributions3 Method3.1 Pose Estimation as DNN-based Regression3.2 Cascade of Pose Regressors4 Experiments4.1 Datasets4.2 Results and Discussion5 Conc.

bryant_meng 1847

DeepPose:Human Pose Estimation via Deep Neutral NetWorks

DeepPose 论文原文:https://arxiv.org/pdf/1312.4659.pdf 图1.除了关节的极度变异性外,许多关节几乎看不见。我们可以在左边的图像中猜测右臂的位置,这仅仅是因为我们看到了其余的姿势,并预测了这个人的动作或活动。同样的,右边的图片中左边的身体一半根本看不见。这些是需要进行整体推理的例子。我们相信,DNNs能够自然地提供这种类型的推理。 摘要 我们提出了一种基于...

乐亦亦乐的博客 1023

【三十四周】文献阅读:DeepPose: 通过深度神经网络实现人类姿态估计

人体姿态估计旨在通过图像定位人体关节,是计算机视觉领域的核心问题之一。传统方法多基于局部检测与图模型,虽在效率上表现优异,但受限于局部特征与有限的关节交互建模,难以应对遮挡、小关节及复杂姿态等挑战。DeepPose提出了一种基于深度神经网络(DNN)的整体回归框架,通过级联DNN结构实现高精度关节定位。首先输入整张图像,通过7层卷积网络直接回归所有关节的归一化坐标。然后基于初始预测,从高分辨率的局部子图像中进一步修正关节位置。

qq_30043925的博客 1491

利用深度学习进行人体姿势估计--概述

利用深度学习进行人体姿势估计--概述

Cecilia_yu的博客 2765

POSE estimation,肢体估计HPE

http://www.elecfans.com/d/931144.html 从DeepNet到HRNet,这有一份深度学习“人体姿势估计”全指南 几十年来,人体姿态估计(Human Pose estimation)在计算机视觉界备受关注。它是理解图像和视频中人物行为的关键一步。 在近年深度学习兴起后,人体姿态估计领域也发生了翻天覆地的变化。 今天,文摘菌就从深度学习+二维人体姿态估计的开山之作DeepPose开始讲起,为大家盘点近几年这一领域的最重要的论文。 什么是人体姿势估计? 人体姿态估计(

u010451780的专栏 2366

DeepPose

DeepPose是首个将CNN应用于姿态估计任务的模型。该模型在传统姿态估计方法的基础上,通过端到端的方式直接从图像中回归出人体关键点的二维坐标,避免了复杂的特征工程。DeepPose将姿态估计问题建模为一个回归问题,利用CNN提取图像特征,并通过全连接层直接预测关键点坐标。模型还引入了级联回归策略,通过多阶段优化逐步细化关键点位置,显著提高了预测精度。DeepPose在LSP和FLIC数据集上取得了当时最优的性能,为后续基于深度学习的人体姿态估计方法奠定了基础。

qq_52684249的博客 927

mmpose系列(二):复现知乎大佬mmpose中的shufflenetv2+deeppose的方法

复现知乎大佬mmpose中的shufflenetv2+deeppose的方法

qq_38284951的博客 1498

人体姿态识别方案详解

文章目录姿态迁移简介方案详解MediapipeMediapipe数据获取多人姿态识别方向探索PoseNetMoveNetOpenPoseOpenMMD参考链接 姿态迁移简介 目前AR,VR,元宇宙都比较火,需要实际场景和虚拟中进行交互的情况,因此研究了通过摄像头获取图像进行识别,本文主要概述了在人体身体姿势识别跟踪方面的一些调研和尝试。 通过各个方案,我们可以从RGB视频帧中推断出整个身体的关键特征点,从而根据这些关键特征点去做扩展,比如迁移到unity模型中等。 从识别角度来说,我们可以分成两个大方向,一

jieqiang3的专栏 3万+
上一篇: 【转载】 如何转载他人的优快云文章
下一篇: 【转载】目标检测入门 R-CNN
header_zzj
博客等级 码龄12年 0粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值