变形基础学习的制作方法

文档序号:26142859发布日期:2021-08-03 14:27阅读:139来源:国知局
变形基础学习的制作方法

本发明涉及计算机程序和系统的领域,并且更具体地涉及用于使3d建模对象变形的机器学习的方法、系统和程序。



背景技术:

市场上提供了用于对象的设计、工程和制造的多个系统和程序。cad是计算机辅助设计的缩写,例如它涉及用于设计对象的软件解决方案。cae是计算机辅助工程的缩写,例如它涉及用于模拟未来产品的物理行为的软件解决方案。cam是计算机辅助制造的缩写,例如它涉及用于定义制造过程和操作的软件解决方案。在这样的计算机辅助设计系统中,图形用户界面在技术效率方面起着重要的作用。这些技术可以被嵌入在产品生命周期管理(plm)系统内。plm是指一种商业策略,其帮助公司共享产品数据、应用公共流程、以及利用企业知识进行从构思到产品生命结束的跨扩展企业构思的产品开发。由达索系统(以catia、enovia和delmia为商标)提供的plm解决方案提供了:工程中心,其组织产品工程知识;制造中心,其管理制造工程知识;以及企业中心,其实现企业集成和连接到工程中心和制造中心二者中。系统总共递送了链接产品、过程、资源的开放式对象模型,以实现动态的、基于知识的产品创建和决策支持,从而驱动优化的产品定义、制造准备、生产和服务。

在此上下文和其他上下文中,使3d建模对象变形正在获得广泛的重要性。

以下论文涉及此领域,并且在下文中被提及:

[1]w.wang,d.ceylan,r.mech,andu.neumann.3dn:3ddeformationnetwork.inconferenceoncomputervisionandpatternregognition(cvpr),2019.

[2]t.groueix,m.fisher,v.g.kim,b.russell,andm.aubry.atlasnet:apapier-approachtolearning3dsurfacegeneration.inconferenceoncomputervisionandpatternregognition(cvpr),2018.

[3]reconstructinga3dmodeledobject.patentus9978177b2,grantedin2018.mehrandvincentguitteny.

[4]d.jack,j.k.pontes,s.sridharan,c.fookes,s.shirazi,f.maire,anda.eriksson.learningfree-formdeformationsfor3dobjectreconstruction.inasianconferenceoncomputervision(accv),2018.

[5]i.kokkinos,anda.yuille.unsupervisedlearningofobjectdeformationmodels.ininternationalconferenceoncomputervision(iccv),2007.

[6]j.mairal,f.bach,andj.ponce.sparsemodelingforimageandvisionprocessing.newfoundationsandtrends,2014.

[7]v.blanzandt.vetter.amorphablemodelforthesynthesisof3dfaces.insiggraph,1999.

[8]c.qi,h.su,k.mo,andl.guibas.pointnet:deeplearningonpointsetsfor3dclassificationandsegmentation.inconferenceoncomputervisionandpatternregognition(cvpr),2017.

[9]r.hanocka,a.hertz,n.fish,r.giryes,s.fleishman,andd.cohen-or.meshcnn:anetworkwithanedge.insiggraph,2019.

[10]eloimehr,arianejourdan,nicolasthome,matthieucord,andvincentguitteny.disconet:shapeslearningondisconnectedmanifoldsfor3dediting.iniccv2019.

然而,仍然存在针对用于使3d建模对象变形的改进的解决方案的需求。



技术实现要素:

因此,提供了一种计算机实现的机器学习方法。该方法包括提供3d建模对象的数据集。该方法进一步包括学习神经网络。神经网络被配置用于推断输入3d建模对象的变形基础。该方法可以被称为“学习方法”。

这构成了用于使3d建模对象变形的改进的解决方案。

显著地,通过学习方法学习的神经网络被配置用于将3d建模对象作为输入并且输出3d建模对象的变形基础。变形基础包括各自形成输入3d建模对象的变形的矢量。这允许获得3d建模对象的许多变形,这是由于可以将基础的矢量进行线性组合,每种可能的线性组合产生3d建模对象的不同变形。该学习方法因此允许增加3d建模对象的变形的可能性。此外,该学习方法允许通过一劳永逸地计算变形基础、通过经学习的神经网络的单个应用来这样做,使得在那之后仅线性组合需要被执行。这允许高效地计算变形,尤其是在计算时间和资源使用方面。还应当注意的是,神经网络不要求3d建模对象的目标变形,以便产生变形基础:神经网络独自产生变形矢量的基础,其然后可以将变形矢量进行线性组合以达到输入3d建模对象的目标变形。该学习方法因此具有强大的泛化能力,并且使输入3d建模对象的表现力(expressiveness)最大化。

神经网络可以推断出局部变形基础,该局部变形基础可以包括局部变形矢量,即,每个矢量表示输入3d建模对象的局部(例如,小)变形。这允许使3d建模对象在其局部邻域(即,在3d建模对象的附近)实际地变形。换句话说,神经网络在这种意义上输出了令人满意的基础:该基础允许以物理上可接受的方式使输入对象朝着接近的对象变形。

此外,在数据集的3d建模对象上学习神经网络,这些3d建模对象至少大多数(例如,全体)是合理的(plausible)3d建模对象。由此,神经网络产生了输入3d建模对象的变形的合理矢量的基础。如先前所讨论的,这些矢量可以被线性地组合,由此例如在输入3d建模对象的局部邻域中产生其合理的变形。

