实时2D人体姿势估计系统中的姿势稳定系统和方法

文档序号:27827648发布日期:2021-12-07 21:17阅读:104来源:国知局
实时2D人体姿势估计系统中的姿势稳定系统和方法
实时2d人体姿势估计系统中的姿势稳定系统和方法
一、技术领域:
本发明涉及人体姿势估计系统领域,涉及的具体内容为2d人体姿势估计系统中的姿势校正和稳定。
二、

背景技术:
:
来自数字图像的人体姿势估计(hpe)是人类活动理解的开端。其任务是将人体关节从图像定位到 2d或3d平面。目前已提出的许多相关技术可以分为以下两类:自顶向下和自底向上方法。前者首先检测包含人体的图像部分,并在每个人的边界框内应用2d/3d姿态估计器来检测关节位置。而后者首先检测关节而不管其关联人,然后将它们映射到关联人以输出关键点。尽管对姿势估计系统的改进已经发展了很多年,但由于许多因素的存在,包括:对象间遮挡、对象内遮挡、模糊的姿势、光照的效果、众多的姿势、模糊的深度、布料纹理变化、切割器背景、人体关节自由度大、自然的姿势模糊。因此目前姿势估计的发展仍然是一个挑战。无论采用何种技术,大多数姿势估计器都在连续帧中输出带有抖动的姿势。抖动效果产生摇晃的姿势从而降低了合成的质量。抖动效果的出现是由于数据集中的噪声关键点、众多的人体姿势和连续帧检测中的关节缺失。目前已有许多提出的方法用来最小化抖动的影响。其中一种技术是在连续帧上使用卡尔曼滤波器,该效果最大限度地减少了姿势不稳定性,但它会导致整个视频序列系统的延迟。因此,卡尔曼滤波器不是实时图像序列系统的合适选择。其他技术在整个姿势实例上使用帧到帧的线性插值。它产生了一个稳定的插值姿势,但是,插值流会导致具有非正统姿势的几帧。此外,即便是检测中一个关节缺失,都会导致上述所有方法严重的姿势异常。在这种方法中,我们分别使用帧到帧的每个关节的关节更新决策以及关节阈值来最小化实时人体姿势估计图像序列中抖动的影响。此外,我们使用递归方法从帧中的已知关节信息中恢复丢失的关节。恢复阶段是我们发明的基础,以进一步提高最终姿势的质量。本发明没有使用直接的点对点映射来解决深度图中存在空洞的问题,而是通过检查目标点的临近点以选择最佳深度点。使用人体测量法纠正第二个问题:由于关节重叠而导致的关节深度不明确。根据人体测量信息计算每个关节的近似深度,并将其与传感器传回的深度进行比较,以估算关节深度的误差。通过人体测量测量平均人体肢体长度,并将其作为一个基础。
8.本发明提供了一种稳定二维人体姿态估计系统产生的抖动姿态的系统和方法。本发明包括(1) 计算机系统连同用以捕捉一个或多个人的二维单眼图像序列的输入装置;(2)一个2d人体姿态估计模块,为图像中的每个人生成一组关节定位;(3)一个姿态稳定器模块,以减少检测到的姿态中存在的抖动。输入装置捕捉至少25帧/秒的图像流以获得更平滑的效果,然后将其馈送到2d人体姿态估计模块。然后,估计模块为正在处理的图像中的每个人的每个关节输出一组2d位置。对于每个关节都会产生一个三元组(x,y,score),其中x和y分别是关节的水平和垂直位
置,score(分数)决定了关节检测的置信度,取值范围从0到1(1表示完全置信)。在连续帧中,由于多种因素,关节定位可能与图像中的实际关节不同,包括:噪声数据集样本、多个人体姿势和检测中的缺失关节。这导致姿势流具有抖动的姿势,影响最终应用程序的整体质量。本发明提出的系统以二维关节关键点集为输入,通过去除检测中的抖动来产生稳定的姿态。整体稳定是由姿势稳定模块通过使用(1)帧到帧的关节更新决策和(2)使用连续帧中的已知关节进行的缺失关节恢复来完成的。然后系统会生成另一组对应于稳定姿势的关节。
三、

技术实现要素:

