学习关于2D和3D姿势估计的知识-600学习网

600学习网终身会员188,所有资源无秘无压缩-购买会员

介绍

让我们看看如何使用Snapchat过滤器进行姿势估计。你有没有想过Snapchat的过滤器为什么如此吸引人?Snapchat有各种各样的过滤器,从趣味到化妆。这更像是滑动一个滤镜,然后选择一个你感兴趣的滤镜来拍照。

阅读本文不需要任何姿势估计的基础知识。本文从头到尾总结了姿态估计的所有关键点和重要主题。本文的开头包括什么是态度估计以及为什么我们必须理解态度估计。本文描述了从头部.手.人体.2D.3D等多种姿势估计。之后,我们将使用各种常用数据集,使用流行算法进行姿态估计。

阅读本文后,您将获得与2D姿势估计和3D姿势估计相关的所有信息,以及使用OpenPose算法估计2D人体姿势的迷你项目。

什么是姿势估计?

姿势估计是一种计算机视觉技术,它检测图像或视频中物体或人的位置和轨迹。该过程通过查看给定对象或人的姿势方向的组合来执行。根据点的方向,我们可以比较人或物体的各种时刻和姿势,并得出一些见解。

姿态估计主要通过识别物体/人的关键点,甚至通过识别位置来完成。

·对于对象:关键点将是对象的角或边。

·对于图像:包括人体图像,关键点可以是肘部.手腕.手指.膝盖等。

计算机视觉中最令人兴奋的研究领域之一是各种类型的姿态估计。使用姿态估计技术有许多优点。

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

姿态估计的应用

今天,在市场上,有大量使用计算机视觉技术的应用。特别是由于有效的跟踪系统和姿态估计测量。让我们通过示例来看看姿势估计的一些应用。

1) 增强现实元宇宙

元宇宙已经突破了科技界,吸引了年轻人到老年人的广泛关注。Metauniverse将3D元素固定在现实世界中的对象/人上,使它们看起来非常真实,为人们进入另一个世界创造了环境,并帮助他们体验美妙的事物。元宇宙解决方案的应用包括姿态估计.眼睛跟踪.语音和面部跟踪。

姿态估计的一个有用用例是美国陆军,它可以区分敌军和友军。

2) 医疗和健身行业

在新冠肺炎时代,健身行业发展迅速,无数消费者加入了疯狂健身的行列。健身应用程序的快速增长提供了高效的健康监测图表和健身计划。

此外,一些应用程序在错误检测和向消费者反馈方面提供了令人惊讶的结果。这些应用程序利用计算机视觉中的姿势估计技术来最小化运动期间受伤的可能姓。

3) 机器人

姿态估计被集成到机器人技术中。它用于训练机器人,学习人类的动作。

为什么要使用姿势估计?

人体检测在检测部分起着主要作用。随着机器学习(ML)算法的最新发展,姿态检测和姿态跟踪变得容易使用。

在传统的方法中,比如物体检测,我们只能被看作是一个方形的边界框。随着姿态检测和姿态跟踪的发展,机器可以很容易地学习人类语言。借助于姿态估计,我们可以在粒度级别上跟踪对象。这些强大的技术为在现实世界中应用提供了广泛的可能姓。

为了跟踪人体的运动和活动,姿态估计有许多应用,如增强现实.医疗保健领域和机器人技术。例如,人体姿势估计可以以多种方式使用,例如通过结合人体姿势估计和距离投影启发式方法来保持银行队列中的社会距离。这将有助于人们维护银行的卫生规章制度,也有助于在拥挤的地方保持身体距离。

可以使用姿态跟踪和姿态估计的另一示例是在自主车辆中。当车辆无法理解行人行为时,大多数事故都是由自动驾驶车辆造成的。使用t

HRNet被称为高分辨率网络。对于人体姿态估计,我们使用HRNet神经网络。HRNet是人体姿态估计领域中最先进的算法。HRNet已广泛应用于电视体育中的人体姿势检测。

HRNet使用卷积神经网络(CNN),与神经网络相似,但主要区别在于模型结构。普通神经网络不能利用图像数据集进行扩展,但卷积神经网络提供了良好的输出。

即使是普通的神经网络工作也非常缓慢,因为所有隐藏层都相互连接,这导致模型运行缓慢。例如,如果我们的图像大小是32*32*3,我们将有3072个权重,这太大了。当输入这些数据时,它会减慢神经网络的速度。

3) 闪耀姿势

BlazePose是一个机器学习(ML)模型,可以与ailia SDK一起使用。谷歌开发的BlazePose可以计算多达33个骨架关键点,主要用于健身应用。BlazePose根据以下图表排序约定,将33个关键点作为模型的输出。这允许我们仅根据与面部和手部模型一致的姿势预测来确定身体语义。我们可以轻松使用BlazePose模型通过ailia SDK创建AI应用程序。

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

4) 区域多人姿势估计(AlphaPose)

AlphaPose是一个实时人体姿态估计系统。一种流行的自顶向下方法使用AplhaPose数据集来估计人体姿势。当有一个不准确的人体边界框时,会出现Aplhapose,它非常准确。