此外,所提供的数据集不需要为了学习神经网络来推断输入3d建模对象的合理变形矢量的基础而由相同类别的对象(例如,都是椅子)构成。具体地,如果所提供的数据集由或实质上由相同类别的大量3d建模对象(例如,都是椅子)构成,则神经网络将公认地推断出此类别的对象(例如,椅子)的物理上现实的变形基础。然而,即使所提供的数据集的3d建模对象形成不同的类别(例如,椅子和长凳),并且即使这些类别没有由所提供的数据集内的大量3d建模对象表示,神经网络也可以这样做。显著地,该学习不要求用指示其相应类别的标签(如果有)来注释所提供的数据集的对象。此外,学习不要求使用模板建模的对象,例如对象类别的平均形状。另外,所提供的数据集不需要根据对象的类别被聚合。这进一步提高了神经网络的泛化能力。

然而,当所提供的数据集包括形成流形(manifold)的两个或更多个类别的3d建模对象(例如,椅子和长凳)时,神经网络的泛化能力被进一步提高。实际上,流形可以由不同类别的对象形成,这些对象之间具有至少二对二的连接性,即,一定量的共享特征/特性(例如,椅子和长凳也是如此)。因此,对于流形内的许多对象类别,变形基础的单个矢量可以是有意义的合理变形(例如,椅子和长凳的座位可以被类似地变形)。换句话说,如果所提供的数据集形成3d建模对象(例如,椅子和长凳)的流形,则以这种方式学习神经网络:它在不同类别的对象的变形之间相互关联。即使所提供的数据集由形成流形的不同类别的少量建模对象构成,这也允许神经网络学习推断物理上现实的/可接受的变形基础。这提高了神经网络的泛化能力。

一般而言,学习赋予神经网络的泛化能力使得学习要求训练数据集(即,所提供的数据集),与其他深度学习框架相比,该训练数据集每个类别包括更少的3d建模对象,而不会影响神经网络推断变形基础的能力。具体地,由于神经网络能够在不同类别上学习到的变形之间相互关联,因此每个类别需要更少的对象。然而,如果所提供的数据集仅包括对象的两个非常不同类别中的一个类别,则可能需要更大量的对象。

通过使用由神经网络输出的变形基础获得的变形可以用于3d建模中,例如用于3d编辑应用。由神经网络推断出的基础还可以用于其他应用中,例如形状匹配和非线性变形推断,如在下文中进一步讨论的。此外,神经网络提供了输入3d建模对象的线性变形,其在用于实时应用时是高效的。

该学习方法可以包括以下内容的一个或多个:

-神经网络包括:

ο编码器,其被配置为将3d建模对象作为输入并且输出表示输入3d建模对象的潜在矢量,以及

ο深度前馈神经网络,其被配置为将由编码器输出的潜在矢量作为输入,并且输出由潜在矢量表示的3d建模对象的变形基础。

-学习包括:针对数据集的至少一部分,使损失最小化,该损失针对数据集的至少一部分的每个3d建模对象以及针对具有矢量的每个候选变形基础,惩罚3d建模对象按矢量的线性组合的变形与另一3d建模对象之间的距离;

-学习是逐小批量(mini-batch)执行的,并且包括:针对每个小批量,使损失最小化;

-学习包括:基于距数据集的至少一部分的3d建模对象的距离,在数据集的至少一部分的3d建模对象之中选择所述另一3d建模对象;

-所述另一3d建模对象是在数据集的至少一部分的3d建模对象之中,与数据集的至少一部分的3d建模对象最接近的3d建模对象;

-学习是逐小批量执行的,并且包括:针对每个小批量,使损失最小化,并且在小批量的3d建模对象之中选择所述最接近的3d建模对象;

-该损失惩罚3d建模对象按矢量的线性组合的变形与所述另一3d建模对象之间的距离的最小值;

-损失是以下类型:

其中:

·e1,...,en是数据集至少一部分的3d建模对象,n是数据集的至少一部分中的对象数量,

·p1,...,pn是分别从e1,...,en获得的点云,

·针对每个3d建模对象ei,gw(fw(ei),pi)1,...,gw(fw(ei),pi)n是3d建模对象的候选变形基础的矢量,n是候选变形基础的大小,

·是3d建模对象ei按矢量的线性组合的变形,α1,...,αn是线性组合的系数,

·qi是从所述另一3d建模对象获得的点云,

·dch是距离,

·神经网络具有权重,w表示神经网络的权重,

·fw是编码器,其被配置为将3d建模对象作为输入并且输出表示输入3d建模对象的潜在矢量,以及

·gw是深度前馈神经网络,其被配置为:将由编码器输出的潜在矢量作为输入,并且输出由潜在矢量表示的3d建模对象的变形基础;

-损失进一步惩罚将线性组合的系数作为输入的稀疏诱导函数(sparsity-inducingfunction);和/或

-损失进一步奖励候选变形基础的标准正交性(orthonormality)。

进一步提供了一种能够根据学习方法进行学习的神经网络,例如通过学习方法直接学习(即,已经学习)的神经网络。

进一步提供了一种使用神经网络的方法。

使用方法可以包括:提供神经网络(例如,通过执行学习方法),以及将神经网络应用于一个或多个3d建模对象(即,将神经网络用于推断各自与相应输入3d建模对象相对应的一个或多个变形基础)。使用方法可以形成学习方法的应用。该应用可以是深度框架重构、形状匹配或3d编辑。使用方法可以被集成到学习方法,例如作为学习神经网络之后执行的步骤,在这种情况下,学习方法和使用的方法形成了一种用于推断3d建模对象的变形的计算机实现的方法。

进一步提供了一种包括指令的计算机程序,当在计算机上执行该计算机程序时,所述指令使得计算机执行学习方法和/或使用的方法。

