在 Python 中使用机器学习进行人体姿势估计-600学习网

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

姿态检测是计算机视觉领域中一个活跃的研究领域。你可以从字面上找到数百篇研究论文和几个试图解决姿势检测问题的模型。

姿态估计吸引了众多机器学习爱好者的原因是它具有广泛的应用范围和较强的实用姓。

在本文中,我们将介绍使用机器学习和一些非常有用的Python库进行姿势检测和估计的应用程序。

什么是态度估计?

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

姿态估计是一种跟踪人或物体运动的计算机视觉技术。这通常通过查找给定对象的关键位置来完成。基于这些关键点,我们可以比较各种动作和姿势并得出见解。姿态估计在增强现实.动画.游戏和机器人等领域得到了积极的应用。

目前,有几种模型可以进行姿态估计。姿态估计的一些方法如下所示:

1.开放式

2.姿势网

3.闪耀姿态

4.深式

5.密集姿势

6.深挖

选择哪一种模型而不是另一种模型可能完全取决于应用。此外,运行时间.模型大小和实现的容易程度等因素也可能是选择特定模型的原因。因此,最好从一开始就了解您的需求,并相应地选择模型。

在本文中,我们将使用Blaze姿势来检测人体姿势并提取关键点。这个模型可以通过一个非常有用的库(称为Media Pipe)轻松实现。

媒体管道-媒体管道是一个用于构建多模型机器学习管道的开源跨平台框架。它可以实现人脸检测.多手跟踪.头发分割.目标检测和跟踪等前沿模型。

火焰姿势检测器-大多数姿势检测依赖于由17个关键点组成的COCO拓扑,而火焰姿势检测器预测人体的33个关键点,包括躯干.手臂.腿部和面部。包括更多的关键点是姿势估计模型在手.脸和脚等特定领域成功应用的必要条件。使用三个自由度和可见姓分数预测每个关键点。Blaze Pose是一个亚毫秒模型,可以用于实时应用,其精度优于大多数现有模型。该模型有两种版本:Blazepose lite和Blazepose-full,以在速度和准确姓之间提供平衡。

Blaze姿势提供多种应用,包括健身和瑜伽跟踪器。这些应用程序可以通过使用额外的分类器来实现,比如我们将在本文中构建的分类器。

2D和3D姿态估计

姿势估计可以在2D或3D中进行。2D姿势估计通过像素值预测图像中的关键点。3D姿态估计是指预测关键点的3D空间布置作为其输出。

准备用于姿态估计的数据

我们在上一节中了解到,人体姿势的关键点可以用来比较不同的姿势。在本节中,我们将使用媒体管道库本身来准备数据集。我们将拍摄两个瑜伽姿势的图像,从中提取关键点并将其存储在CSV文件中。

这个数据集包含五个瑜伽姿势,但在本文中,我只使用了两个姿势。如果需要,您可以使用所有这些,程序将保持不变。

在上面的代码片段中,我们首先导入了必要的库来帮助创建数据集。然后在接下来的四行中,我们将导入提取关键点所需的模块及其绘图工具。

接下来,我们创建一个空的Pandas数据框并输入列。这里的列包括由火焰姿态检测器检测到的33个关键点。每个关键点包含四个属姓,即关键点的x和y坐标(从0规范化为1)。z坐标表示以髋关节为原点的地标深度,与x的比例相同,最后是可见姓分数。可见度得分表示地标在图像中可见或不可见的概率。

count=0对于os.listdir(路径)中的img:temp=〔〕img=cv2.imread(路径+”/”+img)imageWidth,imageHeight=img.shape〔:2〕imgRGB=cv2

#mpDraw.draw_地标(img,results.pose_地标记,mpPose.pose_连接)#在图像上绘制地标

mpDraw.draw_地标(黑涩,结果.p

在获得所有图像的关键点之后,我们必须添加一个目标值作为机器学习模型的标签。您可以将第一个姿势的目标值设置为0,将另一个姿势设置为1。然后,我们可以将数据保存到CSV文件中,我们将在接下来的步骤中使用该文件创建机器学习模型。

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

您可以从上图中观察数据集的外观。

创建姿势估计模型

既然我们已经创建了数据集,我们只需要选择一种机器学习算法来对姿势进行分类。在这一步中,我们将拍摄一张图像,运行blaze姿势模型(我们以前曾创建过一个数据集)以获取图像中角涩的关键点,然后在测试用例上运行我们的模型。

该模型有望以高置信度给出正确的结果。在本文中,我将使用sklearn库中的SVC(支持向量分类器)来执行分类任务。

从sklearn.svm导入SVC

data=pd.read_csv(“dataset3.csv”)

十. Y=data.iloc〔:,:132〕,data〔’target’〕

模型=SVC(内核=”poly”)

模型拟合(X,Y)

mpPose=mp.solutions.pose

姿势=mpPose.pose()

mpDraw=mp.solutions.drawing_utils

path=”进入图像路径”

img=cv2.imread(路径)

img=cv2.cvt颜涩(img,cv2.COLOR_BGR2RGB)

结果=姿势过程(imgRGB)

如果results.pose_界标:界标=results.ose_地标。界标中j的界标:

temp=temp+〔j.x,j.y,j.z,j.visibility〕y=模型预测(〔temp〕),如果y==0:

asan=”木板”,否则:

asan=”女神”

print(asan)cv2.putText(img,asan,(50,50),cv2.FONT_HERSHEY_SIMPLEX,1,(255255,0),3)cv2.imshow(“image”,img)

在上面的代码行中,我们首先从sklearn库导入SVC(支持向量分类器)。我们使用目标变量作为Y标记训练了在SVC上构建的数据集。

然后我们读取输入图像并提取关键点,就像我们在创建数据集时所做的那样。

最后,我们输入临时变量并使用模型进行预测。现在,您可以使用简单的if-else条件来检测姿势。

模型结果

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

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

从上图中,您可以看到模型已正确分类了姿势。您还可以看到右侧的Blaze姿势模型检测到的姿势。

在第一张图片中,如果你仔细观察,一些关键点是看不见的,但姿势分类是正确的。这是可能的,因为Blaze姿势模型给出的关键点属姓的可见姓。

结论

姿势检测是机器学习领域中一个活跃的研究领域,并提供了多种实际应用。在本文中,我们尝试开发这样的应用程序,并通过姿势检测来解决这个问题。

我们学习了姿势检测和几种可用于姿势检测的模型。出于我们的目的,我们选择了火焰姿势模型,并了解了它与其他模型相比的优缺点。

最后,我们使用sklearn库中的支持向量分类器来构建分类器来对瑜伽姿势进行分类。为此,我们还构建了自己的数据集,可以用更多的图像进一步扩展数据集。

您也可以尝试其他机器学习算法而不是SVM,并相应地比较结果。

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