用于人体跟踪的代表训练数据的制作方法

文档序号:6356703阅读:231来源:国知局
专利名称:用于人体跟踪的代表训练数据的制作方法
技术领域
本发明涉及运动捕捉系统,尤其涉及运动捕捉系统中的人体跟踪。
背景技术
跟踪系统获得关于人或其他对象在物理空间中的位置和移动的数据,并且可使用该数据作为计算系统中的某一应用的输入。某些系统确定身体的骨架模型,包括该骨架的关节,并且因此可被认为是身体关节跟踪系统。可能有许多应用,如出于军事、娱乐、体育和医疗目的。例如,人的运动可用于创建动画人物或化身。包括使用可见和不可见(例如,红外)光的系统在内的光学系统使用相机来检测视野中的人的存在。然而,需要通过提供合成图像形式的训练数据来方便身体关节跟踪系统的开发。

发明内容
提供了用于生成用于身体关节跟踪系统中的人体跟踪的代表训练数据的处理器实现的方法、系统和有形计算机可读存储。在身体关节跟踪系统的开发中,使用深度相机来获得在该相机的视野中移动的人的深度图像。使用各种处理技术来检测该人的身体,并识别该人执行的移动或姿态。该过程可被认为是监督机器学习算法。该过程是监督的是因为人的位置和姿态都是已知的。目标是使得身体关节跟踪系统了解如何识别该人的位置和姿态。可对该学习算法作出各种调整,例如,过滤掉噪声、识别不同的身体类型、以及将该人的身体与可能存在于视野中的其他物体(如家具、墙等)进行区分。然而,使用真实世界环境中的活人来训练该学习算法是低效的,且无法准确地表示身体关节跟踪系统在其被部署为数千或甚至数百万用户家庭中的商用产品时将经历的各种场景。为了优化对学习算法的训练,可生成合成图像来作为用于真实的人的图像的代替或代表。该合成图像可用于扩充或替换真实的人的图像。此外,该合成图像可以用在计算上高效的方式来提供,同时是真实的且提供高度可变性来模拟身体关节跟踪系统在被部署时将经历的真实世界状况。在一个实施例中,提供了一种用于生成用于人体跟踪的代表训练数据的处理器实现的方法。该方法包括多个处理器实现的步骤。该方法包括访问至少一个运动捕捉序列, 该至少一个运动捕捉序列标识了其中行动者执行移动的时间段期间该行动者的身体的姿态。例如,该序列可在运动捕捉工作室中通过在穿着带有标记的运动捕捉套装的行动者执行一系列规定移动时对该行动者进行成像来获得。该方法还包括基于至少一个运动捕捉序列执行对多个不同身体类型的重新定标以及不相似姿态选择,以便提供多个重新定标的不相似姿态。该方法还包括根据用于相应身体类型的3-D身体模型来渲染每一不相似姿态, 以提供该不相似姿态的相应深度图像,并且提供标识该不相似姿态的身体部位的相应分类图像。使用多个不同的3-D身体模型,对每一身体类型使用一个。此外,相应深度图像和相应分类图像构成了可由机器学习算法用于人体跟踪的像素数据。
4
在一种方法中,重新定标是在不相似姿态选择之前执行的,并且在另一方法中,重新定标是在不相似姿态选择之后执行的。任选地,向深度图像添加噪声来提供更真实的深度图像,该更真实的深度图像与真实世界环境中的深度相机将看见的深度图像相似。噪声可包括可因人有头发而引起的噪声、深度量化噪声、随机噪声、人的身体边缘所引起的噪声、因检测极薄结构而引起的噪声、以及因照相机几何结构引起的噪声。提供本概要以用简化形式介绍在下面的说明书中进一步描述的精选概念。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。


