基于人体拓扑结构对齐的多人姿态估计方法

文档序号:25053160发布日期:2021-05-14 13:32阅读:224来源:国知局
基于人体拓扑结构对齐的多人姿态估计方法

1.本发明涉及人体行为分析技术领域,尤其涉及一种基于人体拓扑结构对齐的多人姿态估计方法。


背景技术:

2.近年来,随着信息技术的发展和智能科技的普及,全球科技变革正在进一步推进,云计算、物联网、大数据和人工智能等技术也在飞速发展,其中,人体姿态识别技术已开始在计算机视觉相关领域中广泛应用。
3.当前人工智能技术的热点,固定情景下对于人体姿态识别具有十分重要的研究意义,对于我国实现现代化建设具有一定的推动作用,因此加强技术分析研判就显得十分重要。早在上世纪70年代,我国已经开始了对人体行为分析方面的研究,这些研究对于我国人工智能的发展有了较强的推动作用,在特定情景下或者说在比较标准的场景中分析较为简单的姿态和动作已经成为了可能。
4.随着我国社会水平的不断提升,人们对于社会生活的质量要求也在不断增加,因此,在实际的生活过程中视频监控已经成为人们不可或缺的一种安全措施,基于视频分析的技术要求也越来越高。例如在智能家装,医疗领域及运动分析等行业中都得到了较为广泛的应用,固态场景下的人体姿态识别在各领域起到的作用显而易见。特别是近年来,我国安保工作的加强,对于大城市人口密集流动以及犯罪分子的甄别等都有较强需求。
5.目前,现有技术中还没有一种有效地基于人体拓扑结构对齐的多人姿态估计方法。


技术实现要素:

6.本发明的实施例提供了一种基于人体拓扑结构对齐的多人姿态估计方法,以实现在无监督网络学习框架下可以准确地区分图像中的人体的各个关键点。
7.为了实现上述目的,本发明采取了如下技术方案。
8.(和权利要求书相互对应)
9.由上述本发明的实施例提供的技术方案可以看出,本发明在没有标记或者稀疏标记的图像中可以显著提高目标域的性能,在无监督网络学习框架下可以准确地区分人体的各个关键点。
10.本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
11.为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的
附图。
12.图1为本发明实施例提供的一种基于人体拓扑结构对齐的应用于图像上的多人姿态估计方法的流程图。
具体实施方式
13.下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
14.本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。
15.本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
16.为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。
17.本发明实施例提供的一种基于人体拓扑结构对齐的应用于图像上的多人姿态估计方法的流程图如图1所示,该方法包括以下步骤:
18.步骤1:通过网络爬虫爬取没有袖子的人体图像,构建szf(sleeve

zero figures,无袖人体图像)数据集。
19.步骤2:用hrnet网络对ms

coco和mpll数据集的图像样本进行学习得到人体关键点图像,并且用ms

coco和mpll数据集为输入训练hrnet网络,从而得到鲁棒的xzznet网络。
20.ms

coco数据集的全称是common objects in context,是微软团队提供的一个可以用来进行图像识别的数据集,其包含检测(detection),分割(segmentation),关键点(keypoints)等任务。ms

coco数据集中的图像包含了自然图像以及生活中常见的目标图像,背景比较复杂,目标数量比较多,目标尺寸更小,因此ms

coco数据集上的任务通常较难实现。此外,ms

coco数据集中包含91类图像。它的训练集有82,783个图像,验证集有40,504个图像,测试集有40,775个图像。每张图像提供17个人体关键点。
21.mpii人体姿态数据集由取自真实世界的带有全身姿态标注的图像组成。大约有25k张图像,40k个对象,其中大约有7k张图像用于测试,剩余的18k用于训练和验证。每张图像提供16个人体关键点。
22.步骤3:将szf数据集输入到xzznet网络中,xzznet网络生成候选的没有袖子的人体姿态关键点。
23.步骤4:对hrnet网络生成的人体关键点图和xzznet生成的候选的人体关键点图构
建图模型,进行图匹配,通过监督损失函数不断修正,使其在人体模型识别中对关键点更加敏感,利用最小化损失函数在两个领域上学习泛化的高阶结构不变量表示来帮助判断关键点位置,利用交叉熵损失函数调整xzznet网络,得到优化的xzznet网络。
24.步骤5:利用优化的xzznet网络以szf数据集为输入,生成szf数据集中的图像对应的关键点检测图像,根据关键点检测图像得到图像中包含人体的各个关键点姿态信息。
25.上述步骤1的处理过程具体包括:采用了python爬虫的方式来从网络中获取大量的没有袖子的人体图像。python有强大的爬虫,以及成熟高效的爬虫

