精华内容
下载资源
问答
  • 人体关键点

    千次阅读 2019-10-15 18:53:22
    人体关键点 2019.10.15最新的是: https://github.com/karfly/learnable-triangulation-pytorch 1070 200多ms https://github.com/DavexPro/pytorch-pose-estimation

    simplepose 躺着检测不到

    android ncnn 能达到20fps

    https://github.com/dog-qiuqiu/Ultralight-SimplePose

    跟这个差不多:

    https://github.com/cmdbug/YOLOv5_NCNN

    问题:如果只有半身,或者肩膀加脑袋,也能检测出来,并且加上关键点。

     

    这个只有代码MobileNetssd,没有模型

    https://github.com/CheungBH/SimplePose_demo_ncnn

     

    人体关键点

    2019.10.15最新的是:

    https://github.com/karfly/learnable-triangulation-pytorch

     

     1070 200多ms

    https://github.com/DavexPro/pytorch-pose-estimation

    展开全文
  • 人体姿态估计(Human Posture Estimation),是通过将图片中已检测到的人体关键点正确的联系起来,从而估计人体姿态。 人体关键点通常对应人体上有一定自由度的关节,比如颈、肩、肘、腕、腰、膝、踝等,如下图。 ...

    目录

    1、人体姿态估计简介

    2、人体姿态估计数据集

    3、OpenPose库

    4、实现原理

    5、实现神经网络

    6、实现代码


    1、人体姿态估计简介

    人体姿态估计(Human Posture Estimation),是通过将图片中已检测到的人体关键点正确的联系起来,从而估计人体姿态。

    人体关键点通常对应人体上有一定自由度的关节,比如颈、肩、肘、腕、腰、膝、踝等,如下图。

     

    通过对人体关键点在三维空间相对位置的计算,来估计人体当前的姿态。

    进一步,增加时间序列,看一段时间范围内人体关键点的位置变化,可以更加准确的检测姿态,估计目标未来时刻姿态,以及做更抽象的人体行为分析,例如判断一个人是否在打电话等。

    人体姿态检测的挑战:

    1. 每张图片中包含的人的数量是未知的。
    2. 人与人之间的相互作用是非常复杂的,比如接触、遮挡等,这使得联合各个肢体,即确定一个人有哪些部分变得困难。
    3. 图像中人越多,计算复杂度越大(计算量与人的数量正相关),这使得实时检测变得困难。

    2、人体姿态估计数据集

    由于缺乏高质量的数据集,在人体姿势估计方面进展缓慢。在近几年中,一些具有挑战性的数据集已经发布,这使得研究人员进行研发工作。人体姿态估计常用数据集:

    3、OpenPose库

     OpenPose人体姿态识别项目是美国卡耐基梅隆大学(CMU)基于卷积神经网络和监督学习并以Caffe为框架开发的开源库。可以实现人体动作、面部表情、手指运动等姿态估计。适用于单人和多人,具有极好的鲁棒性。是世界上首个基于深度学习的实时多人二维姿态估计应用,基于它的实例如雨后春笋般涌现。

    其理论基础来自Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields ,是CVPR 2017的一篇论文,作者是来自CMU感知计算实验室的曹哲(http://people.eecs.berkeley.edu/~zhecao/#top),Tomas Simon,Shih-En Wei,Yaser Sheikh 。

    人体姿态估计技术在体育健身、动作采集、3D试衣、舆情监测等领域具有广阔的应用前景,人们更加熟悉的应用就是抖音尬舞机。

    OpenPose项目Github链接:https://github.com/CMU-Perceptual-Computing-Lab/openpose

    4、实现原理

    1. 输入一幅图像,经过卷积网络提取特征,得到一组特征图,然后分成两个岔路,分别使用 CNN网络提取Part Confidence Maps 和 Part Affinity Fields;
    2. 得到这两个信息后,我们使用图论中的 Bipartite Matching(偶匹配) 求出Part Association,将同一个人的关节点连接起来,由于PAF自身的矢量性,使得生成的偶匹配很正确,最终合并为一个人的整体骨架;
    3. 最后基于PAFs求Multi-Person Parsing—>把Multi-person parsing问题转换成graphs问题—>Hungarian Algorithm(匈牙利算法)

    (匈牙利算法是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法。)

    5、实现神经网络

    阶段一:VGGNet的前10层用于为输入图像创建特征映射。

    阶段二:使用2分支多阶段CNN,其中第一分支预测身体部位位置(例如肘部,膝部等)的一组2D置信度图(S)。 如下图所示,给出关键点的置信度图和亲和力图 - 左肩。

    第二分支预测一组部分亲和度的2D矢量场(L),其编码部分之间的关联度。 如下图所示,显示颈部和左肩之间的部分亲和力。

    阶段三: 通过贪心推理解析置信度和亲和力图,对图像中的所有人生成2D关键点。

    6、实现代码

    import cv2 as cv
    import numpy as np
    import argparse
    
    parser = argparse.ArgumentParser()
    parser.add_argument('--input', help='Path to image or video. Skip to capture frames from camera')
    parser.add_argument('--thr', default=0.2, type=float, help='Threshold value for pose parts heat map')
    parser.add_argument('--width', default=368, type=int, help='Resize input to specific width.')
    parser.add_argument('--height', default=368, type=int, help='Resize input to specific height.')
    
    args = parser.parse_args()
    
    BODY_PARTS = { "Nose": 0, "Neck": 1, "RShoulder": 2, "RElbow": 3, "RWrist": 4,
                   "LShoulder": 5, "LElbow": 6, "LWrist": 7, "RHip": 8, "RKnee": 9,
                   "RAnkle": 10, "LHip": 11, "LKnee": 12, "LAnkle": 13, "REye": 14,
                   "LEye": 15, "REar": 16, "LEar": 17, "Background": 18 }
    
    POSE_PAIRS = [ ["Neck", "RShoulder"], ["Neck", "LShoulder"], ["RShoulder", "RElbow"],
                   ["RElbow", "RWrist"], ["LShoulder", "LElbow"], ["LElbow", "LWrist"],
                   ["Neck", "RHip"], ["RHip", "RKnee"], ["RKnee", "RAnkle"], ["Neck", "LHip"],
                   ["LHip", "LKnee"], ["LKnee", "LAnkle"], ["Neck", "Nose"], ["Nose", "REye"],
                   ["REye", "REar"], ["Nose", "LEye"], ["LEye", "LEar"] ]
    
    inWidth = args.width
    inHeight = args.height
    
    net = cv.dnn.readNetFromTensorflow("graph_opt.pb")
    
    cap = cv.VideoCapture(args.input if args.input else 0)
    
    while cv.waitKey(1) < 0:
        hasFrame, frame = cap.read()
        if not hasFrame:
            cv.waitKey()
            break
    
        frameWidth = frame.shape[1]
        frameHeight = frame.shape[0]
        
        net.setInput(cv.dnn.blobFromImage(frame, 1.0, (inWidth, inHeight), (127.5, 127.5, 127.5), swapRB=True, crop=False))
        out = net.forward()
        out = out[:, :19, :, :]  # MobileNet output [1, 57, -1, -1], we only need the first 19 elements
    
        assert(len(BODY_PARTS) == out.shape[1])
    
        points = []
        for i in range(len(BODY_PARTS)):
            # Slice heatmap of corresponging body's part.
            heatMap = out[0, i, :, :]
    
            # Originally, we try to find all the local maximums. To simplify a sample
            # we just find a global one. However only a single pose at the same time
            # could be detected this way.
            _, conf, _, point = cv.minMaxLoc(heatMap)
            x = (frameWidth * point[0]) / out.shape[3]
            y = (frameHeight * point[1]) / out.shape[2]
            # Add a point if it's confidence is higher than threshold.
            points.append((int(x), int(y)) if conf > args.thr else None)
    
        for pair in POSE_PAIRS:
            partFrom = pair[0]
            partTo = pair[1]
            assert(partFrom in BODY_PARTS)
            assert(partTo in BODY_PARTS)
    
            idFrom = BODY_PARTS[partFrom]
            idTo = BODY_PARTS[partTo]
    
            if points[idFrom] and points[idTo]:
                cv.line(frame, points[idFrom], points[idTo], (0, 255, 0), 3)
                cv.ellipse(frame, points[idFrom], (3, 3), 0, 0, 360, (0, 0, 255), cv.FILLED)
                cv.ellipse(frame, points[idTo], (3, 3), 0, 0, 360, (0, 0, 255), cv.FILLED)
    
        t, _ = net.getPerfProfile()
        freq = cv.getTickFrequency() / 1000
        cv.putText(frame, '%.2fms' % (t / freq), (10, 20), cv.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 0))
    
        cv.imshow('OpenPose using OpenCV', frame)

    本项目实现代码及模型参见网址:https://download.csdn.net/download/m0_38106923/11265524

     关注公众号,发送关键字:关键点检测,获取资源。

    展开全文
  • 人体关键点姿态识别

    千次阅读 2020-10-27 18:06:54
    人体关键点姿态识别是人体姿态识别技术的重要分支。通过检测人体行为表达过程中,每一帧人体姿态关键部位的位置,将人体姿态简化为人体关键点,并通过这些关键点对人体姿态表达的语义进行分类识别。 基于关键点的...

    一、技术难点介绍

    人体关键点姿态识别是人体姿态识别技术的重要分支。通过检测人体行为表达过程中,每一帧人体姿态关键部位的位置,将人体姿态简化为人体关键点,并通过这些关键点对人体姿态表达的语义进行分类识别。

    基于关键点的人体姿态识别可分为两个方面,即静态的人体姿态识别与动态的人体姿态识别,总的来说,人体关键点姿态识别技术主要面临的几方面技术难点如下:

    (1) 姿态位移尺度变换
    不同相机角度下捕获到的姿态关键点的空间位置、视角方向各不相同
    (2) 姿态大小尺度变换
    不同行为个体的差异造成相同人体姿态的尺寸大小、表观形状不完全相同。
    (3) 关键点噪声与关键点缺失
    人体姿态检测的造成的人体骨骼关键点丢失,或者关键点漂移等。
    (4) 人体姿态表达的视频区域分割
    对运动人体姿态语义视频的有效分割。比如,喝水动作,需要分割出人体从拿起水杯喝水,到喝完水放下水杯的过程。

    二、关键技术介绍:

    2.1 动态人体关键点姿态识别:
    传统机器学习算法中,将人体骨骼关键点看作时间域动态轨迹序列,可通过隐马尔科夫HMM,条件随机场CRFs,时域金字塔等模型求解。对时域骨骼关键点的特征提取方法主要有关键点的联合位置直方图分布,关键点3D位置的旋转与位移特征等等。

    在深度学习领域,可通过RNNs、LSTM、CNN等手段将时空域人体姿态关键点建模来完成分类识别。

    下图所示为基于3D骨骼点的人体行为姿态检测方法分类:
    Joint-based Representations:

    基于关键点坐标的行为姿态表达,包括空间描述子(Spatial Descriptors)、几何描述子(Geometrical Descriptors)、关键帧描述子(key-poses Descriptors)。

    Mined Joints based Descriptors:
    考虑子空间关键点的相关性来提升判别度。

    Dynamics based descriptors:
    基于动态规划算法来考虑不同视频序列的匹配度。
    在这里插入图片描述图 1 基于图像学表达的3D人体行为姿态识别方法分类

    (Presti L L, Cascia M L. 3D skeleton-based human action classification[M]. Elsevier Science Inc. 2016.)

    各类经典算法分类识别率对比,如图2©所示:
    在这里插入图片描述其中,S指空间描述子方法(Spatial Descriptors)、G指几何描述子方法(Geometrical Descriptors)、K指关键帧描述子方法(key-poses Descriptors)。

    数据库介绍:
    UCF:骨骼点(15 joints)、16个动作;
    MHAD: 11个动作、660个motion sequences;
    MSRA3D: 骨骼点(20个)、20个动作。

    对于视频序列的人体骨骼关键点姿态识别,这里介绍一种基于深度神经网络的方法,该方法具有识别率相对较高、算法复杂度低、实现简单快速等优势,并对人体姿态的位移与尺度变化具有不变性。缺点在于其输入的人体姿态必须是具备先验的视频姿态起始和结尾帧。

    首先算法的总体流程框架如下图所示,:
    在这里插入图片描述图2(a) CNN框架下基于人体骨骼关键点的姿态识别

    将每一幅图中的骨骼点分为五个部分,分别为左右手臂骨骼点、左右腿骨骼点、躯干骨骼点。如上图左,用不同颜色区分。按照表述顺序,将每一帧骨骼点拉成一维向量。随后,将一个完整的视频姿态序列中每一帧的向量进行级联,组成一幅RGB图像,(R,G,B)通道分别对应每个骨骼点的(x,y,z)坐标,从而完成将人体视频姿态关键点到一幅图像的映射。

    具体来说,人体姿态图像的行定义为: Ri = [xi1; xi2; :::; xiN ], Gi = [yi1; yi2; :::; yiN ], Bi = [zi1; zi2; :::; ziN ], 其中i为关键点的索引,N为视频序列的总帧数。随后通过对上述每一帧中的向量进行坐标系像素对应级联,得到最终的姿态图像,表达为N×M×3, 其中M为每一帧中骨骼点的数量(保持不变)如下图所示。
    在这里插入图片描述图(b) 时空域人体关键点RGB图像映射表达与尺度不变性示意

    随后,对每幅图像的像素点进行归一化:
    在这里插入图片描述其中,Cmax和Cmin为训练数据集中的最大最小坐标值。255则是将其归一化到图像表达的(0~255)像素区间。

    该算法所用数据库为NTU datsets:60个动作,每个动作分别相隔45度从三个角度拍摄;骨骼点(24 joints)。该算法可利用多种CNN开源框架进行训练,对于60个类,测试结果根据训练情况为80%~90%。该算法的缺点是,无法估计人体姿态的首尾帧,需要人工标注。

    其他人体骨骼关键点的分类识别方法,绝大部分也类似于上述将关键点序列转化为图像的方式,只是转化方式略有不同,且特征表达较为复杂,不利于算法实时性实现。

    2.2 静态人体关键点识别
    推荐一种基于形状上下文(shape context)的人体姿态识别方法。形状上下文是基于物体轮廓样本点进行描述, 如下图3所示。
    在这里插入图片描述图3 基于形状上下文(shape context)的目标轮廓点特征表达

    形状上下文算子的基本原理是通过建立目标关于每个轮廓点的极坐标,并将极坐标进行区间划分,计算轮廓点落入每个极坐标区间的个数,构成矩阵分布,如下图4所示。
    在这里插入图片描述图4 每一个轮廓点形状上下文特征表达矩阵可视化

    其中图4左为图3(a)中菱形坐标为参考坐标系的特征分布矩阵;图4中为图3(b)中三角坐标为参考坐标系的特征分布矩阵;图4右为图3(b)中方框坐标为参考坐标系的特征分布矩阵.由图4可见,图3(a)的菱形和图3(b)的矩形坐标系下的轮廓点特征分布的可视化矩阵十分相似,从而说明这种特征表达方式对目标具有一定的尺度不变性。

    最终通过计算不同目标之间的向量分布差异,从而得到目标相似匹配度。

    该算法的初衷是对二维平面的目标进行匹配识别,然后可以将该算法中的极坐标扩展成三维,并将人体骨骼点当作目标轮廓点进行类似的骨骼点坐标分布计算。

    三、骨骼点噪声问题

    主流文献对该部分的处理不多见,个人理解对于丢失的骨骼关键点,可以通过邻域坐标差值的方法进行拟合 ,对于坐标漂移剧烈的骨骼关键点,可以首先将某个关键点的时域轨迹单独提取,根据帧间轨迹点的速度、位移、方向等变化规律,利用RANSCA或轨迹预测等方法进行漂移关键点剔除。

    备注:
    点击下面链接,进入奥比中光开发者社区,了解更多3D视觉技术信息:
    https://developer.orbbec.com.cn/

    或扫描下方二维码,进入奥比中光开发者社区:
    在这里插入图片描述

    展开全文
  • 深度学习算法 openpose 人体关键点识别 python opencv 效果还行

    深度学习算法
    openpose
    人体关键点识别
    python
    opencv
    效果还行
    在这里插入图片描述

    展开全文
  • OpenCV实现人体姿态估计(人体关键点检测)OpenPose

    万次阅读 多人点赞 2019-08-04 11:53:03
    OpenCV实现人体姿态估计(人体关键点检测)OpenPose OpenPose人体姿态识别项目是美国卡耐基梅隆大学(CMU)基于卷积神经网络和监督学习并以Caffe为框架开发的开源库。可以实现人体动作、面部表情、手指运动等姿态...
  • 人体关键点定位

    2019-01-10 20:55:00
    人体关键点定位 https://github.com/GengDavid/pytorch-cpn 转载于:https://www.cnblogs.com/haiyang21/p/10252378.html
  • 人体关键点检测数据集

    千次阅读 2020-07-20 11:06:27
    COCO数据集中把人体关键点表示为17个关节,分别是鼻子,左右眼,左右耳,左右肩,左右肘,左右腕,左右臀,左右膝,左右脚踝。而人体关键点检测的任务就是从输入的图片中检测到人体及对应的关键点位置。 MSCOCO样本...
  • 人体关键点实操网站

    2020-12-22 19:57:09
    人体关键点实操网站 https://blog.csdn.net/lyx_323/article/details/107459975
  • 人体关键点数据集

    千次阅读 2020-06-27 16:52:33
    1.COCO数据集... ... ... 全身16个关键点,人数:train有28821,test有11701,有409种人类活动 标注数据的格式:使用mat的struct格式,对于人体关键点检测有用的数据如下: 行人框:使用center和scale
  • 人体关键点检测综述

    2020-01-13 14:44:46
    转载引用附原文链接 ...人体姿态估计(Human Pose Estimation)也称为人体关键点检测(Human Keypoints Detection)。对于人体姿态估计的研究,大致可做如下分类。 1. RGB vs RGBD 后者多一项Depth信...
  • 人体关键点检测是计算机视觉中一个极具挑战性的研究。可用于:动作识别,异常行为检测,安防等。本文旨在提出一种基于深度学习的模型,解决人体关键点检测任务中存在的诸多问题,提升检测效果。该任务目前主要存在...
  • AI世界-人体关键点

    千次阅读 2018-12-11 09:26:23
    AI世界-人体关键点 AI世界-热力图 AI世界-换脸 AI世界-人脸PS AI世界-三维人脸重建 AI世界-人脸密集关键点 AI世界-车辆检测 人体关键点 对输入图片进行高效精细的检测,定位图中所有人体的关节点如手腕,...
  • 人体关键点评价指标—OKS计算 人体骨骼关键点检测OKS评价的个人见解 人体关键点评价指标—OKS计算
  • 快速上手百度大脑人体关键点识别

    千次阅读 2019-12-06 16:19:10
    人体关键点识别能够检测图像中的人体并返回人体矩形框位置,精准定位21个核心关键点,包含头顶、五官、颈部、四肢主要关节部位,支持多人检测、大动作等复杂场景。本文以瑜伽动作为例,根据人体关键点信息,分析人体...
  • 免费AI标注工具-人体关键点工具

    千次阅读 2020-06-02 13:57:29
    人体关键点标注应用场景 免费工具安装应用 结果集可视化(加快审核效率及审核准确率) 一.人体关键点标注的常用应用场景 1.新零售场景 新零售场景主要可以应用于对人体(手、手臂、头部...
  • 人体关键点检测数据集介绍

    千次阅读 2019-05-22 17:13:39
    一、COCO数据集 ... 训练集和验证集数据整体...每个人体关键点个数的分布情况,其中11-15这个范围的人体是最多的,有接近70000人,6-10其次,超过40000人,后面依次为16-17,2-5,1. K(BLOHKM) = (20000*13 +9*4...
  • 人体关键点检测大综合(2016-2020)

    千次阅读 2020-07-17 14:05:28
    1、目前COCO keypoint track是人体关键点检测的权威公开比赛之一。 COCO数据集中把人体关键点表示为17个关节,分别是鼻子,左右眼,左右耳,左右肩,左右肘,左右腕,左右臀,左右膝,左右脚踝。而人体关键点检测的...
  • 接口说明:http://ai.baidu.com/forum/topic/show/497747人体关键点识别,即对于输入的一张图片(可正常解码,且长宽比适宜),输出图片中的所有人体的14个关键点,包含四肢、脖颈、鼻子等部位,以及人体的坐标信息和...
  • 第四期【百度大脑新品体验】人体关键点识别 1.功能描述: 检测图像中的人体并返回人体矩形框位置,精准定位21个核心关键点,包含头顶、五官、颈部、四肢主要关节部位,支持多人检测、大动作等复杂场景 2.平台接入...
  • 【百度大脑新品体验】人体关键点识别 作者:才能我浪费99 1.功能描述: 检测图像中的人体并返回人体矩形框位置,精准定位21个核心关键点,包含头顶、五官、颈部、四肢主要关节部位,支持多人检测、大动作等复杂场景 ...
  • 人体姿态估计(Human Pose Estimation)也称为人体关键点检测(Human Keypoints Detection)。对于人体姿态估计的研究,大致可做如下分类。 1. RGB vs RGBD 后者多一项Depth信息,常用于3D人体姿态估计的研究。 2...
  • MS COCO 目标检测 、人体关键点检测评价指标 https://blog.csdn.net/bryant_meng/article/details/108325287
  • Python OpenCV OpenPose,实现人体姿态估计
  • 使用OpenVINO部署并行的人体关键点检测模型

    千次阅读 多人点赞 2020-07-17 16:33:01
    使用OpenVINO部署并行的人体关键点检测模型OpenVINO工具包 简介OpenVINO 推理引擎的使用使用模型优化器转化为OpenVINO 查看推理引擎可用设备基于 python api 单线程运行使用Intel 集成GPU 单线程运行使用Intel 第二...
  • 运行"demo.py",识别的结果会以json的形式保存在“examples/res”下,那么怎样可以将人体关键点的结果标注在图片中呢? 看了"opt.py"可以看出–save_img和–vis分别是保存图片结果和显示图片结果的参数。 首先在...
  • MS COCO数据集人体关键点评估(Keypoint Evaluation)(来自官网) MS COCO数据集输出数据的结果格式(result format)和如何参加比赛(participate)(来自官网) MS COCO官网数据集(百度云)下载,COCO API、...
  • 人体关键点检测之——关节点

    千次阅读 2020-03-24 15:54:50
    https://blog.csdn.net/qq_21033779/article/details/84840307?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute....人体骨骼关键点检测已经非常成熟了,参考曹哲大神的论文,可以知...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 718
精华内容 287
关键字:

人体关键点