在附图中,标号相同的元素彼此对应。图1描绘了身体关节跟踪系统的示例实施例。图2描绘了图1的身体关节跟踪系统的示例框图。图3描绘了可以在图1的身体关节跟踪系统中使用的计算环境的示例框图。图4描绘了可以在图1的身体关节跟踪系统中,或在用于重新定标、不相似姿态选择和渲染的计算机图形系统中使用的计算环境的另一示例框图。图5描绘了用于提供用于人体跟踪的代表训练数据的方法。图6提供了获得运动捕捉数据(图5的步骤500)的进一步细节。图7a提供了执行重新定标和不相似姿态检测(图5的步骤50 的进一步细节, 其中首先执行重新定标。图7b描绘了用于不相似姿态选择的算法。图7c提供了执行重新定标和不相似姿态检测(图5的步骤50 的进一步细节, 其中首先执行不相似姿态检测。图8提供了执行渲染来提供深度图像和分类图像(图5的步骤504)的进一步细节。图9是向深度图像添加噪声(图5的步骤506)的进一步细节。图IOa描绘了图5的过程的替换视图,其中重新定标在不相似姿态检测之前执行。图IOb描绘了图5的过程的替换视图,其中重新定标在不相似姿态检测之后执行。图Ila描绘了运动捕捉工作室中具有标记的行动者的第一姿态(图5的步骤500) 的示例视图。图lib描绘了运动捕捉工作室中具有标记的行动者的第二姿态(图5的步骤500) 的示例视图。图12描绘了从图Ila的行动者的姿态中得到的骨架中的关节位置的示例。图13a描绘了第一身体类型的3-D身体的深度图像的渲染,该3-D身体具有图12 的对应骨架的覆盖物以及3-D场景元素。图13b描绘了第二身体类型的3-D身体1360的深度图像的渲染,该3-D身体具有对应骨架的覆盖物。图14描绘了对应于图13a的3-D身体的分类图像。图15a描绘了一示例深度图像。
图15b描绘了对应于图15a的深度图像的示例分类图像。
具体实施例方式提供了用于生成供身体关节跟踪系统的机器学习算法使用的合成图像的技术。从运动捕捉工作室获得有限数量的运动捕捉序列。该运动捕捉序列包括行动者执行的姿态或移动。这些序列被充分利用来通过将各序列重新定标到多个不同身体类型来提供程度提高的可变性。通过选择不相似姿态,使得冗余姿态或接近冗余的姿态不被提供给机器学习算法,来达到效率。此外,通过添加预期在身体关节跟踪系统的真实世界部署中看见的各种类型的噪声来达到较大的真实性。也可引入其他随机变化。例如,可向重新定标添加一定程度的随机性。提供给该学习算法的数据包括深度和分类图像的已配准对形式的已标记训练数据,以及姿态数据。此处提供的技术避免向训练算法提供压倒性量的数据,同时仍覆盖了大范围的姿态和身体类型,包括例如较高和较低身体的独立移动。可提供能处理大范围姿态和身体类型的单个系统。各特征包括基于姿态之间的距离的样本选择、通过组合部分骨架来生成新样本、 通过插入3-D模型来生成合成背景、以及通过扰动深度图来生成合成的含噪声图像。图1描绘了其中个人8与应用交互的身体关节跟踪系统10的示例实施例。这示出了身体关节跟踪系统诸如在用户家中的真实世界部署。身体关节跟踪系统10包括显示器196、深度相机系统20、以及计算环境或装置12。深度相机系统20可包括图像相机组件 22,其具有红外(IR)光发射器M、红外相机沈和红-绿-蓝(RGB)相机28。也称为个人或玩家的用户8站在深度相机的视野6中。线2和4表示视野6的边界。在该示例中,深度相机系统20和计算环境12提供了其中显示器196上的化身197跟踪用户8的移动的应用。例如,当用户举起手臂时,化身可举起手臂。化身197在3-D虚拟世界中站在路198上。 可定义笛卡尔世界坐标系,其包括沿着深度相机系统20的焦距(例如水平)延伸的ζ轴、 垂直延伸的y轴、以及横向且水平延伸的χ轴。注意,附图的透视被修改成简化表示,显示器196在y轴方向上垂直延伸,ζ轴垂直于y轴和χ轴且与用户8所站立的地平面平行地从深度相机系统延伸出来。一般而言,身体关节跟踪系统10用于识别、分析和/或跟踪人类目标。计算环境 12可包括计算机、游戏系统或控制台等,以及执行应用的硬件组件和/或软件组件。深度相机系统20可以包括相机,相机用于在视觉上监视诸如用户8等的一个或多个人,从而可以捕捉、分析并跟踪用户所执行的姿势和/或移动,来执行应用中的一个或多个控制或动作,如使化身或屏幕上人物活动起来或选择用户界面(UI)中的一菜单项。身体关节跟踪系统10可以连接到诸如显示器196等可向用户提供视觉和音频输出的视听设备,如电视机、监视器、高清电视机(HDTV)等,或甚至是墙或其他表面上的投影。音频输出也可经由单独的设备来提供。为驱动显示器,计算环境12可包括提供与应用相关联的视听信号的诸如图形卡等视频适配器,和/或诸如声卡等音频适配器。显示器196 可经由例如,S-视频电缆、同轴电缆、HDMI电缆、DVI电缆、VGA电缆等连接到计算环境12。用户8可使用深度相机系统20来跟踪,使得用户的姿势和/或移动被捕捉并用于使化身或屏幕上人物活动起来,和/或被解释为对计算机环境12所执行的应用的输入控制。用户8的某些移动可被解释为可对应于除控制化身之外的动作的控制。例如,在一实施例中,玩家可使用移动来结束、暂停或保存游戏、选择级别、查看高分、与朋友交流等。玩家可使用移动来从主用户界面选择游戏或其他应用,或以其他方式导航选项菜单。由此,用户8的全范围运动可以用任何合适的方式来获得、使用并分析以与应用进行交互。个人可在与应用交互时抓握诸如道具等物体。在此类实施例中,个人和物体的移动可用于控制应用。例如,可以跟踪并利用玩家手持球拍的运动来控制模拟网球游戏的应用中的屏幕上球拍。在另一示例实施例中,可以跟踪并利用玩家手持诸如塑料剑等玩具武器的运动来控制提供海盗船的应用的虚拟世界中对应的武器。身体关节跟踪系统10还可用于将目标移动解释为游戏以及出于娱乐和休闲目的的其他应用范围之外的操作系统和/或应用控制。例如,操作系统和/或应用的基本上任何可控方面可由用户8的移动来控制。图2描绘了图Ia的身体关节跟踪系统10的示例框图。深度相机系统20可被配置成经由任何合适的技术,包括例如飞行时间、结构化光、立体图像等,捕捉带有包括深度图像的深度信息的视频,该深度图像可包括深度值。深度相机系统20可将深度信息组织为 "Z层”,即可与从深度相机沿其视线延伸的Z轴垂直的层。深度相机系统20可包括图像相机组件22,如捕捉物理空间中的场景的深度图像的深度相机。深度图像可包括所捕捉的场景的二维O-D)像素区域,其中该2-D像素区域中的每一像素具有代表距离图像相机组件22的线性距离的相关联的深度值。图像相机组件22可包括可用于捕捉场景的深度图像的红外(IR)光发射器对、红外相机26、以及红-绿-蓝(RGB)相机28。3-D相机由红外发射器M和红外相机沈的组合来形成。例如,在飞行时间分析中,顶光发射器M将红外光发射到物理表面上,并且红外相机沈检测来自物理空间中的一个或多个目标和物体的表面的反向散射光。在某些实施例中,可以使用脉冲式红外光,从而可以测量出射光脉冲与相应的入射光脉冲之间的时间并将其用于确定从深度相机系统20到物理空间中的目标或对象上的特定位置的物理距离。可将传出光波的相位与传入光波的相位进行比较来确定相移。然后可以使用相移来确定从深度相机系统到对象或目标上的特定位置的物理距离。飞行时间分析也可用于通过经由包括例如快门式光脉冲成像等各种技术来分析反射光束随时间的强度,来间接地确定从深度相机系统20到目标或对象上的特定位置的物理距离。在另一示例实施例中,深度相机系统20可使用结构化光来捕捉深度信息。在这一分析中,图案化光(即,被显示为诸如网格图案或条纹图案等已知图案的光)可经由例如顶光发射器M被投影到场景上。在撞击到场景中的一个或多个目标或对象的表面时,作为响应,图案可变形。图案的这种变形可由例如红外相机沈和/或RGB相机观来捕捉,然后可被分析以确定从深度相机系统到目标或对象上的特定位置的物理距离。深度相机系统20可包括两个或更多物理上分开的相机,这些相机可从不同角度查看场景以获得视觉立体数据,该视觉立体数据可被解析以生成深度信息。深度相机系统20还可包括话筒30,话筒30包括例如接收声波并将其转换成电信号的换能器或传感器。另外,话筒30可用于接收由个人提供的诸如声音等音频信号,来控
7制由计算环境12运行的应用。音频信号可包括诸如说出的单词、口哨、叫声和其他话语等个人的口声,以及诸如拍手或跺脚等非口声。深度相机系统20可包括与图像相机组件22进行通信的处理器32。处理器32可包括可执行指令的标准化处理器、专用处理器、微处理器等,这些指令包括例如用于接收深度图像的指令;用于基于深度图像来生成三维像素网格的指令;用于移除包括在三维像素网格中的背景以便隔离与人类目标相关联的一个或多个三维像素的指令;用于确定隔离的人类目标的一个或多个骨端的位置或定位的指令;用于基于一个或多个骨端的位置或定位来调整模型的指令;或任何其他合适的指令,这些将在下文中更详细描述。深度相机系统20还可包括存储器组件34,存储器组件34可存储可由处理器32执行的指令、以及存储3-D相机或RGB相机所捕捉的图像或图像帧、或任何其他合适的信息、 图像等等。根据一示例实施例,存储器组件34可包括随机存取存储器(RAM)、只读存储器 (ROM)、高速缓存、闪存、硬盘、或任何其他合适的有形计算机可读存储组件。存储器组件34 可以是经由总线21与图像捕捉组件22和处理器32进行通信的单独组件。根据另一实施方式,存储器组件34可被集成到处理器32和/或图像捕捉组件22中。深度相机系统20可以经由通信链路36与计算环境12进行通信。通信链路36可以是有线和/或无线连接。根据一实施例,计算环境12可经由通信链路36向深度相机系统20提供时钟信号,该信号指示何时从位于深度相机系统20的视野中的物理空间捕捉图像数据。另外,深度相机系统20可经由通信链路36向计算环境12提供深度信息和由例如 3-D相机沈和/或RGB相机观捕捉的图像,和/或可由深度相机系统20生成的骨架模型。 计算环境12然后可使用该模型、深度信息和捕捉的图像来控制应用。例如,如图2所示,计算环境12可包括诸如姿势过滤器集合等姿势库190,每一姿势过滤器具有关于可由骨架模型(在用户移动时)执行的姿势的信息。例如,可为各种手姿势提供姿势过滤器,如手的挥击或投掷。通过将检测到的运动与每一过滤器进行比较,可标识个人执行的指定姿势或移动。也可确定执行移动的范围。可将由深度相机系统20捕捉的骨架模型形式的数据以及与其相关联的移动与姿势库190中的姿势过滤器进行比较来标识用户(如骨架模型所表示的)何时执行了一个或多个特定移动。那些移动可与应用的各种控制命令相关联。计算环境还可包括用于执行存储在存储器194中的指令以向显示设备196提供音频-视频输出信号并实现如此处所描述的其他功能的处理器192。图3描绘了可以在图1的身体关节跟踪系统中使用的计算环境的示例框图。计算环境可用于解释一个或多个姿势或其他移动并作为响应来更新显示器上的视觉空间。上面描述的诸如计算环境12等计算环境可以是诸如游戏控制台等多媒体控制台100。多媒体控制台100包括具有一级高速缓存102、二级高速缓存104和闪存ROM(只读存储器)106的中央处理单元(CPU) 101。一级高速缓存102和二级高速缓存104临时存储数据并因此减少存储器访问周期数,由此改进处理速度和吞吐量。CPU 101可以设置成具有一个以上的核,以及由此的附加的一级和二级高速缓存102和104。诸如闪存ROM等存储器106可存储在多媒体控制台100通电时在引导过程的初始阶段期间加载的可执行代码。图形处理单元(GPU) 108和视频编码器/视频编解码器(编码器/解码器)114形成用于高速、高分辨率图形处理的视频处理流水线。数据经由总线从图形处理单元108输送到视频编码器/视频编解码器114。视频处理流水线将数据输出到A/V (音频/视频)端口 140以传输到电视机或其他显示器。存储器控制器110连接到GPU 108以便于处理器访问各种类型的存储器112,诸如RAM(随机存取存储器)。多媒体控制台100包括较佳地在模块118上实现的I/O控制器120、系统管理控制器122、音频处理单元123、网络接口 124、第一 USB主控制器126、第二 USB控制器1 和前面板I/O子部件130。USB控制器126和128用作外围控制器142 (1)-142 (2)、无线适配器 148、和外置存储器设备146 (例如闪存、外置⑶/DVD ROM驱动器、可移动介质等)的主机。 网络接口(NW IF) IM和/或无线适配器148提供对网络(例如,因特网、家庭网络等)的访问并且可以是包括以太网卡、调制解调器、蓝牙模块、电缆调制解调器等的各种不同的有线或无线适配器组件中任何一种。提供系统存储器143来存储在引导进程期间加载的应用数据。提供媒体驱动器 144且其可包括DVD/CD驱动器、硬盘驱动器、或其它可移动媒体驱动器。媒体驱动器144对于多媒体控制台100可以内置或外置的。应用数据可经由媒体驱动器144访问,以由多媒体控制台100执行、回放等。媒体驱动器144经由诸如串行ATA总线或其它高速连接等总线连接到I/O控制器120。系统管理控制器122提供涉及确保多媒体控制台100的可用性的各种服务功能。 音频处理单元123和音频编解码器132形成具有高保真度和立体声处理的对应的音频处理流水线。音频数据经由通信链路在音频处理单元123与音频编解码器132之间传输。音频处理流水线将数据输出到A/V端口 140以供外置音频播放器或具有音频能力的设备再现。前面板I/O子部件130支持暴露在多媒体控制台100的外表面上的电源按钮150 和弹出按钮152以及任何LED(发光二极管)或其它指示器的功能。系统供电模块136向多媒体控制台100的组件供电。风扇138冷却多媒体控制台100内的电路。CPU 101、GPU 108、存储器控制器110、和多媒体控制台100内的各个其它组件经由一条或多条总线互连,包括串行和并行总线、存储器总线、外围总线、和使用各种总线架构中任一种的处理器或局部总线。当多媒体控制台100通电时,应用数据可从系统存储器143加载到存储器112和/ 或高速缓存102、104中并在CPU 101上执行。应用可呈现在导航到多媒体控制台100上可用的不同媒体类型时提供一致的用户体验的图形用户界面。在操作中,媒体驱动器144中包含的应用和/或其它媒体可从媒体驱动器144启动或播放,以向多媒体控制台100提供附加功能。多媒体控制台100可通过将该系统简单地连接到电视机或其它显示器而作为独立系统来操作。在该独立模式中,多媒体控制台100允许一个或多个用户与该系统交互、看电影、或听音乐。然而,随着通过网络接口 1 或无线适配器148可用的宽带连接的集成, 多媒体控制台100还可作为较大网络社区中的参与者来操作。当多媒体控制台100通电时,保留指定量的硬件资源以供多媒体控制台操作系统作系统使用。这些资源可以包括存储器保留(例如,16MB)、CPU和GPU周期(例如,5%)、 网络带宽(例如,SlAs)等。因为这些资源是在系统引导时保留的,所以所保留的资源对应用而言是不存在的。
具体地,存储器保留较佳地足够大,以包含启动内核、并发系统应用和驱动程序。 CPU保留较佳地为恒定,使得若所保留的CPU用量不被系统应用使用,则空闲线程将消耗任何未使用的周期。对于GPU保留,通过使用GPU中断来显示由系统应用生成的轻量消息(例如,弹出窗口),以调度代码来将弹出窗口呈现为覆盖图。覆盖图所需的存储器量取决于覆盖区域大小,并且覆盖图较佳地与屏幕分辨率成比例缩放。在并发系统应用使用完整用户界面的情况下,优选使用独立于应用分辨率的分辨率。定标器可用于设置该分辨率,从而无需改变频率,也就不会引起TV重新同步。在多媒体控制台100引导且系统资源被保留之后,就执行并发系统应用来提供系统功能。系统功能被封装在一组在上述所保留的系统资源中执行的系统应用中。操作系统内核标识是系统应用线程而非游戏应用线程的线程。系统应用优选地被调度为在预定时间并以预定时间间隔在CPU 101上运行,以便为应用提供一致的系统资源视图。进行调度是为了把由在控制台上运行的游戏应用所引起的高速缓存分裂最小化。当并发系统应用需要音频时,则由于时间敏感性而异步调度音频处理给游戏应用。多媒体控制台应用管理器(如下所述)在系统应用活动时控制游戏应用的音频水平 (例如,静音、衰减)。输入设备(例如,控制器142(1)和142( )由游戏应用和系统应用共享。输入设备不是所保留的资源,但却在系统应用和游戏应用之间切换以使其各自具有设备的焦点。 应用管理器较佳地控制输入流的切换,而无需知晓游戏应用的知识,并且驱动程序维持有关焦点切换的状态信息。控制台100可从包括相机沈和观的图2的深度相机系统20接收附加输入。图4描绘了可以在图1的身体关节跟踪系统中,或在用于重新定标、不相似姿态选择和渲染的计算机图形系统中使用的计算环境的另一示例框图。在身体关节跟踪系统中,该计算环境可用于解释一个或多个姿势或其他移动并作为响应更新显示器上的视觉空间。计算环境220包括计算机M1,计算机241通常包括各种有形计算机可读存储介质。这可以是能由计算机241访问的任何可用介质,而且包含易失性和非易失性介质、可移动和不可移动介质。系统存储器222包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM) 223和随机存取存储器(RAM06O。基本输入/输出系统224 (BIOS)包括如在启动时帮助在计算机Ml内的元件之间传输信息的基本例程,它通常储存在ROM 223中。RAM 260通常包含处理单元259可以立即访问和/或目前正在操作的数据和/或程序模块。图形接口 231与GPU 2 进行通信。作为示例而非局限,图4描绘了操作系统225、应用程序226、其它程序模块227和程序数据228。计算机241还可包括其他可移动/不可移动、易失性/非易失性计算机存储介质, 如从不可移动、非易失性磁介质读取或对其写入的硬盘驱动器238,从可移动、非易失性磁盘2M读取或对其写入的磁盘驱动器239,以及从诸如CDROM或其他光介质等可移动、非易失性光盘253读取或对其写入的光盘驱动器M0。可以在示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性有形计算机可读存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器238通常由诸如接口 234等不可移动存储器接口连接至系统总线221,磁盘驱动器239和光盘驱动器240通常由诸如接口 235等可移动存储器接口连接至系统总线221。以上讨论并在图4中描绘的驱动器及其相关联的计算机存储介质为计算机241提供了对计算机可读指令、数据结构、程序模块和其他数据的存储。例如,硬盘驱动器238被描绘为存储操作系统258、应用程序257、其它程序模块256和程序数据255。注意,这些组件可以与操作系统225、应用程序226、其他程序模块227和程序数据2 相同,也可以与它们不同。操作系统258、应用程序257、其他程序模块256和程序数据255在这里被标注了不同的标号是为了说明至少它们是不同的副本。用户可以通过输入设备,诸如键盘251和定点设备252 (通常被称为鼠标、跟踪球或触摸垫),向计算机241输入命令和信息。其他输入设备(未示出)可以包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等等。这些和其他输入设备通常由耦合至系统总线的用户输入接口 236连接至处理单元259,但也可以由其他接口和总线结构,诸如并行端口、游戏端口或通用串行总线(USB),来连接。包括相机沈和观的图2的深度相机系统20可为控制台100定义附加输入设备。监视器242或其他类型的显示器也经由接口,诸如视频接口 232连接至系统总线221。除监视器以外,计算机也可以包括其它外围输出设备,诸如扬声器244和打印机对3,它们可以通过输出外围接口 233连接。计算机241可使用至一个或多个远程计算机,诸如远程计算机M6的逻辑连接在网络化环境中操作。远程计算机246可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见的网络节点,且通常包括许多或所有以上相对于计算机241描述的元件, 但是在图4中仅示出了存储器存储设备M7。逻辑连接包括局域网(LAN) 245和广域网 (WAN) M9,但也可以包括其它网络。这样的联网环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。当在LAN联网环境中使用时,计算机241通过网络接口或适配器237连接至LAN 2450当在WAN联网环境中使用时,计算机241通常包括调制解调器250或用于通过诸如因特网等WAN 249建立通信的其他装置。调制解调器250可以是内置或外置的,它可以经由用户输入接口 236或其他适当的机制连接至系统总线221。在网络化环境中,相对于计算机 241所描述的程序模块或其部分可被存储在远程存储器存储设备中。作为示例而非限制, 图4示出了远程应用程序248驻留在存储器设备247上。可以理解,所示的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其他手段。该计算环境可包括其上包含有计算机可读软件的有形计算机可读存储,该计算机可读软件用于对至少一个处理器进行编程来执行此处描述的用于生成用于人体跟踪的代表训练数据的方法。该有形计算机可读存储可包括例如,组件222、234、235、230、253、254 中的一个或多个。此外,该计算环境的一个或多个处理器可以提供用于生成用于人体跟踪的代表训练数据的处理器实现的方法,包括此处所描述的处理器实现的步骤。处理器可包括例如组件2 和259中的一个或多个。图5描绘了用于提供用于人体跟踪的代表训练数据的方法。步骤500包括获得运动捕捉数据。例如,这可从运动捕捉工作室中的行动者获得。在运动捕捉工作室中,对一个或多个行动者的移动进行每秒多次,例如每秒30次的采样。每一样本对应于一数据帧。通常,行动者穿着具有将光反射到相机的标记的特殊套装。使用多个高分辨率相机来从工作室中的不同位置对行动者成像,可通过三角测量来检测每一标记的确切位置。参见图Ila
11和lib来获得更多细节。步骤500的输出是一组运动捕捉序列。每一这样的序列描述了执行移动的行动者的身体上的一组3-D点的运动。所表示的各具体点对应于该行动者身体上的标记的定位,并且可以在序列之间有所不同。运动捕捉序列包括一组运动捕捉帧,其中每一帧对应于某一时刻的点的配置。步骤500在以下结合图6来进一步讨论。步骤502包括执行重新定标和不相似姿态检测。在一种方法中,重新定标是在不相似姿态选择之前执行的,而在另一种方法中,重新定标是在不相似姿态选择之后执行的。 重新定标将从运动捕捉工作室中的行动者获得的标记位置转换成不同身体类型的骨架模型。给定身体类型的骨架模型可以通过基于标记的位置确定骨架模型中的关节的位置来获得。例如,当一个或多个标记被定位在行动者上相对于肩的已知位置时,可从该标记位置确定表示肩的关节的位置。骨架模型或骨架是通过肢或骨连接的身体的3-D关节或其它点的虚拟构造,使得骨架的构造可以通过列出3-D点的位置,或者另选地通过枚举将各条骨相关到骨架中的另一条骨的关节角度来表示。该相对定位可将每一条骨相关到骨架的树结构分解中的其父骨。另外,可以用关节角度来指定形状参数,例如指定骨长度。在对身体关节跟踪系统的真实世界使用中,所成像的用户将具有许多不同的身体类型,包括基于高度、宽度、体重、姿态、年龄、性别、发型和发量、服饰等的变化。由此,仅使用行动者的身体类型或某一其它标准身体类型来提供用于运动捕捉的学习算法的训练数据将不能提供足够的可变性。重新定标到不同的身体类型提供了增加的可变性而不需要从运动捕捉工作室中的许多不同身体类型的不同行动者获得运动捕捉数据,从而节省了成本和时间。运动捕捉数据的重新定标可涉及将来自运动捕捉序列的3-D数据表示为身体类型的预定义骨架的参数,特别是在转换运动捕捉序列的每一帧的3-D标记位置的意义上, 将该3-D数据表示为一系列关节角度(每一帧有一组关节角度)和形状参数(每一序列有一组形状参数)。从同一行动者捕捉的序列一般将共享形状参数。运动捕捉序列的每一帧的3-D标记位置可作为诸如(x,y,z)坐标等一系列坐标来提供。类似地,骨架的关节位置可作为另一系列(x,y,z)坐标来提供。可执行到不同骨架和身体类型的重新定标。作为一示例,可使用10-15个不同的身体类型。重新定标还可引入身体类型的进一步变化,如略微变化的骨或肢长度,以便增加可变性程度。一般而言,目标是在基于一定范围的真实人类可变性的边界内提供身体姿态之间的最高量的可变性。不相似姿态选择分析从每一重新定标的运动捕捉序列获得的所有姿态的集合。采用每秒30帧的帧速率、长度为例如1-2分钟的运动捕捉序列、以及对每一帧到15个不同身体类型的重新定标,可以看到帧/姿态的数量可变得巨大。为了提高效率并避免向学习算法提供具有高度冗余的过量数据,可使用每一帧来运行不相似姿态选择过程,以获得指定的、减少数量的不相似姿态。该不相似姿态选择过程标识根据一距离度量相隔指定距离的帧。步骤502在以下结合图7a-7c来进一步讨论。不相似姿态选择提供了具有最大程度不同的骨架的运动捕捉样本子集。这些样本中的每一个用于渲染3-D身体模型,从而创建深度图以及分类图或Harlequin(哈利昆)图。多个任选阶段可被插入到该过程中。步骤504包括执行渲染来提供深度图和分类图像。渲染指的是在像素空间中生成合成图像。深度图像可以从相对于深度图像所表示的身体位于指定位置的虚拟相机的角度来渲染。在渲染深度图像时也可指定诸如虚拟相机的视野等其它因素。本质上,深度图像通过模拟视野中的3-D身体并且任选地模拟诸如地板、墙、天花板、家具和其它家用物品等场景元素,来模拟真实的深度相机将在真实环境中看见的东西。深度图像可具有与真实深度相机相似的像素分辨率。此外,在深度图像中,每一像素可以标识从虚拟相机到3-D身体的距离、从虚拟相机到3-D场景物体的距离、或背景空间,背景空间是既不表示3-D身体也不表示3-D场景物体的像素。分类图像或分类图标识并标记3-D身体的不同身体部位或不同3-D场景元素。例如,每一像素可以标识最接近虚拟相机的身体部位的编号,或3-D场景物体的唯一索引。在用于身体关节跟踪系统的学习算法中,深度图像是使用诸如过滤器设置等设置来处理的, 并且生成对应的分类图,在该分类图中学习算法试图标识身体部位和场景元素。由学习算法生成的分类图可与随深度图像一起提供的分类图进行比较来确定该学习算法有多准确。 随深度图像一起提供的分类图本质上是提供了正确答案的基准图,并且该学习算法可以在处理深度图像时重复地调整其设置,例如训练其自身,直到它能够尽可能准确地复制正确的结果。此外,深度图像的处理以及与相关联的分类图的比较可对该学习算法作为输入数据集接收的众多不相似帧重复。一旦优化了学习算法,就记录对应的设置并可随身体关节跟踪系统一起发送该学习算法以供最终用户使用。渲染也可随每一深度图像和分类图一起提供描述姿态的文本文件,如按照用于提供3-D身体姿态的骨架模型的关节坐标来描述。也可提供诸如在运动捕捉工作室中使用的设置等其它数据。步骤504在以下结合图8来进一步讨论。步骤506包括向部分或全部深度图像添加噪声。在一种方法中,噪声的量和类型以及要添加噪声的深度帧的选择可被随机化。步骤506在以下结合图9来进一步讨论。步骤508包括将深度图像和分类图像提供给机器学习算法。图6提供了获得运动捕捉数据(图5的步骤500)的进一步细节。步骤600包括在运动捕捉工作室中,当行动者随之间执行移动时捕捉帧序列。在一种方法中,执行大量种类的移动,这些移动预期适用于描述预期在用户参与身体关节跟踪系统的不同应用时会遇到的用户移动。在另一种方法中,移动是特定于诸如游戏等具体应用的。例如,交互式网球游戏可具有诸如挥动球拍等规定移动。任选地,行动者可在移动期间在他或她的手中持有道具。每一序列由连续的帧组成,且每一帧标识了行动者的身体上的标记的位置。每一序列可以基于一脚本来执行。例如,一个脚本可指定特定的手臂和腿移动。可获得一个或多个序列。在步骤602,对于序列中的每一帧,提供标记的3-D坐标的数据集。如上所述,每一标记的确切位置可以使用运动捕捉工作室中的不同相机通过三角测量来确定。步骤604输出运动捕捉序列的一个或多个数据集。在一个示例实现中,捕捉N个运动捕捉序列,表示为{S」i = 1....N}。每一序列包括帧Si= {Fit|t= 1...NJ。由此,Si表示一系列或一组帧,且其所包含的对象是Fit。每一 Fit是3-D点位置的向量或关节角度的向量,并表示在时间t序列Si的帧(F)。每一帧由一组M个标记位置来表示,因此Fit由MX 3的矩阵来表示,每一行编码了一个标记的3-D位置。注意,N和每一个Ni表示不同的变量。Ni是序列Si中的帧数。图7a提供了执行重新定标和不相似姿态检测(图5的步骤50 的进一步细节, 其中首先执行重新定标。在一种方法中,将每一运动捕捉帧重新定标到多个不同的身体类型。该重新定标在步骤700处开始。步骤702从来自图6的步骤606的运动捕捉序列的数据集中选择一序列。步骤704从当前序列中选择一个帧。步骤706选择一身体类型。步骤708基于所选身体类型将3-D标记位置转换成关节位置。作为指定类型的身体的骨架模型的一部分的关节位置可基于标记的位置来获得。例如,当一个或多个标记被定位在行动者上相对于肩的已知位置时,可从该标记位置确定表示肩的关节的位置。此外, 指定类型的身体中的关节的位置可以基于该身体的模型以及适合该身体模型的对应的骨架来确定。也可在步骤708期间添加诸如基于骨或肢长度等随机变化。在一示例实现中,输入骨架序列被重新定标到一个或多个标号为1. . . B的身体形状,从而产生经重新定标的帧{F' itk|k= 1...B}。F' itk是对于身体类型k在时间t运动捕捉序列Si中的一个帧。可以选择身体形状的范围来覆盖该系统的较大比例的潜在用户, 并且可包括以下各项的变化性别(男性、女性)、年龄(成人、孩子)、身体类型(诸如100 磅、150磅和200磅等指定体重;或胖、瘦或普通体形)、身高(例如,5英尺、5. 5英尺、6英尺)、头部毛发类型(小胡子、胡须、长发/短发)、服饰(宽松、绷紧、短裙)、等等。例如, 身体类型1可以是男性、成人、体重150磅、5. 5英尺高、具有短发和宽松的服饰,身体类型2 可以是男性、成人、体重200磅、6英尺高、具有长发和绷紧的服饰,等等。该阶段可任选地包括对诸如手指角度等未跟踪关节的调整。用于渲染的身体模型具有比输入骨架多得多的参数(关节角度),因此对于大多数未跟踪的关节,不具有关于它们在哪里的信息。为了填入该信息,可以设置一默认值(例如,将手指角度设为对应于张开的手)。或者,每一渲染的图像可以随机地设置这些值,从而生成渲染中的更多变化。人们知道这些手指在哪里是因为人们知道手在哪里(因为手是跟踪的关节),且给定手指定向, 人们可以使用人类骨架的运动学模型以及手指如何与手相关。在一个具体实例中,使用了 15个基础骨架,其体重和/或骨或肢长度随机变化。由此,B实际上非常大,但可考虑所有可能的F' itk的随机子集。参见图12可获得身体模型的骨架的进一步细节。步骤710将重新定标的帧添加到重新定标的帧的数据集。在第一关节位置标识方案中,骨架模型中的关节位置可以由(X,y,ζ)坐标来标识。一示例骨架可具有大约40个关节。该数据集可包括对应于每一帧的矩阵,其中每一行表示骨架模型中的一个具体关节,并且有表示坐标系中的关节的(X,1,ζ)位置的三列对应于χ的第一列、对应于y的第二列、以及对应于ζ的第三列。例如,可标识关节,使得左肩是关节#1,右肩是关节#2,等等。在第二关节位置标识方案中,骨架模型可以通过指定起始点以及一系列关节角度和诸如骨或肢长度等形状参数来定义。例如,关节可以与一给定点相距沿着一向量的指定距离。在这一情况下,该数据集可包括对应于每一帧的矩阵,其中第一行表示起始关节,且每一另外的行表示骨架模型中的相邻关节。在这一情况下,可以有四列。前三个列表示例如分别在每一 χ-y、y_z、χ-ζ平面中从先前关节到当前关节的向量的角度。第四个矩阵列可提供形状参数,如从先前关节到当前关节的距离,例如骨长度。也可使用其它关节标识方案。
14
可做出关节位置标识方案之间的转换。例如,从第一到第二关节位置标识方案的转换可以涉及将3-D空间中的两个连续关节位置相减来获得它们之间的向量,该向量按照每一 X-y、y-Z、X-Z平面中的角度以及作为形状参数的该向量的大小。从第二到第一关节位置标识方案的转换可涉及添加由两个连续关节位置之间的角度和大小定义的向量。在判定步骤712,如果存在下一身体类型,则对当前帧重复步骤706-710的过程。 如果当前帧已被重新定标到所有身体类型,则判定步骤712为假,并且判定步骤714确定当前序列中是否还有另一帧要处理。如果判定步骤714为真,则在步骤704选择一新的帧,并且对该新的帧重复步骤706-710的过程。如果当前序列中的所有帧都已被重新定标,则判定步骤714为假,并且判定步骤716确定是否有另一序列要处理。如果有另一序列要处理, 则在步骤702选择新序列并且执行步骤704-710的过程。当已经处理了最后一个序列时, 判定步骤716为假,并且重新定标在步骤718结束。步骤720输出重新定标的帧的数据集。不相似姿态选择在步骤722开始。在所有可能姿态的空间中,不相似姿态选择提供了稀疏采样。结果,向学习算法提供了较少的帧,从而减少了计算花费,但不损失大量质量。例如,帧数可以按照大小的数量级来减少。在所描绘的方法中,不相似姿态检测使用用于重新定标的骨架模型中的关节位置,而非来自运动捕捉序列的标记位置来执行。步骤7M从步骤720提供的重新定标的帧的数据集中选择并移除姿态。步骤7 将该姿态添加到所选不相似姿态的新数据集。步骤 7 确定每一所选不相似姿态和重新定标的帧的数据集中的所有剩余姿态之间的距离,这些剩余姿态是候选姿态。步骤730任选地排除距离任何所选不相似姿态不足至少阈值距离 T的候选姿态。这些候选姿态被认为与一个或多个所选不相似姿态太相似。步骤732确定哪一候选姿态具有与任何所选不相似姿态的最大的最小距离。由此,对于每一候选姿态,可以确定其距离每一所选不相似姿态的距离。然后可对每一候选姿态取这些距离的最小值。 然后,确定在所有候选姿态中哪一个最小值是最大的。在步骤734,将所选候选姿态添加到所选不相似姿态的数据集,并从重新定标的帧的数据集中移除。如果在判定步骤736在重新定标的帧的数据集中有下一帧要处理,则处理在步骤7观-734继续。在一种方法中,当在重新定标的、不相似的帧的数据集中已经提供了指定数量D的帧时,判定步骤736为假。不相似姿态检测在步骤738结束。步骤740输出所选不相似帧的数据集。不相似姿态是重新定标的运动步骤序列中的姿态的子集。图7b描绘了用于不相似姿态选择的算法。将每一元组(i,t,k)与一整数r相关联,所有重新定标的运动捕捉帧被表示为集合S' = {F'」1^=1...! },其中1 = 8\111 Ni = BXN1X...……Nn。不相似姿态选择的目标是选择这些帧的(大小为D的)子集,由整数集P1 = Ir1, . . . , rD}来表示,使得该子集不包括由相似度函数Φ定义的相似帧对,该相似度函数也可被认为是距离度量。该函数(其示例在下文中给出)将来自S'的一对帧映射到一正实数,该正实数对于相似帧较小,在其它情况下则较大。为清楚起见,如果帧由 MX3的矩阵G和H来表示,则Φ (G,H)返回G和H的相似度,其中对于相同的姿态Φ = 0, 且越大的Φ表示越不相似的姿态。用于该算法的伪代码在图7b中示出。输出索引&定义了作为对后续阶段的输入的一组运动捕捉帧P。如果未执行不相似姿态检测,则P'= S'。或者,不相似姿态检测可以在重新定标之前在运动捕捉帧上运行(见图7c)。不相似姿态检测算法使用姿态相似度函数Φ (G,H)。给定矩阵G,其M行由{gj}」= 1:Μ表示,且类似地H的行由0ι1 = 1:Μ表示。第一个可能的相似性定义是最大关节距离
权利要求
1.一种用于生成用于人体跟踪的代表训练数据的处理器实现的方法,包括以下处理器实现的步骤访问至少一个运动捕捉序列(500),所述至少一个运动捕捉序列标识其中行动者执行移动的时间段期间所述行动者的身体的姿态(1100);基于所述至少一个运动捕捉序列执行到多个身体类型的重新定标和不相似姿态选择, 来提供多个不相似姿态(502);以及根据用于所述多个身体类型中的一相应身体类型的3-D身体模型(1302、1360)来渲染每一所述不相似姿态,以提供所述不相似姿态的相应的深度图像,并提供标识所述不相似姿态的身体部位的相应的分类图像(1400),其中所述3-D身体模型是基于对应骨架的关节位置和关节角度中的至少一个来渲染的,使用多个3-D身体模型,对每一身体类型有一个 3-D身体模型,并且相应的深度图像和相应的分类图像包括可由机器学习算法用于人体跟踪的像素数据。
2.如权利要求1所述的处理器实现的方法,其特征在于所述重新定标将所述至少一个运动捕捉序列重新定标到所述多个身体类型,以提供多个重新定标的运动捕捉序列,每一重新定标的运动捕捉序列标识所述多个身体类型的一相应身体类型的姿态;以及所述不相似姿态选择从所述多个重新定标的运动捕捉序列中选择不相似姿态,使得所述不相似姿态是所述多个重新定标的运动捕捉序列中的姿态的子集。
3.如权利要求1所述的处理器实现的方法,其特征在于所述不相似姿态选择从所述至少一个运动捕捉序列中选择不相似姿态,使得所述不相似姿态是所述至少一个运动捕捉序列中的姿态的子集;以及所述重新定标将所述不相似姿态重新定标到所述多个身体类型,以提供多个重新定标的运动捕捉序列,每一重新定标的运动捕捉序列标识所述多个身体类型的一相应身体类型的姿态。
4.如权利要求1所述的计算机实现的方法,其特征在于,还包括以下处理器实现的步骤向至少一个所述不相似姿态引入变化,所述变化包括变化的骨长度和变化的关节角度中的至少一个。
5.如权利要求1所述的处理器实现的方法,其特征在于所述渲染向至少一个所述不相似姿态添加3-D场景元素(1304、1306、1308、1310);以及所述3-D场景元素中的至少一个被修改成适合所述不相似姿态的对应的身体姿态。
6.如权利要求5所述的计算机实现的方法,其特征在于,还包括以下处理器实现的步骤通过组合来自所述至少一个运动捕捉序列的两个或更多运动捕捉帧的关节角度,将所述行动者的身体的姿态扩展到至少一个附加姿态。
7.如权利要求1所述的处理器实现的方法,其特征在于所述渲染通过改变虚拟相机高度、虚拟相机角度和虚拟相机视野中的至少一个来改变至少一个所述不相似姿态。
8.如权利要求1所述的处理器实现的方法,其特征在于所述渲染通过改变至少一个所述不相似姿态的身体位置来改变至少一个所述不相似姿态。
9.如权利要求1所述的处理器实现的方法,其特征在于所述渲染向至少一个所述不相似姿态添加3-D场景元素;以及所述渲染组合不同姿态中的、但具有共同的虚拟相机位置和共同的3-D场景元素的两个或更多3-D身体模型。
10.一种用于生成用于人体跟踪的代表训练数据的处理器实现的方法,包括以下处理器实现的步骤访问至少一个运动捕捉序列(500),所述至少一个运动捕捉序列标识其中行动者执行移动的时间段期问所述行动者的身体的姿态(1100);基于所述至少一个运动捕捉序列执行不相似姿态选择和到多个身体类型的重新定标, 来提供多个不相似姿态(502);以及根据用于所述多个身体类型中的一相应身体类型的3-D身体模型(1302、1360)来渲染每一所述不相似姿态,以提供所述不相似姿态的相应的深度图像,并提供标识所述不相似姿态的身体部位的相应的分类图像(1400),其中使用多个3-D身体模型,对每一身体类型有一个3-D身体模型,并且相应的深度图像和相应的分类图像包括可由机器学习算法用于人体跟踪的像素数据,并且所述渲染向至少一个所述不相似姿态添加噪声(506)。
11.如权利要求10所述的处理器实现的方法,其特征在于所述噪声是通过向至少一个所述不相似姿态添加头部毛发(90 来添加的。
12.如权利要求10所述的处理器实现的方法,其特征在于所述噪声是通过量化至少一个所述不相似姿态的深度分辨率(904)来添加的,其中精度取决于深度。
13.如权利要求10所述的处理器实现的方法,其特征在于所述噪声是通过标识至少一个所述不相似姿态中的至少一个边缘(908),并用远离所述至少一个边缘的相邻像素的深度替换所述至少一个便边缘处的至少一个像素的深度来添加的。
14.如权利要求10所述的处理器实现的方法,其特征在于所述噪声是通过标识比至少一个所述不相似姿态中的指定数量的像素薄的至少一个薄结构(910),并用背景像素替换所述至少一个薄结构的像素来添加的。
15.如权利要求10所述的处理器实现的方法,其特征在于所述噪声是通过标识至少一个所述不相似姿态中具有大于阈值的深度不连续性的第一和第二边缘(91 ,并用背景像素替换所述第一和第二边缘之间的像素来添加的。
全文摘要
本发明公开了一种生成用于人体跟踪的代表训练数据的方法。为身体关节跟踪系统的机器学习算法生成合成身体图像。来自运动捕捉序列的帧被重新定标到若干不同的身体类型,来充分利用该运动捕捉序列。为了避免向机器学习算法提供冗余或相似的帧,并且为了提供紧凑但仍高度变化的图像集,可使用相似度度量来标识不相似的帧。该相似度度量用于定位根据阈值距离足够不同的帧。出于真实性起见,基于真实世界深度相机通常经历的噪声源来向深度图像添加噪声。也可引入其他随机变化。例如,可向重新定标添加一定程度的随机性。对于每一帧,提供深度图像和具有标记的身体部位的对应的分类图像。也可提供3-D场景元素。
文档编号G06K9/00GK102194105SQ201110071738
公开日2011年9月21日 申请日期2011年3月18日 优先权日2010年3月19日
发明者A·费茨吉本, J·肖顿, M·科克, M·芬诺基奥, R·摩尔 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1