远程字典服务分布式策略爬虫框架,方便高效下载网页;多线程、进程模型成熟稳定,多线程或进程会优化程序效率,提升整个系统下载和分析能力。同时python具有非常优秀的第三方包能够模拟用户代理的行为构造合适的请求,避免网站对于爬虫的封杀。
26.利用python的requests程序包实现网络爬虫:requests库是一个常用于http请求的模块,通过对requests库的导入,在程序中可以更加便利的进行网页的爬取;了解其网页的编码方式,在其源程序中用正则表达式对定义好的数据格式进行字符串匹配,将匹配成功的网址变成字符串的形式存入字典中;对外部输入的图像所在网址进行请求,用open()函数打开指定位置的文件。
27.python的主体函数主要包括三个方面:一目标网页地址的获取(可以使用固定王章百度视图获取图像数据集),二是对抓取图像函数的调用,三是循环遍历字典中存入的图像网址。
28.选除不合格的图像从szf图像数据集中删除,并用python代码将图像原乱码重命名为易辨认的名称,之后对szf数据集进行标注。标注完成,将图像和标注文件按照顺序一对一读入保存,构成szf图像数据集。
29.上述步骤2的处理过程具体包括:
30.对ms

coco和mpll数据集中的原始图像进行翻转(flip)、裁剪(crop)和重塑(reshape),以变化后的图像为输入训练hrnet网络,得到鲁棒的xzznet网络;利用hrnet网络对ms

coco和mpll数据集的图像样本进行学习得到人体关键点图,平均变化后的图像生成的热图,每个人体关键点的位置是通过调整最高热值的位置,并在从最高响应到第二高响应的方向上偏移四分之一来预测。
31.使用现有的ms

coco和mpll数据集对hrnet神经网络模型进行训练。在整个过程中,在hrnet网络中引入了跨并行子网的交换单元,通过在并行的多分辨子网络上反复交换信息来进行多尺度的重复融合,使每个子网重复接受来自其他并行子网的信息。通过网络输出的高分辨率表示来估计关键点。
32.本发明使用的hrnet网络包含四个阶段,主体为四个并行的子网,其分辨率逐渐降低到一半,相应的宽度(通道数)增加了一倍。第一阶段包含4个剩余模块,每个模块都和resnet

50一样,是由一个通道数为64的bottleneck组成,紧随其后的是一个3x3卷积特征图的通道数减少到(c),第二,第三,第四阶段分别包含1、4、3个交换模块。一个交换模块包含4个残差模块,其中每个残差模块都包含2个3x3的卷积层,以及一个交换模块。综上所述,共有8个交换模块,即共进行8次多尺度融合。在训练中,第一阶段生成顶层特征(high

level feature),在接下来的几个阶段逐步降低特征维度。因此,后一阶段并行子网的特征由前一阶段的特征和下一阶段的特征组成。将热图简单地从上一个交换模块输出的高阶特
征表示进行回归。损失函数定义为均方误差,用于比较预测的热图和groundtruth heatmpas。groundtruth heatmpas是采用二维高斯分布,以每个关键点的grouptruth位置为中心,标准差为1像素生成的。
33.在ms

coco数据集上的训练:
34.将人体检测边界框(object detection bounding box)的高宽比扩展到固定的长宽比:高:宽=4:3,然后从图像中裁剪出边界框,调整为固定的大小,256
×
192或384
×
288。数据增加包括随机旋转(

45
°
,45
°
),随机的规模([0.65,1.35]),然后翻转。我们使用adam优化器,。初始学习率(learning rate)设置为1e

