一种人体姿态估计方法、装置与流程

文档序号:25780686发布日期:2021-07-09 09:25阅读:118来源:国知局
一种人体姿态估计方法、装置与流程

1.本申请涉及图像处理领域,尤其涉及一种人体姿态估计方法、装置。


背景技术:

2.电子设备对人体的姿态进行准确的识别是电子设备与用户成功交互的前提。例如,对于服务型机器人来说,准确识别用户的吃饭动作是其能够执行为用户收拾餐桌这一动作的前提;又如,对于(virtual reality,vr)游戏来说,对用户动作捕捉并给出对应响应,是vr设备给用户以沉浸感的关键。而人体的动作一般由一系列的人体姿态组成,因此,准确识别人体姿态在识别人体动作方面具有重要的意义。
3.近年来,研究人员提出了多种人体姿态估计方法,目前主流的人体姿态估计方法主要分为自顶向下和自底向上两种主流方法。自顶向下:先检测出每个人体,然后再检测每个人体的关节点进行姿态估计;自底向上:先检测出所有的关节点,然后再判断每一个关节点属于哪一个人。但是,这两种方法都容易受到人体部位遮挡、背景混淆等因素的影响,导致姿态估计效果差。


技术实现要素:

4.本申请提供一种人体姿态估计方法、装置,用于改善现有技术中人体姿态估计方法效果差的技术问题。
5.第一方面,本申请实施例提供一种人体姿态估计方法,包括:将待处理图像输入预先训练的神经网络模型,其中,所述待处理图像中包括人体,所述神经网络模型包括非局部网络模块和至少一级高分辨率网络模块;基于所述非局部网络模块提取所述待处理图像的特征信息,生成所述待处理图像的特征图,所述特征信息包括所述人体所在区域的每个像素与所述人体所在区域的其他像素的相关信息;基于所述至少一级高分辨率网络模块对所述特征图进行计算,获得所述待处理图像中所述人体的姿态估计结果。
6.本申请实施例通过在神经网络模型中插入非局部网络模块,使得神经网络模型在提取图像的特征信息时,可以基于非局部网络模块将每个人体上的像素点与该像素点所在人体范围内的其它所有像素进行关联,计算出该像素点与该像素点所在人体范围内的其它所有像素的相关信息,实现神经网络模型对人体关节点相对位置关系的更精细的描述,进而高层网络模块在对特征图进行计算预测关键点位置时,就会考虑到不同像素之间的位置相关性,可以提高人体姿态估计的精准性,解决密集人群中人体部位遮挡、背景混淆等复杂场景下人体姿态估计难的问题。另外,神经网络模型的高层网络模块使用高分辨率网络模块构建,能够保证图像在高分辨率网络模块的整个计算过程中均保持有高分辨率的表示,进而有效减少图像在模型传递过程中的信息损失,进一步提高人体姿态估计的精准性。
7.一种可能的实施方式中,所述神经网络模型还包括至少一个m
×
m卷积模块,m为奇数;所述非局部网络模块设置在所述至少一个卷积模块之后,所述至少一级高分辨率网络模块之前;在基于所述非局部网络模块提取所述待处理图像的特征信息之前,还包括:基于
所述至少一个卷积模块对所述待处理图像中所述人体所在区域上的若干个m
×
m大小的区域进行初步特征提取,获得所述待处理图像的初始特征信息,并基于所述初始特征信息生成所述待处理图像的初始特征图;则基于所述非局部网络模块提取所述待处理图像的特征信息,包括:将所述初始特征图输入所述非局部网络模块,计算所述待处理图像中所述人体所在区域的每个像素与所述人体所在区域的其他像素的相关信息,基于所述初始特征信息以及所述相关信息生成所述待处理图像的特征图。
8.本实施方式中,将非局部模块设置在神经网络模型的浅层(至少一个m
×
m卷积模块和高分辨网络模块之间),可以获得良好的特征提取结果,实现神经网络模型对人体关节点相对位置关系的更精细的描述,可以提高人体姿态估计的精准性。
9.一种可能的实施方式中,所述初始特征信息可以包括像素值、颜色特征、纹理特征、形状特征或空间关系特征等中的一项或多项;所述相关信息可以包括空间关系、颜色关系、纹理关系或形状关系等中的一项或多项。
10.本实施方式提供了初始特征信息、相关信息多种具体实现形式,在提高方案灵活性的同事,可以进一步提高人体姿态估计的精准性。
11.一种可能的实施方式中,所述非局部网络模块具体可以按照如下公式计算所述待处理图像中所述人体所在区域的每个像素与所述人体所在区域的其他像素的相关信息:
[0012][0013]
z
i
=w
z
y
i
+x
i
ꢀꢀꢀꢀꢀꢀꢀ
(2)
[0014]
其中,f为配对计算函数,用于计算像素x
i
和像素x
j
的相关信息;y
i
为所述人体所在区域上像素x
j
与所述人体所在区域上的所有其他像素的相关信息;g(x
j
)为一元输入函数,用于变换不同的像素x
j
;c(x)为归一化函数,保证变换y
i
前后整体信息不变,x为输入的所述人体所在区域的图像;j为所述人体所在区域上的其他像素的标识;z
i
为non-local网络模块输出的特征图;w
z
为权重值;+x
i
表示一个残差连接。
[0015]
本实施方式给出了非局部网络模块实现相关信息计算的具体方法,保证了方案的可靠性。
[0016]
一种可能的实施方式中,所述高分辨率网络模块可以包括多个交换模块,所述高分辨率网络模块中的每个交换模块包括至少两个并联连接的残差块,所述每个交换模块中第n个残差块的分辨率为c/a
n-1
,所述第n个残差块的输出通道为c0×
b
n-1
,其中c等于所述非局部网络模块的分辨率大小,n为正整数,a、b为大于1的正整数,c0为所述非局部网络模块的输出通道数。
[0017]
本实施方式中,高分辨网络模块包括交换模块,每个交换模块由至少两个残差块组成的并联结构,每个并联结构中至少有一个通道保持高分辨率的输出(例如和non-local网络模块输出的分辨率一致),这样可以保证图像在高分辨率网络模块的整个计算过程中均保持有高分辨率的表示,进而有效减少图像在模型传递过程中的信息损失,提高人体姿态估计的精准性。
[0018]
一种可能的实施方式中,所述高分辨率网络模块还可以包括多个交换单元,所述交换单元和所述交换模块按照预定次序交替连接,所述交换单元用于对输入的特征图进行多尺度融合。
[0019]
本实施方式中,使用交换单元将相邻的交换模块进行连接,通过交换单元完成重复的多尺度融合,进一步提高人体姿态估计的精准性。
[0020]
一种可能的实施方式中,所述残差块可以由多个相同类型的残差单元串联而成,例如,通过4个相同类型的残差单元串联而成。
[0021]
本实施方式中,给出了残差块的具体结构,保证了方案的可靠性。
[0022]
一种可能的实施方式中,每级所述高分辨率网络模块可以由至少两个阶段串行连接,每个阶段可以包括至少一个所述交换模块;其中,相邻两个阶段中的前一个阶段中每个交换模块的残差块的数量不超过后一个阶段中每个交换模块的残差块的数量。
[0023]
本实施方式中,每个交换模块的残差块的数量随着阶段从前到后的方向组件增加,可以实现高分辨网络模块由粗到精的网络架构,进一步提高人体姿态估计的精准性。
[0024]
一种可能的实施方式中,在将待处理图像输入预先训练的神经网络模型之前,还可以检测所述待处理图像中的人体,确定出所述待处理图像中所述人体所在区域。
[0025]
本实施方式中,在将待处理图像输入预先训练的神经网络模型之前先确定出待处理图像中所述人体所在区域,这样后层网络模块在提取待处理图像的特征信息时,就可以只对人体区域图像进行特征提取,可以有效减少模型的计算量,提高模型的预测效率。
[0026]
第二方面,本申请实施例提供一种识别人体姿态的装置,包括:输入单元,用于将待处理图像输入预先训练的神经网络模型,其中,所述待处理图像中包括人体,所述神经网络模型包括非局部网络模块和至少一级高分辨率网络模块;提取单元,用于基于所述非局部网络模块提取所述待处理图像的特征信息,生成所述待处理图像的特征图,所述特征信息包括所述人体所在区域的每个像素与所述人体所在区域的其他像素的相关信息;计算单元,用于基于所述至少一级高分辨率网络模块对所述特征图进行计算,获得所述待处理图像中所述人体的姿态估计结果。
[0027]
一种可能的实施方式中,所述神经网络模型还包括至少一个m
×
m卷积模块,m为奇数;所述非局部网络模块设置在所述至少一个卷积模块之后,所述至少一级高分辨率网络模块之前;所述提取单元用于:基于所述至少一个卷积模块对所述待处理图像中所述人体所在区域上的若干个m
×
m大小的区域进行初步特征提取,获得所述待处理图像的初始特征信息,并基于所述初始特征信息生成所述待处理图像的初始特征图;将所述初始特征图输入所述非局部网络模块,计算所述待处理图像中所述人体所在区域的每个像素与所述人体所在区域的其他像素的相关信息,基于所述初始特征信息以及所述相关信息生成所述待处理图像的特征图。
[0028]
一种可能的实施方式中,所述初始特征信息包括像素值、颜色特征、纹理特征、形状特征或空间关系特征中的一项或多项;所述相关信息包括空间关系、颜色关系、纹理关系或形状关系中的一项或多项。
[0029]
一种可能的实施方式中,所述提取单元用于:按照如下公式计算所述待处理图像中所述人体所在区域的每个像素与所述人体所在区域的其他像素的相关信息:
[0030][0031]
z
i
=w
z
y
i
+x
i
ꢀꢀꢀꢀꢀꢀꢀ
(2)
[0032]
其中,f为配对计算函数,用于计算像素x
i
和像素x
j
的相关信息;y
i
为所述人体所在
区域上像素x
j
与所述人体所在区域上的所有其他像素的相关信息;g(x
j
)为一元输入函数,用于变换不同的像素x
j
;c(x)为归一化函数,保证变换y
i
前后整体信息不变,x为输入的所述人体所在区域的图像;j为所述人体所在区域上的其他像素的标识;z
i
为non-local网络模块输出的特征图;w
z
为权重值;+x
i
表示一个残差连接。
[0033]
一种可能的实施方式中,所述高分辨率网络模块包括多个交换模块,所述高分辨率网络模块中的每个交换模块包括至少两个并联连接的残差块,所述每个交换模块中第n个残差块的分辨率为c/a
n-1
,所述第n个残差块的输出通道为c0×
b
n-1
,其中c等于所述非局部网络模块的分辨率大小,n为正整数,a、b为大于1的正整数,c0为所述非局部网络模块的输出通道数。
[0034]
一种可能的实施方式中,所述高分辨率网络模块还包括多个交换单元,所述交换单元和所述交换模块按照预定次序交替连接,所述交换单元用于对输入的特征图进行多尺度融合。
[0035]
一种可能的实施方式中,所述残差块由多个相同类型的残差单元串联而成。
[0036]
一种可能的实施方式中,每级所述高分辨率网络模块由至少两个阶段串行连接,每个阶段包括至少一个所述交换模块;其中,相邻两个阶段中的前一个阶段中每个交换模块的残差块的数量不超过后一个阶段中每个交换模块的残差块的数量。
[0037]
一种可能的实施方式中,所述装置还报考检测单元,用于所述输入单元在将待处理图像输入预先训练的神经网络模型之前,检测所述待处理图像中的人体,确定出所述待处理图像中所述人体所在区域。
[0038]
第三方面,本申请实施例提供一种电子设备,包括处理器和存储器;所述存储器用于存储一个或多个计算机程序;当所述存储器存储的一个或多个计算机程序被所述处理器执行时,使得所述电子设备执行如本申请实施例第一方面或第一方面任一种可能的实施方式中所述的方法。
[0039]
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质包括计算机程序,当计算机程序在电子设备上运行时,使得所述电子设备执行如本申请实施例第一方面或第一方面任一种可能的实施方式中所述的方法。
[0040]
第五方面,本申请实施例还提供一种包含计算机程序产品,当所述计算机程序产品在终端上运行时,使得所述电子设备执行如本申请实施例第一方面或第一方面任一种可能的实施方式中所述的方法。
[0041]
本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
[0042]
图1为本申请实施例适用的一种电子设备的结构示意图;
[0043]
图2为本申请实施例提供的一种神经网络模型的结构示意图;
[0044]
图3为本申请实施例提供的另一种神经网络模型的结构示意图;
[0045]
图4为本申请实施例中姿态估计的关键点的示意图;
[0046]
图5为non_local block的结构示意图;
[0047]
图6为残差块的结构示意图;
[0048]
图7为两种可能的残差单元的结构示意图;
[0049]
图8为交换模块与交换单元连接方式的示意图;
[0050]
图9为高分辨率网络模块的一种可能的结构示意图;
[0051]
图10为本申请实施例中神经网络模型的训练过程示意图;
[0052]
图11为本申请实施例中人体姿态估计的方法的流程图;
[0053]
图12为高分辨率表征网络hrnet-w32的结构示意图;
[0054]
图13为hrnet-w32模型与本申请神经网络模型的预测效果对比图;
[0055]
图14为hrnet-w32模型与本申请神经网络模型的预测效果对比图;
[0056]
图15为本申请实施例中一种人体姿态估计装置的结构示意图;
[0057]
图16为本申请实施例中一种电子设备的结构示意图。
具体实施方式
[0058]
人体姿态估计由于重要的应用价值和理论意义而受到越来越多的关注。单人人体姿态估计研究目前已经达到了较高的精度,提高空间比较小,现在大多数学者的研究方向聚焦于多人人体姿态估计方面。
[0059]
在多人检测中,主流的人体姿态估计方法主要有以下两种:
[0060]
(1)自顶向下
[0061]
自顶向下方法主要包括两个步骤:第一,利用人体检测器检测到人体,并判断出人体的所在的位置,标识出每个人体的边缘。第二,在确定人体后,再独立对单人人体的关键点进行预测,最终达到姿态预测。
[0062]
papandreou等人使用了扩张卷积的resnet,这在语义分割和计算关键点热图和偏移输出方面非常成功。与高斯热图不同的是,作者估计了一个圆盘形状的关键点遮罩和二维偏移矢量场来精确定位关键点。xia等人提出了人体检测方法的关节部分分割和关键点检测。作者使用单独的posefcn和partfcn来获得部件掩模和位置,并将它们与完全连接的crf融合。通过消除不相关的检测,这提供了更一致的预测。fang等人提出使用空间变压器网络(spatial transformer networks)来处理不准确的包围盒,并且使用堆叠的沙漏块。他们在他们的mask-rcnn模型中结合了实例分割和关键点预测,另外在roi对齐的特征图(feature maps)上附加关键点头,以便为每个关键点获得一个热掩码。chen等人在特征金字塔网络的基础上开发了用于多尺度推理的全局网络,并利用超特征细化了预测。
[0063]
目前,自顶向下的人体姿态估计方法面临着一些困难和挑战。例如,在人体部位被遮挡,背景复杂(例如人体密集)且容易混淆的情况下,姿态检测的效果往往较差。同时,对于复杂的姿态,自顶向下的方法也难以胜任。另外,当图像中的人数增多时,这种方法的时间开销也会随着人数增加呈比例增长。
[0064]
(2)自底向上
[0065]
自底向上的人体姿态估计算法主要包含关键点的检测和聚类两个部分,其中关键点检测和单人的关键点检测方法相近,区别在于多人的关键点检测需要将图片中所有类别的所有关键点全部检测出来,然后对这些关键点进行聚类处理,将不同人的不同关键点连接在一块,从而聚类产生不同的个体。
[0066]
在相关技术中,zhe cao在开放式(openpose)方法中通过对人体的不同肢体结构进行建模,使用向量场来模拟不同肢体结构,解决了单纯使用中间点是否在肢干上造成的
错连问题。如果只使用中间点对肢干进行建模,并且中间点都在对应的肢干上,则判断两个关键点处在该肢干的两端,这样就会出现错连情况。而向量场则不仅使用中间点来建模肢干,而且在中间的位置之外还给每个中间点加上了方向的信息,这样就能解决出现的错连问题。该方法能够针对多人做到实时检测,但在多尺度、模糊等场景下,模型性能损耗较大,易出现关键点漏检、错连等错误。
[0067]
目前,自底向上的人体姿态估计方法的准确率不理想,相对于自顶向下方法准确率更差。主要是因为自底向上的人体姿态估计方法错过了放大每个人体实例细节的机会。另外,在遮挡、多尺度等复杂场景下,自底向上的人体姿态估计方法和自顶向下一样,易出现漏检、错连等情况。
[0068]
通过上述描述可知,无论是自顶向下的方法还是自底向上的方法,对于遮挡、背景混淆等复杂场景下的姿态估计准确性都较差。
[0069]
不仅如此,目前的预测模型基本都使用了大量的下采样和上采样,并进行了串行连接,这就造成了图像信息在模型的传递过程中有着较大的损失,这也会对模型的预测精度造成影响。
[0070]
针对上述一个或多个技术问题,本申请实施例提供一种人体姿态估计方案。通过在神经网络模型的浅层位置中插入非局部(non-local)网络模块,使得神经网络模型在提取图像的特征信息时,可以基于non-local网络模块将每个人体上的像素点与该像素点所在人体范围内的其它所有像素进行关联,计算出该像素点与该像素点所在人体范围内的其它所有像素的相关信息,这样获得的特征图(feature maps)中就会包含每个人体范围内所有像素之间的相关信息(例如空间关系)。因为人体范围内像素的分布情况最终会决定人体姿态,例如手脚关节点的相对位置不同便会形成不同的人体姿态,而这种抽象的关节点相对位置关系其实就是像素之间的一种依赖关系,通过non-local网络模块,可以有效捕捉图像中像素间的依赖关系,实现神经网络模型对人体关节点相对位置关系的更精细的描述,进而高层网络模块(non-local网络模块之后的网络模块)在对特征图进行计算预测关键点位置时,就会考虑到不同像素之间的位置相关性,可以提高人体姿态估计的精准性,解决密集人群中人体部位遮挡、背景混淆等复杂场景下人体姿态估计难的问题。
[0071]
另外,针对图像信息在模型传递过程中由于下采样和上采样造成信息损失进而导致模型预测精度下降的问题,本申请实施例中的神经网络模型的高层网络模块(non-local网络模块之后的网络模块)还使用高分辨率网络模块构建。示例性的,高分辨网络模块由若干交换单元和交换模块按照预定次序交替串接而成,每个交换模块由至少两个残差块组成的并联结构,每个并联结构中至少有一个通道保持高分辨率的输出(例如和non-local网络模块输出的分辨率一致),这样可以保证图像在高分辨率网络模块的整个计算过程中均保持有高分辨率的表示,进而有效减少图像在模型传递过程中的信息损失,进一步提高人体姿态估计的精准性。
[0072]
为了使得本申请的实施例更容易被理解,下面,对本申请的实施例中涉及的一些描述加以说明,以便与本领域技术人员理解。
[0073]
1)、注意力(attention)机制:目前,注意力机制被广泛应用于机器翻译、自然语言处理、计算机视觉领域当中。注意力是一种机制,或者方法论,并没有严格的数学定义。例如,传统的局部图像特征提取、显著性检测、滑动窗口方法等都可以看作一种注意力机制。
在神经网络中,注意力模块通常是一个额外的神经网络,能够强制性地选择输入的某些部分,或者给输入的不同部分分配不同的权重。这使得网络得以选择一些关键的信息输入进行处理,从而提高了神经网络的效率。
[0074]
随着注意力机制的深入研究,各式各样的attention机制被提出。其中,2017年google机器翻译团队发表的论文《attention is all you need》,它所提出的自注意力机制(self-attention)开始成为神经网络中attention机制的研究热点,并且在多个相关任务上取得了不错的效果。
[0075]
2)、非局部(non-local)网络:2017年,cmu发表在cvpr的论文《non-local neural networks》,它提出的non-local网络和自注意力机制(self-attention)具有一定的相关性,但是自注意力机制仅适用于机器翻译领域,而非局部网络更具一般性,适用于计算机视觉的图像和视频问题。在本申请实施例中,创造性地将非局部(non-local)网络引入图像处理领域,借助non-local网络的思想提高图像处理领域中对人体姿态估计的准确率。
[0076]
3)高分辨率技术:是ke sun等人提出了一种高分辨率网络技术。本申请实施例中的高分辨网络拥有与众不同的并联结构,可以在神经网络模型的任何阶段随时保持高分辨率表征,而不只是靠从低分辨率表征里恢复高分辨率表征。
[0077]
4)图像特征:图像特征主要有图像的像素值、颜色特征、纹理特征、形状特征和空间关系特征等。
[0078]
图像的像素值可以是一个红绿蓝(rgb)颜色值,像素值可以是表示颜色的长整数。例如,像素值为256*red+100*green+76blue,其中,blue代表蓝色分量,green代表绿色分量,red代表红色分量。各个颜色分量中,数值越小,亮度越低,数值越大,亮度越高。对于灰度图像来说,像素值可以是灰度值。
[0079]
颜色特征是一种全局特征,描述了图像或图像区域所对应的景物的表面性质;一般颜色特征是基于像素点的特征,此时所有属于图像或图像区域的像素都有各自的贡献。
[0080]
纹理特征也是一种全局特征,它也描述了图像或图像区域所对应景物的表面性质。与颜色特征不同,纹理特征不是基于像素点的特征,它需要在包含多个像素点的区域中进行统计计算。
[0081]
形状特征有两类表示方法,一类是轮廓特征,另一类是区域特征,图像的轮廓特征主要针对物体的外边界,而图像的区域特征则关系到整个形状区域。
[0082]
空间关系特征,是指图像中分割出来的多个目标之间的相互的空间位置或相对方向关系,这些关系也可分为连接/邻接关系、交叠/重叠关系和包含/包容关系等。通常空间位置信息可以分为两类:相对空间位置信息和绝对空间位置信息。前一种关系强调的是目标之间的相对情况,如上下左右关系等,后一种关系强调的是目标之间的距离大小以及方位。
[0083]
需要说明的,上述列举的图像特征可以作为图像中具有的特征的一些举例,图像还可以具有其他特征,如更高层级的特征:语义特征,此处不再展开。
[0084]
5)另外,需要理解的是,在本申请的描述中,若干,是指两个或两个以上。“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
[0085]
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述,显
然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0086]
本申请实施例技术方案可以应用于电子设备中,比如个人计算机、计算机工作站、智能手机、平板电脑、智能摄像头、智能汽车或其他类型蜂窝电话、媒体消费设备、可穿戴设备、机顶盒、游戏机等任何计算能力的电子设备或者多个这样的设备组成的系统。
[0087]
下面,对本申请实施例的硬件运行环境做简单介绍。
[0088]
本申请实施例提供的人体姿态估计方法可以在服务器上被执行,也可以在云端被执行,还可以在终端(例如手机,电脑,摄像头,或者自动驾驶的车辆等)上被执行。更具体的,用于执行本申请实施例中的数据计算的,可以是传统的处理器+存储器的硬件结构,也可以是处理器+神经网络处理器+存储器的硬件结构,还可以是神经网络处理器+存储器的处理结构,本申请对此不作限定。以下以处理器+神经网络处理器+存储器的处理结构来进行举例。
[0089]
如图1所示:
[0090]
图1所示的一种用于神经网络计算的电子设备100为例。电子设备100包括处理器102、存储器103。其中,所述处理器102可以是多个处理器的总称,其中可以只包括传统处理器,如cpu(central processing unit,中央处理器),还可以包括传统处理器和神经网络处理器(此处指可以用于神经网络运算的处理器,不限定为专用的神经网络处理器);其中常见的神经网络处理器可以包括但不限于以下几种:gpu(graphics processing unit,图形处理器)、npu(neural-network processing uint,神经网络处理器)、tpu(tensor processing unit,张量处理器)。
[0091]
例如,该处理器102中可以包括cpu,该处理器102中可以包括cpu和gpu,或,该处理器102中可以包括cpu、gpu和npu,或,该处理器102中可以包括cpu、gpu、npu和tpu,也可以是cpu与gpu、npu、tpu三者中任意一种或两种的组合;其中上面集中举例中所包括的cpu、gpu、npu或tpu的数量可以是一个,也可以是多个,需要根据神经网络具体的应用场景对应的计算量和计算类型来决定。本申请实施例不做限定。
[0092]
电子设备100可以为一个印制电路板(printed circuit board,pcb),集成电路(integrated circuit,ic),或者一种通讯设备,例如移动电话、便携式电脑等。在一种实现方式中,处理器102、存储器103作为两个分立器件被设置于pcb板上;当处理器102是由多个处理器组成的,该多个处理器也可以分别作为独立的器件被设置的pcb板上。在另一种实现方式中,处理器102、存储器103被集成或封装于一个ic上。可以理解上述两部分可以根据需要进行集成或分立,例如当处理器102是由多个处理器组成时,可以将该多个处理器集成或封装于一个专用集成电路(application-specific integrated circuit,asic)上,再与存储器103一起设置于pcb板上。当处理器102是由多个处理器组成时,该多个处理器之间,以及它们与存储器103之间均可互相通信耦合,并存在高速数据传输连接,该高速数据传输连接可以通过分别通信连接处理器102中的多个处理器及存储器103的总线101来实现,总线101可以为axi(advanced extensible interface)总线协议,或其他总线协议。
[0093]
当处理器102包括cpu时,该cpu用于运行存储在存储器103中的软件程序和/或指令,以执行电子设备100的各种功能,上述cpu可以是基于x86架构、基于arm架构和基于
cortex-a架构的cpu。存储器103可以包括易失性存储器,例如随机存取存储器(random access memory,ram),也可以包括非易失性存储器,例如闪存(flash memory),硬盘或固态硬盘(solid-state drive,ssd),也可以是上述种类的存储器的组合。该存储器103用于存储相关指令及数据。当处理器102中包含用于神经网络运算的处理器时,该神经网络处理器可以是单独的硬件芯片,也可以是与处理器102集成在一个硬件芯片中的计算电路,例如ip(intellectual property,知识产权)核。上述的一个或多个硬件芯片可以是asic、可编程逻辑器件(programmable logic device,pld)或上述种类的硬件芯片的组合,其中pld可以是现场可编程逻辑门阵列(field programmable gate array,fpga)、通用阵列逻辑(generic array logic,gal)等。
[0094]
可选的,电子设备100还包括显示设备104、输入设备105、射频电路106和通信模块107。其中,显示设备104用于输出可视的文本、图形、视频及其任意的组合,显示设备104可以是lcd(liquid crystal display,液晶显示器)或lpd(lighting power density,发光聚合物显示器);用户可以通过输入设备105输入命令和信息至电子设备100中,例如待识别的图像数据或声音数据(在本申请实施例中可以是待进行超分重建的图像),其中输入设备105可以是鼠标、键盘、扫描仪或摄像头等;射频电路106用于接收和发送电磁波,将电信号变换成电磁波,或是将电磁波变换成电信号,并且通过电磁波与通信网络或其他通信设备进行通信;通信模块107用于处理通信数据,例如射频电路106接收的电磁波并变换成的电信号所表示的通信数据。
[0095]
在一种实施方式中,当处理器102中包括cpu时:通过总线101连接所述cpu和所述存储器103。所述cpu通过总线101从存储器103中获取用于神经网络运算的输入数据、输入参数和指令,其中输入数据包括需要计算的神经网络数据,如待识别的图像数据、声音数据;输入参数包括用于神经网络计算的参数,如离线训练好的神经网络参数;指令包括指示神经网络层的信息,所述cpu根据指令配置对应的神经网络层的计算模式,这些计算模式可以包括乘、累加、开方等运算,或者这些运算的组合。可选的,所述cpu也可以处理多种神经网络层的计算,如卷积(convolution)层、全连接(full connected)层、池化(pooling)层、归一化(normalize)层等神经网络层。
[0096]
在一种实施方式中,当所述处理器102包括传统处理器和神经网络处理器时,该神经网络处理器可以和传统处理器(如cpu)集成在一个硬件芯片中,也可以是单独的硬件芯片,电子设备100中的总线101将cpu、存储器103和神经网络处理器通信连接,形成数据通路。cpu通过总线101控制神经网络处理器启动神经网络运算;当神经网络处理器完成神经网络计算,则通过总线101通知处理器102计算结束。神经网络处理器通过总线101从存储器103中获取用于神经网络计算的输入数据、输入参数和指令,其中输入数据包括需要计算的神经网络数据,如待识别的图像数据、声音数据;输入参数包括用于神经网络计算的参数,如离线训练好的神经网络参数;指令包括指示神经网络层的信息,神经网络处理器根据指令,配置对应的神经网络层的计算模式,这些计算模式可以包括乘、累加、开方等运算,或者这些运算的组合。可选的,神经网络处理器可以处理多种神经网络层的计算,如卷积(convolution)层、全连接(full connected)层、池化(pooling)层、归一化(normalize)层等神经网络层。
[0097]
可以看出,单独利用cpu处理神经网络的运算和利用cpu加神经网络处理器进行神
经网络运算,区别在于:仅有cpu进行神经网络运算时少了cpu和神经网络处理器之间的交互,即cpu不需要控制神经网络处理器开始或结束计算,因为它自己就是计算的主体;但是由于cpu和神经网络处理器在设计上的侧重不同,使得其对神经网络中必然包含的大规模并行运算的运算效率低于神经网络处理器,因此cpu加神经网络处理器的结合方式在神经网络计算中将更为常见,但是本申请实施例并不对此进行限定。
[0098]
一个神经网络可以包括多种神经网络层,并且同一种神经网络层可以多次出现在一个神经网络中,例如,识别一个图像需要的神经网络层包括:卷积层、sigmoid层、池化层、sigmoid层、池化层和全连接层,上述的神经网络层包括了2层sigmoid层和2层池化层。当处理器102包括神经网络处理器时,在神经网络计算中,神经网络处理器依次对每一层神经网络层进行计算,其中,对当前神经网络层的计算结果可以作为下一层神经网络层计算的输入。在上面的例子中,卷积层的输入数据为输入参数和图像的输入数据,对卷积层进行计算后得到的计算结果被用于sigmoid层的输入数据。
[0099]
接着上面的举例,当处理器102包括神经网络处理器时,在对一层神经网络进行一次完整的计算过程中,神经网络处理器先通过总线101从存储器103中读取需要处理的输入数据、输入参数和指令。由于计算不同的神经网络层需要对数据做不同模式的计算,因此读取的输入参数和指令与具体的神经网络层的种类有关。神经网络处理器根据对应的指令对输入数据和输入参数进行计算,得到的计算结果通过总线101写入存储器103,这些计算结果作为后续的神经网络层的计算所需要的数据。在下一层神经网络层的计算中,神经网络处理器再次通过总线101从存储器103中读取输入数据和输入参数,其中读取的输入数据可以包括上一层神经网络层的计算结果或者尚未经过计算的数据。
[0100]
为了进一步了解神经网络处理器的运算能力,以区别于传统的处理器如cpu,下面对神经网络处理器的内部运算结构进行简单描述,常见的几种神经网络处理器中,目前应用最多的是gpu,因此以下主要以gpu举例,并将gpu与cpu进行对比以解释gpu的结构及运算特性。
[0101]
gpu,又称显示核心,视觉处理器,显示芯片,使一种专门用于进行图像运算的微处理器。与cpu类似,只不过gpu是专门执行复杂的数学和几何计算而设计的。如,gpu加速计算之所以可以提供非凡的应用程序性能,是因为其将应用程序密集部分的工作负载转移到gpu,同时仍由cpu运行其余程序代码。因为cpu是专门为顺序串行处理而优化的几个核心组成,而gpu则拥有一个由数以千计的更下更高效的核心(专为同时处理多重任务而设计)组成的大规模并行计算架构。gpu中单个核心可以处理的计算复杂度远低于cpu中单个核心可以处理的计算复杂度,随着技术的发展,gpu中单个核心可以处理的计算复杂度会越来越高,但是其计算工作仍需要由cpu进行控制触发。gpu和cpu之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。如,cpu需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断因此会引入大量的分支跳转和中断的处理。这些都使得cpu的内部结构异常复杂。而gpu面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。gpu处理的首要目标是运算以及数据吞吐量,而cpu内部晶体管的首要目的是降低处理的延时以及保持管线繁忙,这也就决定了gpu在密集型计算方面比起cpu有更优越的表现。总而言之,cpu和gpu因为最初用来处理的任务就不同,所以设计上有不小的区别。而某些任务和gpu最初用来解决的问题比较相似,所以就可以用
gpu来算。
[0102]
下面,详细介绍本申请实施例中神经网络模型的结构。
[0103]
请参见图2,本申请实施例中的神经网络模型包括non-local网络模块和至少一级高分辨率网络模块。其中,non-local网络模块用于提取待处理图像的特征信息,生成待处理图像的特征图。其中,特征信息包括待处理图像中每个人体所在区域(或者说“人体区域图像”)上的每个像素与人体区域图像上的其他像素的相关信息。至少一级高分辨率网络模块连接在non-local网络模块之后,用于对non-local网络模块输出的特征图进行计算,获得待处理图像中每个人体的姿态估计结果。应理解,本申请实施例中的待处理图像可以包括一个或多个人体,当待处理图像中包括多个人体时,神经网络模型可同步对每个人体执行姿态识别过程。
[0104]
一种可能的设计中,神经网络模型还可以包括至少一个m
×
m卷积模块,设置在non-local网络模块之前,用于对待处理图像进行初步的特征提取,获得待处理图像的初始特征信息,并基于这些初始特征信息生成待处理图像的初始特征图。这里的特征提取可以是对待处理图像进行全局性的特征提取,即对整张图都进行特征提取,其中每个卷积核的操作范围为m
×
m的像素区域,例如卷积核的大小为3
×
3的矩形结构,则最多计算到局部9个像素点之间的相关性。之后,non-local网络模块根据上述初始特征图计算待处理图像中每个像素与其他像素的相关信息,并基于初始特征信息、相关信息生成待处理图像的特征图。
[0105]
应理解,本申请实施例中的提取的特征可以包括像素值、颜色特征、纹理特征、形状特征或空间关系特征等多种特征,这里不做具体的限制。特征数即为提取的特征的种类的数量,或者说获得的图像矩阵的通道维数,或者说获得的特征图的特征维数。
[0106]
另一种可能的设计中,本申请实施例中的特征提取也可以是对待处理图像进行局部性的特征提取,如m
×
m卷积模块只对人体区域图像进行初步特征提取。
[0107]
示例性的,可以在至少一个m
×
m卷积模块之前设置一个人体检测器,先通过人体检测器检测出每个人体所在的位置区域,并标识出每个人体的边缘,然后至少一个m
×
m卷积模块、non-local网络模块在提取待处理图像的特征信息时,就可以只对人体区域图像进行特征提取,这种方式可以减少模型的计算量,提高模型的预测效率。
[0108]
下面例举一种具体的神经网络模型进行详细说明。
[0109]
如图3所示,为本申请实施例中神经网络模型结构的一种具体示例,该神经网络模型包括依次串接的人体检测器、至少一个m
×
m卷积模块、non-local网络模块和至少一级高分辨率网络模块。该模型的计算过程包括:
[0110]
1、人体检测器识别出待处理图像中的人体,并确定出各个人体的位置,然后标识出每个人体的边缘。
[0111]
一种可能的设计中,人体检测器可以由yolo(you only look once)算法实现,其具体类型可以是yolo v1、yolo v2或yolo v3等,这里不做具体限制。
[0112]
在人体检测器确定出每个人体所在的位置区域后,神经网络模型可以同步对每个人体进行姿态估计。
[0113]
2、卷积模块对每个人体区域图像进行初步的特征提取操作,并将图像的输入分辨率降低到c,获得w、高为h、特征数为c的图像矩阵(在本文中,“图像矩阵”又可称为“特征图”)。例如,宽为256、高为192(即图像的分辨率c为256
×
192)。
[0114]
其中,m为奇数,例如为3、5或7等。应理解,这里的提取的特征可以包括像素值、颜色特征、纹理特征、形状特征或空间关系特征等多种特征,这里不做具体的限制。特征数即为提取的特征的种类的数量,或者说获得的图像矩阵的通道维数,或者说获得的特征图的特征维数。
[0115]
3、non-local网络模块对图像矩阵进行进一步的特征提取操作。
[0116]
在相关技术中,对于序列化数据,如语音或视频通常使用循环神经网络用来捕捉数据之间的依赖关系。而对于图片,则通常使用较大的卷积核来捕捉像素之间的关系。然而循环神经网络或者传统的卷积神经网络都只是在其时间或空间的很小的邻域内进行捕捉,却很难捕获到较远位置的数据的依赖关系。而本申请实施例,通过在神经网络模型中插入non-local网络模块,可以捕捉到较远位置的像素之间的依赖关系。
[0117]
本申请实施例中的non-local网络模块的实现,可以基于xiaolong wang等人于2017年提出的一种新的基于局部操作的封装模块,可以解决捕获长距离依赖问题。该non-local操作模块受图像滤波领域均值滤波操作思想,泛化简单、可直接嵌入到当前网络。简单来说,non-local网络模块的操作就是在一个位置的计算响应是输入特征图中所有的特征的加权总和。non-local网络模块的优势在于对长距离依赖关系的获取与像素位置信息无关,且输入大小可变,与别的运算结合容易。
[0118]
本申请实施例中的神经网络中的non-local网络模块的操作定义如公式(1)所示。
[0119][0120]
z
i
=w
z
y
i
+x
i
ꢀꢀꢀꢀꢀ
(2)
[0121]
其中,f(x
i
,x
j
)为配对计算函数,用于计算像素x
i
和像素x
j
的相关信息。其中,g为一元输入函数,目的是进行信息变换,即变换不同的像素x
j
,以计算不同像素x
j
与像素x
i
的相关性。c为归一化函数,保证变换y
i
前后整体信息不变,x表示输入的人体图像;j为像素x
i
所在人体范围内的其他像素的标识。z
i
为non-local网络模块输出的特征图;w
z
为权重值,+x
i
表示一个残差连接。
[0122]
公式(1)中,y
i
表示像素x
i
与像素x
i
所在人体范围内的所有其他像素之间的相关性(即像素x
i
与像素x
i
所在人体范围内的其他所有像素的相关信息)。若是普通的卷积操作,由于卷积核的大小有限,大多为3
×
3的矩形结构,因此只能计算到局部9个像素点之间的相关性,而从公式(1)可以看出,本申请实施例中non-local模块则打破了这一局限性,non-local网络模块可以计算出某位置的像素点和特征图中其他较远位置处的像素点之间相关性。
[0123]
示例性的,基于上述人体检测器用于识别的人体的区域,non-local网络模块可以计算每个像素点与该像素点所在人体范围内的其它所有像素点的相关性。当然,这里只是一种可能实现方式,在具体实施过程中,像素点相关性的计算范围不限于此。例如,为了进一步保证计算的可靠性,计算范围可以略大于人体范围,如除了计算人体所在位置区域的各像素点之间的相关性外,还可以计算人体所在位置区域外像素点与人体所在位置区域内像素点之间的相关性。例如,为了减少计算量以提高模型的计算速度,可以适当减少或去掉部分像素点的计算,比如人体范围内距离人体边界小于预设距离的像素点,因为这些像素点一般都不会是关节位置处的像素点,所以在保证计算准确性的同时可以不对这些像素点
进行相关性的计算。
[0124]
在本申请实施例中,像素和像素之间的相关性(或者说相关信息)可以包括像素和像素之间的空间关系(或者说相对空间位置信息)。示例性的,像素和像素之间的空间关系(或者说相对空间位置信息),可以用特征值p来表征,p值越大,则表征这两个像素点之间的空间关系越重要(或者说相关度越大),比如属于同一人体区域的两个像素点的p值应大于人体区域内的像素点与人体区域外的像素点的p值。又如,同于姿态估计的关键点中包含肘关节位置点和膝关位置点,不包括耳朵位置点,则肘关节位置点像素和膝关节位置点像素的p值应大于肘关节位置点像素和耳朵位置点像素的p值。又如图4所示,以人体鼻子处的像素点为例,与该点关联程度最大的像素为其他关节点处的像素,包括肘关节、膝关节、腕关节、踝关节等。
[0125]
当然,像素和像素之间的相关性除了空间关系外,还可以包含其他关系,例如颜色特征、纹理特征、形状特征等,这里不做限制。
[0126]
在本申请实施例中,为了将non-local操作变形成一个non-local block,以便其可以被插入到已有的结构中,定义了一个non-local block,表达式如(2)所示。其中y
i
的表达式如(1)所示,+x
i
表示的是一个残差连接(residual connection),残差连接结构使得可以在任意预训练模型中插入一个新的non-local block,而不需要改变其原有的结构。
[0127]
non-local block可以使用卷积核大小为1的卷积层及一些神经网络的组件来实现。本申请实施例中采用的non-local类型可以为嵌入高斯(embedded gaussian),则公式(2)进一步可以表示为:
[0128]
z=w
z
y+x,其中
[0129]
其中,x表示待计算的像素点,x
t
是由像素x所在人体范围内其他所有像素组成的矩阵。
[0130]
在嵌入空间(embedding space)中,公式(1)中的函数f的表达式为:
[0131][0132]
θ(x
i
)=w
θ
x
i
,φ(x
i
)=w
φ
x
j
是embedded gaussian中的embeddings。结合softmax函数的表达式,就可以得到embedded gaussian的表达式。softmax也称作归一化指数函数,主要用于多分类。
[0133]
图5为non_local block的结构示意图。如图5所示,待处理图像通过两个3
×
3卷积后产生大小为c(以c=256*192为例),通道数(特征数)为c(以c为64为例)的特征图,然后特征图经过non-local模块中的两个嵌入权重变量w
θ
,w
φ
得到两个大小为(256
×
192
×
32)的特征图,降低了通道数(从64降低到32),减少了计算量。之后对这两个输出(256
×
192
×
32)进行矩阵相乘操作,计算其相似性,得到(256
×
192,256
×
192),相乘的结果在第二个维度上进行softmax操作,得到通道数与其输入相同的矩阵(256
×
192,256
×
192),然后将(256
×
192,256
×
192)与经过g卷积(即图5中命名为g的1
×
1卷积)后的结果(256
×
192
×
32)相乘,并将相乘结果最后经过一个1
×
1卷积恢复输出通道,保证了输入输出尺度完全相同,最终输出为256
×
192
×
64,该输出从non-local网络模块输出后,进入后接的第一级高分辨率网络模块。上述过程中,non-local网络模块首先对输入图像(矩阵形式)的c个通道维(或者说特征维)进行了混合处理,即通过θ、、g三个卷积层先把图像的c个通道分别变换到c/2
个不同通道,再通过矩阵重组使得图像的空间信息和通道信息进行混合融合,使得神经网络模型的后续处理不但能提取图像空间信息,也能考虑不同通道(例如rgb)中的信息相关性和依赖性。
[0134]
应理解,图5所示的示例中,non-local网络模块通过串联的方式连接在两个3
×
3卷积层之后,第一级高分辨网络模块之前。当然在具体实施时,non-local网络模块也可以设置在其他位置,例如在两个3
×
3卷积层中间,例如non-local网络模块之前设置1个或3个卷积,non-local网络模块设置在1个或3个卷积之后,等等,本申请实施例对non-local网络模块的具体位置不做限制。
[0135]
4、至少一级串联的高分辨率网络模块对non-local网络模块进行多分辨率聚合特征提取,获得人体的关键点信息。
[0136]
具体的,每级高分辨率网络模块由若干交换单元和若干残差块按照预定次序依次连接而成。其中,每个残差块由多个相同种类的残差单元串联而成,如图6所示,以四个残差单元为例。在本申请实施例中,残差单元的可以由多类型实现,这里例举两种可能的类型:
[0137]
第1种、基本块(basic block)。如图7(a)所示,最后残差单元学习到的是残差特征。假设输入的图像为256
×
192
×
64,主路通过2个3
×
3卷积串联实现特征提取,旁路通过跳层实现,最后模块的输出由主路和旁路求和实现。
[0138]
第2种、瓶颈块(bottleneck block)。如图7(b)所示,最后残差单元学习到的也是残差特征。假设输入的图像为256
×
192
×
256,主路先通过1个1
×
1卷积将输入图像的通道数降到64,再经过1个3
×
3卷积进行特征提取,最后再经过1个1
×
1卷积将通道数恢复到256,旁路通过跳层实现,最后模块的输出由主路和旁路求和实现。
[0139]
在本申请实施例中,每个交换模块由至少两个残差块并联而成,每个交换模块中至少有一个(残差块的)通道保持高分辨率的输出(例如,大于non-local网络模块输出的分辨率,或者与non-local网络模块输出的分辨率一致,后文主要以与non-local网络模块输出的分辨率一致为例),这样可能保证图像在高分辨率网络模块的整个计算过程中均保持有高分辨率的表示,进而有效减少图像在模型传递过程中的信息损失,进一步提高人体姿态估计的精准性。
[0140]
一种可能的设计中,每级高分辨率网络模块由至少两个阶段(stage)串行连接,每个阶段可以包括至少一个交换模块,每个交换模块由至少两个残差块并联而成,相邻两个交换模块通过一交换单元连接;其中,相邻两个阶段中的前一个阶段中每个交换模块的残差块的数量不超过后一个阶段中每个交换模块的残差块的数量,使得高分辨率网络模块呈现由粗到精的结构,兼顾计算的效率和准确性。每个交换模块中第n个残差块的分辨率为c/a
n-1
,其中c等于非局部网络模块的分辨率大小,n为正整数,这样可使得每个交换模块中第1个残差块的分辨率为c,第n个残差块的输出通道为c0×
b
n-1
,a、b为大于1的正整数,c0为non-local模块的输出通道数,如图5所示例子中的64,这样可使得每个交换模块中第1个残差块的输出通道为c0。
[0141]
下面例举以一个可能的阶段,叙述交换模块与交换单元的具体连接。
[0142]
如图8所示,一个交换模块包含多个分辨率不同、输出通道也不同的残差块,图8中以每个交换模块包括三个残差块为例,每个交换模块中第一个残差块的分辨率为c,第二个残差块的分辨率为c/2,第三个残差块的分辨率为c/4。不同的交换模块间、不同的stage间
均是使用交换单元连接,通过交换单元完成重复的多尺度融合。
[0143]
交换单元的原理如下:
[0144]
设输入的s个特征图为{x1,x2,l,x
s
,}经过交换单元输出的对应的s个特征图为{y1,y2,l,y
s
}。每一个输出都是对特征图的聚合,则有:
[0145][0146]
其中,a(x
i
,k)的作用是使用上采样或者下采样使得x
i
从分辨率为i变为分辨率为k。下采样使用3
×
3卷积完成,上采样使用最近邻抽样完成,并使用1
×
1卷积调成输出的通道数。如果i和k相等,那么a(x
i
,k)=x
i
,此时函数a完成的就是一个直接连接的工作。
[0147]
图9为高分辨率网络模块的一种可能的结构示意图,包括两级高分辨网络模块。
[0148]
第一级高分辨率网络主要用于多分辨率信息的聚合,包含四个stage的串行连接,其中stage1包含1个交换模块,每个模块由1个残差块组成,输出通道数为64,分辨率为c。stage2包含1个交换模块,每个模块由2个残差块组成,2个残差块的输出通道数分别为64、128,分辨率分别为c、1/2*c。stage3包含4个交换模块,每个模块由3个残差块组成,3个残差块的输出通道数分别为64、128、256,分辨率分别为c、1/2*c,1/4*c。stage4包含3个交换模块,每个模块由4个残差块组成,4个残差块的输出通道数分别为64、128、256、512,分辨率分别为c、1/2*c、1/4*c、1/8*c。stage1、stage2、stage3、stage4包含的交换单元数分别为1、1、4、3。
[0149]
第一级高分辨率网络对特征图的处理过程如下:
[0150]
non-local网络模块输出的图像矩阵输入第一级高分辨网络模块后,首先进入stage1。其中,stage1包括一个交换模块,该交换模块包含1个残差块,它对输入信息进行特征提取,输出特征图的分辨率为c,通道数为64,然后通过交换单元,将输出的特征图送入到stage2;
[0151]
stage2的交换模块包含2个残差块,它们分别对输入的特征图进行处理,残差块1输出的特征图的分辨率为c,通道数为64,残差块2输出的特征图的分辨率为1/2*c,通道数为128,然后残差块1和残差块2输出的特征图均经过交换单元,交换单元对这2个残差块输出的特征图进行聚合,并输出特征图到stage3。这里stage2的交换单元得输出的特征图有3路,其中第一路的输出特征图的分辨为c,通道数为64,第二路的输出特征图的分辨率为1/2*c,通道数为128,第三路的输出特征图的分辨率为1/4*c,通道数为256。以第一路来举例说明交换单元的聚合原理,交换单元通过1
×
1卷积将输入的2个特征图的通道数均变成64,然后进行特征图的聚合。
[0152]
stage3中第一个交换模块的输入有3路(分别接收stage2的交换单元的三路输出),分别经过第一个交换模块的3个残差块,第一个交换模块的输出相应也为三路,然后经过第一个交换单元,第一个交换单元对这三路输入进行聚合,输出三路到第二个交换模块。其中第二个交换模块得第一路的特征图的分辨率为c,通道数为64,第二路的特征图的分辨率为1/2*c,通道数为128,第三路的特征图的分辨率为1/4*c,通道数为256。第二、三、四个交换模块和第一个交换模块的结构类似,即:第二个交换模块的三个残差块分别对三路输入进行处理,输出也为三路,然后经过第二个交换单元,第二个交换单元对三路输入进行聚合,输出三路到第三个交换模块。第三个交换模块的第一路的特征图的分辨率为c,通道数为64,第二路的特征图的分辨率为1/2*c,通道数为128,第三路的特征图的分辨率为1/4*c,
通道数为256。第三个交换模块的三个残差块分别对三路输入进行处理,输出也为三路,然后经过第三个交换单元,第三个交换单元对三路输入进行聚合,输出三路到第四个交换模块。第四个交换模块的第一路的特征图的分辨率为c,通道数为64,第二路的特征图的分辨率为1/2*c,通道数为128,第三路的特征图的分辨率为1/4*c,通道数为256。第四个交换模块的三个残差块分别对三路输入进行处理,输出也为三路,然后经过第四个交换单元,第四个交换单元对三路输入进行聚合,输出四路到stage4的第一个交换模块。
[0153]
stage4的第一个交换模块的输入有4路,其中第一路的特征图的分辨率为c,通道数为64,第二路的特征图的分辨率为1/2*c,通道数为128,第三路的特征图的分辨率为1/4*c,通道数为256,第四路的特征图的分辨率为1/8*c,通道数为512。stage4的第一个交换模块的四个残差块分别对四路输入进行处理,输出也为四路,然后经过第一个交换单元,第一个交换单元对四路输入进行聚合,输出四路到第二个交换模块。其中第一路的特征图的分辨率为c,通道数为64,第二路的特征图的分辨率为1/2*c,通道数为128,第三路的特征图的分辨率为1/4*c,通道数为256,第四路的特征图的分辨率为1/8*c,通道数为512。第二、三交换模块和第一个交换模块的结构类似,即:stage4的第二个交换模块的四个残差块分别对四路输入进行处理,输出也为四路,然后经过第二个交换单元,第二个交换单元对四路输入进行聚合,输出四路到第三个交换模块。其中第一路的特征图的分辨率为c,通道数为64,第二路的特征图的分辨率为1/2*c,通道数为128,第三路的特征图的分辨率为1/4*c,通道数为256,第四路的特征图的分辨率为1/8*c,通道数为512。stage4的第三个交换模块的四个残差块分别对四路输入进行处理,输出也为四路,然后经过第三个交换单元,第三个交换单元对四路输入进行聚合,输出两路到第二级高分辨率网络的stage1,完成多分辨率信息的聚合。
[0154]
第二级高分辨网络模块用于进一步地提升网络精度,优化模型对难检测场景的检测效果。如图2所示,第二级高分辨网络包括三个stage,第一级高分辨率网络stage4的最后一个交换单元与第二级高分辨网络相连,第一级高分辨网络的输出结果直接输入第二级高分辨网络模块。第二级高分辨率网络由三个阶段串行连接,它的stage1、stage2、stage3的输出通道数与分辨率与第一级高分辨率网络stage2、stage3、stage4的参数对应相同。
[0155]
第二级高分辨率网络对特征图的处理过程如下:
[0156]
stage1的交换模块包含2个残差块,它们分别对输入的两路特征图(即第一级高分辨网络的两路输出)进行处理,残差块1输出的特征图的分辨率为c,通道数为64,残差块2输出的特征图的分辨率为1/2*c,通道数为128。然后经过交换单元,对2个残差块输出的特征图进行聚合,并输出特征图到stage2。这里输出的特征图有3路,其中第一路的输出特征图的分辨为c,通道数为64,第二路的输出特征图的分辨率为1/2*c,通道数为128,第三路的输出特征图的分辨率为1/4*c,通道数为256。以第一路来举例说明交换单元的聚合原理,交换单元通过1
×
1卷积将输入的2个特征图的通道数均变成64,然后进行特征图的聚合。
[0157]
stage2中第一个交换模块的输入有3路,分别经过第一个交换模块的3个残差块,输出也为三路,然后经过第一个交换单元,第一个交换单元对三路输入进行聚合,输出三路到第二个交换模块。其中第一路的特征图的分辨率为c,通道数为64,第二路的特征图的分辨率为1/2*c,通道数为128,第三路的特征图的分辨率为1/4*c,通道数为256。第二个交换模块的三个残差块分别对三路输入进行处理,输出也为三路,然后经过第二个交换单元,第
二个交换单元对三路输入进行聚合,输出三路到第三个交换模块。其中第一路的特征图的分辨率为c,通道数为64,第二路的特征图的分辨率为1/2*c,通道数为128,第三路的特征图的分辨率为1/4*c,通道数为256。第三个交换模块的三个残差块分别对三路输入进行处理,输出也为三路,然后经过第三个交换单元,第三个交换单元对三路输入进行聚合,输出三路到第四个交换模块。其中第一路的特征图的分辨率为c,通道数为64,第二路的特征图的分辨率为1/2*c,通道数为128,第三路的特征图的分辨率为1/4*c,通道数为256。第四个交换模块的三个残差块分别对三路输入进行处理,输出也为三路,然后经过第四个交换单元,第四个交换单元对三路输入进行聚合,输出四路到stage3的第一个交换模块。其中第一路的特征图的分辨率为c,通道数为64,第二路的特征图的分辨率为1/2*c,通道数为128,第三路的特征图的分辨率为1/4*c,通道数为256,第四路的特征图的分辨率为1/8*c,通道数为512。
[0158]
stage3的第一个交换模块的四个残差块分别对四路输入进行处理,输出也为四路,然后经过第一个交换单元,第一个交换单元对四路输入进行聚合,输出四路到第二个交换模块。其中第一路的特征图的分辨率为c,通道数为64,第二路的特征图的分辨率为1/2*c,通道数为128,第三路的特征图的分辨率为1/4*c,通道数为256,第四路的特征图的分辨率为1/8*c,通道数为512。stage3的第二个交换模块的四个残差块分别对四路输入进行处理,输出也为四路,然后经过第二个交换单元,第二个交换单元对四路输入进行聚合,输出四路到第三个交换模块。其中第一路的特征图的分辨率为c,通道数为64,第二路的特征图的分辨率为1/2*c,通道数为128,第三路的特征图的分辨率为1/4*c,通道数为256,第四路的特征图的分辨率为1/8*c,通道数为512。stage3的第三个交换模块的四个残差块分别对四路输入进行处理,输出也为四路,然后经过第三个交换单元,第三个交换单元对四路输入进行聚合,输出一路到1x1卷积。输出的这一路特征图的分辨率为c,通道数为64。
[0159]
第二级高分辨网络模块stage3中为c的那一层后接了一个1x1卷积,用于将网络的输出通道数转换为预设数量q,(例如17),使得第二极高分辨网络最终输出的预测热图中有q个关键点(这些关键点具体可以是人体关节位置点),通过该q个关键点的空间分布即可表示出人体的姿态信息,如图14(b)所示。
[0160]
应理解,图9仅仅是一种可能的示意,基于同样的设计思想,神经网络模型还可以有其它形式的变化。例如,去掉第一级高分辨网络模块的stage4,第一级高分辨网络模块只采用stage1、stage2、stage3,并将stage3阶段交换单元的输出更改为两路连接到第二级高分辨网路模块的输入。又如,直接在第一级高分辨网络模块stage4中为c的那一层后接了一个1x1卷积,用于将网络的输出通道数转换为q。再如,在第二级高分辨网路模块之后还串接第三高分辨网路模块,包括两个阶段,stage1、stage2的输出通道数与分辨率与第二级高分辨率网络stage2、stage3的参数对应相同,且在第三级高分辨网络模块stage2中为c的那一层后接了一个1x1卷积,用于将网络的输出通道数转换为q。
[0161]
另外要说明的是,在本申请实施例中不同阶段中残差块包含的残差单元的结构可以相同,也可以不同,这里不做限制。示例性的,第一级高分辨网络的stage1中的残差块包含的残差单元是使用的bottleneck block,而第一级高分辨率网络的其他3个stage为basic block,第二级高分辨率网络全部为basic block。这两种残差单元的结构基本是与resnet网络中的组件结构保持一致。basic block相比于bottleneck block,主路多了一个
3
×
3卷积,因而可以多学习到一些特征信息,但对于多级网络,包含过多的basic block会导致网络的参数量过大,而bottleneck block中主路加入的2个1
×
1卷积可以降低模块所用的参数量。因此,这样设置是为了保证参数量与模型预测精度间的平衡。当然,在具体实施过程中,还可以根据模型的实际情况对残差单元进行调整。
[0162]
下面,介绍本申请实施例中神经网络模型的训练过程。
[0163]
参考图10,神经网络模型的训练过程包括:
[0164]
s101、构建上述神经网络模型。
[0165]
神经网络模型的具体结构及其实现方式可以参考图2至图9中所示的实施例,这里不再赘述。
[0166]
s102、将训练集输入到上述神经网络模型,对神经网络模型进行训练,得到训练好的神经网络模型。
[0167]
训练集包括若干训练样本图像,每个样本图像包括至少一个人体,且人体的姿态已知(即关键点信息已知)。将训练样本输入该神经网络模型后,将神经网络模型输出的预测热图(包含预测关键点信息的样本图像)和真实热图(包含真实关键点信息的样本图像)进行比对,计算预测热图和真实热图之间的损失(或者说差值或差距),根据损失不断调整神经网络模型的参数,如学习率(learning rate)值等,直至神经网络模型输出的样本的预测值和样本的真实值的损失小于预设值为止。
[0168]
可选的,在将训练集输入到上述神经网络模型对神经网络模型进行训练中,除了调整上述参数外,还可以不断调整non-local网络模块插入的位置,以寻求non-local网络模块的最佳位置(实际研究发现non-local网络模块加在神经网络模型的浅层,也就是神经网络模型的前几层效果比较好),使得训练得到的神经网络模型能够对人体关节点相对位置关系有更精细的描述。
[0169]
应理解,这里的计算样本预测值和真实值得损失所采用的损失函数可以不同于相关技术中的级联沙漏(stacked hourglass)结构,本申请实施例可以不使用中间热力图(heat map)进行监督,而是仅在第二级高分辨率网络stage3中分辨率为256
×
192的残差块级联的1
×
1卷积后输出预测热图。最后利用均方误差(mean-square error,mse)作为损失函数,可求得预测热图相对于真实热图的损失。
[0170]
下面,介绍本申请实施例中使用神经网络模型进行人体姿态估计的方法。
[0171]
参考图11,使用神经网络模型进行人体姿态估计的方法包括:
[0172]
s1101、将待处理图像输入预先训练的神经网络模型,其中,待处理图像中包括人体,神经网络模型包括non-local网络模块和至少一级高分辨率网络模块。
[0173]
神经网络模型的具体结构及其实现方式可以参考图2至图9中所示的实施例,这里不再赘述。
[0174]
s1102、基于非局部网络模块提取待处理图像的特征信息,生成待处理图像的特征图,特征信息包括人体所在区域的每个像素与人体所在区域的其他像素的相关信息。
[0175]
非局部网络模块提取所述待处理图像的特征信息,生成所述待处理图像的特征图的具体方法可以参考上述公式(1)、(2)、(3)、(4)以及图5中所示的实施例,这里不再赘述。
[0176]
s1103、基于至少一级高分辨率网络模块对所述特征图进行计算,获得待处理图像中每个人体的姿态估计结果。
[0177]
高分辨率网络模块对所述特征图进行计算的具体方法可以参考图7至图8所示的实施例,这里不再赘述。
[0178]
本申请实施例中,通过在整个神经网络模型传递过程中保持高分辨率的表示,来减少图像信息的损失,并结合注意力机制与由粗到精的网络构建策略(多级网络级联),可以提高模型在一些困难场景下的姿态估计效果。将高分辨率网络作为骨架,可以保证图像信息尽可能少的损失,这是一个全局的优化。而加入了注意力机制,即在神经网络的浅层插入non-local网络模块,使得神经网络模型提高了发现较远位置两两像素之间关联的能力,这是一个局部的优化。对于多级网络而言,通过逐步的优化,可以使得网络提高对于较难检测的关键点的检测能力。因此本申请实施例技术方案的合理性在于高分辨率网络、注意力机制、多级网络组件对于算法来说,优化的层面不同,可以进行互补,而必要性在于复杂程度较高,想要获得较好的效果,需要对其涉及的各个环节都进行优化,每个环节对最终的效果都会产生影响。
[0179]
下面通过对比其他模型来进一步说明本申请实施例的技术效果。
[0180]
本申请实施例方案的测试数据集为微软通用目标图像数据集ms coco val2017,对比模型是高分辨率表征网络hrnet-w32(模型示意图见图12)。评测标准主要有以下三个方面:ms coco上测试准确率、处理单张图片平均用时和人体视觉效果。
[0181]
本申请实施例神经网络模型和对比模型hrnet-w32准确率测试结果如下表1所示:
[0182]
表1
[0183][0184]
其中,ap表示平均精度(average precision);ap
50
表示覆盖率为50%的平均精度;ap
m
表示覆盖中等对象(medium object)图像的平均精度;ar
l
表示覆盖大型对象(large object)图像的平均精度。
[0185]
由上表1可以看出,本申请相对于同输入大小的hrnet-w32来说,准确率上有了一定的提升,并且随着网络由单级变为多级,准确率也逐步提升。
[0186]
另外在时间效率上,本方法处理一张图片平均用时3.796s。相对于现有的实时人体姿态估计方法,时间效率也有着还不错的表现。
[0187]
至于人体视觉效果方面,hrnet-w32模型与我们模型的效果对比图如图13、图4所示。图13中的(a)为hrnet-w32模型输出的预测热图、图13中(b)为本申请实施例中上述神经网络模型输出的预测热图,对比图13(a)、图13(b)可以看出:本申请实施例技术方案除了识别出正常姿态外,还是识别出了有人体遮挡的姿态,如图13(b)中被黑色线条圈出的部分(靠立在从左至右第三颗树前的人体被坐着的人遮挡住了一只腿,图13(a)中该人体姿态未被识准确别出,而图13(b)中被识别出准确识别出)。图14中的(a)为hrnet-w32模型输出的预测热图、图14中的(b)为本申请实施例中上述神经网络模型输出的预测热图,对比图14
(a)、图14(b)可以看出:本申请实施例技术方案除了识别出图像前景中央的两个人体(白衬衣男和西装男)的姿态外,还是识别出了背景中(白衬衣男左手肘后方,两个电线杆之间位置处)的一个人体的姿态。
[0188]
需要说明的是,本申请上述实施例主要以神经网络模型用于人体姿态估计为例,在具体应用中,本技术方案还可以应用到其他需要检测关键点的图像处理领域,例如手势估计、头部姿态估计、人脸检测等领域。在具体实施时,只需要根据实际应用情况更改一些网络的参数,例如输入通道数、输入图片大小等,无需更改网络结构,便可以完成对应领域的图像处理任务。因为这些新领域和人体姿态估计任务本质上都是相通的,都是使用深度学习技术完成图像中的特征点检测,因此可以将本方法直接迁移到新领域中。
[0189]
以上各个实施方式可以相互结合以实现不同的技术效果。
[0190]
基于同一技术构思,本申请还提供了一种人体姿态估计装置,该装置包括执行本申请上述实施例中的人体姿态估计方法的模块/单元。这些模块/单元可以通过硬件实现,也可以通过硬件执行相应的软件实现。例如,参见图15,装置1500可以包括:
[0191]
输入单元1501,用于将待处理图像输入预先训练的神经网络模型,其中,所述待处理图像中包括人体,所述神经网络模型包括非局部网络模块和至少一级高分辨率网络模块;
[0192]
提取单元1502,用于基于所述非局部网络模块提取所述待处理图像的特征信息,生成所述待处理图像的特征图,所述特征信息包括所述人体所在区域的每个像素与所述人体所在区域的其他像素的相关信息;
[0193]
计算单元1503,用于基于所述至少一级高分辨率网络模块对所述特征图进行计算,获得所述待处理图像中所述人体的姿态估计结果。
[0194]
一种可能的实施方式中,所述神经网络模型还包括至少一个m
×
m卷积模块,m为奇数;所述非局部网络模块设置在所述至少一个卷积模块之后,所述至少一级高分辨率网络模块之前;
[0195]
所述提取单元1502用于:基于所述至少一个卷积模块对所述待处理图像中所述人体所在区域上的若干个m
×
m大小的区域进行初步特征提取,获得所述待处理图像的初始特征信息,并基于所述初始特征信息生成所述待处理图像的初始特征图;将所述初始特征图输入所述非局部网络模块,计算所述待处理图像中所述人体所在区域的每个像素与所述人体所在区域的其他像素的相关信息,基于所述初始特征信息以及所述相关信息生成所述待处理图像的特征图。
[0196]
一种可能的实施方式中,所述初始特征信息包括像素值、颜色特征、纹理特征、形状特征或空间关系特征中的一项或多项;
[0197]
所述相关信息包括空间关系、颜色关系、纹理关系或形状关系中的一项或多项。
[0198]
一种可能的实施方式中,所述提取单元1502用于:按照如下公式计算所述待处理图像中所述人体所在区域的每个像素与所述人体所在区域的其他像素的相关信息:
[0199][0200]
z
i
=w
z
y
i
+x
i
ꢀꢀꢀꢀꢀꢀꢀ
(2)
[0201]
其中,f为配对计算函数,用于计算像素x
i
和像素x
j
的相关信息;y
i
为所述人体所在
区域上像素x
j
与所述人体所在区域上的所有其他像素的相关信息;g(x
j
)为一元输入函数,用于变换不同的像素x
j
;c(x)为归一化函数,保证变换y
i
前后整体信息不变,x为输入的所述人体所在区域的图像;j为所述人体所在区域上的其他像素的标识;
[0202]
z
i
为non-local网络模块输出的特征图;w
z
为权重值;+x
i
表示一个残差连接。
[0203]
一种可能的实施方式中,所述高分辨率网络模块包括多个交换模块,所述高分辨率网络模块中的每个交换模块包括至少两个并联连接的残差块,所述每个交换模块中第n个残差块的分辨率为c/a
n-1
,所述第n个残差块的输出通道为c0×
b
n-1
,其中c等于所述非局部网络模块的分辨率大小,n为正整数,a、b为大于1的正整数,c0为所述非局部网络模块的输出通道数。
[0204]
一种可能的实施方式中,所述高分辨率网络模块还包括多个交换单元,所述交换单元和所述交换模块按照预定次序交替连接,所述交换单元用于对输入的特征图进行多尺度融合。
[0205]
一种可能的实施方式中,所述残差块由多个相同类型的残差单元串联而成。
[0206]
一种可能的实施方式中,每级所述高分辨率网络模块由至少两个阶段串行连接,每个阶段包括至少一个所述交换模块;
[0207]
其中,相邻两个阶段中的前一个阶段中每个交换模块的残差块的数量不超过后一个阶段中每个交换模块的残差块的数量。
[0208]
一种可能的实施方式中,所述装置还包括检测单元1504,用于在所述输入单元1501将待处理图像输入预先训练的神经网络模型之前,检测所述待处理图像中的人体,确定出所述待处理图像中所述人体所在区域。
[0209]
基于同一技术构思,参见图16,本申请还提供了一种电子设备1600,包括处理器1601和存储器1602;所述存储器1602用于存储一个或多个计算机程序;当所述存储器1602存储的一个或多个计算机程序被所述处理器1601执行时,使得所述电子设备1600执行如本申请实施例所述的人体姿态估计方法。
[0210]
基于同一技术构思,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括计算机程序,当计算机程序在电子设备上运行时,使得所述电子设备执行如本申请实施例所述的人体姿态估计方法。
[0211]
基于同一技术构思,本申请实施例还提供了一种包含计算机程序产品,当所述计算机程序产品在终端上运行时,使得所述电子设备执行如本申请实施例所述的人体姿态估计方法。
[0212]
其中,本申请实施例提供的电子设备、计算机存储介质、计算机程序产品均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
[0213]
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
[0214]
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其他的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,
仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其他的形式。
[0215]
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0216]
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0217]
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0218]
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1