进一步提供了一种计算机可读数据存储介质,其上记录有计算机程序和/或神经网络。

进一步提供了一种计算机,该计算机包括耦合到存储器的处理器,该存储器在其上记录有计算机程序和/或神经网络。

附图说明

现在将通过非限制性示例并且参考附图来描述本发明的实施例,其中:

图1示出了计算机的示例;并且

图2至图4示出了方法。

具体实施方式

学习方法和使用的方法是计算机实现的方法。

这意味着方法的步骤(或实质上所有步骤)由至少一台计算机或任何相似系统执行。因此,方法的步骤由计算机执行,可能是全自动执行,也可能是半自动执行。在示例中,可以通过用户-计算机交互来执行触发方法的至少一些步骤。所要求的用户-计算机交互级别可以取决于所预见的自动级别,并且与实现用户意愿的需求保持平衡。在示例中,此级别可以是用户定义的和/或预定义的。

方法的计算机实施方式的典型示例是用适于此目的的系统执行该方法。该系统可以包括耦合到存储器的处理器和图形用户界面(gui),该存储器在其上记录有计算机程序,该计算机程序包括用于执行该方法的指令。存储器还可以存储数据库。存储器是适于这种存储的任何硬件,可能包括若干个物理不同的零件(例如,一个用于程序,而可能一个用于数据库)。

这些方法通常操纵建模对象。建模对象是由被存储在例如数据库中的数据定义的任何对象。通过扩展,表达“建模对象”指定数据本身。根据系统的类型,可以通过不同种类的数据来定义建模对象。该系统实际上可以是cad系统、cae系统、cam系统、pdm系统和/或plm系统的任何组合。在那些不同的系统中,建模对象由对应的数据定义。因此,可以提到cad对象、plm对象、pdm对象、cae对象、cam对象、cad数据、plm数据、pdm数据、cam数据、cae数据。然而,这些系统并不是彼此排斥的,这是由于建模对象可以通过与这些系统的任何组合相对应的数据来定义。因此,系统也可以同时是cad和plm系统。

所谓cad系统,另外意味着至少适于在建模对象的图形表示的基础上设计建模对象的任何系统,例如catia。在这种情况下,定义建模对象的数据包括允许建模对象的表示的数据。cad系统可以例如使用边或线(在某些情况下利用面或表面)来提供cad建模对象的表示。线、边或表面可以以各种方式表示,例如非均匀有理b样条(nurbs)。具体地,cad文件包含可以从中生成几何结构的规范,这些规范转而允许表示被生成。建模对象的规范可以被存储在单个cad文件或多个cad文件中。表示cad系统中的建模对象的文件的典型大小在每零件一兆字节的范围中。并且建模对象通常可以是数千个零件的组装件。

在cad的上下文中,建模对象通常可以是3d建模对象,例如表示产品(例如,零件或零件的组装件,或者可能是产品的组装件)。所谓“3d建模对象”,意味着由允许其3d表示的数据建模的任何对象。3d表示允许从所有角度查看零件。例如,3d建模对象当被3d表示时,可以被处理并且围绕其轴中的任一个或围绕显示该表示的屏幕中的任何轴进行旋转。这特别地排除了不是3d建模的2d图标。3d表示的显示促进设计(即,提高设计人员统计地完成其任务的速度)。由于产品的设计是制造过程的一部分,因此这加快了行业中的制造过程。

3d建模对象可以表示在用例如cad软件解决方案或cad系统完成其虚拟设计之后在现实世界中要被制造的产品的几何结构,例如(例如,机械)零件或零件的组装件(或等效地零件的组装件,这是由于从方法的角度看零件的组装件可以被看作是零件本身,或者这些方法可以被独立地应用于组装件的每个零件),或者更一般地任何刚体组装件(例如,移动机构)。cad软件解决方案允许在各种不受限的工业领域中的产品设计,包括:航空航天、建筑、建设、消费品、高科技设备、工业装备、运输、船舶和/或海上油气生产或运输。这些方法中涉及的任何3d建模对象可以因此表示一种工业产品,该工业产品可以是任何机械零件,例如:陆地载具(包括例如汽车和轻型卡车装备、赛车、摩托车、卡车和机动车装备、卡车和公共汽车、火车)的零件,航空载具(包括例如机身装备、航空航天装备、推进装备、国防产品、航空装备、航天装备)的零件,海上载具(包括例如海军装备、商用船、海上装备、游艇和工作船、船舶装备)的零件,通用机械零件(包括例如工业制造机械、重型移动机械或装备、安装的装备、工业装备产品、金属制品、轮胎制品),机电或电子零件(包括例如消费电子产品、安全和/或控制和/或仪器产品、计算和通信装备、半导体、医疗设备和装备),消费品(包括例如家具、家居和花园产品、休闲用品、时尚产品、硬商品零售商的产品、软商品零售商的产品),包装(包括例如食品和饮料和烟草、美容和个人护理、家用产品包装)。

图1示出了系统的示例,其中,该系统是客户端计算机系统,例如用户的工作站。