3,在第170和200epochs训练,在210个epochs内结束。
[0035]
在mpll数据集上的训练:
[0036]
测试过程与coco中的测试过程几乎相同,只是采用了标准的测试策略。使用标准度量,即pckh(正确关键点的头部归一化概率)得分。联合是正确的如果它属于αl groundtruth位置的像素,其中α是一个常数和l是头的大小对应于真实的对角线长度的60%头边界框。pckh@0.5(α=0.5)评分。
[0037]
将hrnet网络经过ms

coco数据集和mpll数据集的训练之后,得到xzznet网络。
[0038]
xzznet网络与hrnet网络的网络结构相同,只是网络的权重参数不同,此时的xzznet网络相当于第一步在ms

coco和mpii数据集上预训练的hrnet的模型。
[0039]
上述步骤3的处理过程具体包括:由于xzznet网络是由hrnet网络训练得到,因此卷积层和网络参数(卷积层相同,网络参数不同,是不断更新的)都与hrnet网络相同。在完成szf数据集构建和有监督训练生成网络xzznet后,将之前构建的szf数据集输入到xzznet网络中,通过xzznet网络中的cafa(cross attentive feature alignment)模块和预训练网络利用l
fd
函数学习域不变量和细粒度的人跨领域的表示:
[0040][0041]
细粒度特征对于准确的姿势估计有效。cafa的目标是跨域适应更多域不变(domain

invariant)的细粒度人类特征。与以前的特征自适应方法不同,我们通过bsam捕获跨域的相关细粒度特征。它探索了跨域的局部空间特征依赖性,而不是简单地单独考虑域特征。通过以双向方式探索特征交互,可以为每个域很好地编码细粒度的人体特征。具体而言,我们设计了一种源域到目标域的自适应机制(source

to

target adaptation,简称sta),通过基于它们的相似性自适应地聚合目标特征来增强源域人体特征。同样,我们还采用目标域到源域自适应机制(target

to

source adaptation,简称tsa)通过汇总相关源域特征来更新目标域特征。cafa的详细信息在如下图所示。
[0042]
给定样本对x
s
,x
t
(一个来自源域,一个来自目标域),使用特征提取器(feature encoder)生成对应的特征f
s
和f
t
并应用两个卷积层分别生成a和b。此外f
s
,f
t
也被馈入另一个卷积层以获得s
c
,t
c
[0043]
为了确定f
s
和f
t
中每个对应位置的细粒度的特性依赖关系,一个相关图(correlation map)φ=a
t
b。其中φ
(i,j)
用来度量f
s
的第i个位置和f
t
的第j个位置的相似性。为了使f
s
和f
t
相互增强,所以采用双向增强机制1)源域到目标域的自适应机制(sta):
alignment,即域间人体拓扑对齐)机制来解决这种问题,这种机制提供了一种清晰的高阶人体骨架结构建模方式,有利于获取关节的空间拓扑信息,它使得跨领域的人拓扑适应变得有效和可靠。
[0058]
结合热图的熵损失和高阶拓扑匹配的损失函数对xzznet网络进行微调(fine

tune),利用反向传播不断更新模型的参数以训练整个模型。我们使用第二步预训练的参数进行无监督网络的初始化,之后通过最小化hrnet网络和xzz网络生成的两张拓扑图对齐的损失函数微调xzz网络,通过反向传播bp算法不断更新模型的参数以最优化模型。
[0059]
1、局部关键点特征提取
[0060]
首先,根据特征图f和关键点热图y
ikp
,可以通过外积和全局均值池化操作得到两个域的一组关键点v
kp
的语义局部特征。具体公式如下:
[0061][0062]
2、图的表示
[0063]
构建一个直观拓扑图表示g=(v,e),其中v是图中的点集,可以表示为v={v
i
,i=1,2,...,h},e是图中的边集,这个边集可以用数学化表达表示为:
[0064]
e={v
i
和v
j
,i,j=1,2,...h,v
i
与v
j
在图中相连}
ꢀꢀ
(eq.2)
[0065]
在此处,我们引入邻接矩阵的概念,设矩阵为a,则矩阵中元素a
ij
的值为1当且仅当v
i
和v
j
在拓扑图中相邻,其余情况下a
ij
为0。
[0066]
3、图卷积网络
[0067]
显然,我们可以很自然地认为人体结构是一个自然图形,关节之间存在潜在的空间约束。我们可以认为人的关节是关键点v
i
,人的四肢是关键点之间的边e
ij
。基于以上观点,我们采用semgcn(semantic graph convolutional networks,即语义图卷积网络)对人的拓扑表示进行建模,对于一个图卷积模型,通过相邻节点传播特征有助于学习鲁棒局部结构和节点之间的关系信息。同时,采用非局部层有助于捕获节点之间的局部和全局远程依赖关系,以了解更多的人类上下文信息。它使我们能够获得健壮的人的拓扑信息,这是跨领域学习结构不变信息的必要条件。基于卷积传播的图应用结点i有两个步骤。首先,结点表示通过一个可学习参数矩阵进行变换。其次,将转换后的节点表示从相邻结点j收集到结点i,然后使用relu函数。将结点特征收集到矩阵中,在调用语义图卷积网络之后,对结点特征的每个通道应用不同的权重矩阵:
[0068][0069]
其中,v
l
和v
l+1
分别是第l次卷积前后的结点表示,m
d
则是一组h*h大小的矩阵集,用来作为可学习参数矩阵,权值向量表示图中所隐含的邻近关节的局部语义知识。||表示通道级联,并表示转换矩阵的第d行,它学习图中作为先验的边的信道加权(例如,在姿态估计中一个关节如何影响其他身体部位),以增强图表示。
[0070]
之后,除了非局部概念之外,我们将特征更新操作定义为:
[0071][0072]
将w
v
初始化为零,f用于计算结点i和所有其它结点j;g用于计算结点j的表示,它通过计算结点的特征来计算结点间的相应,以捕获结点之间局部与全局的关系。
[0073]
4、连接预测
[0074]
当得到两张拓扑图后,我们无需采用硬对齐的方式,据此,我们提出了“连接预测”方法,我们将两个拓扑图的结点两两相连,并为可能的边(s,r,o)分别分配了分数f(s,r,o),用以确定这些边属于e的可能性有多大。为了解决这个问题,我们引入了一个图形自动编码器模型,由一个实体编码器和一个评分函数(解码器)组成。编码器将每个实体v
i
∈v对应成实值向量e
i
,解码器根据顶点表示重新构造图的边。换句话说,它通过一个函数s评估(主体,关系,客体)三元组的分数。我们工作与其他人工作的关键特征就在于对编码器的依赖,之前的大多数方法在训练中对每个v
i
∈v都是直接使用一个单一的实值向量e
i
,而我们通过一个r

