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

神经光传输的制作方法

2022-05-18 22:39:18 来源:中国专利 TAG:
神经光传输1.相关申请的交叉引用2.本技术要求于2019年10月3日提交的美国临时专利申请第62/910,265号的优先权,其全部内容通过引用并入本文。
背景技术
::3.许多现代计算设备,包括移动电话、个人计算机和平板计算机,都包括图像捕获设备,诸如静物相机和/或视频相机。图像捕获设备可以捕获图像,诸如包括人、动物、风景和/或对象的图像。4.一些图像捕获设备和/或计算设备可以校正或以其他方式修改捕获的图像。例如,一些图像捕获设备可以提供“红眼”校正,该校正移除诸如使用明亮的灯(诸如闪光灯照明)捕获的图像中可能存在的人和动物的表现为红色眼睛的伪影。在捕获的图像已被校正后,校正后的图像可以被保存、显示、发送、打印到纸上和/或以其他方式利用。在某些情况下,对象的图像在图像捕获期间可能会受到照明不足的影响。技术实现要素:5.本文公开的是涉及开发神经光传输的实施例,该神经光传输使得能够对在图像中捕获的三维(3d)物体进行数字重新照明和自由视点渲染。特别地,为了训练神经网络来学习光传输函数,计算系统可以使用与uv纹理图的集合相关联的数据集,所述uv纹理图描绘使用照明台捕获的对象。该数据集可以为该uv纹理图的集合内的每个uv纹理图指定相机的视角(perspective)和照亮对象的灯的位置。通过使用该数据集,一个或多个神经网络可以开发神经光传输,该神经光传输随后可用于从新颖视角和/或新颖照明合成对象的纹理。然后可以将合成的纹理图应用于对象的3d模型以进行重新照明,以从合成视角(例如,新颖视角和照明)产生对象的输出纹理图。6.在一个方面,本技术描述了一种方法。该方法涉及在计算系统处获得指示对象的多个uv纹理图和几何形状的数据。每个uv纹理图从多个视角中的一个视角描绘对象。该方法还可以涉及由计算系统使用所述数据训练神经网络以学习光传输函数。光传输函数指定当从多个视角观察对象时光如何与对象相互作用。该方法还可以涉及由计算系统基于通过经训练的神经网络对光传输函数的应用,生成从合成视角描绘对象的输出uv纹理图。7.在另一方面,本技术描述了一种系统。该系统包括传感器和计算系统。计算系统被配置为获得指示对象的多个uv纹理图和几何形状的数据。每个uv纹理图从多个视角中的一个视角描绘对象,并且传感器捕获指示对象的几何形状的数据。计算系统还被配置为使用所述数据训练神经网络以学习光传输函数。光传输函数指定当从所述多个视角观察对象时光如何与对象相互作用。计算系统还被配置为基于通过经训练的神经网络对光传输函数的应用,生成从合成视角描绘对象的输出uv纹理图。8.在又一示例中,本技术描述了一种被配置为存储指令的非暂时性计算机可读介质,当由包括一个或多个处理器的计算系统执行时,所述指令使计算系统执行操作。该操作涉及获得指示对象的多个uv纹理图和几何形状的数据。每个uv纹理图从多个视角中的一个视角描绘对象。该操作还涉及使用所述数据训练神经网络以学习光传输函数。光传输函数指定当从所述多个视角观察对象时光如何与对象相互作用。该操作还涉及基于通过经训练的神经网络对光传输函数的应用,生成从合成视角描绘对象的输出uv纹理图。9.在另一方面,本技术描述了一种系统,该系统包括用于实现神经光传输的装置。该系统包括用于获得指示对象的多个uv纹理图和几何形状的数据的装置。每个uv纹理图从多个视角中的一个视角描绘对象。该系统还包括用于使用所述数据训练神经网络以学习光传输函数的装置。光传输函数指定当从所述多个视角观察对象时光如何与对象相互作用。该系统还包括用于基于通过经训练的神经网络对光传输函数的应用生成从合成视角描绘对象的输出uv纹理图的装置。10.前述
发明内容仅是说明性的并且不旨在以任何方式进行限制。除了上述说明性方面、实施例和特征之外,通过参考附图和以下详细描述,其他方面、实施例和特征将变得显而易见。附图说明11.图1图示了根据示例实施例的计算设备的示意图。12.图2图示了根据示例实施例的服务器设备集群的示意图。13.图3a描绘了根据示例实施例的ann架构。14.图3b描绘了根据示例实施例训练ann。15.图4a描绘了根据示例实施例的卷积神经网络(cnn)架构。16.图4b描绘了根据示例实施例的卷积17.图5描绘了根据示例实施例的涉及ann和移动设备的系统。18.图6图示了根据示例实施例实现神经光传输的系统。19.图7a示出了根据示例实施例的用于实现神经光传输的操作的集合。20.图7b图示了根据示例实施例的用于确定3d像素投影的光线投射。21.图7c图示了根据示例实施例的对象渲染到uv空间中对象的对应项的连接。22.图7d图示了根据示例实施例的渲染过程。23.图8是根据示例实施例的用于实现神经光传输函数的方法的流程图。24.图9是图示用于在根据本文呈现的至少一些实施例布置的计算系统上执行计算机过程的计算机程序的概念性局部视图的示意图。具体实施方式25.本文描述了示例方法、设备和系统。应当理解,本文使用的词语“示例”和“示例性”是指“充当示例、实例或说明”。本文描述为“示例”或“示例性”的任何实施例或特征不一定被解释为比其他实施例或特征更优选或更有利。可以利用其他实施例,并且可以做出其他改变,而不背离本文呈现的主题的范围。26.照明台(lightstage)和/或其他硬件可用于捕获完全可重新照明(relightable)的对象。然而,在捕获时间期间,对象保持静态。此外,照明台可能包括安装的有限数量的灯。因此,照明台可能仅从预定义的视图(view)捕获对象,因此限制了全角度重新照明系统的开发。27.本文呈现的示例描述了用于实现神经光传输的方法和系统。计算系统可以训练神经网络来学习光传输函数,本文也称为神经光传输。光传输函数可以是指定当从各种视角观察对象时光如何与该对象相互作用的函数(例如,连续函数)。例如,光传输函数可以使计算系统能够描述在观察者的视角下光线如何与对象的材料相互作用。因此,光传输函数可以用于生成从合成视角描绘对象的对象的表示(例如,图像或uv纹理图)。例如,合成视角可以使用新颖照明(即,来自新位置处的光源的照亮)、其中对象的一种或多种材料被修改或改变、和/或使用新颖视角(例如,从先前没有经由相机捕获和记录的对象的视点)示出对象。28.示例方法可以涉及获得指示对象的图像的数据。每个图像可以从不同的视角描绘对象。例如,可以使用照明台收集数据。特别地,照明台可以使得能够开发一次一盏灯(one-light-at-a-time)数据集,该数据集表示基于在靠近照明台定位的灯以已知的顺序(例如,一次一盏灯)照亮对象的同时从各种固定和已知视角(例如,几十个视角)捕获的图像生成的uv纹理图。结果,数据可以为每个图像指定关于相机的视角(例如,相机姿态)和照亮对象的一个或多个特定灯的姿态的信息。此外,一个或多个传感器可以提供表示对象的几何形状(geometry)的数据。uv纹理图和几何形状信息可以一起形成数据集,计算系统可以使用该数据集来训练一个或多个神经网络以学习光传输函数。29.经训练的神经网络然后可以生成输出uv纹理图,其从合成视角描绘对象。例如,光传输函数可以使计算系统能够合成对象的新颖视图和新颖照明的纹理,然后可以将其应用于对象的3d模型以用于重新照明或新颖视图合成。此外,在一些示例中,合成视角可用于示出具有一种或多种不同材料的对象。30.i.示例计算设备和基于云的计算环境31.以下实施例描述了可以采用所公开的ann实现方式的示例计算设备和系统的架构和操作方面,以及其特征和优点。32.图1是举例说明计算系统100的简化框图,图示了可以包括在布置成根据本文的实施例操作的计算设备中的一些组件。计算系统100可以是客户端设备(例如,由用户主动操作的设备)、服务器设备(例如,向客户端设备提供计算服务的设备)或一些其他类型的计算平台。一些服务器设备可以不时地作为客户端设备操作以便执行特定操作,并且一些客户端设备可以结合服务器特征。33.在该示例中,计算系统100包括处理器102、存储器104、网络接口106和输入/输出单元108,所有这些可以通过系统总线110或类似机制耦合。在一些实施例中,计算系统100可以包括其他组件和/或外围设备(例如,可拆卸存储装置、打印机等)。34.处理器102可以是任何类型的计算机处理元件中的一种或多种,诸如中央处理单元(cpu)、协处理器(例如,数学、图形或加密协处理器)、数字信号处理器(dsp)、网络处理器和/或执行处理器操作的一种形式的集成电路或控制器。在一些情况下,处理器102可以是一个或多个单核处理器。在其他情况下,处理器102可以是一个或多个具有多个独立处理单元的多核处理器。处理器102还可以包括用于临时存储正在执行的指令和相关数据的寄存器存储器,以及用于临时存储最近使用的指令和数据的高速缓冲存储器。35.存储器104可以是任何形式的计算机可用存储器,包括但不限于随机存取存储器(ram)、只读存储器(rom)和非易失性存储器。这可以包括闪存、硬盘驱动器、固态驱动器、可重写光盘(cd)、可重写数字视频光盘(dvd)和/或带存储装置,仅作为几个示例。36.计算系统100可以包括固定存储器以及一个或多个可移除存储器单元,后者包括但不限于各种类型的安全数字(sd)卡。因此,存储器104表示主存储器单元以及长期存储装置两者。其他类型的存储器可以包括生物存储器。37.存储器104可以存储程序指令和/或程序指令可以对其操作的数据。通过示例的方式,存储器104可以将这些程序指令存储在非暂时性计算机可读介质上,使得这些指令可由处理器102执行以执行本说明书或附图中公开的任何方法、过程或操作。38.如图1所示,存储器104可以包括固件104a、内核104b和/或应用104c。固件104a可以是用于引导或以其他方式启动计算系统100的一些或全部的程序代码。内核104b可以是操作系统,包括用于存储器管理、过程的调度和管理、输入/输出和通信的模块。内核104b还可以包括允许操作系统与计算系统100的硬件模块(例如,存储器单元、联网接口、端口和总线)通信的设备驱动器。应用104c可以是一个或多个用户空间软件程序,诸如web浏览器或电子邮件客户端,以及由这些程序使用的任何软件库。在一些示例中,应用104c可以包括一个或多个神经网络应用。存储器104还可以存储由这些和其他程序和应用使用的数据。39.网络接口106可以采用一个或多个有线接口的形式,诸如以太网(例如,快速以太网、千兆比特以太网等)。网络接口106还可以支持通过一种或多种非以太网介质(诸如同轴电缆或电力线)或通过广域介质(诸如同步光网络(sonet)或数字用户线(dsl)技术)的通信。网络接口106还可以采用一个或多个无线接口的形式,诸如ieee802.11(wifi)、全球定位系统(gps)或广域无线接口。然而,其他形式的物理层接口和其他类型的标准或专有通信协议可以在网络接口106上使用。此外,网络接口106可以包括多个物理接口。例如,计算系统100的一些实施例可以包括以太网、0的一些实施例可以包括以太网、和wifi接口。40.输入/输出单元108可以促进用户和外围设备与计算系统100和/或其他计算系统的交互。输入/输出单元108可以包括一种或多种类型的输入设备,诸如键盘、鼠标、一个或多个触摸屏、传感器、生物传感器等。类似地,输入/输出单元108可以包括一种或多种类型的输出设备,诸如屏幕、监视器、打印机和/或一个或多个发光二极管(led)。附加地或可替代地,计算系统100可以例如使用通用串行总线(usb)或高清多媒体接口(hdmi)端口接口与其他设备通信。41.在一些实施例中,可以部署计算系统100的一个或多个实例以支持集群架构。这些计算设备的确切物理位置、连接性和配置对于客户端设备可能是未知的和/或不重要的。因此,计算设备可以被称为“基于云的”设备,其可以安置在各种远程数据中心位置。此外,计算系统100可以使得能够执行本文描述的实施例,包括使用神经网络和实现神经光传输。42.图2描绘了根据示例实施例的基于云的服务器集群200。在图2中,计算设备(例如,计算系统100)的一个或多个操作可以分布在服务器设备202、数据存储装置204和路由器206之间,所有这些可以通过本地集群网络208连接。服务器集群200中的服务器设备202、数据存储装置204和路由器206的数量可以取决于分配给服务器集群200的(一个或多个)计算任务和/或应用。在一些示例中,服务器集群200可以执行本文描述的一个或多个操作,包括神经网络的使用和神经光传输函数的实现。43.服务器设备202可以被配置为执行计算系统100的各种计算任务。例如,一个或多个计算任务可以分布在一个或多个服务器设备202之间。到这些计算任务能够被并行执行的程度,这样的任务的分布可以减少完成这些任务并返回结果的总时间。为了简单起见,服务器集群200和独立的服务器设备202都可以被称为“服务器设备”。该命名法应被理解为暗示可以在服务器设备操作中涉及一个或多个不同的服务器设备、数据存储设备和集群路由器。44.数据存储装置204可以是数据存储阵列,其包括被配置为管理对硬盘驱动器和/或固态驱动器的组的读和写访问的驱动器阵列控制器。驱动器阵列控制器,单独或与服务器设备202结合,还可以被配置为管理存储在数据存储装置204中的数据的备份或冗余副本,以免受阻止一个或多个服务器设备202访问集群数据存储装置204的单元的驱动器故障或其他类型的故障的影响。可以使用除驱动器之外的其他类型的存储器。45.路由器206可以包括被配置成为服务器集群200提供内部和外部通信的联网装备。例如,路由器206可以包括一个或多个分组交换和/或路由设备(包括交换机和/或网关),其被配置为提供(i)服务器设备202和数据存储装置204之间经由集群网络208的网络通信,和/或(ii)服务器集群200和其他设备之间经由到网络212的通信链路210的网络通信。46.另外,集群路由器206的配置可以至少部分地基于服务器设备202和数据存储装置204的数据通信需求,本地集群网络208的延迟和吞吐量,通信链路210的延迟、吞吐量和成本,和/或可能贡献于系统架构的成本、速度、容错性、弹性、效率和/或其他设计目标的其他因素。47.作为可能的示例,数据存储装置204可以包括任何形式的数据库,诸如结构化查询语言(sql)数据库。各种类型的数据结构可以将信息存储在这样的数据库中,包括但不限于表、数组、列表、树和元组。此外,数据存储装置204中的任何数据库可以是单片的或分布在多个物理设备上。48.服务器设备202可以被配置为向集群数据存储装置204发送数据和从集群数据存储装置204接收数据。这种传输和检索可以分别采取sql查询或其他类型的数据库查询以及这些查询的输出的形式。也可以包括附加的文本、图像、视频和/或音频。此外,服务器设备202可以将接收到的数据组织成网页表示。这样的表示可以采用标记语言(诸如超文本标记语言(html)、可扩展标记语言(xml))的形式或一些其他标准化或专有格式。此外,服务器设备202可以具有执行各种类型的计算机化脚本语言的能力,诸如但不限于perl、python、php超文本预处理器(php)、活动服务器页面(asp)、javascript等。以这些语言编写的计算机程序代码可以促进向客户端设备提供网页,以及与网页的客户端设备交互。49.ii.人工神经网络50.a.示例ann51.人工神经网络(ann)是一种计算模型,其中并行独立工作且无需中央控制的多个简单单元可以组合以解决复杂问题。ann表示为布置到多个层中的多个节点,相邻层的节点之间具有连接。52.图3a中显示了示例ann300。特别地,ann300表示前馈多层神经网络,但类似的结构和原理也用在例如卷积神经网络(cnn)、循环神经网络和递归神经网络中。ann300可以表示经训练以执行特定任务的ann,所述特定任务诸如图像处理技术(例如,分割、语义分割、图像增强)或学习本文所述的神经光传输函数。在进一步的示例中,ann300可以学习执行其他任务,诸如计算机视觉、风险评估等。53.如图3a所示,ann300由四层组成:输入层304、隐藏层306、隐藏层308和输出层310。输入层304的三个节点分别接收x1、x2和x3作为初始输入值302。输出层310的两个节点分别产生y1和y2作为最终输出值312。因此,ann300是一个全连接网络,因为除了输入层304之外的每一层的节点都从前一层中的所有节点接收输入。54.节点对之间的实线箭头表示中间值流经的连接,并且每个与应用于相应中间值的相应权重相关联。每个节点对其输入值及其相关联的权重(例如,0和1之间的值,包括0和1)执行操作以产生输出值。在某些情况下,此操作可以涉及每个输入值和相关联的权重的乘积的点积和。激活函数可以被应用于点积和的结果以产生输出值。其他操作是可能的。55.例如,如果节点在n个连接上接收输入值{x1,x2,…,xn},相应权重为{w1,w2,…,wn},则点积和d可以确定为:[0056][0057]其中b是特定于节点或特定于层的偏差(bias)。[0058]值得注意的是,通过将0的值给予一个或多个权重,ann300的全连接性质可用于有效地表示部分连接的ann。类似地,也可以将偏差设置为0以消除b项。[0059]激活函数,诸如逻辑函数(logisticfunction),可用于将d映射到0和1之间的输出值y,包括0和1:[0060][0061]可以代替使用除逻辑函数之外的函数,诸如sigmoid或tanh函数。[0062]然后,y可以在每个节点的输出连接上被使用,并将通过其相应的权重被修改。特别地,在ann300中,输入值和权重被应用到每一层的节点,从左到右直到产生最终输出值312。如果ann300已被完全训练,则最终输出值312是对ann300被训练来解决的问题的建议解。为了获得有意义、有用且相当准确的解,ann300至少需要一定程度的培训。[0063]b.训练[0064]训练ann可以涉及向ann提供某种形式的监督训练数据,即输入值和期望的或基准真实(groundtruth)输出值的集合。例如,使ann能够执行图像处理任务的监督训练可以涉及提供图像对,图像对包括训练图像和表示训练图像的期望输出(例如,期望分割)的对应基准真实掩码(mask)。对于ann300,该训练数据可以包括与输出值配对的输入值的m个集合。更正式地说,训练数据可以表示为:[0065][0066]其中i=1…m,并且知是输入值x1,i、x2,i和x3,i的期望输出值。[0067]训练过程涉及将来自这样的集合的输入值应用到ann300并产生相关联的输出值。损失函数可以用于评估产生的输出值与基准真实输出值之间的误差。在某些情况下,此损失函数可以是差之和、均方误差或其他一些度量。在某些情况下,为所有m个集合确定误差值,并且误差函数涉及计算这些值的聚合(例如,平均)。[0068]一旦确定了误差,连接上的权重就被更新以尝试减少误差。简单来说,这个更新过程应该奖励“好”权重并惩罚“坏”权重。因此,更新应该以训练数据的未来迭代导致更低误差的方式通过ann300分布对误差的“责任”。例如,更新过程可以涉及修改ann300的至少一个权重,使得ann300在训练图像上的后续应用生成新输出,该新输出更接近地匹配对应于训练图像的基准真实掩码。[0069]训练过程继续将训练数据应用于ann300,直到权重收敛。当误差小于阈值或在连续训练迭代之间误差的变化足够小时,发生收敛。在这一点上,ann300被称为“经训练的”,并且可以应用于新的输入值集合,以便预测未知的输出值。当经训练以执行图像处理技术时,ann300可以产生与为输入图像创建的基准真实(即,期望的结果)非常相似的输入图像的输出。[0070]许多ann的训练技术利用了某种形式的反向传播。在反向传播期间,输入信号通过网络前向传播到输出,然后针对目标变量计算网络误差并且网络误差朝输入反向传播。特别地,反向传播通过ann300从右到左一次一层地分布误差。因此,首先,隐藏层308和输出层310之间的连接的权重被更新,其次,隐藏层306和隐藏层308之间的连接的权重被更新,以此类推。这种更新是基于激活函数的导数的。[0071]为了进一步解释误差确定和反向传播,看活动的过程的示例是有帮助的。然而,除了在最简单的ann上之外,表示反向传播可能会变得非常复杂。因此,图3b引入了非常简单的ann330,以便提供反向传播的说明性示例。[0072]权重节点权重节点w1i1,h1w5h1,o1w2i2,h1w6h2,o1w3i1,h2w7h1,o2w4i2,h2w8h2,o2[0073]表1[0074]ann330由三层组成,输入层334、隐藏层336和输出层338,每层具有两个节点。初始输入值332被提供给输入层334,并且输出层338产生最终输出值340。权重已被分配给每个连接,并且在某些示例中偏差(例如,图3b中所示的b1、b2)也可应用于隐藏层336中每个节点的净输入。为清楚起见,表1将权重映射到具有应用这些权重的连接的节点对。作为示例,w2应用于节点i2和h1之间的连接,w7应用于节点h1和o2之间的连接,依此类推。[0075]训练ann330的目标是通过一定数量的前馈和反向传播迭代更新权重,直到最终输出值340足够接近指定的期望输出。请注意,使用训练数据的单个集合有效地训练ann330仅针对该集合。如果使用多个训练数据的集合,ann330也将根据这些集合被训练。[0076]1.示例前馈传递[0077]为了启动前馈传递,计算到隐藏层336中每个节点的净输入。从净输入,可以通过应用激活函数找到这些节点的输出。对于节点h1,净输入neth1为:[0078]neth1=w1x1 w2x2 b1ꢀꢀꢀꢀꢀꢀꢀꢀꢀ(4)[0079]对这个输入应用激活函数(这里是逻辑函数)确定节点h1的输出outh1是:[0080][0081]对于节点h2,遵循相同的过程,也可以确定输出outh2。前馈迭代中的下一步是针对输出层338的节点执行相同的计算。例如,到节点o1的净输入neto1为:[0082]neto1=w5outh1 w6outh2 b2ꢀꢀꢀꢀꢀꢀꢀꢀ(6)[0083]因此,节点o1的输出outo1为:[0084][0085]对于节点o2,遵循相同的过程,可以确定输出outo2。此时,可以基于损失函数确定总误差δ。例如,损失函数可以是输出层508中节点的平方误差之和。换句话说:[0086][0087]每一项中的乘法常数用于简化反向传播期间的微分。由于总体结果无论如何都会按学习率进行缩放,因此该常数不会负面地影响训练。无论如何,此时,前馈迭代完成并开始反向传播。[0088]2.反向传播[0089]如上所述,反向传播的目标是使用δ(即基于损失函数确定的总误差)来更新权重,使得它们在未来的前馈迭代中贡献更少的误差。作为示例,考虑权重w5。目标涉及确定w5的变化对δ的影响程度。这可以表达为偏导数使用链式法则,该项可以扩展为:[0090][0091]因此,w5的变化对δ的影响等效于(i)outo1的变化对δ的影响,(ii)neto1的变化对outo1的影响,以及(iii)w5的变化对neto1的影响。这些乘法项中的每一个可以独立地确定。直观地说,这个过程可以认为是分离出w5对neto1的影响、neto1对outo1的影响以及outo1对δ的影响。[0092]对于馈送到输出层338的其他权重,可以重复该过程。注意,直到已经在反向传播结束时确定了对所有权重的更新,才更新权重。然后,在下一次前馈迭代之前更新所有权重。[0093]在计算对剩余权重w1、w2、w3和w4的更新后,继续向隐藏层336进行反向传播传递。对于馈送到输出层338中的其他权重,可以重复此过程。此时,反向传播迭代结束,所有权重已被更新。可以通过后续的前馈和反向传播迭代继续训练ann330。在某些情况下,通过若干次前馈和反向传播迭代(例如,数千次迭代)后,误差可以被减少以产生接近原始期望结果的结果。此时,y1和y2的值将接近目标值。如所示,通过使用可微损失函数,与期望结果相比的由ann330输出的预测的总误差可以被确定并用于相应地修改ann330的权重。[0094]在某些情况下,如果调整系统的超参数(例如,偏差b1和b2以及学习率α),则可以用更少的迭代完成等效量的训练。例如,将学习率设置为更接近特定值可能导致误差率更快地降低。此外,可以作为学习过程的一部分以类似于更新权重的方式来更新偏差。[0095]无论如何,ann330只是简化的示例。可以通过调整每个输入和输出层中节点的数量来开发任意复杂的ann,以解决特定的问题或目标。此外,可以使用多于一个隐藏层,并且每个隐藏层中可以有任意数量的节点。[0096]iii.卷积神经网络[0097]卷积神经网络(cnn)类似于ann,因为cnn可以由一定数量的层的节点组成,它们之间具有加权连接以及可能的每层偏差。权重和偏差可以通过上面讨论的前馈和反向传播过程进行更新。损失函数可用于将前馈处理的输出值与期望的输出值进行比较。[0098]另一方面,cnn通常在初始输入值从一个或多个图像导出的明确假设下被设计。在一些实施例中,图像块中每个像素的每个颜色通道是单独的初始输入值。假设每个像素有三个颜色通道(例如,红色、绿色和蓝色),即使是一个小的32x32像素块,也将为第一隐藏层中的每个节点产生3072个传入权重。显然,使用朴素的ann进行图像处理可能导致非常大且复杂的模型,该模型将花费长时间来训练。[0099]相反,cnn被设计为利用几乎所有图像中都能找到的固有结构。特别是,cnn中的节点仅连接到先前层中的少数节点。这种cnn架构可以被认为是三维的,其中节点布置在具有宽度、高度和深度的块中。例如,前面提到的具有3个颜色通道的32x32像素块可以布置成宽度为32个节点、高度为32个节点、深度为3个节点的输入层。[0100]图4a示出了示例cnn400。表示为像素x1…xm的初始输入值402被提供给输入层404。如上面所讨论的,输入层404可以具有基于像素x1…xm的宽度、高度和颜色通道的数量的三个维度。输入层404将值提供到一组或多组特征提取层中,每组包含卷积层406、relu层408和池化层410的实例。池化层410的输出被提供给一个或多个分类层412。最终输出值414可以布置在表示初始输入值402的简明表征的特征向量中。[0101]卷积层406可以通过围绕其输入值的三维空间布置滑动一个或多个滤波器来变换这些输入值。滤波器由应用于节点的偏差和它们之间的连接的权重表示,并且通常具有小于输入值的宽度和高度的宽度和高度。每个滤波器的结果可以是输出值的二维块(称为特征图),其中宽度和高度可以具有与输入值的宽度和高度相同的大小,或者这些维度中的一个或多个可以具有不同的大小。每个滤波器的输出的组合导致深度维度中特征图的层,其中每一层表示滤波器之一的输出。[0102]应用滤波器可以涉及计算滤波器中的条目与输入值的二维深度切片之间的点积和。这方面的示例在图4b中示出。矩阵420表示卷积层的输入,并且因此可以是例如图像数据。卷积运算将滤波器422覆盖在矩阵420上以确定输出424。例如,当滤波器422定位于矩阵420的左上角并计算每个条目的点积和时,结果为4。这被放置在输出424的左上角。[0103]回到图4a,cnn在训练期间学习滤波器,以便这些滤波器最终可以识别输入值中特定位置处的某些类型的特征。作为示例,卷积层406可以包括最终能够检测从其导出初始输入值402的图像块中的边缘和/或颜色的滤波器。称为接受域的超参数确定卷积层406和输入层404中每个节点之间的连接的数量。这允许每个节点专注于输入值的子集。[0104]relu层408将激活函数应用于卷积层406提供的输出。实际上,已确定整流线性单元(relu)函数或其变体表现出在cnn中提供强大的结果。relu函数是简单的阈值函数,定义为f(x)=max(0,x)。因此,当x为负时输出为0,当x为非负时输出为x。对relu函数的平滑、可微近似是softplus函数。它被定义为f(x)=log(1 ex)。尽管如此,也可以在该层中使用其他函数。[0105]池化层410通过对来自relu层408的输出的每个二维深度切片进行下采样来减小数据的空间大小。一种可能的方法是以2的步长(stride)将2x2滤波器应用于深度切片的每个2x2块。这会将每个深度切片的宽度和高度减少2倍,从而将数据的整体大小减少75%。[0106]分类层412计算特征向量的形式的最终输出值414。作为示例,在训练为图像分类器的cnn中,特征向量中的每个条目可以编码图像块包含特定类别的项目(例如,人脸、猫、海滩、树等)的概率。[0107]在一些实施例中,存在多组特征提取层。因此,池化层410的实例可以向卷积层406的实例提供输出。此外,对于池化层410的每个实例,可以有卷积层406和relu层408的多个实例。[0108]cnn400表示可用在图像处理中的通用结构。类似于ann300中的层,卷积层406和分类层412应用权重和偏差,并且这些权重和偏差可以在反向传播期间更新,以便cnn400可以学习。另一方面,relu层408和池化层410通常应用固定操作,并且因此可以不学习。[0109]与ann相同,cnn可以包括与本文示例中所示不同数量的层,并且这些层中的每一个可以包括不同数量的节点。因此,cnn400仅用于说明目的,并且不应被认为限制cnn的结构。[0110]图5描绘了根据示例实施例的涉及在计算系统502和移动设备510上操作的ann的系统500。[0111]在计算系统502上操作的ann可以对应于上述的ann300或ann330。例如,ann可以被配置为执行指令以执行所描述的操作,包括学习一个或多个神经光传输。在一些示例中,ann可以表示cnn(例如,cnn400)、前馈ann、基于梯度下降的激活函数ann、或调节反馈ann,以及其他类型。[0112]作为示例,ann可以基于从使用照明台从对象获得的uv纹理图和几何形状导出的数据来确定多个处理参数或技术。例如,ann502可以经历机器学习过程,以“学习”如何像人类专业人员一样操纵一个或多个对象的纹理、视角和照明。使用的数据集的大小可能因示例而变化。[0113]在一些示例中,数据集可以取决于照明台的布置。例如,灯的数量和所捕获的视角的数量可以取决于用于开发数据集的照明台而不同。[0114]图6图示了根据示例实施例实现神经光传输的系统。系统600可以由一个或多个计算系统(例如,图1中所示的计算系统100)实现并且可以涉及一个或多个特征,诸如照明台602、神经光传输604、材料建模606、重新照明608和合成视角610。在其他示例中,系统600可以包括不同布置的其他特征或方面。[0115]系统600可以表示将一个或多个计算系统用到一个或多个神经网络来对光在3d场景中如何传输建模的示例系统。特别地,系统600可以使用经训练的神经网络实现一个或多个对象的材料编辑、重新照明和新颖视图合成的执行。在一些示例中,经训练的神经网络可以在各种计算设备上执行,诸如可穿戴计算设备、智能手机、膝上型计算机和服务器。例如,第一计算系统可以训练神经网络并将经训练的神经网络提供给第二计算系统。[0116]照明台602可以涉及可用于训练一个或多个神经网络的数据(本文也称为数据集)的开发。可以使用物理照明台环境来开发数据,该环境包括在相对于台的各种位置处定位的灯和在多个视角处定位以捕获对象的uv纹理图的一个或多个相机。因此,在照明台602期间,物理对象可以被放置在结构化照明台环境中,同时一个或多个相机从不同视角捕获物理对象的uv纹理图。当每个uv纹理图被捕获时,相对于物理对象定位的一个或多个灯可以照亮物理对象。因此,在照明台602期间捕获的数据可以指示在数据中表示的每个图像期间相机的视角以及用于照亮对象的一个或多个灯的姿态。在一些示例中,捕获对象的uv纹理图可以涉及一个或多个相机捕获对象的图像,这些图像可用于开发uv纹理图。[0117]为了进一步说明,示例实施例可以涉及使用配备有在相对于放置被分析的对象的区域以不同姿态布置的一定数量的灯(例如,330个灯)的照明台。可以从各种相机视角(例如,55个不同的视角)捕获对象的测量(例如,图像、传感器读数),同时灯以已知配置(例如,一次一盏灯)照亮对象。这样,可以收集从传感器生成的数据或相机测量以及用于每个图像的(一个或多个)灯和相机的已知姿态和视角以开发数据集,以训练一个或多个神经网络来学习如神经光传输604所示的神经光传输。[0118]一旦获得数据,系统600就可以将一个或多个神经网络适配(fit)到数据内的观察以训练(一个或多个)神经网络。训练(一个或多个)神经网络可以使(一个或多个)网络学习函数,诸如如下函数:[0119]f(x,ωi,ωo)ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(10)[0120]该函数,其可以是连续函数,在本文中称为神经光传输或光传输函数。该函数可以由一个或多个神经网络确定和实现。如上所示,光传输函数是六维函数,被布置如下:(i)描述对象表面上的位置的由x表示的两个自由度;(ii)定义入射光方向的由ωi表示的两个自由度,以及(iii)描述观察方向的由ωo表示的两个剩余自由度。[0121]在训练神经网络以学习神经光传输函数之后,系统600可以查询该函数以执行不同的操作。例如,用x查询函数可以导致神经网络执行材料建模606。材料建模606可以涉及使用空间变化的材料建模来对对象建模,其中图像中的每个像素可以根据材料、相机视点和照明方向而改变。对于大多数真实世界对象,如果我们在对象表面(例如菜刀的表面)上进行遍历,我们会观察到多种材料,例如金属刀片与木柄,(因此,“是空间变化的”)。[0122]用ωi查询函数可以使神经网络渲染在重新照明608期间具有新颖照明的物理对象的场景。用ωo查询函数,神经网络可以使用来自在查询中定义相机视图的uv纹理图来生成场景的视角,如合成操作610所示。最终图像渲染是通过将推断的uv纹理图应用于3d对象来获得的。[0123]图7a、7b、7c和7d图示了根据示例实施例的使用神经光传输的实现方式。特别地,该实现方式可以由图6中所示的系统600和/或一个或多个计算系统(例如,图1中所示的计算系统100)来执行。因此,示例实现方式说明了神经光传输关于充当对象的兔子和龙的开发和使用。在其他示例中,可以使用不同的对象来开发神经光传输。[0124]图7a示出了根据示例实施例的用于实现神经光传输的操作的集合。如所示,系统(例如,图6中所示的系统600)可以使用神经网络来对光如何在涉及兔子和龙的3d场景中传输进行建模。这使得系统或另一个设备能够使用上面关于图6中所示的系统600讨论的经训练的网络来执行材料编辑、重新照明和新颖视图合成。[0125]如所示,照明台702可以涉及使用以不同姿态定位的灯和相机来捕获兔子和龙的图像,以开发用于训练神经网络的数据。例如,照明台702可以涉及将兔子和龙定位在照明台设置中,该设置使灯和相机能够在使用各种照亮技术(例如,一次一盏灯)的同时从不同的视角照亮和捕获兔子和龙的图像。[0126]神经光传输704可以由在一个或多个计算系统上执行的一个或多个神经网络开发。特别地,在照明台702期间生成的数据可以使神经网络能够开发上面关于图6描述的神经光传输f(x,ωi,ωo)。[0127]可以在对象表面上定义光传输函数。因此,光传输可以表达为高维uv图。uv映射对应于将二维(2d)图像投影到3d模型表面以进行纹理映射的3d建模过程。因此,字母“u”和“v”用于表示2d纹理的轴线,因为“x”、“y”和“z”通常用于表示模型空间中3d对象的轴线。uv纹理可以允许使用来自普通图像的颜色(和其他表面属性)来绘制(或重新设计)构成3d对象的多边形。该图像通常称为uv纹理图。[0128]uv映射过程可以涉及将图像中的像素分配给多边形上的表面映射,通常通过“以编程方式”复制图像图的三角形片并将其粘贴到对象的三角形上来完成。uv纹理表示投影映射的替代方案,它涉及使用模型的任意一对x、y、z坐标或位置的任何变换。uv纹理涉及映射到纹理空间中而不是映射到对象的几何空间中。因此,渲染计算使用uv纹理坐标来确定如何绘制3d表面。对于每个uv位置,有使用照明方向(ωi)和观察方向(ωo)作为输入并输出红、绿、蓝(rgb)颜色的四维函数。[0129]如所示,可以查询光传输函数的变量以操纵神经网络的输出。例如,查询x可以使神经网络对空间变化的材料进行建模706。这使得能够进行应用材料编辑:将龙的材料更改为兔子的材料。这可以使神经网络能够确定光如何可以影响从不同的视角的不同材料的外观。[0130]查询ωi可以使神经网络能够调整应用到龙和兔子的照亮,如针对重新照明708所示。重新照明708可以使神经网络能够示出兔子和龙在不同照明条件下可能如何表现。查询ωo可以使神经网络从合成视角提供龙和兔子,如新颖视图合成710中所示。对于新颖视图合成710,神经网络可以从不同的视角(例如,转动180度)示出龙和/或兔子,在应用或不应用新颖照明的条件下。[0131]图7b图示了根据示例实施例确定3d像素投影的光线投射。该系统可以使用图像720中对象的几何形状的知识以及相机相对于灯的位置来执行光线投射722。特别地,光线投射可以确定每个像素在3d空间724中投影到哪里。[0132]使用光线投射722,可以将每个像素追踪到对象表面上的3d点。还预定义了每个3d点映射到哪个uv位置。将这两者链接在一起给出了从每个像素到uv位置的映射。此对应关系用于生成对象渲染的uv对应项。[0133]图7c图示了根据示例实施例的对象渲染到uv空间中对象的对应项的连接。如所示,神经网络可以使用数据内的信息(例如,灯和相机姿态信息)和图像以使光传输函数产生红、绿、蓝(rgb)值726的uv图。特别地,每个图素(texel)可以编码如下的4d函数:[0134][0135]照此,神经网络可以使用图像720来执行光传输函数以生成uv图726。该uv纹理提供跨不同视图的多视图对应关系,而无需在视图之中进行显式搜索。[0136]对于所示表面上的每个3d点,系统可以基于预定义的uv展开过程将该点映射到uv图上。因此,系统可以在uv图上估计原始rgb渲染上的每个像素应该去哪里。通过重新布置像素值,系统可以确定如图所示的uv空间rgb图726。[0137]图7d图示了根据示例实施例的渲染过程。系统可以重复上述过程以为场景产生uv缓冲区,该缓冲区是图形引擎用来产生最终渲染的中间缓冲区。也就是说,系统可以将由动作732表示的观察方向、照明方向、法线和余弦项730投影到uv空间。这些映射可以被描述为“uv缓冲区”,类似于传统图形中的“z缓冲区”。因此,网络接收这些uv缓冲区,并旨在生成uvrgb734(如右图所示)。[0138]图8是根据示例实施例的用于实现神经光传输函数的方法800的流程图。方法800可以包括如框802、804和806中的一个或多个所示的一个或多个操作、功能或动作。尽管以顺序次序示出了这些框,但在某些情况下这些框可以并行执行,和/或以不同于本文所述的次序执行。此外,各种框可以组合成更少的框、划分成附加的框和/或基于期望的实现方式来移除框。[0139]此外,对于方法800和本文公开的其他过程和方法,流程图示出了本实施例的一种可能实现方式的功能和操作。在这方面,每个框可以表示模块、段或程序代码的部分,其包括可由处理器执行的一个或多个指令,用于实现过程中的特定逻辑功能或步骤。程序代码可以存储在任何类型的计算机可读介质或存储器上,例如,诸如包括盘或硬盘驱动器的存储设备。[0140]计算机可读介质可以包括非暂时性计算机可读介质,例如,诸如在短时间段内存储数据的计算机可读介质,如寄存器存储器、处理器高速缓存和随机存取存储器(ram)。计算机可读介质还可以包括非暂时性介质或存储器,例如,诸如二级或持久性长期存储器,如只读存储器(rom)、光盘或磁盘、光盘只读存储器(cd-rom)。[0141]计算机可读介质还可以是任何其他易失性或非易失性存储系统。例如,计算机可读介质可以被认为是计算机可读存储介质、有形存储设备或其他制品。此外,对于方法800和本文公开的其他过程和方法,图8中的每个框可以表示被接线以执行过程中的特定逻辑功能的电路。[0142]在框802处,方法800涉及获得指示对象的多个uv纹理图和几何形状的数据。每个uv纹理图可以从各种视角中的一视角描绘对象。诸如智能手机、相机或服务器的计算系统可以获得表示对象的图像的数据。[0143]在一些示例中,可以使用照明台获得多个uv纹理图。特别地,照明台可以包括一定数量的灯(例如,几十个、几百个)以在一个或多个相机捕获对象的图像时按顺序次序(例如,一次一个地)照亮对象。这些图像可用于uv纹理图的后续生成。因此,照明台可以使数据能够指定要与每个图像相关联的信息,诸如哪个灯正照亮对象以及图像是从哪个视角拍摄的。通过使用各种灯以一次一盏灯、已知的顺序次序照亮对象并从各种视角捕获图像,可以积累数据以供后续使用。[0144]此外,计算系统可以从一个或多个传感器获得指示对象的几何形状的数据。例如,计算系统可以从光度立体和深度传感器获得数据。一个或多个传感器可以包括被配置为测量对象的物理方面的各种类型的传感器。在一些示例中,这些传感器可以是照明台的一部分。[0145]在框804处,方法800涉及使用数据来训练神经网络以学习光传输函数。例如,计算系统可以基于指定与每个uv纹理图相关联的灯位置和视角的信息来训练神经网络以学习光传输函数。此外,可以训练神经网络,使得光传输函数的输出取决于对象的一种或多种材料。[0146]光传输函数可以是指定当从多个视角观察对象时光如何与对象相互作用的连续函数。如上文所指示的,数据可以将特定照明和视角与每个图像相关联,以生成uv纹理图。通过收集和分析来自多个图像(例如,几十个、几百个、几千个)的数据以及几何形状信息,一个或多个神经网络可以学习如何以光传输函数的形式表达信息。因此,光传输函数可以使得能够进行对对象的新颖照明和视角的估计。[0147]在框806处,方法800涉及基于通过经训练的神经网络对光传输函数的应用,生成从合成视角描绘对象的输出uv纹理图。在一些情况下,合成视角可以包括应用于对象的新颖照明和/或对象的新颖视图。例如,合成视角可以包括应用于对象的空间变化材料建模的应用。此外,输出图像可以涉及照亮输出图像内的对象的重新照明应用。在一些示例中,合成视角可以表示对对象的材料进行了一种或多种修改的对象。[0148]在一些示例中,生成输出uv纹理图可以涉及确定用特定照明从特定视角对对象纹理的合成。例如,特定视角可以不同于所述多个视角。此外,计算系统还可以基于确定的对对象纹理的合成来重新照明对象的3d模型,并基于对3d模型的重新照明生成描绘对象的输出图像,使得该对象包括新材料。[0149]在一些示例中,方法800还涉及基于输出uv纹理图确定描绘对象的合成视角的输出图像并且在显示界面上显示输出图像。例如,计算系统(或另一个计算系统)可以包括显示界面以显示输出图像。此外,方法800还可以涉及将经训练的神经网络提供给第二计算系统。例如,服务器可以训练神经网络并将经训练的神经网络发送到智能手机以进行本地执行。[0150]图9是图示用于在根据本文呈现的至少一些实施例布置的计算系统上执行计算机过程的计算机程序的概念性局部视图的示意图。在一些实施例中,所公开的方法可以实现为计算机程序指令,该计算机程序指令以机器可读格式编码在非暂时性计算机可读存储介质上,或编码在其他非暂时性介质或制品上。[0151]在一个实施例中,示例计算机程序产品900是使用信号承载介质902提供的,该信号承载介质902可以包括一个或多个编程指令904,当由一个或多个处理器执行时,一个或多个编程指令904可以提供上面关于图1-8描述的功能或部分功能。在一些示例中,信号承载介质902可以涵盖非暂时性计算机可读介质906,诸如但不限于硬盘驱动器、压缩盘(cd)、数字视频盘(dvd)、数字磁带、存储器等。在一些实施方式中,信号承载介质902可以涵盖计算机可记录介质908,诸如但不限于存储器、读/写(r/w)cd、r/wdvd等。在一些实施方式中,信号承载介质902可以涵盖通信介质910,诸如但不限于数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路等)。因此,例如,信号承载介质902可以通过无线形式的通信介质910来传送。[0152]一个或多个编程指令904可以是例如计算机可执行和/或逻辑实现的指令。在一些示例中,诸如图1的计算机系统100的计算设备可以被配置为响应于由计算机可读介质906、计算机可记录介质908和/或通信介质910中的一个或多个传送到计算机系统100的编程指令904而提供各种操作、功能或动作。[0153]非暂时性计算机可读介质也可以分布在多个数据存储元件之中,这些数据存储元件可以彼此远程定位。可替代地,执行一些或全部存储的指令的计算设备可以是另一个计算设备,诸如服务器。[0154]上面的详细描述参考附图描述了所公开的系统、设备和方法的各种特征和功能。尽管本文已经公开了各种方面和实施例,但其他方面和实施例将是显而易见的。本文所公开的各种方面和实施例是出于说明的目的而不旨在进行限制,真实范围由所附权利要求指示。[0155]应当理解,这里描述的布置仅用于示例的目的。因此,本领域的技术人员将理解,可以使用其他布置和其他元素(例如,机器、装置、接口、功能、命令和功能的分组等)来代替,并且可以根据期望的结果一起省略一些元素。此外,被描述的许多元素是功能实体,它们可以以任何合适的组合和位置实现为离散或分布式组件或与其他组件结合。当前第1页12当前第1页12
再多了解一些

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

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

相关文献