计算机视觉之姿态识别(原理+代码实操)

这篇具有很好参考价值的文章主要介绍了计算机视觉之姿态识别(原理+代码实操)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

计算机视觉之姿态识别(原理+代码实操)

一、姿态识别整体过程

  1. 基于图像视频

计算机视觉之姿态识别(原理+代码实操)
  1. 基于mems传感器(高性能三维运动姿态测量系统)

二、人体分割

•人体分割使用的方法可以大体分为人体骨骼关键点检测、语义分割等方式实现。这里主要分析与姿态相关的人体骨骼关键点检测。人体骨骼关键点检测输出是人体的骨架信息,一般主要作为人体姿态识别的基础部分,主要用于分割、对齐等。一般实现流程为:

计算机视觉之姿态识别(原理+代码实操)

三、人体姿态识别

计算机视觉之姿态识别(原理+代码实操)
计算机视觉之姿态识别(原理+代码实操)

四、人体骨骼关键点检测

•主要检测人体的关键点信息,如关节,五官等,通过关键点描述人体骨骼信息,常用来作为姿态识别、行为分析等的基础部件,如下图所示:

计算机视觉之姿态识别(原理+代码实操)

分为两种模式:

自顶向下的关键点是目标检测到人体框,然后再进行关键点的检测

自底向上(BottomUp)的人体骨骼关键点检测算法主要包含两个部分:关键点检测和关键点聚类连接,关键点检测目的是将图片中所有人的所有关键点全部检测出来。关键点检测完毕之后需要对这些关键点进行聚类处理,将每一个人的不同关键点连接在一块,从而连接

计算机视觉之姿态识别(原理+代码实操)

以openpose为例:

•openpose的检测流程为:

•1)计算出所有关键点(头部,肩膀,手肘,手腕...)

•2)计算出所有关联区域

•3)根据关键点和关联区域进行矢量连接,由前两步得到的关键点和关联区域,而后需要依据关联区域将关键点连接以组成人体真正的骨骼结构。作者提出了以一个最小限度的边数量来获得个体姿势的生成树图(用了二分图+匈牙利算法等),在保证不错的准确度的同时,大大减少了复杂度,提高了实时性,解决了对关键点聚类配对时需要每对点都试验一遍然后找到最优的划分和组合结构的难题。

五、2D+人体骨骼关键点检测

•DensePose-RCNN采用的是金字塔网络(FPN)特征的RCNN结构,区域特征聚集方式ROIalign pooling以获得每个选定区域内的密集部分标签和坐标。将2D图像中人的表面图像数据投影到3D人体表面上,将人体的3D表面模型切分为24个部分,然后为每一部分构建一个UV坐标系,将2D图像上的人体部分的每一个点映射到相应的3D表面部分。也可以在估计出图像中人体的UV之后,将3Dmodel通过变换,将空间坐标转换为UV坐标之后,贴到图像上。

•DensePose借鉴了Mask-RCNN的结构,同时带有FeaturePyramid Network(FPN)的特征,以及ROI-Align池化。整体流程为:首先使用Faster-RCNN得到人物区域boundingbox,然后使用CNN网络模块分块,分块后用CNN网络模型处理每一个分块,最后得到目标的热力图IVU。

六、3D人体骨骼关键点检测实现

计算机视觉之姿态识别(原理+代码实操)

七、常用算法

•DensePose

•OpenPose

•Realtime Multi-Person Pose Estimation

•AlphaPose(RMPE)

•Human Body Pose Estimation

•DeepPose

•Mediapipe(MoveNet)

1、RMPE算法(自顶向下)

计算机视觉之姿态识别(原理+代码实操)
计算机视觉之姿态识别(原理+代码实操)

先进行行人检测,得到边界框,然后在每一个边界框中检测人体关键点,连接成一个人形,缺点就是受检测框的影响太大,漏检,误检,IOU大小等都会对结果有影响

2、Mediapipe(自底向上)

•MoveNet模型:Google在2021年5月推出的一款轻量化姿态估计模型

•bottom-up的模型,这种范式一般用在多人姿态估计中,而更特别的是,MoveNet是一个bottom-up的单人姿态估计模型。从MoveNet的技术博客分享中,它在两种范式之间取得了优秀的平衡,既避免了单独训练一个det模型,又尽量保留了单人姿态估计的精度优势。