gcn编码器用e
i
=h
i(l)
来计算结点表示,在我们的工作中我们使用distmult因子分解作为评估函数,这个方式在标准连接预测上表现良好,在这个方法中,每个关系r都有一个对角矩阵与之相关联,一个三元组(s,r,o)的得分为:
[0075]
f(s,r,o)=e
t
r
r
e
o
ꢀꢀ
(eq.5)
[0076]
我们对交叉熵损失进行优化,得到了如下损失函数:
[0077][0078]
t是所有三元组的集合,l是logistc_sigmoid函数,y是一个指示符对于正例三元组,y=1,对于负例三元组,y=0。
[0079]
5、跨图拓扑对齐
[0080]
基于以上步骤,我们进行跨图对齐,将局部语义网络学习到的联合关系信息在两个人之间进行对齐。对于分别来自两个域的样本x
s
和x
t
,我们首先通过eq3和eq4得到更新后的联合表示,然后进行1*1的卷积,我们得到最终的人的拓扑表示。最后,通过步骤四选出评分高的边集,并通过eq.7对齐他们的顶点集。
[0081][0082]
其中只是了两个域中第i个结点的拓扑表示。我们可以通过最小化损失函数lsm,以此在两个领域上学习泛化的高阶结构不变量表示来帮助判断关键点位置。
[0083]
微调(fine

tune)网络在完成link prediction之后。结合热图的熵损失和高阶拓扑匹配的损失函数进行fine