该示例的客户端计算机包括:连接到内部通信bus1000的中央处理单元(cpu)1010、也连接到bus的随机存取存储器(ram)1070。客户端计算机被进一步提供有图形处理单元(gpu)1110,其与被连接到bus的视频随机存取存储器1100相关联。视频ram1100在本领域中也被称为帧缓冲器。大容量存储设备控制器1020管理对大容量存储器设备(例如,硬盘驱动器1030)的存取。适合于有形地体现计算机程序指令和数据的大容量存储器设备包括所有形式的非易失性存储器,包括:作为示例的半导体存储器设备,例如eprom、eeprom和闪速存储器设备;磁盘,例如内部硬盘和可移动磁盘;磁光盘;以及cd-rom磁盘1040。上述任一项可以通过专门设计的asic(专用集成电路)进行补充或者被合并到其中。网络适配器1050管理对网络1060的访问。客户端计算机还可以包括触觉设备1090,例如光标控制设备、键盘等。在客户端计算机中使用光标控制设备以允许用户将光标选择性地定位在显示器1080上的任何期望的位置处。另外,光标控制设备允许用户选择各种命令并且输入控制信号。光标控制设备包括多个信号生成设备,以用于将控制信号输入到系统。通常,光标控制设备可以是鼠标,该鼠标的按钮被用于生成信号。可替代地或另外地,客户端计算机系统可以包括敏感垫和/或敏感屏幕。

该计算机程序可以包括计算机可执行的指令,这些指令包括用于使得上述系统执行方法的单元。该程序可以是可记录在任何数据存储介质(包括系统的存储器)上的。该程序可以例如以数字电子电路或以计算机硬件、固件、软件或它们的组合来实现。该程序可以被实现为装置(例如,有形地体现在机器可读存储设备中以用于由可编程处理器执行的产品)。方法步骤可以通过可编程处理器执行指令程序来执行,以通过对输入数据进行操作并且生成输出来执行方法的功能。处理器可以因此是可编程的并且被耦合,以从数据存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,以及向数据存储系统、至少一个输入设备和至少一个输出设备发送数据和指令。可以以高级过程或面向对象的编程语言实现应用程序,或者如果期望,以汇编或机器语言实现应用程序。在任何情况下,该语言可以是编译语言或解释语言。该程序可以是完整的安装程序或更新程序。在任何情况下,程序在系统上的应用都会产生用于执行这些方法的指令。

现在讨论提供3d建模对象的数据集。在此讨论之前,现在讨论其中涉及的数据结构。

本文中的任何3d建模对象都可以形成3d形状的离散几何表示,例如表示来自现实世界的对象,例如先前所讨论的机械零件。离散几何表示在本文中是一种数据结构,其包括数据段的离散集合。每个数据段表示位于3d空间中的相应几何实体。每个几何实体表示3d形状的相应位置(换言之,由3d形状表示的实体构成的材料的相应部分)。几何实体的聚合(即,并集或并列)共同表示3d形状。本文中的任何离散几何表示可以在示例中包括高于100、1000或10000的多个这样的数据段。

本文中的任何离散几何表示可以例如是3d点云,每个几何实体是一个点。本文中的任何离散几何表示可以可替代地是3d网格,每个几何实体是网格分片(meshtile)或面。本文中的任何3d网格可以是规则的或不规则的(即,由相同类型的面组成或不由相同类型的面组成)。本文中的任何3d网格可以是多边形网格,例如三角形网格。本文中的任何3d网格可以可替代地是b-rep。本文中的任何3d网格可以从3d点云获得,例如通过对3d点云进行三角剖分(例如,用delaunay三角剖分)。可以例如在3d重构过程内根据对真实对象的物理测量结果来确定本文中的任何3d点云。3d重构过程可以包括:提供真实对象;提供各自被配置用于获取相应的物理信号的一个或多个物理传感器;以及通过对真实对象操作一个或多个物理传感器(即,用每个传感器扫描真实对象)来获取一个或多个相应的物理信号。根据任何已知的技术,3d重构可以然后基于测量结果来自动地确定3d点云和/或3d网格。一个或多个传感器可以包括多个(例如,rgb和/或图像或视频)相机,并且确定可以包括从运动恢复结构分析(structure-from-motionanalysis)。一个或多个传感器可以可替代地或另外地包括一个或多个深度传感器(例如,在rgb深度相机上),并且确定可以包括根据深度数据的3d重构。一个或多个深度传感器可以例如包括激光器(例如,激光雷达)或超声发射器-接收器。

可以例如通过在3d建模对象上进行光线投射或对3d建模对象进行细分,来从表示实体的蒙皮(即,外表面)的3d建模对象(例如,对应于表示蒙皮(即,确切的表面)的b-rep模型)中可替代地获得本文中的任何3d点云或3d网格。可以根据任何3d建模对象渲染过程来执行细分。可以在任何cad系统上对这种渲染过程进行编码,以便显示3d建模对象的图形表示。3d建模对象可以由用户用cad系统设计或已经由用户用cad系统设计。

提供数据集可以包括例如通过创建3d建模对象来形成数据集。可替代地,提供数据集可以包括从(例如,远程的)存储器中取回数据集,其中,数据集在其创建之后已经被存储。数据集的3d建模对象可以全部是3d点云,例如由3d网格的预处理产生。可替代地,它们可以全部是3d网格。在这种情况下,学习方法可以包括对这些网格的预处理,其将它们采样到3d点云中。预处理可以然后包括使每个3d网格居中。预处理可以然后包括独立地重新调节每个3d网格的尺寸,使得网格顶点恰好适于单位立方体。预处理可以然后包括:例如通过在6个正交视图上对每个归一化形状进行光线投射,从数据集中的每个归一化形状提取密集点云。预处理可以然后包括对每个点云进行均匀地子采样(例如,通过将每个点云下采样到相同大小)。子采样可以从点云的随机点开始,并且迭代地挑选点云中的距已经选择的点最远的点,从而达到所期望的点数。