计算机视觉之姿态识别(原理+代码实操)

·快速下采样:尽量快地压缩图片尺寸,降低整体的计算量

·残差结构:获取浅层特征和梯度,一定程度上弥补快速下采样造成的一些问题(下采样太快信息损失太严重,模型来不及学出一些高级的有意义的语义特征),强化特征中的空间信息

·参数集中在主干:在残差分支上的参数和计算量尽量少,把本来就比较可怜的算力全用在主干分支上

输出:

·CenterHeatmap[B, 1, H, W]:预测每个人的几何中心,主要用于存在性检测,用Heatmap上一个锚点来代替目标检测的bbox

·KeypointRegression[B, 2K, H, W]:基于中心点来回归17个关节点坐标值

·KeypointHeatmap[B, K, H, W]:每种类型的关键点使用一张Heatmap进行检测,这意味着多人场景下这张Heatmap中会出现多个高斯核

·OffsetRegression[B, 2K, H, W]:回归Keypoint Heatmap中各高斯核中心跟真实坐标的偏移值,用于消除Heatmap方法的量化误差

八、代码实操

采用了mediapipe算法进行简单的演示:

import cv2
import mediapipe as mp

import time #计算fps值
#两个初始化
mpPose = mp.solutions.pose
pose = mpPose.Pose()
 #初始化画图工具
mpDraw = mp.solutions.drawing_utils

#调用摄像头,在同级目录下新建Videos文件夹,然后在里面放一些MP4文件,方便读取
cap = cv2.VideoCapture('只因.mp4')
#计算pfs值需要用到的变量,先初始化以一下
pTime = 0

while True:
#读取图像
    success, img = cap.read()
    #转换为RGB格式,因为Pose类智能处理RGB格式,读取的图像格式是BGR格式
    imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    #处理一下图像
    results = pose.process(imgRGB)
    # print(results.pose_landmarks)
    #检测到人体的话:
    if results.pose_landmarks:
    #使用mpDraw来刻画人体关键点并连接起来
        mpDraw.draw_landmarks(img, results.pose_landmarks, mpPose.POSE_CONNECTIONS)
        #如果我们想对33个关键点中的某一个进行特殊操作,需要先遍历33个关键点
        for id, lm in enumerate(results.pose_landmarks.landmark):
        #打印出来的关键点坐标都是百分比的形式,我们需要获取一下视频的宽和高
            h, w, c = img.shape
            print(id, lm)
            #将x乘视频的宽,y乘视频的高转换成坐标形式
            cx, cy = int(lm.x * w), int(lm.y * h)
            #使用cv2的circle函数将关键点特殊处理
            cv2.circle(img, (cx, cy), 5, (255, 0, 0), cv2.FILLED)
    #计算fps值
    cTime = time.time()
    fps = 1 / (cTime - pTime)
    pTime = cTime
    cv2.putText(img, str(int(fps)), (70, 50), cv2.FONT_HERSHEY_PLAIN, 3,
                (255, 0, 0), 3)
    cv2.imshow("Image", img)
    cv2.waitKey(1)

效果如下图所示:

计算机视觉之姿态识别(原理+代码实操)
计算机视觉之姿态识别(原理+代码实操)
计算机视觉之姿态识别(原理+代码实操)

因为mediapipe是自底向上的算法,可以看出来即使人没有完全出现也能识别到关键点,之后连到一起,对于单人姿态识别的话效果还是很不错的。文章来源地址https://www.toymoban.com/news/detail-415356.html

