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

根据二维图像重建三维场景的制作方法

2022-02-22 17:25:30 来源:中国专利 TAG:


1.本说明书涉及使用神经网络来根据二维(2d)图像重建三维(3d)场景。


背景技术:

2.除了比较容易的面部问题之外,几乎没有用于将3d人体(或其他对象)实时集成到增强现实应用程序中的任何研究。身体通常比面部更困难,这是因为其关节变形、多重遮挡和自遮挡、与其他对象和人的复杂相互作用,以及由于服装引起的更大外观变异性。
3.入姿势估计算法通常目的在于对图像中的某些稀疏点(诸如骨骼关节和面部界标)或者最近对密集表面级坐标进行定位。尽管它们的精确度越来越高,但这些表示仍然不能满足下游应用程序,例如增强现实、运动捕捉、游戏或图形。这需要三维地访问底层人体表面并且目前求助于多相机设置或深度传感器。
4.对形变模型的研究表明,通过使用面部表面和外观的低维参数化并将重建任务转为优化问题,可执行精确的单目表面重建。将这一点延伸到更复杂的人体关节型结构,在过去的十年里,已经结合基于部分的表示、基于采样的推断、时空推断和自底向上/自顶向下的方法,对单目人体重建进行了广泛研究。在针对一般类别和具体地针对人类的深度学习的背景下,单目3d重建见证了复兴。先前研究依赖于在蒙皮线性模型(特别是蒙皮多人线性(smpl)模型)方面的有效的人体参数化。利用smpl模型提供了人体的低维、可微表示的事实,这些研究训练系统通过最小化在基于smpl的3d关键点和2d关节注释、人体分割掩码和3d体积投影之间的重投影误差或甚至细化到身体部分级,来使模型参数回归。
5.同时,通过从经典的从运动中恢复结构的方法发展到基于3d卷积神经网络(cnn)的架构,3d人体关节估计在准确度方面也有了很大的提高,该架构通过分类和回归的混合来直接在体积输出空间中定位3d关节。
6.最后,对密集姿势估计的最近研究表明,通过训练通用的、自下而上的检测系统来将图像像素与表面级uv坐标相关联,可估计在rgb图像和smpl模型之间的密集对应关系。应注意的是,尽管densepose在图像和表面之间建立了直接联系,但它并没有揭示底层3d几何结构,而是给出了关于它的强烈暗示。其他最近研究依赖于参数化的人体形状模型,例如smpl,其允许在低维参数向量的方面描述3d人体表面。这些研究的大部分训练cnn来使可变形模型参数回归,并在反复和耗时的优化过程中更新它们。


技术实现要素:

7.根据本说明书的第一方面,描述了一种用于根据单个二维图像创建具有多个对象的场景的三维重建的方法,所述方法包括:接收单个二维图像;识别所述图像中将要重建的所有对象并且识别所述对象的类型;估计每个所识别对象的三维表示;估计物理地支撑所有三维对象的三维平面;以及相对于所述支撑平面在空间中定位所有三维对象。
8.可在深度机器学习模型中执行所述估计三维表示的步骤,所述深度机器学习模型包括输出层和一个或多个隐藏层,所述一个或多个隐藏层各自对接收的输入应用非线性变
换以生成输出。所述深度机器学习模型通过串联来自所述神经网络的一个或多个中间层的特征数据来预测多个对象的三维界标位置,并且针对每个区域中描述的预测类型的对象同时估计所预测的三维位置。
9.可通过使用所有可见对象的所估计三维位置来重建穿过它们的二维平面,来针对单个帧执行估计支撑多个对象的平面的步骤。可使用相对相机姿势估计和平面定位来针对一系列帧执行估计支撑多个对象的平面的步骤所述平面定位使用在连续帧的点之间的对应关系。
10.所述接收还可包括接收多个图像,其中针对每个接收图像例如实时地进行估计多个对象的三维表示并将它们定位在平面上的步骤。可通过组合在连续帧处的隐藏层响应例如通过对它们进行平均,来在多个连续帧上进行所述处理。
11.数字图形对象可按照与所述估计三维对象位置的给定关系被综合地添加到所述三维场景重建,并且然后被投影回所述二维图像。
12.根据本说明书的另一方面,描述了一种用于根据单个二维图像创建具有多个对象的场景的三维重建的计算单元,所述计算单元包括:存储器;以及至少一个处理器,其中至少一个处理器被配置为执行根据第一方面的方法。
13.根据本说明书的另一方面,描述了一种存储指令集的计算机可读介质,所述指令集能够由计算单元的至少一个处理器执行以用于根据单个二维图像创建具有多个对象的场景的三维重建,从而致使所述计算单元执行根据第一方面所述的方法。
14.根据本说明书的另一方面,描述了一种包括指令的计算机程序产品,当由计算机执行所述指令时,所述指令致使所述计算机执行根据第一方面所述的方法。
15.根据本说明书的附加方面,描述了一种用于训练深度机器学习模型以根据单个二维图像创建具有多个对象的场景的三维重建的方法,所述方法包括:接收单个二维图像;通过将对象的三维模型适配到所述二维图像来获得用于三维重建的训练信号;将所得的三维模型拟合结果用作用于训练所述深度机器学习模型的监督信号。
16.拟合三维模型的步骤可通过以下步骤来执行:将三维表示投影到二维图像平面上,从而产生投影表示;将投影表示的相应位置与单个二维图像中的对象进行比较;基于比较来测量误差值;以及基于误差值来调整融合的三维表示的参数,其中所述比较、测量和调整被迭代地重复,直到满足阈值条件。所述阈值条件可以是测量误差值低于预定阈值或阈值迭代次数被超过。如果有多个视图可用,则可通过考虑透视投影的效果以及通过利用相同对象的多个视图来执行投影的步骤。
17.根据本说明书的另一方面,描述了一种用于根据单个二维图像创建具有多个对象的场景的三维重建的计算单元,所述计算单元包括:存储器;以及至少一个处理器,其中至少一个处理器被配置为执行根据所述附加方面的方法。
18.根据本说明书的另一方面,描述了一种存储指令集的计算机可读介质,所述指令集能够由计算单元的至少一个处理器执行以用于根据单个二维图像创建具有多个对象的场景的三位重建,以便致使所述计算单元执行根据所述附加方面的方法。
19.根据本说明书的另一方面,描述了一种包括指令的计算机程序产品,当由计算机执行所述指令时,所述指令致使计算机执行根据所述附加方面的方法。
20.根据本说明书的另一方面,描述了一种用于根据单个二维图像提供具有多个对象
的场景的三维重建的系统,所述系统包括:第一计算单元,所述第一计算单元用于执行根据所述第一方面的任何方法;以及第二计算单元,所述第二计算单元被配置为执行根据所述附加方面的方法,其中所述第二单元被配置为利用所述第一计算单元的结果来训练模型。
附图说明
21.将参考附图描述实施例和示例,其中:
22.图1示出了用于根据单个二维图像创建具有多个对象的场景的三维重建的示例性方法的示意性概述;
23.图2示出了用于根据单个二维图像创建具有多个对象的场景的三维重建的方法的流程图;
24.图3示出了用于训练神经网络以根据单个二维图像重建具有多个对象的三维场景的示例性方法的示意性概述;
25.图4示出了用于训练神经网络以用于根据单个二维图像重建具有多个对象的三维场景的方法的流程图;
26.图5示出了用于训练神经网络以用于重建三维场景和对象重新识别的方法的另一示例;以及
27.图6示出了用于执行本文描述的任何方法的系统/装置的示意性示例。
具体实施方式
28.本说明书描述了用于根据单个2d图像(例如,rgb图像)重建包含多个对象(例如,人类)的3d场景的方法和系统。本文描述的示例性方法和系统可在移动设备(例如,移动电话)上以每秒超过30帧的速度恢复多个对象的精确3d重建,同时还恢复关于3d相机位置和世界坐标的信息。本文描述的方法和系统可应用于涉及例如整个人体的实时增强现实应用,从而允许用户控制位于其上的对象,例如附接到其手部的图形资产,同时还允许对象与人类交互,例如一旦接触人类身体就从人类反弹回来的球。
29.此外,本说明书描述了cnn设计选择,其允许在移动设备上以每秒超过30帧来估计多个(潜在的数百个)对象(例如,人类)的3d形状。使用本文描述的方法,可在骁龙855神经处理单元(npu)上以每帧约30毫秒的恒定时间获得结果,而与场景中的对象(例如,人)的数量无关。
30.本文描述的几个方面可单独或组合地有助于这些效果。
31.在一些实施例中,网络净化被用于构造用于单目图像重建的监督信号。详细耗时的模型拟合过程被离线执行,以恢复训练集中的所有图像的3d解释。然后,拟合结果被用于训练一个或多个神经网络(例如,卷积神经网络),以利用通过网络的单个前馈传递来有效地处理输入的测试图像。这允许在模型拟合期间合并由互补地面真值信号施加的复杂约束(例如,区域对准、分别基于关键点和密集姿势的稀疏和密集重投影误差等),而不影响测试时的速度。
32.在一些实施例中,高效的仅编码器的神经网络架构被用于单目三维人类姿势估计。早期研究依赖于人体表面的参数化、操纵的模型,以及用于在2d中对人体关节进行详尽、准确定位的基于解码器的网络。相反,用于图像分类的再利用(标准)深度神经网络可以
被使用,被配置,从而使得最后层输出用于对象(例如,人类)网格的每个顶点的3d坐标。这可显著地加快测试时间推断,并且还使在移动设备上部署网络变得简单。
33.在一些实施例中,神经网络可具有单级、全卷积架构,其密集地处理输入2d图像并在通过(标准)卷积网络单个传递中针对大量图像位置发出3d姿势估计。这可导致推断的时间与场景中的对象(例如,人)的数量无关,同时也极大简化了随时间推移的对3d重建的平滑,因为可随时间对网络层进行平均,而不是进行事后平滑。
34.在一些实施例中,使用基于人的自定标方法,该方法通过将平面拟合到2d图像中的对象/子对象(例如,人脚)的估计3d位置来估计三维场景中的地板位置。这允许以消除透视投影的缩放效应的方式恢复世界几何形状,同时还恢复相对于平面的相机位置。继而,恢复世界几何形状允许通过在尊重物理定律的同时插入对象来增强恢复的场景,该对象例如可落在地板上并反弹回来。方法既可在相机静止时操作(其中同时定位和映射(slam)方法失败),并且也可在相机移动的情况下操作,例如通过将估计的地板位置与由slam恢复的平面对准。
35.在一些实施例中,该方法的分布式、基于部分的变体从多个图像位置收集关于网格部分的信息,如由估计的对象部分位置所指示的。主体网格是通过将由神经网络输出的部分级网格组合在一起来获得,由此允许更好地处理遮挡、大关节连接,同时保持完全相同的存储器和计算成本(除了存储器查找操作之外)。
36.在一些实施例中,神经网络可另外适应对象/人重新识别(reid)的任务。教师-学生网络净化方法可用于训练网络来执行这样的任务。使用预先训练的reid网络从2d图像中的对象(例如,人类)片段中提取reid嵌入,并且这些嵌入被用作监督信号以用于训练神经网络的reid分支。该分支提供模拟教学网络的那些reid嵌入的reid嵌入,但可以是全卷积的,这意味着它的运行速度与图像中的对象的数量无关。
37.图1示出了用于根据单个二维图像创建具有多个对象的场景的三维重建的示例性方法100的示意性概述。该方法可由在一个或多个位置处操作的一个或多个计算设备执行。例如,该方法可由例如移动电话的移动计算设备执行。
38.各自包括给定类型(例如人)的多个对象104的一个或多个2d图像102被输入到神经网络106中。在一些实施例中,仅使用单个输入图像102。神经网络106处理输入数据,以识别图像中的对象104并且生成输出数据108,该输出数据包括输入2d图像102中的每个(潜在)所识别对象104的估计3d表示110。在一些实施例中,输出数据108还可包括在输入2d图像102内的潜在对象104的边界框的估计坐标112和/或在输入2d图像102内的位置处对象104存在的概率。输出数据108被进一步处理(即,后处理)以生成在输入2d图像102中的场景的三维重建116。在一些实施例中,输出数据108还可包括与图像中的每个对象104相关联的嵌入向量(未示出)。嵌入向量提供对象的reid嵌入,使得可跨多个输入图像102识别和/或跟踪给定对象104。
39.2d输入图像102i包括对应于二维阵列的像素值集合。例如,在彩色图像中,其中h是以像素为单位的图像的高度,w是以像素为单位的图像的宽度,并且图像有三个颜色通道(例如,rgb或cielab)。在一些实施例中,2d图像可以是黑白/灰度的。
40.在一些实施例中,方法100可使用多个(例如,一系列)输入2d图像102(例如,多个
移动人的图像)。3d表示110可考虑这些变化。可以基本上实时地(例如,以30fps)例如从移动设备上的相机接收多个输入2d图像102。神经网络106可单独地处理这些输入2d图像102中的每一者,其中当生成3d场景时,在后处理期间组合用于每个输入2d图像102的隐藏层响应。
41.神经网络106将2d图像102作为输入,并且通过多个神经网络层对其进行处理以生成输出数据108。神经网络106是深度机器学习模型,其包括输出层和一个或多个隐藏层,每个隐藏层对所接收输入应用非线性变换以生成输出。神经网络可通过将来自神经网络的一个或多个中间层的特征数据串联,来预测多个对象的三维界标位置。对于在每个区域中描绘的对象的预测类型可同时估计预测的三维位置。
42.神经网络106的每层包括多个节点(在本文中也称为“神经元”),每个节点与一个或多个神经网络参数(例如,权重和/或偏差)相关联。每个节点接受来自前一层中的一个或多个节点的输出(或对于神经网络第一层的输入)作为输入,并且基于与该节点相关联的参数对其输入应用变换。该变换可以是非线性变换。一些节点可替代地应用线性变换。
43.神经网络106可包括一个或多个卷积层,每个卷积层被配置为将一个或多个卷积滤波器应用于网络中的前一层的输出。在一些实施例中,神经网络106是全卷积。神经网络可包括一个或多个全连接层,其中全连接层中的每个节点接收来自前一层中的每个节点的输入。神经网络106可包括一个或多个跳过连接。神经网络106可包括残差神经网络,例如resnet-50。残差网络可用作骨干网络。
44.神经网络106可以是单级系统,其通过执行通过神经网络106(其可以是全卷积神经网络)的单个前向传递来联合检测对象(例如,人类)并估计其3d形状。代替在对象检测区域周围裁剪图像小片并且然后再次处理它们,提取区域特定特征的任务被委托给具有越来越大的感受域的神经网络106的连续层的神经元。可使用resnet-50主干,其在速度和准确度之间提供了极好的折衷。可使用空洞卷积(例如,参见l.chen等人的“deeplab:semantic image segmentation with deep convolutional nets,atrous convolution,and fully connected crfs”(“deeplab:利用深度卷.积网络、空洞卷积和全连接crfs的图像语义分割”),pami,2017年3月,其内容通过引用并入本文),从而允许我们增加评估对象(例如,人)假设的空问密度并且可减小漏检的数量。
45.神经网络106的最后层(例如,全卷积神经网络)的任务是预测其每个神经元处的输出数据108(例如,多个输出),对应于假设处于相应位置处的人的属性。
46.在一些实施例中,神经网络106的层中的一个或多个可以是1
×
1卷积层。例如,神经网络的最后层可包括一个或多个1
×
1卷积。在“fully convolutional networks for semantic segmentation”(用于语义分割的完全卷积网络)(e.shelhamer等人,ieee模式分析和机器智能汇刊39(4):640-651(2017))和“overfeat:integrated recognition,localization and detection using convolutional networks”(overfeat:使用卷积网络的集成识别、定位和检测)(p.sermanet等人,国际学习代表会议,第二届国际学习代表会议,2014)中描述了这些层的示例,上文内容由此通过引用被并入。
47.输出数据108包括针对每个检测对象110的网格表示。这可以是捕获对象形状的k=n
×
3维向量的形式,其中n是网格中的节点数。n可以是563,但其他网格节点数也是可能的。输出数据108还可包括对象(例如人)114的存在的概率。输出数据108还可包括输入图像
102中的对象的边界框112的拐角。
48.在一些实施例中,神经网络106的预测可特定于对象类型。例如,神经网络106可预测人类的面部部分、手指和四肢的3d位置,而不同的神经网络106可专用于针对汽车的车轮、车窗、车门和车灯位置。应当理解,由于所识别的对象类型而预期存在的对象界标可能并不存在于图像中。例如,如果对象类型是人,则由于阻碍视野的姿势或其他项目,人体的部分可能是不可见的。
49.使用如上所述的神经网络106可导致若干优点。首先,推断是有效的,从而避开对用于高准确度姿势估计的基于反卷积的解码器的需要。替代地,这种架构是“仅编码器”,从而将处理m
×
m(例如,233
×
233)小片所需的时间减小到几毫秒。其次,所得的网络容易移植到移动设备,因为它们完全依赖于一般的卷积网络层,而不是在早期研究中使用的操纵体模型(rigged body model)。第三,扩展所得的模型变得很简单,使得可以全卷积方式处理整个图像,而不是处理单独小片。
50.除了简单之外,所得的架构还使得对重建的3d形状执行时间平滑变得简单。代替先前使用的复杂的、基于参数跟踪的方法,可获得网络106的倒数第二层激活的运行平均值。这基本上稳定了由网络恢复的3d形状,同时将其作为处理步骤合并在移动设备中实际上毫不费力。
51.在一些实施例中,神经网络106可基于在与对象中的预定点(例如,人胸骨)对准的位置i处计算的高维特征向量f,来输出对象(例如人)的完整对象网格v。特征向量可由神经网络中的层输出,例如对应于网络中的隐藏层的激活。映射可表示为:
52.v[i]=m(f[i})
ꢀꢀꢀꢀ
(1)
[0053]
其中m指示特征向量f到输出网格v的映射。在一些实施例中,m可被实现为神经网络中的线性层。
[0054]
这种“集中式”(即与对象中的单个预定点对准的)方法的简单性被通过f[i]针对对象(例如,人类)网格的所有细节和变化进行计数的挑战所抵消,这可能成为计算的瓶颈。在这种方法中,在输出网格110中的给定节点的位置可能基于神经网络中与远离所述网格节点的位置相关联的神经元的激活。这可向所得的输出网格110引入不准确性。
[0055]
在一些实施例中,可以可替代地使用基于部分的方法,来重建对象的3d表示110。基于部分的方法使用分布式方法来进行网格回归,这可显著地比集中式方法更精确。在可将对象104分成部分的情况下,基于部分的方法是有用的。例如,人体可自然地分成几个部分,诸如头、躯干、手臂、手等。
[0056]
以人体为例,相比于与更远位置相关联的神经元,与接近于远离预定点(例如,胸骨)的对象部分(例如,手、脚等)的位置相关联的神经元可提供对相应网格部分的更可靠估计。这些较近神经元就像是“分布式部分专家”,其提供了有关它们附近的身体部位的可靠信息。可使用位于预定点(例如,胸骨)处的协调器节点,来组合来自这些分布式部分专家的信息,以确定输出网格110。关于与给定部分相关联的特定网格节点的来自与更远离所述部分的位置(即,与所述部分不相关联的位置)相关联的神经元的信息可在确定输出网格110期间被压缩/丢弃。这可通过使用部分级关注矩阵a来实现。
[0057]
向协调器提供信息的部分位置可由人体骨骼计算阶段确定,从而将胸骨位置与对应的部分位置相关联。部分位置可基于例如人体的关节位置。
[0058]
在基于部分的方法中,神经网络106针对预定对象部分列表中的对象104的每个部分p输出分开的部分网格v[p]。每个部分网格v[p]设置在其自身坐标系中,该坐标系的原点相对于参考点(在此也称为“协调器节点”)c(例如,人胸骨)偏移。换句话说,{p1,

pm}表示与协调器(例如,胸骨)位置c相关联的m个部分中的每一个的位置。所述部分位置可以基于对象的关键点,例如人体中的关节位置。
[0059]
为了根据部分网格v[p]重建全网格v,协调器使用部分级关注矩阵a从v[p]中选择与部分p相关的节点。在一些实施例中,a是指示哪个部分应该被用于最终网格v中的每个顶点的二进制矩阵。对于这样的关注矩阵,可使用以下来为最终网格中的每个网格顶点v重建最终网格v:
[0060][0061]
其中v[c,v]表示网格节点v相对于预定点c的位置,pv指示作为对于节点v(即,在二进制示例中其a[p,v]=1的节点)的“活动专家”的部分的位置,并且v[p,v]表示网格节点v在与部分p相关联的网格中的位置。(c-pv)是考虑在该部分与参考位置c(例如,胸骨)之间的相对位置的偏移向量。
[0062]
在一些实施例中,部分级关注矩阵a可以是在训练期间确定的学习矩阵。在此类示例中,给定网格节点v的位置可基于来自一个或多个部分的信息。因此,使用等式(2)可产生多于一个部分的加权和,而不是等式(3)。
[0063]
在一些实施例中,输出数据108还包括在输入2d图像102内的潜在对象104的边界框的估计坐标112和/或在输入2d图像102内的位置处的对象104存在的概率。
[0064]
在一些实施例中,输入2d图像102中的每个(潜在)所识别对象104的估计3d表示110是采用n顶点网格v的形式。例如,每个所识别对象104的估计3d表示110可以是采用给出网格中的n个顶点的3d坐标的(n
×
3)维向量的形式。在一些实施例中,n=536,但其他网格节点数量也是可能的。
[0065]
针对每个潜在对象,边界框的坐标可包括输入2d图像102中的边界框顶点的x和y位置,例如对于每个潜在对象的{(x1,y1),(x2,y2),(x3,y3),(x4,y4)}。每个边界框可与边界框包含给定类型(例如,人)的对象的对应概率相关联。
[0066]
在输入2d图像102中的场景的3d重建116是通过在估计世界内坐标时考虑透视投影并消除其影响来生成的。通过估计物理地支撑在图像102中的所识别对象104的3d平面118(例如,地板、地面)(在此也称为“支撑平面”)并相对于支撑平面在空间中定位所有3d对象110,来生成3d重建116。
[0067]
估计物理地支撑在图像102中的所识别对象104的3d平面118可以是基于对象(例如,人类)由单个物理平面支持的假设。在一些实施例中,通过使用混合模型并使用期望最大化将不同人分配到不同平面,放宽了该假设。
[0068]
估计3d平面118还可以是基于假设对象(例如,人类)的高度大致相等。如果一系列
输入图像102可用,其中可随时间跟踪单独对象并且监测透视投影随时间推移对每个对象的影响,则可放宽后一假设。
[0069]
为了相对于支撑平面在空间中定位3d对象110,估计每个网格的缩放以便将其带到世界坐标。该缩放与对象(例如人)与捕获输入图像102中的场景的相机相距的距离成反比。因此,缩放可用于沿着将网格顶点连接到相机中心的线将网格定位在世界坐标中。
[0070]
作为示例,3d对象110可由神经网络106以在正交投影下估计的网格的形式提供。给定场景中的第i个网格,其顶点为mi={v
i,1

,v
i,k
},其中v
i,k
=(x
i,k
,y
i,k
,z
i,k
)∈r3是按缩放正交法估计的网格坐标,而缩放为si,通过消除透视投影的影响将网格顶点定位在3d世界坐标中。例如,第i个网格中的第k个点的世界坐标v
i,k
=(x
i,k
,y,
i,k
,z,
i,k
)可通过以下方式根据按缩放正交法估计的对应网格坐标来估计:用比例因子的倒数来“反推”世界坐标中的网格深度,以及设置x和y世界坐标以使得它们正确地投影回对应的像素坐标值x和y。象征性地,这可被表示为:
[0071][0072][0073][0074]
其中相机校准矩阵具有中心c
x
=w/2和cy=h/2(其中w和h为图像尺寸,即图像宽度和高度),以及焦距f。这些可手动或通过相机校准来设置。
[0075]
针对对应于所识别对象的每个网格,最低(即最低y值)被确定并被使用以估计在对象和支撑平面(例如,地板)之间的接触点。一旦已经确定了至少四个此类点(统称为m),所确定的点就可用于估计世界坐标中的支撑平面。在一些实施例中,可使用最小二乘法来估计世界坐标中的平面,例如:
[0076][0077]
其中v1=(a,b,c)是垂直于支撑平面的向量。在一些实施例中,该向量可被归一化。世界坐标轴r=[v
1t
,v
2t
,v
3t
]
t
是通过找到既与v1正交又相互正交的两个互补方向v2和v3来定义的坐标轴。在一些实施例中,v2被选择在z方向上,并且v3=v1xv2。在一些实施例中,向量v2和v3可被归一化,即集合{v1,v2,v3}形成正交基。
[0078]
世界坐标中心t也可被指定为位于平面上的3d点。例如,其可被设置为与相机相距三米的点并且被投影至y=h/2。
[0079]
在一些实施例中,上述可用于定义在世界坐标系与2d图像102中的像素位置之间的变换。世界到相机的变换和相机校准矩阵在单个3
×
4透视投影矩阵p中。例如,可通过以下给出:
[0080][0081]
这里,方向v向量显示为行而不是列,因为使用了逆旋转矩阵,并且r-1
=r
t