数据集的3d建模对象可以是合理的(例如,现实的)3d建模对象。合理的3d建模对象可以指定表示真实世界对象的3d建模对象,例如合理的机械零件。合理的机械零件可以指定在现实世界的工业制造过程中可实际制造的机械零件。合理的机械零件可以是指一种机械零件,其遵守为了在现实世界的工业制造过程中实际制造该机械零件必须遵守的所有约束。约束可以包括以下各项中的一个或多个:机械约束(例如,由经典力学定律得出的约束)、功能约束(例如,与一旦被制造就要由机械零件执行的一个或多个机械功能有关的约束)、制造约束(例如,涉及在用于制造机械零件的一个或多个制造过程期间将一个或多个制造工具应用于机械零件的能力的约束)、结构约束(例如,涉及机械零件的强度和/或阻力的约束)、和/或组装件约束(例如,定义机械零件如何可以与一个或多个其他机械零件组装的约束)。

如先前所讨论的,所提供的数据集的3d建模对象可以全部或实质上全部属于3d建模对象的单个类别。可替代地,它们可以形成3d建模对象的不同类别,例如所述类别形成流形。在任何情况下,数据集的3d建模对象各自表示来自现实世界的相应对象,例如先前所讨论的机械零件。

现在讨论神经网络的学习。

如从机器学习领域本身已知的,由神经网络对输入的处理包括将操作应用于输入,这些操作由包括权重值的数据定义。学习神经网络因此包括:基于被配置用于这种学习的数据集来确定权重值,这种数据集可能被称为学习数据集或训练数据集。为此,数据集包括各自形成相应训练样本的数据段。训练样本表示神经网络在被学习后要被使用的情况的多样性。本文所引用的任何数据集都可以包括高于1000、10000、100000或1000000的训练样本数量。在本文中,在所提供的数据集上学习神经网络,这意味着所提供的数据集是神经网络的学习/训练数据集。该学习可以通过任何合适的已知方法来执行。

神经网络被配置用于推断输入3d建模对象的变形基础。换言之,神经网络将3d建模对象作为输入,并且输出3d建模对象的变形基础。为此,输入3d建模对象与数据集的3d建模对象具有相同的数据类型。例如,如果数据集的3d建模对象是3d网格,则输入3d建模对象也是3d网格。可替代地,如果数据集的3d建模对象是3d点云,则输入3d建模对象也是3d点云。尽管如此,3d建模对象可以是3d点云,该3d点云是从网格的采样产生的。变形基础是矢量的集合,每个矢量都是变形的方向。可以对矢量进行线性组合以使输入3d建模对象变形,具有其系数(也被称为幅度)集合的线性组合会产生变形。可以以这种方式对矢量进行线性组合:如果线性组合足够小,则变形输入3d建模对象接近输入3d建模对象。在这种情况下,其变形是现实的。在数学上,变形是现实的,只要其流形保持在切线空间上足够接近变形的位置,该切线空间是由变形基础定义的。变形基础可以是线性代数意义上的基础,即,线性独立的矢量的集合,该基础可能是归一化的,例如是标准正交的。具体地,学习目的在于使神经网络推断或至少倾向于推断线性独立(例如,不相关和/或标准正交的,如下文进一步讨论的)的变形矢量的基础。变形基础可以具有固定的大小(例如,在2和10个矢量之间,或者多于10个矢量)。换言之,神经网络可以总是(即,针对每个输入3d建模对象)输出具有相同固定数量的矢量的变形基础。在数据集由合理的3d建模对象构成的情况下,神经网络会推断3d建模对象的合理变形矢量的基础,这是因为它为这样做而被学习。

神经网络具有被配置用于将3d建模对象作为输入并且输出其变形基础的架构。该神经网络可以包括编码器和深度前馈神经网络。编码器被配置为将3d建模对象作为输入并且输出表示输入3d建模对象的潜在矢量。编码器可以因此被配置为将3d网格或例如从3d网格采样的3d点云作为输入。深度前馈神经网络被配置为将由编码器输出的潜在矢量作为输入,并且输出由潜在矢量表示的3d建模对象的变形基础。编码器架构可以基于pointnet(例如,在先前引用的参考文献[8]中进行了描述,其通过引用并入本文)或其任何扩展。可替代地,编码器架构可以使用网格拓扑结构(即,如果数据集的3d建模对象是3d网格),例如如在meshcnn中完成的(例如,参见先前引用的参考文献[9],其通过引用并入本文)。

学习可以包括:针对数据集的至少一部分,使损失最小化。针对数据集的至少一部分的每个3d建模对象以及针对具有矢量的每个候选变形基础,损失惩罚3d建模对象按矢量的线性组合的变形与另一3d建模对象之间的距离。

现在讨论损失的最小化。

数据集的至少一部分是数据集的3d建模对象的样本。例如,数据集的至少一部分可以是小批量,学习在这种情况下是逐小批量执行的,并且包括:针对每个小批量,使损失最小化。从机器学习领域本身已知逐小批量学习的构思。例如,学习可以实现任何已知的小批量随机优化方法,例如小批量随机梯度下降。如从机器学习领域本身已知的,逐小批量学习提高了学习效率。

针对数据集的至少一部分的每个3d建模对象,学习评估由神经网络利用其当前权重值输出的建模对象的变形基础。此计算出的变形基础形成了3d建模对象的候选变形基础。损失惩罚3d建模对象按此候选基础矢量的线性组合的变形与另一3d建模对象之间的距离。这意味着当3d建模对象按此候选基础矢量的线性组合的变形与所述另一3d建模对象之间的距离较大时,损失趋向于增加。如果是这种情况,使损失最小化的学习会修改神经网络的权重,以降低损失值,因此产生新的候选。学习这样做(例如,逐小批量),直到损失达到其最小值或至少足够小的值(例如,相对于收敛标准)。