到了这里,关于计算机视觉之姿态识别(原理+代码实操)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 计算机视觉算法中的 相机姿态估计(Camera Pose Estimation)

    目录 ​编辑引言 相机姿态估计的基本概念 相机姿态估计的方法 特征点匹配 直接法 基于深度学习的方法 相机姿态估计的应用 增强现实(AR) 机器人导航 三维重建 结论 相机姿态估计是计算机视觉领域的重要任务之一。它涉及到确定相机在三维空间中的位置和朝向,常用于

    2024年02月05日
    浏览(48)
  • 【图像分类】基于计算机视觉的坑洼道路检测和识别(ResNet网络,附代码和数据集)

    写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 (专栏订阅用户订阅专栏后免费提供数据集和源码一份,超级VIP用户不在服务范围之内,不想订阅专栏的

    2024年02月06日
    浏览(52)
  • 2023年MathorCup大数据竞赛A题基于计算机视觉的坑洼道路检测和识别 思路论文代码

    国外相关论文,持续更新 随着自动驾驶汽车和自主机器人的出现,势在必行 检测裂缝和坑洼等道路损伤并执行必要的操作 规避操作,以确保机上乘客或设备的流畅旅程。 我们提出了一种完全自主的实时道路裂缝和坑洼检测 可以部署在任何基于 GPU 的传统处理板上的算法 与关

    2024年02月08日
    浏览(45)
  • 计算机视觉 计算机视觉识别是什么?

    计算机视觉识别(Computer Vision Recognition)是计算机科学和人工智能领域中的一个重要分支,它致力于使计算机系统能够模拟和理解人类视觉的过程,从而能够自动识别、分析和理解图像或视频中的内容。这一领域的发展旨在让计算机具备视觉感知和理解的能力,使其能够从视

    2024年02月07日
    浏览(52)
  • 基于计算机视觉手势识别控制系统YoloGesture (利用YOLO实现) 有详细代码+部署+在线服务器尝试+开源可复现

    Streamlit在线服务器体验网址: https://kedreamix-yologesture.streamlit.app/ HuggingFace在线服务器体验网址:https://huggingface.co/spaces/Kedreamix/YoloGesture 为了解答大家的问题,我录了个视频,大家也可以看看,https://www.bilibili.com/video/BV1LV4y1d7pg/,如果有问题可以在github上给我发issue进行探讨,

    2024年02月03日
    浏览(56)
  • 2023 年 MathorCup 数学建模大数据竞赛(A题)|基于计算机视觉的坑洼道路检测和识别|建模秘籍&文章代码思路大全

    铛铛!小秘籍来咯! 小秘籍希望大家都能轻松建模呀,mathorcup比赛也会持续给大家放松思路滴~ 抓紧小秘籍,我们出发吧~ 来看看MathorCup 数学建模大数据竞赛的A题 完整版内容在文末领取噢~ 问题一:基于计算机视觉的坑洼道路检测和识别 问题描述:坑洼道路检测和识别是一

    2024年02月08日
    浏览(39)
  • 【2023年MathorCup高校数学建模挑战赛-大数据竞赛】赛道A:基于计算机视觉的坑洼道路检测和识别 python 代码解析

    坑洼道路检测和识别是一种计算机视觉任务,旨在通过数字图像(通常是地表坑洼图像)识别出存在坑洼的道路。这对于地.质勘探、航天科学和自然灾害等领域的研究和应用具有重要意义。例如,它可以帮助在地球轨道上识别坑洼,以及分析和模拟地球表面的形态。 在坑洼

    2024年02月06日
    浏览(49)
  • OpenCV完结篇——计算机视觉(人脸识别 || 车牌识别)

    scaleFactor调整哈尔级联器的人脸选框使其能框住人脸 官方教程指路 每个特征都是通过从黑色矩形下的像素总和减去白色矩形下的像素总和获得的单个值 级联器模型文件位置 识别嘴就会不精确了 识别鼻子 只要不测口,还是比较准确的 测口准确度太低!!! 安装很简单,这里

    2024年02月19日
    浏览(50)
  • 基于计算机视觉的手势识别技术

    一个不知名大学生,江湖人称菜狗 original author: Jacky Li Email : 3435673055@qq.com Time of completion:2023.5.2 Last edited: 2023.5.2 手语是一种主要由听力困难或耳聋的人使用的交流方式。这种基于手势的语言可以让人们轻松地表达想法和想法,克服听力问题带来的障碍。 这种便捷的交流方式

    2024年02月04日
    浏览(46)
  • 目标人脸检测与识别(计算机视觉)

    通过python 语言编程设计人脸检测算法,以此人脸作为训练样本,训练目标人脸模型,进一步实现目标人脸的识别。通过上述编程促进学生理解并掌握人脸检测及识别的相关原理,同时培养学生的编程能力。 笔记本电脑,windows10系统,Visual Studio Code编辑器,opencv视觉库,nump

    2024年02月08日
    浏览(52)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包