本发明提出了用于从实时单目图像序列恢复稳定的多人2d人体姿势的方法、过程和模型。许多2d 人体姿势估计系统输出一个带有明显抖动的姿势。抖动是指连续帧内检测到的关节中微小的错误位移。在诸如人机交互或虚拟化身控制等实际应用中,即使是这种小抖动也会导致输出质量非常差。目前已有提出了许多技术用以克服或最小化最终解决方案中抖动的影响,但其中大多数技术没有在实时图像序列应用中得到应用。图1展示了系统的抽象表示。本发明使用已有的2d人体姿态估计器(0102),它接收实时单目图像序列(0101)并为序列的每一帧中出现的每个人生成一组n个关节定位。关节排列如图4所示,其中 n=21。然后将输出数据传递给姿势稳定模块(0103),然后最小化连续帧中的抖动并输出稳定姿势。图2展示了通用2d人体姿态估计系统。系统将图像或图像序列(0201)作为输入。然后将它们传递给姿势估计器(0202),该估计器为输入图像中的每个人生成一组2d关节(0203)。对于序列中有n个关节的k个人的特定图像,每个关节表示为:图3展示了以一组2d关节定位作为输入(0301)的姿势稳定模块的框图。使用逐帧关节更新决策和缺失关节恢复来处理输入,缺失关节恢复使用连续帧中的已知关节(0302)生成另一组具有稳定姿势的关节(0303)。图4显示了人体关节模型(0400)。该模型由21个关节组成,其中每个关节都是3d矢量。2d关节是x、y定位坐标以及0

