1.什么是姿态估计
如下是coco数据集的各个点,不同数据集有不同
举例:
2.姿态估计的两种方法
2.1 Top-down方法
第一步得到框以后,对单个框做一个回归任务,例如:将单人图裁剪出来,输入17个关键点的网络模型,得到头,肩等位置,注意这里的位置如果要想准确,得是相对位置。
什么是相对位置:相对位置就是头的位置,针对裁处的图的宽高的距离,假设图左上角为原点,那么偷得位置就是距离原点w=1,距离原点h=2.
第二步拼接点,拼接点的规则是我们提前配置好的。
这种方法的优点:
1.点的拼接不会错(准)
这种方法的问题:
这种方法适用于:
1.不要求速度
2.要求准
多人,实时的问题举例:
openpose的改进就是剥离出目标检测,直接对图像进行关键点检测,然后拼接,怎么拼接呢?
2.2 openpose方法
关键点获取:
输出18个特征图(每个特征图对应一个关键点),上图输出的是右肩膀的热度图 。那么标签定义的时候,也就需要定义为高斯类型,哪些点离得近概率就高,离得远,概率就低。
拼接:(PAF part affinity fields 部分亲和场)
目的:找到当前最合适的拼接方式(拼接方向)
引入向量概念
18个点有19种连接方式,2个点(x1,y1)(x2,y2)会有一个向量
方向有两种,x的方向,y的方向,所以这种预测的特征图的数量为:19*2=38个,38个特征图代表19种方向。
方向有了怎么连接?
分数肯定需要网络学习,那么学习就涉及到标签制作:
标签制作中,需要向量信息,向量有大小,有方向,现在只需要方向,所以单位向量最适合
方向实例1:
标签中的方向明白的话,接下来看:预测中的方向
引入积分思想:
积分就是求近似面积,例如估计一个无数个间隔无限接近的长方形图形对于x轴的面积
上门投影做积分的思想就是如下的公式体现:
回到方向有了,怎么连接?=》分数(权值)权值就是这么算出来的
得分值知道以后怎么匹配呢?
一个点,例如脖子的点,可以匹配左肩膀,右肩膀,左腿,右腿,一个点匹配很多个点,这样的匹配就很难了(图下情况b),上面得到的积分,只能说哪个方向好,哪个方向坏。
常见的匹配就是二分匹配,直接套用匈牙利算法。
在姿势匹配中,就是规定的脖子只连右肩膀,右肩膀只连右胳膊肘,右胳膊肘只连右手(图下情况c),每一个特征点的匹配都是二分的(图下情况d),二分的做的好。
如果还看不懂,先往下看,到下面第三张图就明白了!!!
3.框架
输入图像(如上图情况a),走两个分支(b,c)
估计关键点实际位置(如上图情况b),得到18个特征图。
估计关键点之间的向量(如上图情况c),得到38个特征图。
根据上门的二分匹配,左边绿点为左肩膀,绿线连接左边蓝点(左胳膊肘),红线连接右边蓝点(左胳膊肘),做二分匹配,匹配到对的。
(如上图情况d),得到19张特征图。
最后基于19张特征图得到骨架结果(如上图情况e)
4.网络结构
4.1 CPM(一代)
只有关键点的定位
引入级联思想
上图表示的是,当感受野越大,即x坐标轴,看到的像素越多,准确率越高。如下图举例。
上图表示的是,就算视野小,也加入损失函数,增加小视野找的准确性,那么为后面更大的视野也奠定了基础。(一个学习的过程)
4.2 openpose
5.姿势识别
5.1 得到监督txt
- 设定站立、行走、奔跑、跳动、坐下、下蹲、踢腿、出拳、挥手等行为标签,每类行为通过摄像头采集相关视频,并将视频分帧成多张图片
- 将其中的姿态特征利用openpose提取作为完整动作的基本识别特征,并将其中的信息整合到txt文件中。
5.2 特征整合
-
将提取的特征信息和对应的图片,行为标签一一对应起来整合在一个TXT文件中。整合出的TXT信息分别作为输入(图片和骨骼特征点)和输出标签(行为标签)csv文件。
-
其中输入的特征可以是关键点的特征,也可以是不同骨骼点连接的线特征,以及不同线之间组合形成的面特征。
-
这些特征将通过分类算法进行学习。
5.3 机器学习算法分类
文章来源:https://www.toymoban.com/news/detail-511339.html
5.4 深度学习算法分类
利用keras搭建RNN网络模型,并加入了二次检测,以防止对坐下、摔倒误判。二次检测主要对人体高度和宽度的比例进行对比以判断是否为跌倒动作。文章来源地址https://www.toymoban.com/news/detail-511339.html
到了这里,关于一文openpose姿态估计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!