所述另一3d建模对象可以是目标对象,即,其中,矢量的线性组合用于使3d建模对象变形。这允许训练神经网络以推断变形的基础。例如,所述另一3d建模对象可以是:在数据集的至少一部分的3d建模对象之中,与数据集的至少一部分的3d建模对象接近的3d建模对象。换言之,学习可以显著地包括:基于距数据集的至少一部分的3d建模对象的距离,在数据集的至少一部分的3d建模对象之中选择所述另一3d建模。选择可以包括:计算数据集的至少一部分的每个3d建模对象与数据集的至少一部分的所述3d建模对象之间的距离,以及评估哪些3d建模对象是接近的,即,对于哪些3d建模对象该距离小。然后,选择可以选择该距离小的3d建模对象。在示例中,选择可以评估哪个3d建模对象是最接近的,即,对于哪个3d建模对象,该距离是最小的。换言之,选择计算距离的最小值,并且评估哪个3d建模对象会产生此最小值。在这些示例中,所述另一3d建模对象是在数据集的至少一部分的3d建模对象之中,与数据集的至少一部分的3d建模对象最接近的3d建模对象。在示例中,可以逐小批量执行学习,并且学习包括:针对每个小批量,使损失最小化并且在小批量的3d建模对象之中选择所述最接近的3d建模对象。换句话说,选择另一3d建模对象是在小批量的对象之中,数据集的至少一部分是小批量。

距数据集的至少一部分的3d建模对象的所述距离可以是任何距离,例如3d建模对象之间的距离,例如点云或3d网格之间的3d距离。在示例中,该距离可以是在潜在空间中的距离,如现在所讨论的。

具体地,在这些示例中,学习方法可以包括:例如在学习之前,例如在学习方法的初始阶段处,提供另一编码器,该另一编码器被配置为:将所提供的数据集的3d建模对象作为输入,并且输出编码此3d建模对象的潜在矢量。可以在自动编码器框架中、在分类任务中或者通过任何其他机器学习方法训练所述另一编码器,以便学习3d建模对象的有意义的潜在空间,如从机器学习领域本身已知的。提供所述另一编码器可以包括训练所述另一编码器。可替代地,所述另一编码器可以被预先训练。在这些示例中,例如第一3d建模对象和第二3d建模对象之间的距离可以是:在将所述另一编码器应用于第一3d建模对象的结果和将所述另一个编码器应用于第二3d建模对象的结果之间的所述另一编码器的潜在空间中的距离。此潜在空间距离允许训练神经网络用更高的准确性推断变形的基础,这是由于由所述另一编码器输出的潜在矢量捕获了编码3d建模对象的语义。换句话说,所述编码器相对于语义隐式地聚合数据集。这允许将所述另一3d建模对象确定为与数据集的至少一部分的所述3d建模对象最类似的3d建模对象。例如与3d建模对象空间中的距离相比(其可能花费更多来计算),使用这种潜在空间距离因此提高了学习的准确性以及效率。

选择所述另一3d建模对象可以在最小化之前被执行。例如,将所述另一编码器应用于数据集的3d建模对象的结果可以被预先计算,即,在最小化之前被计算。

线性组合具有系数,每个系数对应于组合中的相应矢量的贡献。可以在学习期间通过神经网络计算系数。可替代地,它们可以是在学习期间被执行的优化的结果。

损失可以惩罚3d建模对象按矢量的线性组合的变形与所述另一3d建模对象之间的距离的最小值。这选择了按线性组合的最佳变形,其是当使损失最小化时使距离最小化的变形。最小值可以例如是在线性组合的系数的所有可能值之中,3d建模对象按矢量的线性组合的变形与所述另一3d建模对象之间的距离的最小值。损失惩罚最小值,原因是当最小值较大时,损失趋向于增加。如果是这种情况,则使损失最小化的学习修改神经网络的权重以降低损失值。学习这样做(例如,逐小批量),直到损失达到其最小值或至少足够小的值(例如,相对于收敛标准)。

损失可以是以下类型:

其中:

·e1,...,en是数据集的至少一部分的3d建模对象,n是数据集的至少一部分中的对象数量,

·p1,...,pn是分别从e1,...,en获得的点云,

·针对每个3d建模对象ei,gw(fw(ei),pi)1,...,gw(fw(ei),pi)n是3d建模对象的候选变形基础的矢量,n为候选变形基础的大小,

·是3d建模对象ei按矢量的线性组合的变形,α1,...,αn是线性组合的系数,

·qi是从所述另一3d建模对象获得的点云,

·dch是距离,

·神经网络具有权重,w表示神经网络的权重,

·fw是编码器,其被配置为将3d建模对象作为输入并且输出表示输入3d建模对象的潜在矢量,以及

·gw是深度前馈神经网络,其被配置为将由编码器输出的潜在矢量作为输入,并且输出由潜在矢量表示的3d建模对象的变形基础。

e1,...,en可能已经是3d点云,在这种情况下,e1=p1,...,en=pn。可替代地,e1,...,en可以是3d网格,在这种情况下,p1,...,pn可以由对e1,...,en的采样产生。dch可以是3d点云之间的任何3d距离,例如地动距离(earthmoverdistance)或倒角距离(chamferdistance)。dch可以在示例中是以下类型:

qi可以如下进行计算。令f′为先前讨论的另一编码器。然后针对每个i,学习方法确定然后,qi由qi=pi′给出。如先前所讨论的,可以预先计算矢量f′(ei)。