[0082]
使用齐次坐标,世界坐标c可转换为像素坐标c,使用:
[0083]
c=pc,其中且
[0084]
在一些实施例中,坐标变换可用于将对象引入遵循物理定律和/或以有意义/现实的方式与其他对象交互的场景/图像。这可导致需要真实世界坐标的交互式应用,例如增强现实游戏,诸如玩家试图用剑或激光束击中另一个玩家的游戏。在一些实施例中,3d重建网格可被投影回输入图像102,示出3d人类姿势估计的准确性。
[0085]
在使用多个输入2d图像102的实施例中,估计支撑多个的平面可使用相对相机姿势估计和平面定位(使用连续帧的点之间的对应关系)针对一系列帧来执行。处理(例如,后处理)可通过组合连续帧处的隐藏层响应(例如通过对它们进行平均)来在多个连续帧上进行。
[0086]
根据一些示例性实施例,合成对象可由输入图像中的对象(例如,人)控制或者与他们交互。例如,添加的合成对象可以是人在计算机游戏中用其手臂控制的剑或者激光束——或者朝向人移动并在接触所估计的三维人位置时反弹的对象。
[0087]
方法可集成到图形引擎中,诸如unity。用户可与其自身的图像/视频实时交互和/或看到叠加在其自身上的网格。
[0088]
组合从(例如,在视频中的)连续输入图像102获得的随时间推移的多个测量值会给出进一步改进的估计,同时将方法与相机跟踪组合,如在同时定位和映射(slam)中所允许的那样。对于可变形对象(像人类)与刚性3d场景的组合,两者以度量坐标进行重建。
[0089]
图2示出了用于根据单个二维图像创建具有多个对象的场景的三维重建的示例性方法的流程图。方法可由在一个或多个位置操作的一个或多个计算机执行。方法可对应于关于图1描述的方法。
[0090]
在操作2.1处,接收2d图像。2d图像包括像素值的阵列,例如rgb图像。可接收单个2d输入图像。在一些实施例中,可接收一系列单个图像。
[0091]
在操作2.2处,识别在图像中将要重建的对象。还可以识别对象类型。操作2.2可由神经网络(诸如上面关于图1描述的神经网络)的一个或多个层执行。
[0092]
在操作2.3处,估计每个所识别对象的3d表示。3d表示可以采用网格的形式,例如,3d的n个顶点位置的k=nx3维向量。操作7.3可由神经网络(诸如上面关于图1描述的神经网络)的一个或多个层执行。
[0093]
估计3d表示的操作可在深度机器学习模型(例如,神经网络)中执行,该神经网络包括输出层和一个或多个隐藏层,每个隐藏层对接收的输入应用非线性变换以生成输出。深度机器学习模型可通过将来自神经网络的一个或多个中间层的特征数据串联来预测多
个对象的3d界标位置。对于在每个区域中描绘的预测类型的对象,同时估计预测的3d位置。
[0094]
在接收到一系列输入图像的情况下,针对每个接收图像来执行以下:估计多个对象的三维表示并将它们定位在平面上。如果基本上实时地(例如,30fps)接收图像,则可基本上实时地执行这些操作。
[0095]
在操作2.4处,估计物理地支撑所有三维对象的3d平面。操作2.4可在后处理步骤中执行,即在神经网络对输入图像进行处理之后。上面参考图1进一步详细描述了估计支撑框架的方法。
[0096]
估计支撑多个对象的平面可以通过使用所有可见对象的估计三维位置来重建穿过它们的二维平面来针对单个帧执行。例如,可以基于在对象和平面之间的接触点的估计位置(例如,在输入图像中识别的人脚的位置)来估计支撑平面。估计支撑多个对象的平面可以使用相对相机姿势估计和平面定位(使用在连续帧的点之间的对应关系)针对一系列帧来执行。
[0097]
在操作2.5处,相对于支撑平面在空间中定位3d对象。操作2.5可在后处理步骤中执行,即在神经网络对输入图像进行处理之后。上面参考图1进一步详细描述了相对于支撑框架定位3d对象的方法。
[0098]
图3示出了用于训练神经网络以根据单个二维图像重建具有多个对象的三维场景的示例性方法300的示意性概述。方法可由在一个或多个位置操作的一个或多个计算机执行。
[0099]
从包括多个2d图像的训练数据集中获得2d训练图像302。2d图像包括给定类型的一个或多个对象304(例如,一个或多个人类)。将3d可形变模型拟合(例如,迭代拟合)到输入图像302中的对象以提取一个或多个监督信号306用于单目3d重建。训练图像302被输入到神经网络308中,并且使用神经网络308的当前参数通过一系列神经网络层对训练图像302进行处理,以生成包括在输入训练图像302中的每个(预期)对象的候选3d表示的输出数据310。将输出数据与输入图像302的监督信号306进行比较以确定用于神经网络308的参数更新312。
[0100]
方法可迭代地执行,直到满足阈值状况。
[0101]
输入图像302和神经网络308可以采用如关于图1描述的相同形式。
[0102]
在可形变模型拟合/优化阶段期间,使用所有的可用的2d和3d基准真实数据来提供被最小化以获得估计3d形状的能量项(即,监督信号306)。例如,可使用在“holopose:holistic 3d human reconstruction in-the-wild”(holopose:在自然环境中整体3维人类重建)(r.alp guler和i.kokkinos,in the ieee计算机视觉和模式识别(cvpr)会议,june 2019.2,3,其内容通过引用并入本文)中描述的方法,其使用cnn驱动的可形变模型对2d图像的迭代拟合。
[0103]
拟合三维模型的步骤可通过将三维表示投影到二维图像平面上从而产生投影表示来执行。如果有多个视图可用,则可通过考虑透视投影的效果以及通过利用相同对象的多个视图来执行投影步骤。然后,可将投影表示的各个位置与单个二维图像中的对象进行比较,并且基于该比较,例如通过确定在训练图像302和重新投影图像中的对象界标位置的差异,来确定误差值。然后基于误差值调整融合的三维表示的参数。投影、比较、测量和调整可以被迭代地重复,直到测量误差值低于预定阈值或超过阈值迭代次数。
[0104]
一旦可形变模型拟合收敛,所估计3d表面被用作目标,或监督信号306用于网络308训练。例如,对象304(例如,人体)的“低多边形”表示,以覆盖显著对象(例如,人类界标(例如,面部部分、肢体连接等))的n(例如,n=536)个顶点表示网格。
[0105]
从可形变模型拟合到图像,测量在图像中存在的每个对象周围的那些顶点的所估计3d位置。然后神经网络308被训练以当在其感受域中呈现有对象304时使该k=nx3维向量回归。在存在多个对象的情况下,在不同的图像位置中期望有不同的响应。在输入图像302中对象的边界框的位置和/或在输入图像中的位置处的对象的存在/不存在可以被附加地用作监督信号306。
[0106]
对于具有越来越大的感受野(receptive field)的连续层的神经元提取区域特定特征的任务。可使用resnet-50主干,其具有速度和准确度的极好的折衷。可使用a-trous卷积,从而允许增加对人假设进行评估采用的空间密度并给减小漏检的数量。所得全卷积层的最后层的任务是预测其每个神经元处的多个输出,对应于假设处于相应位置处的人的属性。在一些实施例中,输出数据310还包括对象(例如人)的存在的概率。对象边界框的拐角也可被回归并形成输出数据310的部分。
[0107]
可以使用损失/目标函数l来执行对输出数据与输入图像302的监督信号306的比较。损失函数包括对候选3d表示和监督信号306中的3d表示之间的差异进行惩罚的项。这种损失函数的许多示例在本领域中是已知的,诸如l1或l2损失。损失函数还可包括对由神经网络308输出的候选边界框的位置和输入训练图像302中的基准真实边界框位置中的差异进行惩罚的项。这种损失函数的许多示例在本领域中是已知的,诸如l1或l2损失。损失函数还可包括基于该位置处的对象的实际存在/不存在来对神经网络308的输出概率进行惩罚的项。这种损失函数的许多示例在本领域中是已知的,诸如分类损失函数。
[0108]
在一些实施例中,损失可能仅在对象(例如人)存在的情况下对3d表示和边界框位置进行惩罚-应当理解,在对象不存在的情况下,框和3d形状可取任意值,但对象检测器将删除所得假设。
[0109]
参数更新312可通过对损失/目标函数应用优化过程来确定,诸如随机梯度下降。在确定每组参数更新之前,可在一批训练图像上对损失函数取平均。该过程可在训练数据集中的多批上进行迭代。
[0110]
在使用基于部分的方法来进行网格估计的实施例中,监督信号306中的3d表示可各自被划分成部分。可基于对象304的关键点将每个监督信号306划分成部分。例如,监督信号306可基于关节位置被划分成身体部分(例如,手、脚等)。当确定参数更新312时,将由神经网络308输出的部分网格v[p]与监督信号306中的对应部分网格进行比较。
[0111]
图4示出了用于训练神经网络以用于根据单个二维图像重建具有多个对象的三维场景的方法的流程图。该方法可由在一个或多个位置处操作的一个或多个计算机执行。该方法可对应于参考图3描述的训练方法。
[0112]
在操作4.1,接收一个或多个二维图像。2d图像可以采用参照图1描述的图像的形式。每个2d图像包括给定类型(例如,人类)的一个或多个对象。
[0113]
在操作4.2处,通过将对象的三维模型适配到每个二维图像来获得用于三维重建的训练信号。这有效地生成包括多个2d图像的标记训练数据集,每个2d图像与图像内的对象(例如,人类)的一个或多个3d表示相关联。
[0114]
拟合三维模型可通过以下步骤来执行:将三维表示投影到二维图像平面上,从而产生投影表示;将投影表示的相应位置与单个二维图像中的对象进行比较;基于该比较来测量误差值;以及基于该误差值来调整融合的三维表示的参数,其中所述比较、测量和调整被迭代地重复,直到满足阈值条件。阈值条件可以是所测量的误差值低于预定阈值和/或阈值迭代次数被超过。如果有多个视图可用,则可通过考虑透视投影的效果以及通过利用相同对象的多个视图来执行投影步骤。
[0115]
在操作4.3处,将所得的三维模型拟合结果用作用于训练深度机器学习模型的监督信号。可像上面关于图3所描述的那样训练深度机器学习模型。
[0116]
图5示出了用于训练神经网络以用于重建三维场景和对象重新识别的方法500的另一示例。该方法可由在一个或多个位置处操作的一个或多个计算机执行。
[0117]
方法500是上面关于图3所示和描述的方法的扩展,用以包括神经网络508的分支的训练以输出一个或多个重新识别(reid)嵌入向量516a、516b,作为输出数据510的附加部分。因此,关于图3描述的任何特征可附加地与关于图5描述的特征组合。根据关于图5描述的方法训练的神经网络508被赋予在一系列图像上维持对象/人身份的能力。这对于对象/人特定的参数平滑和随时间推移的信息的积累是至关重要的一一以及对于视频游戏体验也是如此,其中随着时间的推移,每个用户都一致地与独特角色相关联。
[0118]
在文献中通常通过两阶段架构来解决人/对象重新识别,其中人/对象首先由人/对象检测系统检测,并且对于每个检测的人/对象,裁剪图像并将其作为输入发送到分开的人识别网络。后者提供了高维嵌入,其作用类似于鉴别人/对象签名,该签名被训练成对干扰参数(例如相机位置、人/对象姿势、光照等)不变。这种策略具有在人的数量方面线性缩放的复杂性,而且在移动设备上也很难实现,为两阶段的。
[0119]
替代地,关于图1至图4描述的神经网络可以被扩展以使用教师-学生网络净化方法来适应对象/人重新识别(reid)任务。使用预训练的reid网络从对象/人类片段提取reid嵌入。这些reid嵌入被用作监督信号来训练神经网络的reid分支。该分支提供模拟教学网络的那些的reid嵌入,但例如可以是全卷积的,这意味着它的运行速度与对象的数量无关。
[0120]
将以这种方式训练的网络与重新识别和跟踪算法相结合会允许在具有高的人重叠、交互和遮挡的场景中保持对象/人身份,即使在用户暂时从场景中消失的情况下也是如此。这种重新识别和跟踪算法的示例可在“memory based online learning of deep representations from video streams”(根据视频流的基于记忆的深度表征在线学习)(f.pernici等人,cvpr 2018,salt lake city,ut,usa,june 18-22,2018,pages 2324-2334)中找到,其内容通过引用被并入于此。跨场景中的多个图像来维护对象/人识别可以允许不同的虚拟对象/皮肤跨时间持久地与图像中的每个对象/人相关联。
[0121]
2d训练图像502是从包括多个2d图像的训练数据集中获得的。2d图像包括给定类型(例如,人类)的一个或多个对象504a、504b(在所示的示例中,两个对象504a、504b,但通常可存在任何数量的对象)。3d可形变模型被拟合(例如,迭代拟合)到输入图像502中的对象,以提取一个或多个监督信号506用于单目3d重建。此外,从图像中裁剪每个对象504a、504b(例如,使用对象的基准真实边界框)并且将其分别输入到预训练的reid网络518中。预训练的reid网络518处理每个输入对象504a、504b的片段以生成“教师”重新识别嵌入520a、520b(在输入图像502中表示为对象i的e
ti
),其对输入对象504a、504b的身份进行编码。教师
重新识别嵌入e
ti
,520a、520b被用作用于训练神经网络508的重新识别分支的监督信号。
[0122]
将训练图像502输入到神经网络508中并且使用神经网络508的当前参数通过一系列神经网络层对训练图像502进行处理,以生成输出数据510,输出数据510包括在输入训练图像502中的每个(预期)对象的候选3d表示514a、514b和在输入训练图像502中的每个(预期)对象的“学生”重新识别嵌入516a、516b。将输出数据510与输入图像502的监督信号506和教师嵌入520a、520b进行比较,以确定用于神经网络508的参数更新512。
[0123]
教师reid嵌入520a、520b和学生reid嵌入516a、516b各自是表示单独对象身份的高维向量。例如,每个reid嵌入可以是n维向量。例如,n可以是256、512或1024。
[0124]
在使用损失/目标函数来确定参数更新512的情况下,损失/目标函数可包括将每个教师reid嵌入520a、520b与其对应的学生reid嵌入516a、516b进行比较的重新识别损失。重新嵌入损失可以是在每个教师reid嵌入520a、520b与其对应的学生reid嵌入516a、516b之间的l1或l2损失。
[0125]
图6示出了用于执行本文描述的任何方法的系统/装置的示意性示例。所示的系统/装置是计算设备的示例。本领域技术人员将理解,其他类型的计算设备/系统可替代地用于实现本文描述的方法,诸如分布式计算系统。这些系统/装置中的一个或多个可用于执行本文描述的方法。例如,第一计算设备(例如,移动计算设备)可用于执行上面关于图1和图2描述的方法,和/或第二计算设备可用于执行上面关于图3至图5描述的方法。在第一计算单元中使用的模型可以已经使用第二计算单元来训练了。
[0126]
装置(或系统)600包括一个或多个处理器602。一个或多个处理器控制系统/装置600的其他部件的操作。一个或多个处理器602例如可包括通用处理器。一个或多个处理器602可以是单核设备或多核设备。一个或多个处理器602可包括中央处理单元(cpu)或图形处理单元(gpu)。可替换地,一个或多个处理器602可包括专用处理硬件,例如具有嵌入式固件的risc处理器或可编程硬件。可包括多个处理器。
[0127]
系统/装置包括研究或易失性存储器604。一个或多个处理器可访问易失性存储器604以便处理数据并且可控制数据在存储器中的存储。易失性存储器604可包括任何类型的ram,例如静态ram(sram)、动态ram(dram),或者它可包括闪存存储器诸如sd卡。
[0128]
系统/装置包括非易失性存储器606。非易失性存储器606以计算机可读指令的形式存储用于控制处理器602的操作的操作指令集608。非易失性存储器606可以是任何类型的存储器,例如只读存储器(rom)、闪存存储器或磁驱动存储器。
[0129]
一个或多个处理器602被配置为执行操作指令608以致使系统/装置执行本文描述的任何方法。操作指令608可包括与系统/装置600的硬件部件相关的代码(即,驱动程序)以及与系统/装置600的基本操作相关的代码。一般而言,一个或多个处理器602执行操作指令608的一个或多个指令,这些指令永久或半永久存储在非易失性存储器606中,使用易失性存储器604来临时存储在执行所述操作指令608期间生成的数据。
[0130]
本文所述方法的具体实施可在数字电子电路、集成电路、专门设计的asic(专用集成电路)、计算机硬件、固件、软件和/或其组合中实现。这些可以包括计算机程序产品(诸如存储在例如磁盘、光盘、存储器、可编程逻辑设备上的软件),该计算机程序产品包括计算机可读指令,当由计算机(例如关于图6所述的计算机)执行时,这些计算机可读指令致使计算机执行本文所述的一个或多个方法。
[0131]
本文所述的任何系统特征也可作为方法特征被提供,反之亦然。如本文所使用,装置加上功能特征可在它们的对应结构发明被替换地表示。特别地,方法方面可应用于系统方面,反之亦然。
[0132]
此外,一个方面中的任何、一些和/或所有特征可以按照任何适当的组合应用于任何其他方面中的任何、一些和/或所有特征。还应理解,在本发明的任何方面中描述和定义的各种特征的特定组合可以被独立地实现和/或提供和/或使用。
[0133]
尽管已经示出和描述了几个实施例,但本领域技术人员将理解,在不脱离本公开的原理的情况下,可在这些实施例中进行改变,其范围在权利要求中定义。
[0134]
在方法步骤或过程的一般上下文中描述了本文描述的各种示例性实施例,在一个方面,这些方法步骤或过程可由在计算机可读介质中具体化的计算机程序产品来实现,该计算机程序产品包括由网络环境中的计算机执行的计算机可执行指令,例如程序代码。计算机可读介质可包括可移除和不可移除的存储设备,包括但不限于只读存储器(rom)、随机存取存储器(ram)、光盘(cd)、数字通用盘(dvd)等。通常,程序模块可包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、部件、数据结构等。计算机可执行指令、相关联数据结构和程序模块表示用于执行本文公开的方法的步骤的程序代码的示例。此类可执行指令或相关数据结构的特定序列表示用于实现在此类步骤或过程中描述的功能的对应动作的示例。
[0135]
在前述说明书中,已经参考许多具体细节描述了实施例,这些具体细节可随实施方式而变化。可对所描述的实施例进行某些适配和修改。通过考虑本文公开的本发明的说明和实践,其他实施例对本领域技术人员来说是显而易见的。本说明书和示例仅被认为是示例性的,其中本发明的真正范围和精神由下面的权利要求指示。图中所示的步骤序列仅用于说明目的,而不旨在限于任何特定的步骤序列。因此,本领域技术人员可理解,在实现相同方法的同时,可以按照不同的顺序执行这些步骤。
[0136]
在附图和说明书中,已经公开了示例性实施例。然而,可对这些实施例进行许多变化和修改。因此,尽管采用了特定术语,但其仅在一般性和描述性意义上使用,而不是出于限制的目的,实施例的范围由本文提供的示例实施例定义。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献