1范围内的置信度分数的集合。其中n=关节数。图4展示了对关节的描述图5显示了姿势稳定方法的流程图。输入设备(通常是相机)捕获一帧(0501)并将其输入到姿势检测器(0502)。然后检测器估计当前图像帧中每个人的关节。姿势检测器输出关节集,其中包含一些缺少关节定位的帧(0503)。然后使用递归方法(0504)恢复丢失的关节。接着将当前帧(0504)中所有恢复的关节和前一帧(0505)中的关节结合起来决定进一步的操作(0506)。如果正在处理的帧是第一帧,则将检测到的关节简单地分配给当前帧中的系统(0507),并且不做进一步的处理。此后,系统继续进行到另一帧(0508)。同时,当前一帧可用时,当前和前一帧的关节会进一步处理以最小化抖动。对当前帧和前一帧中的每个对应关节计算欧氏距离为(0509):
其中,d
n
是当前帧和前一帧中对应的第n个关节之间的欧几里德距离。如果计算出的距离小于特定关节的阈值(0510),则该关节的连续帧中的位移被视为抖动,并且位置不会改变(0511)。每个关节使用单独的阈值。然后控制转移到捕获下一帧(0508)。而如果距离超过阈值,则将恢复的关节赋值给当前帧(0512)。相同的恢复关节然后用作前一帧关节(0514)。最后,控制转移至捕获新帧。图6a展示了从关节j17和j18的已知定位恢复丢失的关节j0的几何配置。关节j0、j
17
和j
18
是三元组,表示为:j0(x0,y0,score0)、j
17
(x
17
,y
17
,score
17
),、j
18
(x
18
,y
18
,score
18
)。关节j0恢复为:恢复为:score0=max(score
17
,score
18
)
ꢀꢀꢀ
(6)图6b展示了从关节j
19
和j
20
的已知定位恢复丢失的关节j0的几何配置。关节j0、j
19
和j
20
是三元组,表示为:j0(x0,y0,score0)、j
19
(x
19
,y
19
,score
19
)、j
20
(x
20
,y
20
,score
20
)。关节j0恢复为:恢复为:score0=max(score
19
,score
20
)
ꢀꢀꢀ
(9)图6c展示了从关节j
11
和j
17
的已知定位恢复丢失的关节j0的几何配置。关节j0、j1和j
17
是三元组,p 是二维中点,表示为:j0(x0,y0,score0)、j1(x1,y1,score1)、j
17
(x
17
,y
17
,score
17
)。关节j0恢复为:恢复为:恢复为:图7展示了恢复缺失关节j1的几何配置。关节j0、j1、j2、j5和j8是三元组,表示为:j0(x0,y0,score0)、 j1(x1,y1,score1)、j2(x2,y2,score2)、j5(x5,y5,score5)、j8(x8,y8,
score8)。关节j1恢复为:恢复为:恢复为:图8展示了恢复缺失关节j2和j5的几何配置。关节j1、j2、j5是三元组,表示为:j1(x1,y1,score1)、 j2(x2,y2,score2)、j5(x5,y5,score5)。关节j2和j5恢复为:x2=x1+|j1j5|cos(α+180)
ꢀꢀꢀ
(16)y2=y1+|j1j5|sin(α+180)
ꢀꢀꢀ
(17)score2=max(score1,score5)
ꢀꢀꢀ
(18)x5=x1+|j2j1|cos(360

β)
ꢀꢀꢀ
(19)y5=y1+|j2j1|sin(360

β)
ꢀꢀꢀ
(20)score5=max(score1,score2)
ꢀꢀꢀ
(21)图9展示了用于恢复丢失的关节j8和j9的几何配置。关节j1、j8、j9和j
10
是三元组,表示为: j1(x1,y1,score1)、j8(x8,y8,score8)、j9(x9,y9,score9)、j
10
(x
10
,y
10
,score
10
)。关节j8和j9恢复为:x8=x1+0.22(x
10

x1),y8=y1+0.22(y
10

y1)
ꢀꢀꢀ
(22)x9=x1+0.78(x
10

x1),y9=y1+0.78(y
10

y1)
ꢀꢀꢀ
(23)score8,score9=max(score1,score
10
)
ꢀꢀꢀ
(24)图10展示了用于恢复缺失关节j
10
、j
11
和j
14
的几何配置。关节j
10
、j
11
和j
14
是三元组,表示为: j
10
(x
10
,y
10
,score
10
)、j
11
(x
11
,y
11
,score
11
)、j
14
(x
14
,y
14
,score
14
)。关节j
10
、j
11
和j
14
恢复为:恢复为:score
10
=max(score
11
,score
14
)
ꢀꢀꢀ
(27)(27)score
11
=max(score
10
,score
14
)(30)
score
14
=max(score
10
,score
11
)
ꢀꢀꢀ
(33)图11表示对图像序列的第1帧进行关节检测得到的姿势。帧的尺寸为640x480px。在该帧中,除了关节j5、j8、j9和j
11
之外的所有关节都被检测到。图12表示图像序列第1帧的姿态恢复和更新的关节。使用等式(2)和(3)恢复和更新丢失的关节,即j5、j8、j9和j
11
。图13表示使用关节j1和j2的已知定位来恢复丢失的关节j5。图14表示使用关节j1和j
10
的已知定位来恢复丢失的关节j8和j9。图15表示使用关节j
10
和j
14
的已知定位来恢复丢失的关节j
11
。图16表示图像序列第2帧的关节检测得到的姿势。帧的尺寸为640x480px。在该帧中,除了关节j0、 j2和j
10
之外的所有关节都被检测到。图17表示图像序列第2帧的姿态恢复和更新的关节。使用等式(2)和(3)恢复和更新丢失的关节,即j0、j2和j
10
。图18表示使用关节j
17
和j
18
的已知定位来恢复丢失的关节j0。图19表示使用关节j1和j5的已知定位来恢复丢失的关节j2。图20表示使用关节j
11
和j
14
的已知定位来恢复丢失的关节j
10
。图21表示图像序列的第3帧的关节检测得到的姿势。帧的尺寸为640x480px。在该帧中,除了关节 j1、j8和j
14
之外的所有关节都被检测到。图22表示图像序列的第3帧的姿态恢复和更新的关节。使用等式(2)和(3)恢复和更新丢失的关节,即j1、j8和j
14
。图23表示使用关节j2和j5的已知定位来恢复丢失的关节j1。图24表示使用关节j1和j
10
的已知定位来恢复丢失的关节j8。图25表示使用关节j
10
和j
11
的已知定位来恢复丢失的关节j
14

