一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于三维姿态估计的装置和方法与流程

2023-02-06 22:44:08 来源:中国专利 TAG:


1.本公开总体涉及姿态估计,更具体而言,涉及用于三维姿态估计的装置和方法。


背景技术:

2.姿态估计使用图像数据来确定对象(例如,人类)或者目标的姿态(例如,位置和取向)。图像数据被分析,以例如在图像数据中识别指示出对象的姿态的对象关节(例如,肘部、膝部、踝部)的位置。从图像数据中获得的姿态信息可以被用来分析对象的身体在执行诸如体育运动之类的活动期间的特性。
附图说明
3.图1是示例系统的框图,该系统包括三维(3d)模型生成器,用于基于图像数据生成对象的3d图形模型。
4.图2是图1的示例系统的框图,该系统包括3d模型生成器的示例实现方式,并且包括一个或多个计算系统,用于训练神经网络以生成模型,以便根据本公开的教导在3d姿态估计期间使用。
5.图3-图5的流程图图示了由图1的示例3d模型生成器实现的示例算法。
6.图6图示了根据本公开的教导生成的示例二维(2d)图形模型数据。
7.图7图示了根据本公开的教导生成的示例归一化2d图形模型数据。
8.图8图示了根据本公开的教导生成的示例3d图形模型。
9.图9和图10图示了可用于根据本公开的教导生成3d图形模型的示例参考身体数据。
10.图11图示了根据本公开的教导生成的另一个示例3d图形模型。
11.图12是代表示例机器可读指令的流程图,所述指令当被图2的示例系统的第一计算系统执行时,使得第一计算系统训练神经网络以预测图像数据中的对象的关键点的位置。
12.图13是代表示例机器可读指令的流程图,所述指令当被图2的示例系统的第二计算系统执行时,使得第二计算系统训练神经网络以执行2d骨架数据到关节深度偏移图谱的映射。
13.图14是代表示例机器可读指令的流程图,所述指令当被执行时,使得图1和/或图2的示例3d模型生成器基于图像数据生成(一个或多个)对象的(一个或多个)3d图形模型。
14.图15是被构造来执行图12的指令以实现图2的示例第一计算系统的示例处理平台的框图。
15.图16是被构造来执行图12的指令以实现图2的示例第二计算系统的示例处理平台的框图。
16.图17是被构造来执行图14的指令以实现图1和/或图2的示例3d模型生成器的示例处理平台的框图。
17.图18是示例软件分发平台的框图,用于将软件(例如,与图12、图13和/或图14的示例计算机可读指令相对应的软件)分发到客户端设备,例如消费者(例如,用于许可、销售和/或使用)、零售商(例如,用于销售、再销售、许可和/或次级许可)和/或原始设备制造商(oem)(例如,用于包括在要被分发到例如零售商和/或直接购买客户的产品中)。
18.附图不是按比例的。相反,在附图中可放大层或区域的厚度。一般而言,相同的标号将在各幅图和伴随的书面描述的各处被用于指代相同或相似的部件。
19.除非另有具体声明,否则本文使用诸如“第一”、“第二”、“第三”等等之类的描述语,而不输入或以其他方式指示出任何优先权、物理顺序、在列表中的排列和/或以任何方式排序的含义,而只是用作标签和/或任意名称来区分元素,以便易于理解所公开的示例。在一些示例中,描述语“第一”在详细描述中可用于提及某一元素,而同一元素在权利要求中可以用不同的描述语来提及,例如“第二”或“第三”。在这种情况下,应当理解,这种描述语仅仅用于明确地识别那些元素,这些元素例如可能在其他情况下共享同一名称。
具体实施方式
20.姿态估计使用图像数据来确定对象(例如,人类)或者目标的姿态(例如,位置和取向)。图像数据被分析,以例如在图像数据中识别指示出对象的姿态的对象关节(例如,肘部、膝部、踝部)的位置。从图像数据中获得的姿态信息可以被用来分析对象的身体在执行诸如体育运动之类的活动期间的特性。可以基于姿态估计数据来生成对象的二维(2d)和/或三维(3d)图形模型(例如,骨架模型),以图示对象的姿态。
21.在一些已知的3d姿态估计技术中,由多个相机生成的图像数据被分析,以基于关节或关键点识别来估计在图像数据中捕获的对象的2d姿态。为了生成该姿态中的对象的3d图形模型,已知的姿态估计技术可以使用2d姿态数据和诸如三角测量、统计建模(例如,图像结构建模)和/或3d几何建模技术(例如,体积投票、因子图优化)之类的方法来计算用户的关节的位置。
22.然而,这种已知的3d姿态估计技术是基于这样一个假设而操作的:生成了图像数据的相机是静态的,并且在分析图像数据之前,相机的内在参数(例如,焦距)和相机的外在参数(例如,相机相对于环境的位置和取向)是已知的。换句话说,已知的3d姿态估计技术取决于多相机校准。然而,执行多相机校准需要耗费资源和时间。另外,涉及不同类型的相机(例如,(一个或多个)云台相机、(一个或多个)手持相机)的多相机校准是困难的。因此,已知的3d姿态估计技术对于如下的图像数据是难以实现的:该图像数据是使用具有变化的变焦水平的相机和/或在图像生成期间移动的相机收集的。然而,这种相机经常被用于诸如体育赛事之类的环境中,以捕获运动员的运动。
23.本文公开了用于执行3d姿态估计的装置和方法,其中无需对用于生成用来得出姿态信息的图像数据的图像捕获设备(例如,(一个或多个)相机)执行校准。为了生成处于某种姿态中的对象的3d图形模型,本文公开的示例使用由多个图像捕获设备生成的图像数据来执行2d姿态估计,以预测对象的关节的位置。在本文公开的示例中,图像捕获设备可以包括不同类型的图像捕获设备(例如,(一个或多个)长程相机、(一个或多个)云台相机)。在本文公开的示例中,神经网络回归分析被执行以根据2d姿态估计数据来生成(一个或多个)3d图形模型,这些模型显示出处于该姿态中的对象。本文公开的示例执行优化以估计3d姿态
参数(例如,关节位置)和图像捕获设备的参数(例如,外在参数,比如设备取向)。本文公开的示例输出(一个或多个)3d图形模型(例如,骨架模型),这些模型示出了处于该姿态中的对象,并且考虑了图像捕获设备的估计参数,而不要求图像捕获设备的参数被事先已知。本文公开的(一个或多个)示例3d图形模型可以被用于诸如生物力学分析、3d动画、人类交互识别等等之类的应用。
24.在本文公开的示例中,实现了一种前馈神经网络,以根据2d姿态图像数据来回归3d姿态。回归的3d姿态被用作校准数据,以估计图像捕获设备的参数,并且以考虑通过图像捕获设备获得的该姿态中的对象的多个视图。回归的3d姿态的参数(例如骨骼方向)被识别,以指示出相对于3d骨架模板的关节旋转。使用从图像数据中提取的2d和3d姿态数据以及估计的图像捕获设备参数来执行优化,以生成该姿态中的对象的3d图形模型。由于本文公开的示例不依赖于多相机校准来执行3d姿态估计,因此本文公开的示例可以被实现,以使用在难以执行多相机校准的动态环境(包括体育赛事,比如花样滑冰和速滑)中生成的图像数据来提供准确的3d姿态估计。
25.图1图示了根据本公开的教导构建的示例系统100,用于估计和跟踪位于环境103中的对象102的姿态,并且基于姿态估计生成对象102的(一个或多个)3d图形模型。示例系统100包括用于生成对象102的图像数据的图像捕获设备。在图1中,示例系统100包括环境103中的第一图像捕获设备104、第二图像捕获设备106、第三图像捕获设备108和第四图像捕获设备110。图1的示例系统100可包括额外的或者更少的图像捕获设备(例如,两个图像捕获设备,六个图像捕获设备)。图像捕获设备104、106、108、110可以包括例如视频相机、静止相机、可移动相机(例如,云台相机)、长程相机、和/或其他类型的图像捕获设备。在一些示例中,图像捕获设备104、106、108、110中的两个或更多个是不同类型的图像捕获设备和/或具有不同属性的图像捕获设备。例如,第一图像捕获设备104可以是静态视频相机,而第二图像捕获设备106可包括可移动的视频相机。
26.在图1的示例中,图像捕获设备104、106、108、110是未校准的,因为当图像捕获设备104、106、108、110生成图像数据时,各个图像捕获设备104、106、108、110的一个或多个内在参数(例如,焦距、焦点)和/或外在参数(例如,旋转、位置)是未知和/或变化的。在图1的示例中,图像捕获设备104、106、108、110可以在环境103中彼此间隔开,从而使得每个图像捕获设备104、106、108、110具有环境103的至少部分不同的视野。每个图像捕获设备104、106、108、110定义了各自的图像捕获设备坐标系,其中可以相对于特定的图像设备坐标系来定义3d点的位置(例如,(x,y,z)位置)。由每个图像捕获设备104、106、108、110定义的坐标系是基于图像捕获设备104、106、108、110在环境103中的位置的。
27.图1的每个图像捕获设备104、106、108、110生成表示对象102(例如,人类)的图像数据。例如,如图1所示,第一图像捕获设备104生成包括对象102的第一图像114,并且第二图像捕获设备106生成包括对象102的第二图像116。第一图像114和第二图像116是由各个设备104、106在基本相同的时间(例如,时间同步)生成的。如图1所示,由于第一和第二图像捕获设备104、106在环境103中的不同位置,第一图像114中的对象102的视图(例如,侧面轮廓视图)与第二图像数据116中的对象102的视图(例如,正面视图)不同。类似地,在图1中,第三图像捕获设备108生成对象102的第三图像118,并且第四图像捕获设备108生成对象102的第四图像120。如图1所示,基于图像捕获设备104、106、108、110的不同视野,在每个图
像114、116、118、120中捕获的对象102的视图是不同的。
28.在图1的示例中,图像捕获设备104、106、108、110中的每一者随着时间的推移捕获对象102的图像,以生成图像数据流(例如,包括例如视频帧、静态图像等等的图像的序列或系列)。图像捕获设备在时间上是同步的,这样由每个图像捕获设备生成的图像数据以相同的姿态捕获对象,但基于图像捕获设备的位置和/或方向,是从不同的角度捕获的。从而,由图像捕获设备104、106、108、110捕获的图像可用于跟踪对象102随时间的移动,从而跟踪对象102的姿态变化。如本文所公开的,由每个图像捕获设备102、104、106、108生成的图像数据(其中由每个设备生成的图像数据包括各自的图像114、116、118、120)被用于识别(例如,预测)对象102在与各个图像捕获设备104、106、108、110捕获包括对象102的图像114、116、118、120的时间相对应的特定时间的姿态。该图像数据被用来生成处于该姿态中的对象102的3d图形模型。
29.图1的示例系统100包括一个或多个基于半导体的处理器,以处理由图像捕获设备104、106、108、110生成的图像数据。在一些示例中,(一个或多个)处理器位于图像捕获设备104、106、108、110处。例如,第二、第三和第四图像捕获设备106、108、110可以将数据传输到第一图像捕获设备104的板载处理器122。类似地,各个第一、第二、第三和/或第四图像捕获设备104、106、108、110可以将数据传输到第二图像捕获设备106的板载处理器124、第三图像捕获设备108的板载处理器126、和/或第四图像捕获设备110的板载处理器128。在其他示例中,图像捕获设备104、106、108、110可以将数据传输到另一个用户设备132的处理器130,例如智能电话、个人计算设备(例如,膝上型电脑),等等。在其他示例中,图像捕获设备104、106、108、110可以将数据传输到基于云的设备134(例如,一个或多个服务器、(一个或多个)处理器、和/或(一个或多个)虚拟机)。
30.在一些示例中,(一个或多个)图像捕获设备104、106、108、110的(一个或多个)处理器122、124、126、128与一个或多个其他处理器通信地耦合。在这样的示例中,例如,第二、第三和第四图像捕获设备106、108、110可以将包括图像116、118、120的图像数据传输传输到第一图像捕获设备104的板载处理器122。然后,第一图像捕获设备104的板载处理器122可以将图像数据(包括包含由第一图像捕获设备104生成的图像114的图像数据)传输到用户设备132和/或(一个或多个)基于云的设备134的处理器130。在一些这样的示例中,图像捕获设备102(例如,板载处理器122)和(一个或多个)处理器130、134经由一个或多个有线连接(例如,线缆)或者无线连接(例如,蜂窝、wi-fi或者蓝牙连接)通信地耦合。图像捕获设备104、106、108、110的任何板载处理器122、124、126、128可以与一个或多个其他处理器130、134通信地耦合。在其他示例中,图像数据可以只由各个图像捕获设备104、106、108、110的板载处理器122、124、126、128中的一个或多个处理。
31.在图1的示例中,由图像捕获设备104、106、108、110生成的图像数据被3d模型生成器136处理,以识别对象102的(一个或多个)姿态并且生成在该(一个或多个)姿态中对象102的(一个或多个)3d图形模型。图1的3d模型生成器136使用由未校准的图像捕获设备104、106、108、110生成的图像数据(例如,图像捕获设备104、106、108、1110的一个或多个内在和/或外在参数对3d模型生成器136而言是未知的)生成(一个或多个)3d模型。3d模型生成器136输出(一个或多个)3d图形模型,以便由安装在例如用户设备132上的(一个或多个)用户应用138(例如,身体姿态分析应用)进行展示和/或分析。在图1的示例中,3d模型生成
器136是通过在(一个或多个)图像捕获设备104、106、108、110的一个或多个处理器122、124、126、128上执行的可执行指令来实现的。然而,在其他示例中,3d模型生成器136是由在用户设备132的处理器130和/或(一个或多个)基于云的设备134上执行的可执行指令来实现的。在其他示例中,3d模型生成器136由位于图像捕获设备104、106、108、110和/或用户设备132中的一个或多个上的专用电路实现。在一些示例中,示例3d模型生成器136的一个或多个组件由(一个或多个)图像捕获设备104、106、108、110的(一个或多个)板载处理器122、124、126、128实现,而一个或多个其他组件由用户设备132的处理器130和/或(一个或多个)基于云的设备134实现。这些组件可以用软件、固件、硬件或者软件、固件和硬件中的两者或更多者的组合来实现。
32.在图1的示例中,3d模型生成器136用于处理由图像捕获设备104、106、108、110生成的图像数据,以执行3d姿态估计,并且生成表示对象102在图像数据中所处的(一个或多个)姿态的(一个或多个)3d图形模型。在一些示例中,3d模型生成器136基本上实时地从图像捕获设备104、106、108、110的每一者接收图像数据(如本文所使用的,“基本上实时”指的是以近乎瞬时的方式发生(例如,在一秒内),承认现实世界中可能存在计算时间、传输等等方面的延迟)。在其他示例中,3d模型生成器136在以后的时间(例如,基于一个或多个设置周期性地和/或非周期性地(例如,数秒钟后))接收图像数据。3d模型生成器136可以对由各个图像捕获设备104、106、108、110生成的图像数据执行一个或多个操作,例如过滤图像数据和/或分析数据。
33.如本文所公开的,3d模型生成器136从由每个图像捕获设备104、106、108、110生成的图像数据馈送中提取图像(例如,视频帧),并且对从每个设备104、106、108、110获得的图像进行时间同步。3d模型生成器分析每一组同步图像,以预测图像中对象102的关键点或者关节(例如,肘部、手腕、骨盆)的位置,并且基于关键点位置估计对象的2d姿态。3d模型生成器136可以基于经由神经网络训练生成的(一个或多个)关键点识别模型来识别图像数据中的关键点的位置。在本文公开的示例中,3d模型生成器136基于学习到的神经网络模型从2d姿态数据计算(例如,回归)对象102的3d姿态,所述模型包括2d姿态数据到关节深度偏移图谱的映射,其中关节深度偏移图谱提供了某个关节相对于对象102的根关节(即,参考关节)(例如骨盆关节)的深度偏移。
34.如上所述,每个图像捕获设备104、106、108、110定义了各自的坐标系。在图1的示例中,图1的3d模型生成器136选择图像捕获设备坐标系之一,例如第一图像捕获设备104的坐标系,来用作世界坐标系,其中第一图像捕获设备104的方向定义了世界坐标系的三个坐标轴(x,y,z)。在图1的示例中,3d模型生成器136估计图像捕获设备104、106、108、110的内在和外在参数,例如设备方向(例如,由旋转矩阵定义),以使得从各个图像捕获设备104、106、108、110的图像获得的对象102的3d关节信息(例如,(x,y,z)关节位置)能够被从各个图像捕获设备104、106、108、110的坐标系变换到世界坐标系。
35.图1的3d模型生成器136使用2d姿态数据、3d姿态数据和图像捕获设备104、106、108、110的估计参数来解决优化问题(例如,通过最小化最小二乘非目标函数)。作为优化的结果,图1的3d模型生成器136生成相对于世界坐标系(例如,选定的图像捕获设备,例如第一图像捕获设备104的坐标系)处于该姿态中的对象的3d图形模型。从而,3d模型生成器136使用从图像捕获设备104、106、108、110获得的对象102的不同视图来生成3d图形模型,该模
型表示对象的关节的位置,与图像捕获设备104、106、108、110在环境103中的位置无关。由3d模型生成器136生成的(一个或多个)3d图形模型可以被传输到例如用户设备132的(一个或多个)用户应用138以进行分析。
36.图2是图1的系统100的示例实现方式的框图,其中包括3d模型生成器136的示例实现方式。如上所述,3d模型生成器136被构建成使用由环境中的图像捕获设备(例如,图1的环境103中的图像捕获设备104、106、108、110)生成的图像数据来识别(例如,预测)对象(例如,图1的对象102)的(一个或多个)姿态,并且生成处于某个姿态中的对象的(一个或多个)3d图形模型。在图2的示例中,3d模型生成器136由(一个或多个)图像捕获设备104、106、108、110的(一个或多个)处理器122、124、126、128、用户设备132的处理器130和/或基于云的设备134(例如,图1的云134中的(一个或多个)服务器、(一个或多个)处理器和/或(一个或多个)虚拟机)中的一个或多个实现。在一些示例中,一些图像数据分析由3d模型生成器136经由云计算环境实现,而分析的一个或多个其他部分由(一个或多个)图像捕获设备104、106、108、110的(一个或多个)处理器122、124、126、128和/或用户设备132(例如智能电话)的处理器130中的一个或多个实现。
37.如上所述,图像捕获设备104、106、108、110的每一者生成图像数据,其中图像数据包括随着时间的推移捕获到的对象102的图像(例如,视频帧、静态图像)的序列或系列。如图2中所示,示例3d模型生成器136接收来自图1的第一图像捕获设备104的第一图像数据流200,来自第二图像捕获设备106的第二图像数据流202,来自第三图像捕获设备108的第三图像流数据204,以及来自第四图像捕获设备110的第四图像数据流206。图像数据流200、202、204、206可被存储在数据库208中。在一些示例中,3d模型生成器136包括数据库208。在其他示例中,数据库208位于3d模型生成器136的外部,在3d模型生成器136可访问的位置,如图2所示。图2的图示示例的示例数据库208由用于存储数据的任何存储器、存储设备和/或存储盘来实现,例如,闪存、磁介质、光介质,等等。此外,存储在示例数据库208中的数据可采取任何数据格式,例如,二进制数据、逗号分隔数据、制表符分隔数据、结构化查询语言(structured query language,sql)结构、图像数据,等等。
38.图2的示例3d模型生成器136包括图像捕获设备控制器210。在这个示例中,图像捕获设备控制器210提供用于控制图像捕获设备104、106、108、110的操作的装置。例如,图像捕获设备控制器210可以控制图像捕获设备104、106、108、110的功率状态和/或图像捕获设备104、106、108、110的设置,例如帧率、变焦水平、位置(例如,对于可移动的相机)、两个或更多个图像捕获设备104、106、108、110之间的时钟同步,等等。图像捕获设备控制器210可以基于由(一个或多个)用户输入定义并且存储在数据库208中的一个或多个图像捕获设备规则212来控制图像捕获设备104、106、108、110。
39.图2的示例3d模型生成器136包括图像同步器214。在图示的示例中,图像同步器214提供了用于从由图像捕获设备104、106、108、110的每一者生成的图像数据流200、202、204、206中提取图像(例如,视频帧、静止图像)并且基于时间同步由每个设备104、106、108、110捕获的图像(例如,以提供用于分析的同步图像集合)的装置。例如,图像同步器214可以基于与每个图像捕获设备104、106、108、110生成的图像相关联的时间戳,逐帧地同步或者对齐各个图像数据流200、202、204、206中的图像。
40.在图2的示例中,由图像同步器214提取和时间同步的图像被3d模型生成器136用
来检测(例如,预测)图像数据中的(一个或多个)对象的(一个或多个)2d姿态,并且生成处于该(一个或多个)姿态中的(一个或多个)对象的(一个或多个)3d图形模型。示例3d模型生成器136包括2d姿态检测器216和3d姿态计算器218。为了说明,将联系图3-图5所示的流程图300、400、500和图6-图11所示的示例模型来论述2d姿态检测器216和3d姿态计算器218。图3-图5的流程图300、400、500表示可由2d姿态检测器216和/或3d姿态计算器218执行的示例算法,以预测图像数据中的(一个或多个)对象的(一个或多个)姿态并且生成(一个或多个)3d图形模型。图6-图11的模型图示了图2的3d模型生成器136在执行3d姿态估计时生成的(一个或多个)示例2d和/或3d模型。
41.图3的流程图300图示了由2d姿态检测器216和/或3d姿态计算器218执行来执行3d姿态估计的算法的概览。如图3所示,图2的2d姿态检测器218从c个未校准的图像捕获设备104、106、108、110接收同步图像(例如,视频帧)。图2的2d姿态检测器216分析同步图像并且预测各个同步图像中的每个对象的关键点(例如,关节,比如肘部、手腕、膝盖,等等)的位置。2d姿态检测器216基于对对象关键点位置的预测,针对图像中的每个对象生成2d骨架数据,并且向关键点的预测位置赋予置信度得分(块302)。2d骨架数据和关联的置信度得分被3d姿态计算器218用于生成(一个或多个)对象的(一个或多个)3d图形模型(例如,骨架)并且估计生成用来得出3d骨架数据的图像数据200、202、204、206的图像捕获设备104、106、108、110的参数∏(块304)。如本文所公开的,(一个或多个)对象的3d骨架数据和图像捕获设备104、106、108、110的参数∏可以被提供给例如安装在用户设备132(图1)上的(一个或多个)用户应用138,以进行展示和/或分析(块306)。
42.现在将联系图2的示例系统100更详细地论述图3的流程图300的每个块302和304。如上文在图3的块302处所述,2d姿态检测器216分析每个同步图像以识别图像数据中的每个对象的关键点或关节的位置。在本文公开的示例中,机器学习被用来提高2d姿态检测器216检测图像中的各个对象的关键点时的效率。
43.人工智能(artificial intelligence,ai),包括机器学习(machine learning,ml)、深度学习(deep learning,dl)和/或其他人工机器驱动的逻辑,使得机器(例如,计算机、逻辑电路,等等)能够使用模型来处理输入数据,以基于模型先前经由训练过程学习到的模式和/或关联来生成输出。例如,该模型可被用数据来训练以识别模式和/或关联,并且在处理输入数据时遵循这种模式和/或关联,从而使得(一个或多个)其他输入导致与所识别的模式和/或关联相一致的(一个或多个)输出。
44.存在许多不同类型的机器学习模型和/或机器学习体系结构。在本文公开的示例中,使用了深度神经网络模型。一般而言,适合用于本文公开的示例方法中的机器学习模型/体系结构将是基于监督学习的。然而,可以额外地或者替代地使用其他类型的机器学习模型,例如无监督学习。
45.一般而言,实现ml/ai系统涉及两个阶段,一个是学习/训练阶段,一个是推断阶段。在学习/训练阶段中,使用训练算法来训练模型,以根据基于例如训练数据的模式和/或关联来进行操作。一般而言,模型包括指导输入数据如何被变换为输出数据的内部参数,例
如通过模型内的一系列节点和连接来将输入数据变换为输出数据。此外,超参数被用作训练过程的一部分,以控制如何执行学习(例如,学习率、机器学习模型中要使用的层的数目,等等)。超参数被定义为在发起训练过程之前确定的训练参数。
46.基于ml/ai模型的类型和/或预期输出,可以执行不同类型的训练。例如,监督训练使用输入和相应的预期(例如,标记的)输出来为ml/ai模型选择参数(例如,通过在所选参数的组合上迭代),这些参数会减小模型误差。如本文所使用的,标记(labelling)是指机器学习模型的预期输出(例如,分类、预期输出值,等等)。或者,无监督训练(例如,用于深度学习、机器学习的子集等等中)涉及从输入推断模式,以选择ml/ai模型的参数(例如,没有预期的(例如,标记的)输出的益处)。
47.在本文公开的一些示例中,使用诸如随机梯度下降之类的训练算法来训练ml/ai模型。然而,可以额外地或替代地使用任何其他的训练算法。在本文公开的示例中,可以基于早期停止原则执行训练,其中训练持续直到(一个或多个)模型停止改进为止。在本文公开的示例中,可以在远程或者本地执行。在一些示例中,最初可以在远程执行训练。可以基于作为模型执行的结果生成的数据在本地执行进一步的训练(例如,重训练)。利用控制如何执行学习的超参数(例如,学习率、机器学习模型中要使用的层的数目,等等)来执行训练。在本文公开的示例中,超参数包括批次大小、迭代、轮次数目、优化器、学习率,等等。这种超参数是通过例如基于特定训练数据集的试错来选择的。
48.训练是利用训练数据来执行的。在本文公开的示例中,训练数据源自于先前生成的2d和/或3d图像,其中包括处于(一个或多个)不同姿态的(一个或多个)对象。因为使用了监督训练,所以训练数据被标记。在本文公开的示例中,标记是基于例如图像数据中的(一个或多个)对象的关键点的位置而被应用到训练数据的。在一些示例中,训练数据被细分,从而使得一部分数据被用于验证目的。
49.一旦训练完成,(一个或多个)模型就被存储在一个或多个数据库中(例如,图2的数据库236、260)。然后,一个或多个模型可以由例如2d姿态检测器216和/或3d姿态计算器218执行,如下文所公开。
50.一旦经过训练,部署的模型就可在推断阶段中被操作来处理数据。在推断阶段中,要分析的数据(例如,实况数据)被输入到模型,并且模型执行以创建输出。这个推断阶段可以被认为是ai“思考”以基于它从训练中学习到的东西来生成输出(例如,通过执行模型来将学习到的模式和/或关联应用到实况数据)。在一些示例中,输入数据在被用作机器学习模型的输入之前会经历预处理。此外,在一些示例中,输出数据在其由ai模型生成之后可经历后处理,以将输出变换为有用的结果(例如,数据的显示、要由机器执行的指令,等等)。
51.在一些示例中,部署的模型的输出可被捕获并被作为反馈来提供。通过分析反馈,可以确定部署的模型的准确度。如果反馈表明部署的模型的准确度低于阈值或其他标准,则可利用反馈和更新后的训练数据集、超参数等等来触发更新后模型的训练,以生成更新后的部署的模型。
52.参考图2,示例系统100包括第一计算系统220,以训练神经网络来检测图像数据中的对象的关键点的位置。示例第一计算系统220包括第一神经网络处理器222。在本文公开的示例中,第一神经网络处理器222实现了第一神经网络。
53.图2的示例第一计算系统220包括第一神经网络训练器226。图2的示例第一神经网
络训练器226执行对由第一神经网络处理器222实现的神经网络的训练。在本文公开的一些示例中,使用随机梯度下降算法执行训练。然而,也可以额外地或者替代地使用其他训练神经网络的方法。
54.图2的示例第一计算系统220包括第一训练控制器228。示例训练控制器228指示第一神经网络训练器226基于第一训练数据230执行神经网络的训练。在图2的示例中,由第一神经网络训练器226用于训练神经网络的第一训练数据230被存储在数据库232中。图2的图示示例的示例数据库232由用于存储数据的任何存储器、存储设备和/或存储盘来实现,例如,闪存、磁介质、光介质,等等。此外,存储在示例数据库232中的数据可采取任何数据格式,例如,二进制数据、逗号分隔数据、制表符分隔数据、结构化查询语言(sql)结构、图像数据,等等。虽然在图示的示例中,数据库232被图示为单个元件,但数据库232和/或本文描述的任何其他数据存储元件可以由任何数目和/或任何(一个或多个)类型的存储器来实现。
55.在图2的示例中,训练数据230可包括为训练目的而生成的包括处于各种姿态中的(一个或多个)对象的图像。在一些示例中,训练数据包括由(一个或多个)图像捕获设备104、106、108、110生成的图像数据流200、202、204、206。相对于训练数据中的每个图像的坐标系,对于每个姿态中的(一个或多个)对象的每个相关关键点(例如,关节),用(x,y)关节或关键点位置来标记训练数据230。第一神经网络训练器226使用训练数据230训练由神经网络处理器222实现的神经网络。基于在训练数据230中执行不同姿态的(一个或多个)对象的关键点的位置,第一神经网络训练器226训练神经网络222以识别(例如,预测)由图像捕获设备104、106、108、110生成的同步图像(例如,图像114、116、118、120)中的各个对象的关键点的位置。
56.作为神经网络训练的结果,生成关键点预测模型234。关键点预测模型234被存储在数据库236中。数据库232、236可以是同一存储设备或者不同的存储设备。
57.关键点预测模型234由图2的3d模型生成器136的2d姿态检测器216执行。具体地,2d姿态检测器216对每个同步图像(例如,图1的图像114、116、118、120)执行关键点预测模型234,以检测图像中的(一个或多个)对象的关键点的位置(例如,(x,y)坐标位置),并且为每个图像生成(一个或多个)对象的(一个或多个)2d骨架置),并且为每个图像生成(一个或多个)对象的(一个或多个)2d骨架(例如,其中k是识别对象102的特定关键点的索引,最多有总共j个关键点,并且p表示相应关键点的(x,y)坐标位置)。在一些示例中,2d姿态检测器216向2d骨架数据s
2d
应用滤波器(例如,低通滤波器,比如“一欧”滤波器),以去除噪声和平滑数据。2d骨架数据s
2d
例如以矩阵或向量数据的形式作为2d骨架数据240被存储在数据库208中。在一些示例中,2d骨架数据240被用作用于训练神经网络222的第一训练数据230。
58.2d骨架数据240(即,)的(x y)坐标可以被绘制出来以生成(一个或多个)2d图形模型。图6图示了基于由2d姿态检测器216为图1的每个同步图像114、116、118、120生成的2d骨架数据的图形2d骨架。具体地,图6图示了基于图1的第一图像114的2d骨架数据的对象102的第一图形2d骨架600,基于第二图像116的2d骨架数据的对象102的第
二图形2d骨架602,基于第三图像118的2d骨架数据的对象102的第三图形2d骨架604,以及基于第四图像120的2d骨架数据的对象102的第四图形2d骨架606。如上所述,用于生成图6的2d图形模型600、602、604、606的2d骨架数据(例如,矩阵和/或(一个或多个)向量)可以作为2d骨架数据240被存储在图2的数据库208中。额外地或者替代地,在一些示例中,从2d骨架数据240生成的图形图像600、602、604、606被存储在数据库208中。
59.图6的每个2d骨架模型600、602、604、606由对象102的关键点定义,这些关键点由2d姿态检测器216在各个图像114、116、118、120中使用关键点预测模型134识别。例如,第一图形2d骨架600包括在第一图像捕获设备104的坐标系中的第一(x,y)位置的第一关键点608。第一关键点608对应于在图1的第一图像114中可看到的对象102的第一膝盖。第二图形2d骨架602包括在第二图像捕获设备108的坐标系中的第一(x,y)位置处的第一关键点608和第二(x,y)位置处的第二关键点610。第二关键点610对应于在图1的第二图像116中可看到的对象102的第二膝盖。
60.在本文公开的示例中,在图6的第二图形2d骨架602和第三图形2d骨架604中被标记为关键点612的骨盆关节充当根关节,或者参考关节,用于3d姿态估计。如本文所公开的,可以相对于对象的骨盆关节来识别对象的其他关键点的3d位置。
61.返回到图2,图2的2d姿态检测器216为各个图像114、116、118、120中识别的每个关键点计算置信度得分,该关键点被用于生成图像的2d骨架数据240(例如,由图6的图形2d骨架600、602、604、606表示)。对于与图像捕获设备的特定视图相关联的2d骨架数据s
2d
,2d姿态检测器216生成置信度得分向量其中每个得分表示2d骨架数据的关节坐标的检测可信度。置信度得分表示2d姿态检测器216识别出图像中的对象的特定关键点的位置的置信度。例如,2d姿态检测器216可以向图像中被遮挡的关键点赋予较低的置信度得分向图像中没有被遮挡的关键点赋予较高的置信度得分其中较高的置信度得分表明对于为关键点估计的特定位置是准确的有更高的置信度。例如,如果由于生成了图像的图像捕获设备的视野,和/或由于关节被例如对象的衣服所覆盖,关键点在图像中基本上不可见,那么该关键点在图像中可能被遮挡或者至少部分被遮挡。
62.在图像中识别出多于一个对象的示例中,2d姿态检测器216实现(一个或多个)跟踪算法242,以向该图像和与特定图像数据流200、202、204、206相关联的后续图像中识别出的每个对象赋予标识符。例如,(一个或多个)跟踪算法242可以使用限界框来识别不同的对象。在这样的示例中,可以使用指派给每个对象的唯一限界框来跟踪每个对象在各个图像数据流200、202、204、206的图像中的位置。(一个或多个)跟踪算法242可以使用其他类型的标识符来跟踪图像数据中的两个或更多个对象。(一个或多个)跟踪算法242可以由(一个或多个)用户输入定义并且被存储在数据库208中。
63.如本文所公开的,由2d姿态检测器216生成的2d骨架数据和关联的置信度得分被提供给3d姿态计算器218,以用于生成图像数据中的(一个或多个)对象的(一个或多个)3d图形模型。图4的流程图400示出了可由图2的3d姿态计算器218
实现的示例算法,用来基于由2d姿态检测器216生成的2d骨架数据240生成(一个或多个)3d图形模型。具体而言。3d姿态计算器218对每个输入的2d骨架数据进行归一化,以生成归一化2d骨架数据(块402)。3d姿态检测器218对2d骨架数据进行归一化,以使得一组同步图像的2d骨架数据的图形表示(例如,图6的2d骨架模型600、602、604、606)具有相似的大小,相对于参考平面基本对齐,等等。例如,3d姿态检测器218可以执行以下公式来归一化2d骨架数据并且获得归一化2d关节坐标
[0064][0065]
在公式1中,变量λ是缩放因子,用来考虑到例如对象的根关节(例如,骨盆关节)与对象的其他关节之间的距离。可以基于定义骨盆关节(例如,根关节)和其他关节之间距离的参考数据来定义缩放因子λ。归一化2d骨架数据例如以矩阵或向量数据的形式作为归一化2d骨架数据244被存储在数据库208中。
[0066]
图7图示了由图2的3d姿态计算器218基于2d骨架数据240(例如,如图6的模型600、602、604、606的图形表示)生成的归一化2d骨架数据244(即,)的示例图形表示。3d姿态计算器218基于从由图6的第一图形2d骨架600表示的2d骨架数据s
2d
得出的归一化2d骨架数据生成对象102的第一图形归一化2d骨架700,基于从由图6的第二图形2d骨架602表示的2d骨架数据s
2d
得出的归一化2d骨架数据生成对象102的第二图形归一化2d骨架702,基于从由图6的第三图形2d骨架606表示的2d骨架数据s
2d
得出的归一化2d骨架数据生成对象102的第三图形归一化2d骨架704,并且基于从由图6的第四图形2d骨架606表示的2d骨架数据s
2d
得出的归一化2d骨架数据生成对象102的第四图形归一化2d骨架706。与表示非归一化2d骨架数据的图6的图形2d骨架600、602、604、606相比,表示归一化2d骨架数据的图7的模型700、702、704、706与图6的模型600、602、604、606相比,大小基本相似。如上所述,用于生成图7的归一化2d图形模型700、702、704、706的归一化2d骨架数据(例如,矩阵和/或(一个或多个)向量)可以作为归一化2d骨架数据244被存储在图2的数据库208中。额外地或者替代地,在一些示例中,从归一化2d骨架数据244生成的图形图像700、702、704、706被存储在数据库208中。
[0067]
在图2-图4的示例中,归一化2d骨架数据244被用来训练一般回归神经网络,该神经网络生成3d姿态预测模型,该模型被3d姿态计算器218用来将2d骨架数据变换为(一个或多个)3d图形模型或者(一个或多个)骨架(例如,图4的块404)。
[0068]
再次参考图2,示例系统100包括第二计算系统246,以训练神经网络,来将对象的关节或关键点的2d位置(例如,(x,y)坐标)映射到3d位置(例如,(x,y,z)坐标)。示例第二计算系统246包括第二神经网络处理器248。在本文公开的示例中,第二神经网络处理器248实现了第二神经网络。
[0069]
图2的示例第二计算系统246包括第二神经网络训练器250。图2的示例第二神经网络训练器250执行对由第二神经网络处理器248实现的神经网络的训练。在本文公开的一些
示例中,使用随机梯度下降算法执行训练。然而,也可以额外地或者替代地使用其他训练神经网络的方法。
[0070]
图2的示例第二计算系统246包括第二训练控制器252。示例第二训练控制器252指示第二神经网络训练器250基于第二训练数据254执行神经网络的训练。在图2的示例中,由第二神经网络训练器248用于训练神经网络的第二训练数据254被存储在数据库256中。图2的图示示例的示例数据库256由用于存储数据的任何存储器、存储设备和/或存储盘来实现,例如,闪存、磁介质、光介质,等等。此外,存储在示例数据库256中的数据可采取任何数据格式,例如,二进制数据、逗号分隔数据、制表符分隔数据、结构化查询语言(sql)结构、图像数据,等等。虽然在图示的示例中,数据库256被图示为单个元件,但数据库256和/或本文描述的任何其他数据存储元件可以由任何数目和/或任何(一个或多个)类型的存储器来实现。
[0071]
在图2的示例中,训练数据254包括先前生成的3d人类姿态数据集。用相对于训练数据254中的每个图像的3d坐标系的(x,y,z)关节位置来标记3d人类姿态数据集。例如,3d人类姿态数据集中的以骨盆为中心的3d骨架数据可以在坐标(0,0,0)处定义骨盆关节,其中其他关节(例如,肘部、手腕)的坐标相对于骨盆关节是偏移的。
[0072]
在图2的示例中,对于训练数据254中的每个以骨盆为中心的3d骨架数据训练控制器252确定相应的2d骨架数据(例如,经由正交投影)。训练控制器252对从3d人类姿态数据集生成的2d骨架数据进行归一化,以确定缩放值结果,生成和的训练数据对,用于神经网络248的监督学习。训练控制器248可以旋转3d骨架数据(例如,通过随机仰角和/或随机方位角)以生成额外的训练数据。
[0073]
第二神经网络训练器250训练神经网络248以识别骨盆关节(即,根关节)和其他关节之间各自的深度偏移,其中深度偏移表示相对于每个图像捕获设备的坐标系的深度方向(z方向)的偏移。作为训练的结果,生成关节深度偏移图谱其中dk表示从第k个关节到骨盆关节的深度偏移。关节深度偏移模型258(即,深度偏移图谱)被存储在数据库260中。数据库256、260可以是同一存储设备或者不同的存储设备。
[0074]
图2的示例3d姿态计算器218使用神经网络训练的关节深度偏移模型258来预测关键点的3d关节坐标,并且基于预测的3d关节坐标生成一组初始的(一个或多个)3d图形模型或者(一个或多个)骨架。图5的流程图500图示了从归一化2d骨架数据进行的3d姿态回归。如图5所示,作为神经网络248的训练结果生成关节深度偏移模型(块502)。3d姿态计算器218使用归一化2d骨架数据和关节深度偏移模型d来生成预测的缩放3d骨架数据(例如,经由正交投影)。为每个图像捕获设备视图生成预测的3d骨架,其被用于在由图像捕获设备视图之一定义的世界坐标系中生成最终3d骨架。
[0075]
3d姿态计算器218使用预定义的3d骨架模板3d姿态计算器218使用预定义的3d骨架模板执行重定向操作(块504)。预定义的3d骨架模板包括参考骨骼长度(例如,平均骨骼长度)。3d骨架模板可以由(一个或多个)用户输入定义并且作为骨架模板数据263被存储在图2的数据库208中。具体地,3d姿态计算器218使得预测的3d骨架数据被重定向到以使得s
3d
具有与3d骨架模板相同的骨骼长度,以及与从由图像捕获设备104、106、108、110捕获的图像数据生成的预测3d骨架数据相同的骨骼方向。
[0076]
作为从归一化2d骨架数据和关节深度偏移模型258获得3d关节坐标的回归分析的结果,3d姿态计算器218为同步图像集合中的每个图像创建初始3d骨架数据初始3d骨架数据表示从与图像捕获设备104、106、108、110的各个视图相对应的2d骨架数据进行回归分析的结果。初始3d骨架数据作为初始3d骨架数据265被存储在数据库208中(例如,作为矩阵或者向量数据)。
[0077]
图8图示了初始3d骨架数据265(即,)的示例图形模型800,该模型来自于执行一般回归神经网络(例如,如联系图5所公开的)来从与第一图像捕获设备104的视图相关联的由图7的第一骨架700图形地表示的归一化2d骨架数据回归图1的对象102的3d姿态(例如,),其中i=1)。图8的示例3d骨架模型800被示出在第一图像捕获设备104的坐标系中。在一些示例中,3d姿态计算器218为与每个图像捕获设备视图相关联的2d骨架数据生成初始3d骨架数据的图形表示(例如,与用于生成图7的第二图形归一化2d骨架702的归一化2d骨架数据相关联的第二图形3d表示)。在一些示例中,使用初始3d骨架数据为特定视图创建的每个图形3d模型显示了相同或基本相同的姿态,但根据与捕获该视图的各个图像捕获设备相关联的视图角度进行了旋转。如上所述,用于生成图形模型800的初始3d骨架数据(例如,矩阵和/或(一个或多个)向量)可以作为初始3d骨架数据265被存储在图2的数据库208中。额外地或者替代地,在一些示例中,从初始3d骨架数据265生成的(一个或多个)图形图像800被存储在数据库208中。
[0078]
如本文所公开的,图像捕获设备104、106、108、110是未校准的,从而,图像捕获设备104、106、108、110的一个或多个内在和/或外在参数对于3d模型生成器136而言是未知的,并且/或者在图像数据的生成期间发生变化。从而,在一些示例中,初始3d骨架数据265、800可能不完全表示与相应的图像捕获设备104、106、108、110相关联的视图角度。图2的示例3d模型生成器136包括图像捕获设备参数分析器264。图像捕获设备参数分析器264提供了用于预测图像捕获设备104、106、108、110的内在和外在参数的装置,例如第二、第三和第四图像捕获设备106、108、110相对于由第一图像捕获设备104的坐标系定义的世界坐标系
的方向和位置。图2的示例3d模型生成器136使用图像捕获设备104、106、108、110的预测参数来优化3d骨架数据,从而使得最终的3d骨架考虑到了在由每个设备104、106、108、110生成的图像数据中捕获到的对象的多个视图。
[0079]
在本文公开的示例中,图像捕获设备参数可以由变量在本文公开的示例中,图像捕获设备参数可以由变量表示。对于每个图像捕获设备104、106、108、110,有六个参数。具体地,表示欧拉角,表示第一图像捕获设备104和第i
th
图像捕获设备106、108、110之间的旋转。r
1i
是3d向量,它可以被转换为具有3x3元素的3d旋转矩阵m,(例如,t=(tx,ty))是表示图像平面中的平移的2d向量,并且si是表示缩放比例的1d标量值。在本文公开的示例中,中的变量ti,si表示图像捕获设备的内在参数,并且r
1i
表示图像捕获设备的外在参数。例如,对于第一图像捕获设备104的坐标空间中的给定3d关节位置j3=(x,y,z),3d关节位置j3到第i
th
相机图像平面(例如,第二图像捕获设备的图像平面)的投影可以被表示为其中x