针对每个3d建模对象和每个候选变形基础,损失可以进一步惩罚稀疏诱导函数(例如,其最小值),该稀疏诱导函数将线性组合的系数作为输入。如先前所讨论的,稀疏函数可以例如是线性组合的系数的l1-范数(例如,参见参考文献[6],其通过引用并入本文)。换言之,当稀疏诱导函数(例如,其最小值)较大时,损失趋向于增加。如果是这种情况,则使损失最小化的学习修改神经网络的权重以降低损失值。学习这样做(例如,逐小批量),直到损失达到其最小值或至少足够小的值(例如,相对于收敛标准)。在这种情况下,损失可以是以下类型:

λ是一个权衡参数(这是机器学习领域公知的概念),φ是稀疏诱导函数,例如l1范数(例如,参见先前引用的参考文献[6],其通过引用并入本文),(α1,...,αp)是系数的矢量,也被称为幅度的矢量。

这允许在学习期间使系数/幅度稀疏。最终,这允许神经网络学习输出不相关的变形基础矢量,这进一步提高了学习方法的泛化能力。显著地,以这种方式学习的神经网络输出了令人满意的基础,这是由于其稀疏性允许使用少量的矢量来计算按基础矢量的线性组合的输入3d建模对象的变形。此外,输出基础是或至少倾向于是线性代数意义上的基础。

针对每个3d建模对象和每个候选变形基础,损失可以进一步奖励候选变形基础的标准正交性。换言之,损失可以进一步包括捕获如由神经网络用其当前权重值推断的3d建模对象的变形基础的标准正交性的项,当变形基础趋向于标准正交时,该项趋向于较小。在这种情况下,损失可以是以下类型:

δ是一个权衡参数(其是从机器学习领域公知的概念)。这进一步允许神经网络学习输出不相关的变形基础矢量,这是由于它们趋向于标准正交。由此,这种基础是或者至少倾向于是线性代数意义上的基础。

该损失可以进一步包括任何合适的正则化函数,如从机器学习领域本身已知的。

现在讨论学习方法的实施方式。

此实施方式为3d建模和3d机器学习领域带来了改进。此实施方式的结果可以用于诸如虚拟现实和增强现实(更一般地,任何种类的沉浸式体验)、视频游戏、制造和3d打印或3d建模之类的领域中。此实施方式提供了一种用于计算任何3d建模对象的现实稀疏变形线性基础的解决方案,然后可以利用该解决方案执行形状合成、根据图像的形状重构、或者形状匹配。

此实施方式允许为任何3d建模对象提供合理的线性变形基础,使得可以通过构成其基础的变形矢量的任何线性组合来在局部邻域中使该模型实际变形。这种变形可以用于3d建模软件中,特别是用于3d编辑应用。即,它可以用于大的非线性变形和形状匹配的推断。

此实施方式训练神经网络(在学习中学习的神经网络),该神经网络学习具有稀疏约束的线性3d变形场,以便获得彼此独立的合理变形。从所提供的数据集开始(该数据集是未标记的3d建模对象的数据集),此实施方式(在学习过程中)学习了一种神经网络,该神经网络推断出输入3d建模对象模型的每个点处的变形基础。为了学习此网络,学习逐小批量进行,如先前所讨论的:

1)将每个批量的每个3d建模对象与相同批量中最接近的3d建模对象相匹配。换言之,如先前所讨论的,在该批量的3d建模对象之中选择最接近3d建模对象的所述另一3d建模对象。

2)利用附加的稀疏正则化项,计算3d建模对象的预测变形矢量的线性组合,该线性组合使以下二者之间的距离最小化:3d建模对象按如由神经网络利用其当前权重推断出的变形矢量的线性组合的变形,以及其在批量中最接近的3d建模对象。

3)通过神经网络的权重使相同的损失(变形的3d建模对象与其最接近的3d建模对象之间的距离)最小化,以优化预测变形基础。

此实施方式不要求对不同种类的3d建模对象进行聚合以单独学习每个聚合。相反,适合于一起对整个数据集进行直接学习。此实施方式学习了不相关的变形基础,其中,每个变形本身都是合理的。推断出的变形是线性的,并且因此可以在实时应用中被使用。变形被推断为3d变形场,其使输入3d建模对象的表现力最大化。

在提供数据集时,在所提供的数据集由3d网格构成的情况下,此实施方式可以执行如先前所讨论的预处理。预处理包括使每个网格居中并独立地重新调节其尺寸,使得网格顶点恰好适于单位立方体。预处理然后包括:通过在6个正交视图上对每个归一化形状进行光线投射,从数据集中的每个归一化形状提取密集点云。预处理然后包括对每个点云进行均匀地子采样(例如,通过将每个点云下采样到相同大小)。为此,预处理可以从点云的随机点开始,并且迭代地挑选点云中的距已经选择的点最远的点,直到达到预定义的(例如,所期望的)点数。

现在讨论根据当前讨论的实施方式的神经网络的架构。

在此实施方式中,神经网络推断(例如,针对任何输入3d建模对象)相同固定数量的变形基础矢量。令n为推断出的变形基础的这个固定相同大小。此实施方式包括设计编码器架构fw,其将3d点云或3d网格作为输入,并且输出表示输入3d点云或3d网格的潜在矢量例如,这种编码器架构可以基于pointnet(例如,参见先前引用的参考文献[8],其通过引用并入本文)或其许多扩展,或者也可以使用如在meshcnn中完成的网格拓扑结构(例如,参见先前引用的参考文献[9],其通过引用并入本文)。因此,fw可以被设计为将3d网格x或其采样的3d点云y作为输入。