四、附图说明
提供的所有附图解释了本发明的抽象思想,并对所有使用过的系统、方法或过程进行了粗略的理解。图1展示了了稳定系统的抽象框图。图2展示了一般2d人体姿势估计系统的框图。图3展示了姿态稳定模块的框图。图4展示了姿势检测器的图形模型。图5展示了姿势稳定器模块的流程图。图6a展示了从j
17
和j
18
恢复关节j0的几何表示。图6b展示了从j
19
和j
20
恢复关节j0的几何表示。图6c展示了从j1和j
17
恢复关节j0的几何表示。图7展示了恢复关节j1的几何表示。图8展示了恢复关节j2和j5的几何表示。图9展示了恢复关节j8和j9的几何表示。
图10展示了恢复关节j
10
、j
11
和j
14
的几何表示。图11展示了图像序列的第1帧的关节检测。图12展示了图像序列的第1帧的关节恢复。图13展示了第1帧中关节j5的恢复。图14展示了第1帧中关节j8和j9的恢复。图15展示了第1帧中关节j
11
的恢复。图16展示了图像序列的第2帧的关节检测。图17展示了图像序列的帧2的的关节恢复。图18展示了第2帧中关节j2的恢复。图19展示了第2帧中关节j
10
的恢复。图20展示了第2帧中关节j0的恢复。图21展示了图像序列的第3帧的关节检测。图22展示了图像序列的帧3的的关节恢复。图23展示了第3帧中关节j1的恢复。图24展示了第3帧中关节j8的恢复。图25展示了第3帧中关节j
14
的恢复。五、具体实施方法整个方法考虑了2d姿态估计器,用于在图像中生成关节定位。该系统与任何采用rgb图像并产生图像中每个人的2d关节定位的单目姿态估计系统兼容。系统首先以来自单目相机的rgb图像序列作为输入,其中每个图像表示为n表示序列号 (帧号),w和h表示三个通道中每个图像的水平和垂直维度。然后将输入图像序列传递进姿态估计器系统,用于检测关节定位,如图1所示。姿势估计器为图像中的每个人返回一组2d关节定位。关节结构如图4所示。对序列中的每个图像重复该过程。考虑图11、图13和图15中尺寸为640x480的图像序列的前三个连续帧,姿态估计器返回关节定位,如表1所示。姿态估计器检测到大部分关节,少数关节定位丢失,使用已知的关节信息恢复丢失的关节。表1
在帧1中,缺少关节j5、j8、j9和j
11
。第1帧中缺少关节的姿势如图11所示。图12中显示了具有恢复关节的姿势。使用方程(19)、(20)和(21)恢复关节j5,如图13所示。x5=120,y5=50,score5=0.89使用方程(22)、(23)和(24)恢复关节j8和j9,如图14所示。x8=102,y8=68,score8=0.89x9=108,y9=91,score9=0.89使用方程(28)、(29)和(30)恢复关节j
11
,如图15所示。x
11
=100,y
11
=110,score
11
=0.95表2中显示了第1帧中丢失关节恢复后的关节定位。之后,使用恢复的关节进行使用阈值的关节更新决策。由于这是第一帧,并且前一帧关节没有数据,因此更新后的关节与当前帧关节相同,系统将开始捕获下一个图像。表2
此后,将第2帧的图像输入姿态估计系统,并产生如上表所示的检测到的关节。在第2帧中,缺少关节j0、j2和j
10
。在第2帧中缺少关节的姿势如图16所示。图17中显示了具有恢复关节的姿势。使用方程(10)、(11)和(12)恢复关节j0,如图18所示。x0=102,y0=39,score0=0.91使用方程(16)、(17)和(18)恢复关节j2,如图19所示。x2=93,y2=64,score2=0.94使用方程(25)、(26)和(27)恢复关节j
10
,如图20所示。x
10
=107,y
10
=97,score
10
=0.91然后使用恢复的关节进行使用阈值的关节更新。表3和表4中显示了更新后的第2帧关节。表3
表示.4
在第3帧中,缺少关节j1、j8和j
14
。在第3帧中缺少关节的姿势如图21所示。恢复关节的姿势如图 22所示。使用方程(13)、(14)和(15)恢复关节j1,如图23所示。x1=98,y1=59,score1=0.94使用方程(22)、(23)和(24)恢复关节j8,如图24所示。x8=101,y8=70,score8=0.94使用方程(31)、(32)和(33)恢复关节j
14
,如图25所示。x
14
=120,y
14
=105,score
14
=0.88表5
表6
对于图像序列的其余部分,该过程重复进行。现在将第3帧视为上一帧,将第4帧视为下一个当前帧。对于第4帧,将首先递归地检测丢失的关节。然后将基于关节的决策阈值和当前帧和前一帧中相应关节之间的距离做出关节更新决策。该过程通过考虑序列中的当前和先前图像,最终过滤掉所有抖动。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1