基于人体姿势估计的舞蹈检测(AI Dance based on Human Pose Estimation)

这篇具有很好参考价值的文章主要介绍了基于人体姿势估计的舞蹈检测(AI Dance based on Human Pose Estimation)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

人体姿势骨架以图形格式表示人的方向。本质上,它是一组坐标,可以连接起来描述人的姿势。骨架中的每个坐标都被称为一个部分(或一个关节,或一个关键点)。两个部分之间的有效连接称为一对(或分支)。下面是一个人体姿势骨架样本。
因此,在本文中,我们将研究如何使用深度神经网络模型在OpenCV中执行人体姿态估计。

1、数据集

由于缺乏高质量的数据集,人体姿态估计一直是一个具有挑战性的问题。如今,每一个AI挑战都是需要一个好的数据集来完成的。在过去的几年里,有挑战性的数据集已经发布,这使得研究人员更容易有效地解决这个问题。
以下是常用的数据集:

  • COCO Key-points 数据集
  • MPII 人体姿态估计数据集
  • VGG姿态数据集
  • SURREAL(实际任务下的人体姿态数据集)
  • UP-3D数据集
    本文中我们采用的是COCO数据集进行人体姿态估计任务。

2、模型架构

OpenPose首先检测属于图像中每个人的部分(关键点),然后将部分分配给不同的个体。下图是OpenPose模型的架构。
基于人体姿势估计的舞蹈检测(AI Dance based on Human Pose Estimation)
该模型将尺寸为w × h的彩色图像作为输入,并生成图像中每个人关键点的二维位置作为输出。检测分三个阶段进行:

  1. 阶段一:VGGNet的前10层用于为输入图像创建特征映射。
  2. 阶段二:使用2分支多级CNN,其中第一个分支预测身体部位位置(例如肘部,膝盖等)的一组2D置信度图(S)。下面给出了关键点的置信度图和亲和度图。第二个分支预测部分亲和度的一组二维向量场(L),它编码了部分之间的关联程度。
  3. 阶段三:通过贪婪推理对置信度图和亲和度图进行解析,生成图像中所有人的二维关键点。
    基于人体姿势估计的舞蹈检测(AI Dance based on Human Pose Estimation)

3、实验和结果

在本节中,为了简单起见,我们将加载用于理解单个人的人体姿态估计的训练模型。步骤如下:

下载模型的权重: 权重下载

加载网络结构

我们正在使用在Caffe深度学习框架上训练的模型。Caffe模型有2个文件:

  • Prototxt文件,它指定了神经网络的体系结构
  • Caffemodel文件,存储训练模型的权重

读取图像和准备输入到网络

我们使用OpenCV读取的输入帧应该转换为输入blob(如Caffe),以便它可以馈送到网络。这是使用blobFromImage函数完成的,该函数将图像从OpenCV格式转换为Caffe blob格式。首先,我们将像素值归一化为(0,1)。然后我们指定图像的尺寸。接下来,要减去的平均值,即(0,0,0)。

做出预测并分析关键点

一旦将图像传递给模型,就可以进行预测。输出为4D矩阵:

  1. 第一个维度是图像ID(如果向网络传递多个图像)。
  2. 第二个维度表示关键点的索引。该模型生成的置信度图和部件关联图都是连接在一起的。对于COCO模型,它由57部分组成- 18关键点置信度图+ 1背景+ 19*2部分亲和图。
  3. 第三个维度是输出映射的高度。
  4. 第四个维度是输出映射的宽度。

画出骨架

当我们有关键点的时候我们就可以画骨架了只要把它们对连接起来。

# 2.Load the network
# Specify the paths for the 2 files
protoFile = "pose/mpi/pose_deploy_linevec_faster_4_stages.prototxt"
weightsFile = "pose/mpi/pose_iter_160000.caffemodel"
# Read the network into Memory
net = cv2.dnn.readNetFromCaffe(protoFile, weightsFile)

#3.Read Image and Prepare Input to the Network

# Read image
frame = cv2.imread("single.jpg")

# Specify the input image dimensions
inWidth = 368
inHeight = 368

# Prepare the frame to be fed to the network
inpBlob = cv2.dnn.blobFromImage(frame, 1.0 / 255, (inWidth, inHeight), (0, 0, 0), swapRB=False, crop=False)

# Set the prepared object as the input blob of the network
net.setInput(inpBlob)


# 4. Make Predictions and Parse Keypoints
output = net.forward()
H = out.shape[2]
W = out.shape[3]
# Empty list to store the detected keypoints
points = []
for i in range(len()):
    # confidence map of corresponding body's part.
    probMap = output[0, i, :, :]

    # Find global maxima of the probMap.
    minVal, prob, minLoc, point = cv2.minMaxLoc(probMap)

    # Scale the point to fit on the original image
    x = (frameWidth * point[0]) / W
    y = (frameHeight * point[1]) / H

    if prob > threshold :
        cv2.circle(frame, (int(x), int(y)), 15, (0, 255, 255), thickness=-1, lineType=cv.FILLED)
        cv2.putText(frame, "{}".format(i), (int(x), int(y)), cv2.FONT_HERSHEY_SIMPLEX, 1.4, (0, 0, 255), 3, lineType=cv2.LINE_AA)

        # Add the point to the list if the probability is greater than the threshold
        points.append((int(x), int(y)))
    else :
        points.append(None)