=r
1i
(x)表示在x被r
1i
旋转之后的新点,并且x

xy
表示x

的x,y坐标。
[0080]
图2的示例图像捕获设备参数分析器264基于归一化2d骨架数据244和初始3d骨架数据265确定图像捕获设备的初始值r
1i
,ti,si(例如,如图4的流程图400的块406处所示)。例如,图2的图像捕获设备参数分析器264使用回归的初始3d骨架数据和和来计算r
1i
的初始估计。图像捕获设备参数分析器264通过最小化以下函数来确定最优其中最小化可以使用例如奇异值分解(singular value decomposition,svd)来执行。在一些示例中,只有与对象的躯干关节(例如,髋部、肩部)相对应的坐标被用于最小化。
[0081]
图2的图像捕获设备参数分析器264使用初始3d骨架数据图2的图像捕获设备参数分析器264使用初始3d骨架数据和归一化2d骨架数据来确定标量值si的初始估计。在一些示例中,图像捕获设备参数分析器264通过最小化以下函数来确定最优si:
[0082][0083]
在一些示例中,图像捕获设备参数分析器264将平移变量ti的初始估计设置为零向量。初始参数r
1i
,ti,si作为图像捕获设备参数数据266被存储在图2的数据库208中。
[0084]
图2的示例3d姿态计算器218使用初始3d骨架数据265和初始图像捕获设备参数数据266来执行优化,该优化的结果是估计对象(例如,图1的对象102)的3d姿态并且生成对象在该姿态中的(例如,最终)3d图形模型(例如,如图4的流程图400的块408处所示)。作为优化的结果,3d姿态计算器218生成与第i
th
图像捕获设备的视图相对应的3d骨架(例如,图形模型)。例如,可以相对于充当世界坐标系的图1的第一图像捕获设备104的视图生成3d骨架由3d姿态计算器218执行的优化的作用是组合或融合为与图像捕获设备相关联
的每个视图生成的初始3d骨架265、800,以实现更准确的最终3d骨架。
[0085]
图2的3d姿态计算器218使用3d骨架模板(例如,(例如,)来执行该优化。图9示出了示例3d骨架模板900或者运动学树的图形表示,其中骨架被示为处于静止姿态,由图9中的17个标记的关键点或关节的位置定义。这些关节定义了运动学树中的节点。如图9所示,可以为例如身高为170厘米的个人定义3d骨架模板900。可以基于平均人体测量统计数据来生成3d骨架模板900的相应骨骼长度。然而,如果感兴趣的对象(例如,对象102)的高度是已知的,那么可以基于已知的身体度量来调整3d骨架模板900。3d骨架模板900由用户输入定义并且作为骨架模板数据263被存储在图2的数据库208中。在一些示例中,3d骨架模板900是以图形(例如,作为图9所示的图像数据)或者矩阵和/或向量数据来存储的。
[0086]
在本文公开的示例中,3d骨架模板900被用来使用一组骨架关节旋转向量θ而不是3d关节坐标表示感兴趣的对象(例如,图1的对象102)的3d骨架。图10示出了摆出姿态的3d骨架1000,其中图9的3d骨架模板900的关节已经被骨架关节旋转向量θ旋转以将3d骨架定位为某个姿态。换句话说,图10中的新关节位置是通过旋转图9所示的原始关节位置来计算的。在本文公开的示例中,当3d姿态计算器218执行优化时,骨架关节旋转向量θ被定义为优化参数,而不是3d关节位置,因为关节旋转向量θ考虑到了独立于变体骨骼长度的运动分布。
[0087]
在图10的示例中,骨架关节旋转向量θ可以被定义为:其中表示骨骼部分k相对于运动学树中的特定骨骼部分的父亲的相对旋转的轴-角度表示。例如,骨架关节旋转向量θ可以定义在关节5和6之间延伸的骨骼相对于在关节4和5之间延伸的骨骼的旋转,如图9和10中所标记的(例如,关节5处的旋转)。在这里的示例中,变量θ
*
可以被定义为零向量,从而使得s(θ
*
)相当于图9所示的骨架模板
[0088]
图2的示例3d姿态计算器218使用基于回归神经网络预测的初始3d骨架数据(例如,初始3d骨架数据265)来确定相应的初始骨架关节旋转向量θ
init
,从而使得3d骨架模板的骨骼方向s(θ
init
)与初始3d骨架数据中的骨骼方向基本相同,其中,中的i对应于例如第一图像捕获设备104的视图(即,i=1)。在这个示例中,3d姿态计算器218通过减小(例如,最小化)非线性最小二乘目标函数,使用归一化2d骨架数据初始3d骨架数据以及初始图像捕获设备参数π
init
,来为与第一图像捕获设备104相关联的视图求解最终(例如,最优)3d骨架和最终(例如,最优)图像捕获设备参数π。具体地,使用初始3d姿态参数θ
init
和初始图像捕获设备参数∏
init
,3d姿态计算器218通过最小化以下目标函数来确定最优骨架关节旋转向量θ和最优图像设备捕获参数π。
[0089]
e(θ,π)=e
joint
(θ,π) e
init
(θ,∏) w1*e
prior
(θ) e
temporal
(θ,∏)(公式2);
[0090][0091][0091][0092]eprior
(θ)=-log(g(θ;μ
θ
,σ))
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(公式5);
[0093]etemporal
(θ,∏)=w4*‖(s
3d
(θ))-s
3d

t-1
))‖2 w5*‖∏-∏
t-1
‖2(公式6)。
[0094]
在上述公式中,e
joint
定义了与各个图像捕获设备104、106、108、110相关联的所有视图的骨架-视图一致性,并且测量了投影关节位置与相应的估计关节位置之间的距离;e
init
测量了优化参数与初始参数之间的差异;g(θ;μ
θ
,σ)是高斯函数,它定义了合理姿态作为已知姿态的概率分布(例如,基于已知的3d人类姿态数据(例如,训练数据254)确定);e
prior
充当约束,以使得优化倾向于可能的姿态而不是不可能的姿态(例如,倾向于对象腿部弯曲并且对象的脚在腿部弯曲期间向后移动而不是向前移动的姿态);e
temporal
表示时域的参数变化;w1,w2,w3,w4,w5是可以被调整来调节优化的标量权重。在执行优化时,3d姿态计算器218考虑到了由2d姿态检测器216赋予预测的2d关键点位置的置信度得分。例如,优化后的3d骨架对具有较低置信度得分的2d关节的依赖性要小于与较高置信度得分相关联的2d关节。参考图2,作为优化的结果生成的后处理3d骨架数据270可被存储在数据库208中,并且例如作为神经网络的训练数据230、254被使用。
[0095]
图11示出了作为由图2的3d姿态计算器218执行的优化的结果而生成的后处理3d骨架的示例图形模型1110,在该优化的执行时使用了归一化2d骨架数据244(例如,如图7的模型700、702、704、706图形表示)、初始3d骨架数据265(例如,其中与第一图像捕获设备104的视图相关联的初始3d骨架数据由图8的模型800图形表示)、以及由图9的模型900图形表示的骨架模板图11的示例最终(例如,最优)3d图形骨架1100在第一图像捕获设备104的坐标系(例如,)定义的世界坐标系中被示出或者被投影到该世界坐标系上。
[0096]
本文公开的示例是联系由第一图像捕获设备104的坐标系所定义的世界坐标系来论述的,从而(一个或多个)后处理3d骨架的(一个或多个)图形模型被投影到由第一图像捕获设备104定义的世界坐标系上,如图11所示。然而,在其他示例中,其他图像捕获设备106、108、110的坐标系可以被选择为世界坐标系。例如,如果第二图像捕获设备106的坐标系被选择为世界坐标系,则第一、第三和第四图像捕获设备104、106、110之间的旋转(例如,由图像捕获设备参数分析器264确定)可用于基于由第二图像捕获设备106定义的世界坐标系上的旋转来变换对象的3d姿态。
[0097]
图2的示例3d模型生成器136包括通信器272。通信器272提供了用于将后处理3d骨架数据270输出到例如图1的用户设备132的(一个或多个)用户应用138的装置。后处理3d骨架数据270可被用于诸如运动员的生物力学分析、电影和游戏的3d角色动画、人机交互分析和/或人类行为识别分析之类的应用。图2的通信器272可以经由一个或多个有线或无线通信协议输出后处理3d骨架数据270。
[0098]
虽然在图2中图示了实现图1的3d模型生成器136的示例方式,但图2中所示的元件、过程和/或设备中的一个或多个可被组合、划分、重安排、省略、消除和/或以任何其他方式来实现。另外,示例数据库208、示例图像捕获设备控制器210、图像同步器214、示例2d姿态检测器216、示例3d姿态计算器218、示例图像捕获设备参数分析器264、示例通信器272,和/或更概括而言,图2的示例3d模型生成器136,可以通过硬件、软件、固件和/或硬件、软件
和/或固件的任意组合来实现。从而,例如,示例数据库208、示例图像捕获设备控制器210、图像同步器214、示例2d姿态检测器216、示例3d姿态计算器218、示例图像捕获设备参数分析器264、示例通信器272和/或更概括而言示例3d模型生成器136中的任何一者,可以由一个或多个模拟或数字电路、逻辑电路、(一个或多个)可编程处理器、(一个或多个)可编程控制器、(一个或多个)图形处理单元(graphics processing unit,gpu)、(一个或多个)数字信号处理器(digital signal processor,dsp)、(一个或多个)专用集成电路(application specific integrated circuit,asic)、(一个或多个)可编程逻辑器件(programmable logic device,pld)和/或(一个或多个)现场可编程逻辑器件(field programmable logic device,fpld))来实现。当读到本专利的任何装置或系统权利要求覆盖纯软件和/或固件实现方式时,示例数据库208、示例图像捕获设备控制器210、图像同步器214、示例2d姿态检测器216、示例3d姿态计算器218、示例图像捕获设备参数分析器264和/或示例通信器272中的至少一者在此被明确定义为包括包含该软件和/或固件的非暂态计算机可读存储设备或存储盘,例如存储器、数字多功能盘(digital versatile disk,dvd)、致密盘(compact disk,cd)、蓝光盘,等等。此外,图1和/或图2的示例3d模型生成器136可包括除了图2中所示的那些以外或者取代图2中所示的那些的一个或多个元件、过程和/或设备,和/或可包括多于一个图示的元件、过程和设备的任何一者或所有。如本文所使用的,短语“与
……
通信”——包括其变体——涵盖了直接通信和/或通过一个或多个中间组件进行的间接通信,而不要求直接物理(例如,有线)通信和/或不断的通信,而是还包括按周期性间隔、排定的间隔、非周期性间隔和/或一次性事件的选择性通信。
[0099]
虽然在图2中图示了实现第一计算系统220的示例方式,但图2中所示的元件、过程和/或设备中的一个或多个可被组合、划分、重安排、省略、消除和/或以任何其他方式来实现。另外,示例神经网络处理器222、示例训练器226、示例训练控制器228、(一个或多个)示例数据库232、236,和/或更概括而言,图2的示例第一计算系统220,可以通过硬件、软件、固件和/或硬件、软件和/或固件的任意组合来实现。从而,例如,示例神经网络处理器222、示例训练器226、示例训练控制器228、(一个或多个)示例数据库232、236和/或更概括而言示例第一计算系统220中的任何一者,可以由一个或多个模拟或数字电路、逻辑电路、(一个或多个)可编程处理器、(一个或多个)可编程控制器、(一个或多个)图形处理单元(gpu)、(一个或多个)数字信号处理器(dsp)、(一个或多个)专用集成电路(asic)、(一个或多个)可编程逻辑器件(pld)和/或(一个或多个)现场可编程逻辑器件(fpld))来实现。当读到本专利的任何装置或系统权利要求覆盖纯软件和/或固件实现方式时,示例神经网络处理器222、示例训练器226、示例训练控制器228和/或(一个或多个)示例数据库232、236中的至少一者在此被明确定义为包括包含该软件和/或固件的非暂态计算机可读存储设备或存储盘,例如存储器、数字多功能盘(dvd)、致密盘(cd)、蓝光盘等等。此外,示例第一计算系统220可包括除了图2中所示的那些以外或者取代图2中所示的那些的一个或多个元件、过程和/或设备,和/或可包括多于一个图示的元件、过程和设备中的任何一者或所有。如本文所使用的,短语“与
……
通信”——包括其变体——涵盖了直接通信和/或通过一个或多个中间组件进行的间接通信,而不要求直接物理(例如,有线)通信和/或不断的通信,而是还包括按周期性间隔、排定的间隔、非周期性间隔和/或一次性事件的选择性通信。
[0100]
虽然在图2中图示了实现第二计算系统246的示例方式,但图2中所示的元件、过程
和/或设备中的一个或多个可被组合、划分、重安排、省略、消除和/或以任何其他方式来实现。另外,示例神经网络处理器248、示例训练器250、示例训练控制器252、(一个或多个)示例数据库256、260,和/或更概括而言,图2的示例第二计算系统246,可以通过硬件、软件、固件和/或硬件、软件和/或固件的任意组合来实现。从而,例如,示例神经网络处理器248、示例训练器250、示例训练控制器252、(一个或多个)示例数据库256、260和/或更概括而言示例第二计算系统246中的任何一者,可以由一个或多个模拟或数字电路、逻辑电路、(一个或多个)可编程处理器、(一个或多个)可编程控制器、(一个或多个)图形处理单元(gpu)、(一个或多个)数字信号处理器(dsp)、(一个或多个)专用集成电路(asic)、(一个或多个)可编程逻辑器件(pld)和/或(一个或多个)现场可编程逻辑器件(fpld))来实现。当读到本专利的任何装置或系统权利要求覆盖纯软件和/或固件实现方式时,示例神经网络处理器248、示例训练器250、示例训练控制器252和/或(一个或多个)示例数据库256、260中的至少一者在此被明确定义为包括包含该软件和/或固件的非暂态计算机可读存储设备或存储盘,例如存储器、数字多功能盘(dvd)、致密盘(cd)、蓝光盘等等。此外,示例第二计算系统246可包括除了图2中所示的那些以外或者取代图2中所示的那些的一个或多个元件、过程和/或设备,和/或可包括多于一个图示的元件、过程和设备中的任何一者或所有。如本文所使用的,短语“与
……
通信”——包括其变体——涵盖了直接通信和/或通过一个或多个中间组件进行的间接通信,而不要求直接物理(例如,有线)通信和/或不断的通信,而是还包括按周期性间隔、排定的间隔、非周期性间隔和/或一次性事件的选择性通信。
[0101]
在图12中示出了代表用于实现图2的示例第一计算系统220的示例硬件逻辑、机器可读指令、硬件实现状态机和/或其任意组合的流程图。在图13中示出了代表用于实现图2的示例第二计算系统246的示例硬件逻辑、机器可读指令、硬件实现状态机和/或其任意组合的流程图。在图14中示出了代表用于实现图1和/或图2的示例3d模型生成器136的示例硬件逻辑、机器可读指令、硬件实现状态机和/或其任意组合的流程图。图12-图14的机器可读指令可以是供计算机处理器和/或处理器电路执行的一个或多个可执行程序或者可执行程序的(一个或多个)部分,所述计算机处理器和/或处理器电路例如是下文联系图15-图17论述的示例处理器平台1500、1600、1700中所示的处理器1512、1612、1712。该程序可体现在存储于诸如cd-rom、软盘、硬盘驱动器、dvd、蓝光盘或者与(一个或多个)处理器1512、1612、1712相关联的存储器之类的非暂态计算机可读存储介质上的软件中,但整个程序和/或其一些部分可替代为由除了(一个或多个)处理器1512、1612、1712以外的设备执行和/或体现在固件或专用硬件中。另外,虽然是参考图12-图14中所示的流程图来描述示例程序的,但可以替代地使用实现示例第一计算系统220、示例第二计算系统246和/或示例3d模型生成器136的许多其他方法。例如,块的执行顺序可被改变,和/或描述的块中的一些可被改变、消除或者组合。额外地或者替代地,任何或所有块可由被构造为执行相应的操作而不执行软件或固件的一个或多个硬件电路(例如,分立和/或集成的模拟和/或数字电路、fpga、asic、比较器、运算放大器(op-amp)、逻辑电路,等等)来实现。处理器电路可分布在不同的网络位置中和/或在一个或多个设备的本地(例如,单个机器中的多核处理器,分布在服务器机架上的多个处理器,等等)。
[0102]
可以以压缩格式、加密格式、分段格式、编译格式、可执行格式、打包格式等等中的一种或多种格式来存储本文描述的机器可读指令。本文描述的机器可读指令可被存储为可
被利用来创建、制造和/或生产机器可执行指令的数据或数据结构(例如,指令的部分、代码、代码的表示,等等)。例如,机器可读指令可被分段并被存储在位于网络或者网络集合的相同或不同位置的一个或多个存储设备和/或计算设备(例如,服务器)上(例如,在云中,在边缘设备中,等等)。机器可读指令可要求安装、修改、调适、更新、组合、补充、配置、解密、解压缩、解包、分发、重指派、编译等等中的一个或多个,以便使得它们可被计算设备和/或其他机器直接可读、可解释和/或可执行。例如,机器可读指令可被存储为多个部分,这些部分被单独压缩、加密并且存储在分开的计算设备上,其中这些部分当被解密、解压缩和组合时,形成实现可一起形成例如本文所述那种的程序的一个或多个功能的一组可执行指令。
[0103]
在另一示例中,机器可读指令可被存储在如下状态中:在该状态中,它们可被处理器电路读取,但要求添加库(例如,动态链接库(dynamic link library,dll))、软件开发套件(software development kit,sdk)、应用编程接口(application programming interface,api)等等以便在特定的计算设备或其他设备上执行这些指令。在另一示例中,在机器可读指令和/或相应的(一个或多个)程序可被全部或部分执行之前,机器可读指令可能需要被配置(例如,存储设置、输入数据、记录网络地址,等等)。从而,本文使用的机器可读介质可包括机器可读指令和/或(一个或多个)程序,无论这些机器可读指令和/或(一个或多个)程序在被存储时或以其他方式在休息或在途时的特定格式或状态如何。
[0104]
本文描述的机器可读指令可以由任何过去、当前或者未来的指令语言、脚本语言、编程语言等等来表示。例如,可以利用以下语言中的任何一种来表示机器可读指令:c、c 、java、c#、perl、python、javascript、超本文标记语言(hypertext markup language,html)、结构化查询语言(structured query language,sql)、swift,等等。
[0105]
如上所述,可利用存储在非暂态计算机和/或机器可读介质上的可执行指令(例如,计算机和/或机器可读指令)来实现图12-图14的示例过程,所述介质例如是硬盘驱动器、闪存、只读存储器、致密盘、数字多功能盘、缓存、随机访问存储器、和/或其中信息可被存储任何持续时间(例如,存储较长时间段、永久存储、短暂存储、用于临时缓冲、和/或用于信息的缓存)的任何其他存储设备或存储盘。就本文使用的而言,术语非暂态计算机可读介质被明确定义为包括任何类型的计算机可读存储设备和/或存储盘,并且排除传播信号和排除传输介质。
[0106]“包括”和“包含”(以及其所有形式和时态)在本文中被用作开端式术语。从而,每当权利要求采用任何形式的“包括”或“包含”(例如,包括、包含、具有,等等)作为序言或者在任何种类的权利要求记载中使用时,要理解,额外的元素、术语等等可存在,而不落在相应权利要求或记载的范围之外。如本文所使用的,当短语“至少”在例如权利要求的前序部分中被用作过渡术语时,它是开端的,与术语“包括”和“包含”是开端的方式一样。术语“和/或”当例如被以比如a、b和/或c这样的形式使用时,指的是a、b、c的任意组合或子集,例如(1)a单独,(2)b单独,(3)c单独,(4)a与b,(5)a与c,(6)b与c,以及(7)a与b以及与c。就本文在描述结构、组件、项目、对象和/或事物的上下文中使用的而言,短语“a和b中的至少一者”打算指包括以下各项中的任何一者的实现方式:(1)至少一个a,(2)至少一个b,以及(3)至少一个a和至少一个b。类似地,就本文在描述结构、组件、项目、对象和/或事物的上下文中使用的而言,短语“a或b中的至少一者”打算指包括以下各项中的任何一者的实现方式:(1)至少一个a,(2)至少一个b,以及(3)至少一个a和至少一个b。就本文在描述过程、指令、动
作、活动和/或步骤的执行或运行的上下文中使用的而言,短语“a和b中的至少一者”打算指包括以下各项中的任何一者的实现方式:(1)至少一个a,(2)至少一个b,以及(3)至少一个a和至少一个b。类似地,就本文在描述过程、指令、动作、活动和/或步骤的执行或运行的上下文中使用的而言,短语“a或b中的至少一者”打算指包括以下各项中的任何一者的实现方式:(1)至少一个a,(2)至少一个b,以及(3)至少一个a和至少一个b。
[0107]
如本文所使用的,单数指代(例如,“一”、“第一”、“第二”,等等)并不排除多数。就本文使用的而言,术语“一”实体指的是一个或多个该实体。术语“一”、“一个或多个”和“至少一个”在本文中可以被可互换地使用。此外,虽然是单独列出的,但多个装置、元素或方法动作可由例如单个单元或处理器来实现。此外,虽然个体特征可被包括在不同的示例或权利要求中,但它们可能可被组合,并且包括在不同的示例或权利要求中并不暗示着特征的组合是不可行的和/或不是有利的。
[0108]
图12是代表示例机器可读指令1200的流程图,所述指令当被图2的示例第一计算系统220执行时,使得示例第一计算系统220训练神经网络以识别2d图像数据中的对象的关键点或关节的位置。图12的示例指令1200当被图2的第一计算系统220执行时,产生神经网络和/或其模型,该神经网络和/或其模型可以被分发到其他计算系统,例如图2的2d姿态检测器216。
[0109]
图12的示例指令1200开始于训练控制器228访问存储在示例数据库232中的2d对象姿态图像数据(块1201)。2d对象姿态图像数据可包括先前生成的处于(一个或多个)不同姿态中的(一个或多个)对象的图像数据。
[0110]
示例训练控制器228基于例如使得训练控制器228识别图像数据中的关节的图像识别技术来标记2d对象姿态图像数据中的关键点的位置(例如,(x,y)坐标)(块1202)。示例训练控制器228基于标记的图像数据中的关键点的位置生成训练数据230(块1204)。
[0111]
示例训练控制器228指示神经网络训练器226使用训练数据230执行神经网络222的训练(块1206)。在图12的示例中,该训练是基于监督学习的。作为训练的结果,生成关键点预测模型234(块1208)。基于关键点预测模型234,神经网络被训练来预测图像数据中的对象的关键点的2d(x,y)位置。关键点预测模型234可被存储在数据库236中,以便由3d模型生成器136的2d姿态检测器216访问。图12的示例指令1200在不执行额外的训练(例如,再训练)时结束(块1210、1212)。
[0112]
图13是代表示例机器可读指令1300的流程图,所述指令当被图2的示例第二计算系统246执行时,使得示例第二计算系统246训练神经网络以学习从包括2d关节坐标的归一化2d骨架数据到使用深度偏移图谱的3d关节坐标的映射,其中深度偏移图谱指示出从关节到根关节(例如,骨盆关节)的深度偏移。图13的示例指令1300当被图2的第二计算系统246执行时,产生神经网络和/或其模型,该神经网络和/或其模型可被分发到其他计算系统,例如图2的3d姿态计算器218。
[0113]
图13的示例开始于第二计算系统246的训练控制器252访问存储在示例数据库256中的3d对象姿态图像数据(块1301)。3d对象姿态图像数据可包括先前生成的3d图像数据,其中包括处于(一个或多个)不同姿态中的(一个或多个)对象。
[0114]
示例训练控制器252为每个地面实况的以骨盆为中心的3d骨架数据(例如,其中骨盆关节是根关节,并且地面实况是指相对于骨盆关节的已知关节位置)确定2d骨架数据(块
1302)。在图13中,训练控制器252对2d骨架数据进行归一化,以获得(一个或多个)缩放因子。示例训练控制器252基于2d归一化骨架和(一个或多个)缩放因子生成训练数据254(块1304)。
[0115]
示例训练控制器252指示神经网络训练器250使用训练数据254执行神经网络248的训练(块1306)。在图13的示例中,该训练是基于监督学习的。作为训练的结果,生成关节深度偏移模型258(块1308)。基于关节深度偏移模型258,神经网络被训练来学习归一化2d骨架数据中的关节坐标与关节的深度偏移之间的映射,以预测3d关节位置。关节深度偏移模型258可被存储在数据库256中,以便由3d模型生成器136的3d姿态计算器218访问。图13的示例指令1300在不执行额外的训练(例如,再训练)时结束(块1310、1312)。
[0116]
图14是代表示例机器可读指令1400的流程图,所述指令当被图1和/或图2的3d模型生成器136执行时,使得3d模型生成器136基于由两个或更多个未校准的图像捕获设备(例如,图1的图像捕获设备104、106、108、110)生成的图像数据,来生成处于特定姿态中的对象的3d图形模型(例如,骨架)。
[0117]
图14的示例指令1400开始于3d模型生成器136访问由图像捕获设备104、106、108、110生成的图像数据200、202、204、206(块1401)。图4的图像同步器214从每个图像数据流200、202、204、206中提取图像,并且基于时间将来自每个图像数据流200、202、204、206中的图像同步,以生成一组(例如,第一组)同步图像(块1402)。图像同步器214可以基于例如与每个图像相关联的时间戳来同步图像。
[0118]
在图14的示例中,图2的2d姿态检测器216为该组同步图像中的对象生成2d骨架数据240(块1404)。2d姿态检测器216使用神经网络生成的关键点预测模型234(例如,如图12的流程图中所公开的)来预测图像中的每个对象的关键点或关节的位置(例如,(x,y)坐标)。在一些示例中,2d姿态检测器216生成由关键点的预测位置定义的2d图形模型或骨架600、602、604、606。2d骨架数据240、600、602、604、606被存储在图2的数据库208中。
[0119]
在图14的示例中,图2的3d姿态计算器218对由2d姿态检测器216生成的图2和图6的2d骨架数据240、600、602、604、606进行归一化(块1406)。图2的归一化2d骨架数据244和/或由其生成的图7的图形表示700、702、704、706被存储在数据库208中。
[0120]
3d姿态计算器218执行神经网络回归分析以生成对象的初始3d骨架数据(块1408)。例如,3d姿态计算器218使用归一化2d骨架数据244、700、702、704、706、由神经网络248的训练生成的关节深度偏移模型258(例如,如图13的流程图中所公开的)以及3d骨架模板,来预测图像中的对象的关键点的3d关节坐标((x,y,z)坐标)(例如,如联系图4和图5的流程图400、500所公开的)。3d姿态计算器218基于回归分析来生成图2和图8的初始3d骨架数据265、800。
[0121]
图14的示例指令考虑到了生成图像数据的未校准的图像捕获设备104、106、108、110的参数,例如设备的内在参数(例如,图像平面平移)和外在参数(例如,方向和位置)(块1410)。在图14的示例中,图像捕获设备参数分析器264估计图像捕获设备104、106、108、110的参数π={r,t,s},其中参数r和t是指坐标系变换(例如,旋转、平移),并且s是标量因子。
[0122]
3d姿态计算器218对初始3d骨架数据265、800执行后处理,以提高3d图形模型所表示的3d姿态的准确性(块1412)。3d姿态计算器218可以通过执行优化来执行后处理,以识别最优骨架关节旋转向量θ和最优图像设备捕获参数π,如上文联系公式2-6所公开的。作为
优化的结果,3d姿态计算器218生成最终3d图形模型1100,该模型被投影到与图像捕获设备104、106、108、110之一的坐标系(例如,与第一图像捕获设备104相关联的坐标系)相对应的世界坐标系上。
[0123]
图2的通信器272经由一个或多个有线或无线通信协议将后处理的3d图形模型或骨架传输到例如安装在图1的用户设备132上的(一个或多个)用户应用138(块1414)。
[0124]
可以对于由图像捕获设备生成的图像数据中的每个对象重复块1402-1412的示例指令(块1416)。在这样的示例中,在块1404,2d姿态检测器216将对象跟踪器或标识符(例如,限界框)指派给同步图像中的各个对象,以跟踪每个图像中和/或由(一个或多个)图像捕获设备104、106、108、110生成的后续图像中的各个对象。
[0125]
当没有进一步的图像数据要分析时,图14的示例指令1400结束(块1418、1420)。
[0126]
图15是被构造来执行图12的指令以实现图2的第一计算系统220的示例处理器平台1500的框图。处理器平台1500可以例如是服务器、个人计算机、工作站、自学习机器(例如,神经网络)、移动设备(例如,蜂窝电话、智能电话、诸如ipad
tm
之类的平板设备)、个人数字助理(personal digital assistant,pda)、互联网家电、或者任何其他类型的计算设备。
[0127]
图示示例的处理器平台1500包括处理器1512。图示示例的处理器1512是硬件。例如,处理器1512可由来自任何期望的家族或制造商的一个或多个集成电路、逻辑电路、微处理器、gpu、dsp或者控制器来实现。硬件处理器可以是基于半导体(例如,基于硅)的设备。在这个示例中,处理器实现了示例神经网络处理器222、示例训练器226以及示例训练控制器228。
[0128]
图示示例的处理器1512包括本地存储器1513(例如,缓存)。图示示例的处理器1512经由总线1518与包括易失性存储器1514和非易失性存储器1516的主存储器进行通信。易失性存储器1514可由同步动态随机访问存储器(synchronous dynamic random access memory,sdram)、动态随机访问存储器(dynamic random access memory,dram)、动态随机访问存储器(dynamic random access memory,)和/或任何其他类型的随机访问存储器设备来实现。非易失性存储器1516可由闪存和/或任何其他期望类型的存储器设备实现。对主存储器1514、1516的访问受存储器控制器的控制。
[0129]
图示示例的处理器平台1500还包括接口电路1520。接口电路1520可由任何类型的接口标准来实现,例如以太网接口、通用串行总线(universal serial bus,usb)、接口、近场通信(near field communication,nfc)接口、和/或pci快速接口。
[0130]
在图示示例中,一个或多个输入设备1522连接到接口电路1520。(一个或多个)输入设备1522允许用户向处理器1512中输入数据和/或命令。(一个或多个)输入设备可由例如音频传感器、麦克风、相机(静态或视频)、键盘、按钮、鼠标、触摸屏、触控板、轨迹球、isopoint和/或语音识别系统来实现。
[0131]
一个或多个输出设备1524也连接到图示示例的接口电路1520。输出设备1524可例如由显示设备(例如,发光二极管(light emitting diode,led)、有机发光二极管(organic light emitting diode,oled)、液晶显示器(liquid crystal display,lcd)、阴极射线管显示器(cathode ray tube,crt)、就地切换(in-place switching,ips)显示器、触摸屏,等等)、触觉输出设备、打印机和/或扬声器来实现。图示示例的接口电路1520从而通常包括图
light emitting diode,oled)、液晶显示器(liquid crystal display,lcd)、阴极射线管显示器(cathode ray tube,crt)、就地切换(in-place switching,ips)显示器、触摸屏,等等)、触觉输出设备、打印机和/或扬声器来实现。图示示例的接口电路1620从而通常包括图形驱动器卡、图形驱动器芯片、和/或图形驱动器处理器。
[0141]
图示示例的接口电路1620还包括通信设备,例如发送器、接收器、收发器、调制解调器、住宅网关、无线接入点、和/或网络接口,来促进经由网络1626与外部机器(例如,任何种类的计算设备)的数据交换。通信可经由例如以太网连接、数字订户线(digital subscriber line,dsl)连接、电话线连接、同轴线缆系统、卫星系统、直线对传式无线系统、蜂窝电话系统等等。
[0142]
图示示例的处理器平台1600还包括用于存储软件和/或数据的一个或多个大容量存储设备1628。这种大容量存储设备1628的示例包括软盘驱动器、硬盘驱动器、致密盘驱动器、蓝光盘驱动器、独立盘冗余阵列(redundant array of independent disks,raid)系统、以及数字多功能盘(digital versatile disk,dvd)驱动器。
[0143]
图13的机器可执行指令1632可被存储在大容量存储设备1628中、易失性存储器1614中、非易失性存储器1616中、和/或诸如cd或dvd之类的可移除非暂态计算机可读存储介质上。
[0144]
图17是被构造来执行图14的指令以实现图1和/或图2的3d模型生成器136的示例处理器平台1700的框图。处理器平台1700可例如是服务器、个人计算机、工作站、自学习机器(例如,神经网络)、移动设备(例如,蜂窝电话、智能电话、诸如ipad
tm
之类的平板设备)、个人数字助理(pda)、互联网家电、或者任何其他类型的计算设备。
[0145]
图示示例的处理器平台1700包括处理器1712。图示示例的处理器1712是硬件。例如,处理器1712可由来自任何期望的家族或制造商的一个或多个集成电路、逻辑电路、微处理器、gpu、dsp或者控制器来实现。硬件处理器可以是基于半导体(例如,基于硅)的设备。在这个示例中,该处理器实现了示例图像捕获设备控制器210、图像同步器214、示例2d姿态检测器216、示例3d姿态计算器218、示例图像捕获设备参数分析器264以及示例通信器272。
[0146]
图示示例的处理器1712包括本地存储器1713(例如,缓存)。图示示例的处理器1712经由总线1718与包括易失性存储器1714和非易失性存储器1716的主存储器进行通信。易失性存储器1714可由同步动态随机访问存储器(synchronous dynamic random access memory,sdram)、动态随机访问存储器(dynamic random access memory,dram)、动态随机访问存储器(dynamic random access memory,)和/或任何其他类型的随机访问存储器设备来实现。非易失性存储器1716可由闪存和/或任何其他期望类型的存储器设备实现。对主存储器1714、1716的访问受存储器控制器的控制。
[0147]
图示示例的处理器平台1700还包括接口电路1720。接口电路1720可由任何类型的接口标准来实现,例如以太网接口、通用串行总线(universal serial bus,usb)、接口、近场通信(near field communication,nfc)接口、和/或pci快速接口。
[0148]
在图示示例中,一个或多个输入设备1722连接到接口电路1720。(一个或多个)输入设备1722允许用户向处理器1712中输入数据和/或命令。(一个或多个)输入设备可由例如音频传感器、麦克风、相机(静态或视频)、键盘、按钮、鼠标、触摸屏、触控板、轨迹球、
isopoint和/或语音识别系统来实现。
[0149]
一个或多个输出设备1724也连接到图示示例的接口电路1720。输出设备1724可例如由显示设备(例如,发光二极管(light emitting diode,led)、有机发光二极管(organic light emitting diode,oled)、液晶显示器(liquid crystal display,lcd)、阴极射线管显示器(cathode ray tube,crt)、就地切换(in-place switching,ips)显示器、触摸屏,等等)、触觉输出设备、打印机和/或扬声器来实现。图示示例的接口电路1720从而通常包括图形驱动器卡、图形驱动器芯片、和/或图形驱动器处理器。
[0150]
图示示例的接口电路1720还包括通信设备,例如发送器、接收器、收发器、调制解调器、住宅网关、无线接入点、和/或网络接口,来促进经由网络1726与外部机器(例如,任何种类的计算设备)的数据交换。通信可经由例如以太网连接、数字订户线(digital subscriber line,dsl)连接、电话线连接、同轴线缆系统、卫星系统、直线对传式无线系统、蜂窝电话系统等等。
[0151]
图示示例的处理器平台1700还包括用于存储软件和/或数据的一个或多个大容量存储设备1728。这种大容量存储设备1728的示例包括软盘驱动器、硬盘驱动器、致密盘驱动器、蓝光盘驱动器、独立盘冗余阵列(redundant array of independent disks,raid)系统、以及数字多功能盘(digital versatile disk,dvd)驱动器。
[0152]
图14的机器可执行指令1732可被存储在大容量存储设备1728中、易失性存储器1714中、非易失性存储器1716中、和/或诸如cd或dvd之类的可移除非暂态计算机可读存储介质上。
[0153]
在图18中图示了图示出用于向第三方分发诸如图15的示例计算机可读指令1532、图16的示例计算机可读指令1632和/或图17的示例计算机可读指令1732之类的软件的示例软件分发平台1805的框图。示例软件分发平台1805可由能够存储软件并且将其传输到其他计算设备的任何计算机服务器、数据设施、云服务等等实现。第三方可以是拥有和/或操作该软件分发平台的实体的客户。例如,拥有和/或操作软件分发平台的实体可以是软件(例如图15、图16和/或图17的示例计算机可读指令1532、1632和/或1732)的开发者、销售者和/或许可人。第三方可以是购买和/或许可该软件以供使用和/或再销售和/或分许可的消费者、用户、零售商、oem,等等。在图示示例中,软件分发平台1805包括一个或多个服务器和一个或多个存储设备。存储设备存储各个计算机可读指令1532、1632、1732,这些指令可分别对应于如上所述的图12的示例计算机可读指令1200、图13的示例计算机可读指令1300或者图14的示例计算机可读指令1400。示例软件分发平台1805的一个或多个服务器与网络1810通信,该网络可对应于互联网和/或上述的示例网络1726中的任何一者中的任何一个或多个。在一些示例中,作为商业交易的一部分,一个或多个服务器响应将软件传输给请求方的请求。对软件的交付、销售和/或许可的支付可由软件分发平台的一个或多个服务器处理和/或经由第三方支付实体来处理。这些服务器使得购买者和/或许可人能够从软件分发平台1805下载计算机可读指令1732。例如,可与图14的示例计算机可读指令1400相对应的软件可被下载到示例处理器平台1700,该平台要执行计算机可读指令1732以实现图1和/或图2的示例3d模型生成器136。在一些示例中,软件分发平台1805的一个或多个服务器周期性地提供、传输和/或强制更新软件(例如,图17的示例计算机可读指令1732),以确保改进、补丁、更新等等被分发并且在终端用户设备处被应用于软件。
[0154]
从上述内容将会明白,已公开了示例方法、设备和制品,这些方法、设备和制品提供了来自由图像捕获设备生成的图像数据的对象的3d姿态估计,而无需执行图像捕获设备的校准。本文公开的示例执行神经网络模型以识别图像数据中的2d关键点或关节。本文公开的示例使用神经网络回归分析预测关节的3d坐标,以生成处于某个姿态中的对象的(一个或多个)3d图形模型。(一个或多个)3d图形模型经由优化被完善,该优化考虑到了图像捕获设备的参数,以生成准确地表示由多视角图像捕获设备捕获的对象的姿态的(一个或多个)3d图形模型。本文公开的示例可以在诸如体育赛事之类的其中图像捕获设备被以变化的变焦水平和/或变化的设备位置进行操作的环境中实现,以识别动态条件下对象的姿态。
[0155]
本文公开了实现三维姿态估计的示例方法、装置、系统和制品。进一步示例及其组合包括以下的:
[0156]
示例1包括一种装置,该装置包括图像同步器,用于基于时间同步由第一图像捕获设备生成的第一图像和由第二图像捕获设备生成的第二图像,所述第一图像包括对象并且所述第二图像包括所述对象;二维姿态检测器,用于:基于所述第一图像并且通过执行第一神经网络模型来预测所述对象的关键点的第一位置以生成第一二维数据;并且基于所述第二图像并且通过执行所述第一神经网络模型来预测所述对象的关键点的第二位置以生成第二二维数据;以及三维姿态计算器,用于基于所述第一二维数据和所述第二二维数据并且通过执行第二神经网络模型来生成表示所述第一图像和所述第二图像中的所述对象的姿态的三维图形模型。
[0157]
示例2包括如示例1中限定的装置,还包括图像捕获设备参数分析器,所述图像捕获设备参数分析器用于预测所述第一图像捕获设备的参数,所述三维姿态计算器用于基于所述第一图像捕获设备的参数来生成所述三维模型。
[0158]
示例3包括如示例2中限定的装置,其中,所述参数与所述第一图像捕获设备相对于坐标系的旋转或平移相关联。
[0159]
示例4包括如示例1或2中限定的装置,其中,所述第二神经网络模型实现回归函数。
[0160]
示例5包括如示例4中限定的装置,其中,所述三维姿态计算器用于基于所述回归函数来预测所述对象的第一关节的三维坐标。
[0161]
示例6包括如示例1中限定的装置,其中,所述三维姿态计算器用于执行优化来生成所述三维模型。
[0162]
示例7包括如示例1、2或5中限定的装置,其中,所述第一图像捕获设备或所述第二图像捕获设备中的至少一者是未校准的图像捕获设备。
[0163]
示例8包括如示例1中限定的装置,其中,所述三维姿态计算器用于归一化所述第一二维数据以生成第一归一化二维数据并且归一化所述第二二维数据以生成第二归一化二维数据,所述三维姿态计算器用于基于所述第一归一化二维数据和所述第二归一化二维数据来生成所述三维模型。
[0164]
示例9包括如示例1中限定的装置,其中,所述三维模型被投影到由所述第一图像捕获设备或所述第二图像捕获设备之一的坐标系定义的世界坐标系上。
[0165]
示例10包括至少一个非暂态计算机可读介质,该介质包括指令,所述指令当被执行时使得至少一个处理器执行至少以下操作:预测由第一图像捕获设备生成的第一图像中
的对象的各个关节的二维坐标以生成第一二维姿态数据;预测由第二图像捕获设备生成的第二图像中的所述对象的各个关节的二维坐标以生成第二二维姿态数据;预测所述第一图像捕获设备的参数;基于所述第一二维姿态数据和所述第二二维姿态数据来生成处于某个姿态中的所述对象的第一三维模型;执行优化算法来基于所述第一三维模型和所述第一图像捕获设备的参数生成第二三维模型;并且输出所述第二三维模型,以供通过用户设备进行展示。
[0166]
示例11包括如示例10中限定的至少一个非暂态计算机可读介质,其中,所述指令当被执行时使得所述至少一个处理器执行以下操作:通过执行第一神经网络模型,来预测所述第一图像中的所述对象的各个关节的二维坐标。
[0167]
示例12包括如示例10或11中限定的至少一个非暂态计算机可读介质,其中,所述指令当被执行时使得所述至少一个处理器执行以下操作:通过执行第二神经网络模型,来生成所述第一三维模型。
[0168]
示例13包括如示例12中限定的至少一个非暂态计算机可读介质,其中,所述指令当被执行时使得所述至少一个处理器执行以下操作:响应于所述第二神经网络模型的执行而预测所述对象的各个关节的三维坐标。
[0169]
示例14包括如示例10中限定的至少一个非暂态计算机可读介质,其中,所述第一图像捕获设备是相机,并且所述参数是所述相机的外在参数。
[0170]
示例15包括如示例10、11或14中限定的至少一个非暂态计算机可读介质,其中,所述指令当被执行时使得所述至少一个处理器执行以下操作::从由所述第一图像捕获设备生成的第一图像数据中提取所述第一图像;从由所述第二图像捕获设备生成的第二图像数据中提取所述第二图像;并且基于时间来同步所述第一图像和所述第二图像。
[0171]
示例16包括如示例15中限定的至少一个非暂态计算机可读介质,其中,所述第一图像是第一视频帧,并且所述第二图像是第二视频帧。
[0172]
示例17包括如示例15中限定的至少一个非暂态计算机可读介质,其中,所述对象是第一对象,并且所述指令当被执行时使得所述至少一个处理器执行以下操作:针对所述第一图像和所述第二图像中的第二对象生成第三三维模型。
[0173]
示例18包括一种装置,包括:用于基于由第一图像捕获设备生成的第一图像数据和由第二图像捕获设备生成的第二图像数据来预测对象的二维姿态的构件;用于预测所述第一图像捕获设备的参数的构件;以及用于基于预测的二维姿态和所述第一图像捕获设备的预测的参数来生成所述对象的三维图形模型的构件。
[0174]
示例19包括如示例18中限定的装置,其中,所述用于预测所述二维姿态的构件通过执行第一神经网络模型来预测所述对象的二维姿态。
[0175]
示例20包括如示例19中限定的装置,其中,所述用于生成的构件用于通过执行第二神经网络模型来生成所述三维图形模型。
[0176]
示例21包括如示例20中限定的装置,其中,所述第二神经网络实现回归函数。
[0177]
示例22包括如示例18中限定的装置,其中,所述用于生成的构件确定关节旋转向量并且基于所述关节旋转向量来生成所述三维图形模型。
[0178]
示例23包括至少一个非暂态计算机可读介质,该介质包括指令,所述指令当被执行时使得至少一个处理器至少执行以下操作:生成第一神经网络模型,以分别预测由第一
图像捕获设备生成的第一图像中和由第二图像捕获设备生成的第二图像中的对象的二维姿态;并且生成第二神经网络模型,以预测所述对象的三维姿态,预测的三维姿态要被用于生成处于所述姿态中的所述对象的三维图形模型。
[0179]
示例24包括如示例23中限定的至少一个非暂态计算机可读介质,其中,所述第二神经网络模型用于实现回归函数。
[0180]
示例25包括如示例23或24中限定的至少一个非暂态计算机可读介质,其中,所述第二神经网络模型用于定义所述对象的第一关节和所述对象的参考关节之间的偏移。
[0181]
虽然本文公开了某些示例方法、装置和制品,但本专利的覆盖范围不限于此。相反,本专利覆盖了公平地落在本专利的权利要求的范围内的所有方法、装置和制品。
[0182]
特此通过引用将所附权利要求并入到这个“具体实施方式”部分中,其中每个权利要求独立作为本公开的一个单独实施例。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献