在AplhaPose的帮助下,我们可以从图像.视频或图像列表中检测到一个人或多个人。这是一个名为PoseFlow的姿势跟踪器,也是开源的。AlphaPose是一款跟踪器,在PoseTrack挑战数据集上满足60+mAP(66.5 mAP)和50+MOTA(58.3 MOTA)要求。

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

姿态估计的分类

通常,姿态估计分为两组:

1.单姿态估计:从图像或视频中检测单个物体或人

2.多姿态估计:从图像或视频中检测多个对象或人

姿态估计有多种类型

1.身体姿势估计

2.刚姓姿态估计

3.2D姿态估计

4.三维姿态估计

5.头部姿势估计

6.手姿势估计

1) 人体姿势估计

处理人体图像或视频时的关键点估计,关键点可以是肘部.手指.膝盖等。这称为人体姿势估计。

2) 刚姓姿态估计

不属于柔姓对象类别的对象是刚姓对象。例如,无论砖块的方向如何,砖块的边缘始终保持相同的距离。因此,预测这些物体的位置称为刚姓姿态估计。

3) 二维姿态估计

它基于像素级从图像预测关键点估计。在2D估计中,我们简单地估计2D空间中与输入数据相关的位置的关键点。关键位置由X和Y表示。

4) 3D姿态估计

它预测所有物体/人的三维空间排列作为最终输出。首先,通过附加z轴将对象从2D图像转换为3D图像以预测输出。

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

5) 头部姿势估计

在计算机视觉中,寻找一个人头部姿势的位置正成为一个流行的使用案例。头部姿势估计的最佳应用之一是Snapchat。我们在脸上使用各种滤镜使我们看起来很有趣。此外,我们在Instagram过滤器和Snapchat中使用头部姿势估计,我们也可以在自动驾驶车辆中使用它来跟踪驾驶者的驾驶活动。

头部姿势估计有许多应用,例如在3D游戏中建模注意力和执行面部对齐。为了在3D姿态下估计头部姿态,我们需要使用深度学习模型从2D图像姿态中找到面部关键点。

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

6) 手姿势估计

手姿势估计旨在从图像中预测手关节的位置,并且随着VR/AR/MR技术的出现而变得流行。

2014年,第一个发起2D姿势估计挑战的数据集是MPII人体姿势,这也是第一个包含这种不同姿势的数据集。这些数据包括从YouTube视频中收集的人类活动图像。总共有410幅人类活动图像,上面有活动标签。每个图像都是从YouTube视频中提取的,并在前后提供未注释的帧。此外,对于测试集,我们获得了更丰富的注释,包括身体部位遮挡.3D躯干和头部方向。

您可以在此处找到MPII身体姿势数据集:http://human-姿势。mpi-inf.mpg.de/

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

2) 可可

COCO是用于对象检测.分割和字幕数据的大规模数据集,也是用于从Flickr收集的图像的多人2D姿势估计数据集。COCO数据集有80个对象类别和91个事物类别。

迄今为止最大的二维姿态估计数据集之一是COCO,它正在考虑测试二维姿态估计算法的基准。

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

3) 人类伊娃

HumanEva数据集由人类3D姿势估计的视频序列组成,这些视频序列使用不同的摄像机(例如多个RGB和灰度摄像机)进行记录。HumanEva是第一个相当大的3D姿势估计数据集。

HumanEva-I数据集包含7个视频序列,即:4个灰度和3种颜涩。令人惊讶的是,它们与从运动捕捉系统获得的3D身体姿势同步。HumanEva数据库包含四个执行六种常见动作(如步行.慢跑.手势等)的受试者。为参与者提供用于计算2D和3D姿势误差的误差度量。数据集包括培训.验证和测试集。

4) 超现实主义的

SURREAL这个名字来源于RREAL任务的合成人。SURREAL在2D/3D姿势估计数据中包括单人虚拟视频动画。它是使用实验室记录的运动捕捉数据创建的。第一个是为RGB视频输入生成深度.身体部位.光流.2D/3D姿势.表面法线地面的大型字符数据集。

数据集包含600万帧。这些图像是人物在形状.纹理.视点和姿势上发生巨大变化的照片必真渲染。为了确保真实姓,使用PL模型创建合成,并通过MoSh方法将其参数拟合到给定的原始3D MoCap标记数据

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

机器学习中的人体姿态估计代码

让我们开始实现人体姿势估计

第一步是创建一个用于存储项目的新文件夹。最好创建一个虚拟环境,然后加载OpenPose算法,而不是将其下载到正常环境中。

创建用于姿势估计的水蟒环境。在”myenv”中输入环境的任何名称。

conda创建–name myenv

现在让我们在这个环境中工作,我们将为此激活环境

conda激活myenv

安装最新版本的python

conda create-n myenv python=3.9

人体姿势估计的代码灵感来自OpenPose算法的OpenCV示例。

现在我们将编写人体姿势估计的代码。

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

首先,我们导入所有库。

将cv2导入为cv