tune,进一步微调卷积层以继续训练模型.达到对原无监督学习的改进。预训练模型应该是最有效的。使用模型的最好方法是保留模型的体系结构和模型的初始权重。然后,我们可以使用在预先训练的模型中的权重来重新训练该模型。这样使
得对目标检测更加准确,这样才能使原来的穿短袖无法识别出来的情况得以解决。
[0084]
具体步骤:
[0085]
在ssda设置下,标记目标和未标记目标数据实际上具有相当潜在的关系。一方面,人的尺度、姿势或外表在他们之间是不同的。另一方面,它们服从均匀分布,并具有相似的特定关键点信息。找到其中的关键点与基线,通过算出他们的热图向量从而来画出对应的一阶热图。对应的我们可以得到其熵损失(entropy loss)。
[0086]
熵损失。熵最小化(ent)是一种半监督方法,假设模型对未标记数据的预测有信心。我们采用它作为正则化器,并确保它最大限度地帮助生成的热图在目标域获得更好的性能。我们将这个术语添加到等式4的优化中:
[0087][0088]
其中ent(p)计算分布p的熵。
[0089]
在这个过程中使用交叉熵损失函数对误差修正进行监督,损失函数如下:
[0090]
交叉熵损失函数(cross

entropy)
[0091][0092]
首先熵是香农信息量(的期望,可以这样理解,y表示真实标记的分布,h(x)则为训练后的模型的预测标记分布,交叉熵损失函数可以衡量y与h(x)的相似性。即两个分布的交叉熵越小越相似。
[0093]
在训练集、测试集和开发集的基础上,建立一个与szf里测试集对应的processor,用于将训练集、测试集和开发集的数据提取出来赋给text,label,在pre

training模型的基础上,设定好相关参数,运行,训练就完成了对该过程的fine

train,得到了优化后的xzznet网络,以及矫正后的人体关键点图像。
[0094]
上述步骤5的处理过程具体包括:利用优化后的xzznet网络以szf数据集为输入,生成szf数据集中的图像对应的关键点检测图像,根据关键点检测图像得到图像中包含人体的各个关键点姿态信息。
[0095]
经过上面一系列的改进之后,我们将数据集szf作为输入到优化后的xzznet网络中,生成图像检查结果,发现对于人体姿态识别估计在外露胳膊的条件下,关键点对应正确,之前部分关键点缺失的情况也得以解决。通过link prediction对xzznet的改进,使整个模型达到比较理想的效果。
[0096]
步骤3生成的人体姿态关键点是有监督的网络,步骤5是无监督网络生成的人体姿态关键点。我们的方法是学习无监督的网络,利用有监督的hrnet生成的人体姿态关键点与无监督的xzznet网络生成的人体姿态关键点进行图匹配。不断微调无监督的网络参数,从而使无监督网络xzznet收敛。
[0097]
经过上述的四个步骤,我们已经获得微调的的xzznet网络模型,这一步相当于测试的步骤,我们以python爬虫获取的szf数据集为输入,生成没有袖子的人体姿态图像的关
键点检测结果,从关键点检测图像中得到图像中包含的人体各个关键点的姿态信息。
[0098]
综上所述,本发明实施例经过大量的实验证明,在没有标记或者稀疏标记的图像中可以显著提高目标域的性能。本发明在无监督网络学习框架下可以准确地区分人体的各个关键点。
[0099]
本发明可以准确区分人体的各个关键点,有利于在复杂环境中对人体姿态的定位与识别,例如在火灾场景中人体的求救姿势可以被准确地检测到,有利于及时开展救援行动。
[0100]
本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
[0101]
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
[0102]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0103]
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1