附加于fw,此实施方式包括设计深度前馈神经网络gw,该深度前馈神经网络gw将3d点云或3d网格的潜在矢量h以及3d点x作为输入,并且在点x处输出其变形基础为了进一步简化表示,针对包含m个点或顶点的任何点云或网格令gw(h,p)j,j∈{1,...,n}作为矢量因此,是在x的所有点处计算出的基础。此外,此实施方式还可以构建gw,使得||gw(h,x)j||2=1,其中所有j∈{1,...,n}。w是神经网络f和g的可训练权重。

此实施方式可以包括提供类似于fw的另一编码器架构f′。如先前所讨论的,在自动编码器框架中,或在分类任务中,或在任何其他机器学习方法中训练f′,以便学习3d对象的有意义的潜在空间。此实施方式使用所述另一编码器来在训练fw期间高效地将3d建模对象(3d网格或3d点云)与其最接近的3d建模对象相匹配。

此实施方式在学习神经网络时执行无监督学习。现在讨论这一点。

该学习通过使针对n个点云p1,...,pn的小批量的损失e(w)(也被称为“能量”)最小化,通过任何小批量随机优化(例如,小批量随机梯度下降)来学习网络fw和gw二者。令e1,...,en为fw的输入空间中的对应的3d建模对象,即,如果这些输入是点云ei=pi,并且如果它们是网格,则ei是用于对pi进行采样的源网格。

针对每个i,令且qi=pi′。可以预先计算矢量f′(ei),即,例如在学习之前,此实施方式包括矢量的预计算。

然后,损失由以下公式给出:

dch在这里是倒角3d距离,但是它可以用任何其他3d损失(例如,地动距离)替换:

φ是稀疏诱导函数,例如l1范数[6]。令(α1,...,αp)被称为幅度矢量。此实施方式试图使幅度稀疏,以便尽可能地使变形不相关,使得任何变形矢量本身是合理的。出于相同的原因,此实施方式强制变形基础与δ惩罚标准正交,在捕获基础的标准正交性的项之前进行,如先前所讨论的。

σ(ei,ei+v)可以是任何正则化函数,其可以包括但不限于以下各项的组合:

-对ei和ei+v之间的边长之差的惩罚(如果ei是点云,则此实施方式可以包括使用k个最近邻图来在其点上创建边),以及

-对ei和ei+v的拉普拉斯坐标之间的差的惩罚,即,l(ei)和l(ei+v)之间的差,其中,l是ei的拉普拉斯算子。

λ、δ和γ是权衡参数。

为了使e(w)最小化,学习包括计算批量的每个输入的幅度(α1,...,αp)上的最小值,以及计算e(w)的梯度。

针对每个输入i,可以使用标准梯度下降或任何连续优化算法来计算。

然而,梯度可能似乎难以处理,这是由于达到最小值的幅度取决于w。

并且

其中

包络定理使的梯度易于处理(并且因此e(w)的梯度也是如此),这是由于它等于的梯度,其中,α1,...,αp被认为是相对于w恒定的,即,梯度的计算不会通过幅度α1,...,αp的计算而反向传播。

即,

这可以按照的定义使用以下事实来证明:

图2示出了根据当前讨论的实施方式学习的神经网络的深度模型架构。

现在讨论学习方法的应用。

所谓“学习方法的应用”,意味着使用可根据学习方法学习的神经网络的计算机实现的方法,例如通过学习方法直接学习(即,已经学习)的神经网络。使用的方法可以包括:使用神经网络,用于推断各自与相应的输入3d建模对象相对应的一个或多个变形基础,以及使用推断出的一个或多个变形基础。学习方法可以包括在学习后被执行的使用的方法,例如作为学习方法的进一步的步骤。

学习方法的应用的第一示例是深度框架重构(例如,参见先前引用的参考文献[3],其通过引用并入本文)。深度框架重构包括提供3d网格和另一对象的深度图(depthmap)。另一对象接近所提供的3d网格。深度框架重构然后包括将神经网络应用于3d网格,这产生了3d网格的变形基础。深度框架重构使用此变形基础将所提供的3d网格变形为由深度图表示的另一对象。深度框架重构然后进一步包括在变形基础上的优化以适于深度图,即,深度框架重构包括对变形基础矢量的线性组合的系数进行优化,使得按线性组合使3d网格变形适于深度图。重构的目的是获得对应于深度图的3d建模对象。

学习方法的应用的第二示例是形状匹配。形状匹配包括提供两个接近的3d网格e1和e2。形状匹配然后包括计算第一3d网格e1的变形基础,以及优化变形基础矢量的线性组合的系数,以便使第一3d网格e1变形,使得其与第二3d网格e2相匹配。例如,形状匹配可以计算:

其中

其中,p1是从e1采样的点云,并且其中,p2是从e2采样的点云。

图3示出了形状匹配的第一示例。第一3d网格是椅子30,并且第二3d网格是椅子36,椅子30将被匹配到椅子36。椅子34示出了系数的所述优化的结果,而椅子32示出了在优化期间计算出的中间椅子。

图4示出了形状匹配的第一示例。第一3d网格是椅子40,并且第二3d网格是椅子46,椅子40将被匹配到椅子46。椅子44示出了系数的所述优化的结果,而椅子42示出了在优化期间计算出的中间椅子。

学习方法的第三示例应用是3d编辑。3d编辑可以包括提供第一3d建模对象,并且通过从第一3d建模对象开始将神经网络迭代地应用于第一3d建模对象的迭代变形,来使第一3d建模对象迭代地变形为第二3d建模对象。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1