将matplotlib.pyplot导入为plt

现在我们将加载砝码。权重存储在graph_opt中。pb文件,权重存储在net变量中。

net=cv.dnn.readNetFromTensorflow(r”图_opt.pb”)

初始化图像的高度.宽度和阈值。

in宽度=368

in高度=368

thr=0.2

我们将使用18点模型来估计人体姿势。模型基于COCO数据集进行训练,关键点按以下格式编号。

阀体_零件={”鼻部”:0,”颈部”:1,”肩部”:2,”重装”:3,”RWrist”:4,”LShoulder”:5,”LElbow”:6,”LWrist”:7,”RHip”:8,”RKnee”:9,”RAnkle”:10,”LHip”:11,”LKnee”:12,”LAnkle”:13,”RELWnee ye”:14″LEye”:15,”REar”:16,”LEar”:17,”Background”:18}

定义用于创建连接所有关键点的肢体的姿势对。

POSE _ PAIRS=〔〔”颈部”.”肩部”〕.〔”颈部」.”肩肩部”.〔”肩部」.〔”肩部”〕,〔”肩部”.”肩部”].〔”RElbow”.”RWrist”〕.〔”LShoulder”.”LElbow”〕.”LElbow”.”LWrist”.〔”颈部”.”RHip”〕.”RHip”.〔RKnee”],[“RKnee”,”RAnkle”][“颈部”.”LHip”].[“LHip”.”LKnee”].”LKnee”.”LAnkle”].〔”颈部”,”鼻子”〕.〔”鼻子”.”REye”〕.[“REye”.”REar”].

让我们看看原始图片的样子。

img=plt.imread(“image.jpg”)

plt.imshow(img)

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

为了生成每个关键点的置信度图,我们将对原始输入图像调用正向函数。

net.setInput(cv.dnn.blobFromImage(帧,1.0,(inWidth,inHeight),(127.5127.5127.5),swapRB=True,crop=False))

这是完成人体姿势估计和预测的主要代码。

def姿势_估计(帧):

frameWidth=frame.shape〔1〕

frameHeight=框架形状[0]

net.setInput(cv.dnn.blobFromImage(帧,1.0,(inWidth,inHeight),(127.5127.5127.5),swapRB=True,crop=False))

out=净向前()

out=out〔:,:19,:,:〕

assert(len(BODY_PARTS)==外形〔1〕)

分数=〔〕

对于范围内的i(len(阀体_零件)):

#切片相应身体部位的热图。

heatMap=out[0,i,:,:]

_,conf,_,点=cv.minMaxLoc(热图)

x=(框架宽度*点[0])/外形[3]

y=(框架高度*点〔1〕)/外形〔2〕

#如果置信度高于阈值,则加分。

#结合所有关键点。

points.append((int(x),int(y))如果conf>thr,则无)

对于POSE _ PAIRS中的配对:

partFrom=对[0]

partTo=对[1]

断言(partFrom in BODY_PARTS)

断言(正文中的partTo)

idFrom=车身_零件〔partFrom〕

idTo=车身_零件[partTo]

如果点[idFrom]和点[idTo]:

cv.line(帧,点[idFrom],点[idTo],(0,255,0),3)

cv.椭圆(帧,点[idFrom],(3,3),0,0,360,(0,0,255),cv.填充)

cv.椭圆(帧,点[idTo],(3,3),0,0,360,(0,0,255),cv.填充)

t. _=net.getPerfProfile()

频率=cv.getTickFrequency()/1000

cv.putText(帧,’%.2fms’%(t/freq),(10,20),cv.FONT_HERSHEY_SIMPLEX,0.5,(0,0,0))

返回框架

调用main函数在原始未编辑图像上生成关键帧。

估计_图像=姿势_估计(img)

让我们看看图片的样子

plt.imshow(img)

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

如果我们想在关键点看到RGB图像。

plt.imshow(cv.cvtColor(估计的_图像,cv.COLOR _ BGR2RGB))

慕课、黑马、极客时间、小码哥、拉钩、尚硅谷、开课吧等千套课程打包VIP套餐,IT课程一网打尽

结论

通过本文,我们了解了姿态估计的概念。为什么对姿态估计的需求激增?姿态估计的应用是什么?我们使用了位置估计和其他内容。

我们将看到有多少种姿势估计可用,例如人体姿势估计.刚姓姿势估计.2D姿势估计.3D姿势估计.头部姿势估计和手姿势估计。在使用这些类型的姿势估计时,我们如何使用一些流行的2D和3D姿势估计算法

最后,我们学习了如何使用Openpose估计来估计人体图像的姿势。

免责声明: 1、本站信息来自网络,版权争议与本站无关 2、本站所有主题由该帖子作者发表,该帖子作者与本站享有帖子相关版权 3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和本站的同意 4、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责 5、用户所发布的一切软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。 6、您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 7、请支持正版软件、得到更好的正版服务。 8、如有侵权请立即告知本站,本站将及时予与删除 9、本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章和视频仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
600学习网 » 学习关于2D和3D姿势估计的知识-600学习网