cv2.imshow("Output-Keypoints",frame)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 5. Draw Skeleton
for pair in POSE_PAIRS:
    partA = pair[0]
    partB = pair[1]

    if points[partA] and points[partB]:
        cv2.line(frameCopy, points[partA], points[partB], (0, 255, 0), 3)
Human Pose Estimation.py hosted with  by GitHub

输出结果如下:
基于人体姿势估计的舞蹈检测(AI Dance based on Human Pose Estimation)
视频结果如下:Youtobe:Human-Pose-Estimation

上述源码开源,已经上传☞此链接: 代码传送门文章来源地址https://www.toymoban.com/news/detail-514986.html

到了这里,关于基于人体姿势估计的舞蹈检测(AI Dance based on Human Pose Estimation)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • YOLOv5姿态估计:HRnet实时检测人体关键点

    前言: Hello大家好,我是Dream。 今天来学习一下 利用YOLOv5进行姿态估计,HRnet与SimDR检测图片、视频以及摄像头中的人体关键点 ,欢迎大家一起前来探讨学习~ 首先需要我们利用Pycharm直接克隆github中的姿态估计原工程文件,如果不知道怎样在本地克隆Pycharm,可以接着往下看,

    2024年01月17日
    浏览(48)
  • Mediapipe人体骨架检测和实时3d绘制——Mediapipe实时姿态估计

    大约两年前,基于自己的理解我曾写了几篇关于Mediapipe的文章,似乎帮助到了一些人。这两年,忙于比赛、实习、毕业、工作和考研。上篇文章已经是一年多前发的了。这段时间收到很多私信和评论,请原谅无法一一回复了。我将尝试在这篇文章里回答一些大家经常问到的问

    2024年02月03日
    浏览(42)
  • 基于OpenCV solvePnP函数估计头部姿势

    在许多应用中,我们需要知道头部是如何相对于相机倾斜的。例如,在虚拟现实应用程序中,可以使用头部的姿势来渲染场景的右视图。在驾驶员辅助系统中,在车辆中观察驾驶员面部的摄像头可以使用头部姿势估计来查看驾驶员是否正在注意道路。当然,人们可以使用基于

    2024年02月15日
    浏览(26)
  • 基于Mediapipe的姿势识别并同步到Unity人体模型中

    如题,由于是商业项目,无法公开源码,这里主要说一下实现此功能的思路。 人体关节点识别 基于Mediapipe Unity插件进行开发,性能比较低的CPU主机,无法流畅地运行Mediapipe,这个要注意一下。 Mediapipe33个人体关节点图如下: Mediapipe关节点映射到Unity人体骨骼 这是开发此功能

    2024年02月11日
    浏览(33)
  • YOLOv8 人体姿态估计(关键点检测) python推理 && ONNX RUNTIME C++部署

    目录   1、下载权重 ​编辑2、python 推理 3、转ONNX格式 4、ONNX RUNTIME C++ 部署 utils.h utils.cpp detect.h detect.cpp main.cpp CmakeList.txt 我这里之前在做实例分割的时候,项目已经下载到本地,环境也安装好了,只需要下载pose的权重就可以 输出:   用netron查看一下:  如上图所是,YOLO

    2024年02月07日
    浏览(32)
  • 物联网项目分享 基于Stm32的家庭智能监控系统 - 单片机 图像识别 人体检测 AI

    hr style=\\\" border:solid; width:100px; height:1px;\\\" color=#000000 size=1\\\" 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最

    2024年01月17日
    浏览(50)
  • YOLOPose:除了目标检测,YOLO还能不花代价地估计人体姿态,对实时性能有要求必看!

    导读: YOLO,是一种流行的目标检测框架。如果将YOLO引入姿态检测任务中,将取得什么结果呢?这篇文章实现了单阶段的2D人体姿态检测,与自上而下或自下而上的方法不同,该方法将人体检测与关键点估计联合实现,在不采用数据增强如翻转、多尺度等情况下,实现COCO ke

    2024年02月06日
    浏览(28)
  • 单片机项目分享 基于Stm32的家庭智能监控系统 - 单片机 图像识别 人体检测 AI

    hr style=\\\" border:solid; width:100px; height:1px;\\\" color=#000000 size=1\\\" 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最

    2024年01月16日
    浏览(52)
  • 基于 pytorch-openpose 实现 “多目标” 人体姿态估计

    还记得上次通过 MediaPipe 估计人体姿态关键点驱动 3D 角色模型,虽然节省了动作 K 帧时间,但是网上还有一种似乎更方便的方法。MagicAnimate 就是其一,说是只要提供一张人物图片和一段动作视频 (舞蹈武术等),就可以完成图片人物转视频。 于是我就去官网体验了一下,发现

    2024年01月25日
    浏览(26)
  • 【单片机毕设选题】 基于Stm32的家庭智能监控系统 - 单片机 图像识别 人体检测 AI

    hr style=\\\" border:solid; width:100px; height:1px;\\\" color=#000000 size=1\\\" 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最

    2024年01月21日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包