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

来自双相机与双像素的联合深度预测的制作方法

2022-06-01 14:10:29 来源:中国专利 TAG:

来自双相机与双像素的联合深度预测
1.相关申请的交叉引用
2.本技术要求于2019年10月14日提交的美国临时专利申请第62/914,988号的优先权,其全部内容通过引用方式并入本文。


背景技术:

3.包括移动电话、个人计算机和平板电脑的许多现代计算设备都包括图像捕获设备,诸如静态相机和/或视频相机。图像捕获设备可以捕获图像,诸如包括人、动物、风景和/或物体的图像。
4.一些图像捕获设备和/或计算设备可以修正或以其他方式修改捕获的图像。例如,一些图像捕获设备可以提供“红眼”修正,其去除了在使用诸如闪光灯的强光捕获的图像中可能呈现的诸如人和动物的表现为红色的眼睛的伪像。在捕获的图像被修正后,修正后的图像可以被保存、显示、发送、打印到纸上和/或以其他方式利用。在一些情况下,在图像捕获期间,对象的图像可能受到弱光的影响。


技术实现要素:

5.本文公开了涉及可用于估计场景中元素深度的深度估计技术的实施例。具体地,计算系统可以训练神经网络来组合从多个源(例如,相机和/或其他计算系统)获得的估计数据(例如,原始图像和/或初步深度图)以产生场景的联合深度图。通过利用多种估计技术,神经网络可以以一种依赖于每种技术的更精确的方面而较少(如果有的话)依赖于这些技术的不太精确的方面的方式组合深度估计技术。由神经网络输出的深度图可以随后用于修改一个或多个原始图像(或图像的聚合)的特征。例如,图像的背景部分可能被部分模糊,以突出前景中的一个或多个对象。
6.因此,在第一示例实施例中,一种方法包括在计算系统处从第一源获得表示场景的第一深度信息集以及从第二源获得表示场景的第二深度信息集。该方法还包括在计算系统处并使用神经网络来确定传达场景中元素的相应深度的联合深度图,其中神经网络基于第一深度信息集和第二深度信息集的组合来确定联合深度图。该方法还包括基于联合深度图修改表示场景的图像。
7.在第二示例实施例中,制造品可以包括非暂时性计算机可读介质,其上存储有程序指令,该程序指令在由相机设备运行时,使得相机设备执行根据第一示例实施例的操作。
8.在第三示例实施例中,系统可以包括多个源、计算系统以及数据储存器和程序指令。程序指令可以存储在数据储存器中,并且在由至少一个处理器运行时,可以使得计算系统执行根据第一示例实施例的操作。
9.在第四示例实施例中,系统可以包括用于执行第一示例实施例的每个操作的多种装置。
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示出了根据示例实施例的图7a所示的联合深度估计架构的实现。
21.图8a示出了根据示例实施例的联合深度估计架构的第二布置。
22.图9示出了根据示例实施例的基于联合深度估计的图像修改。
23.图10是根据示例实施例的方法的流程图。
24.图11是示出根据本文呈现的至少一些实施例布置的用于在计算系统上运行计算机过程的计算机程序的概念性部分视图的示意图。
具体实施方式
25.本文描述了示例方法、设备和系统。应当理解,本文使用的词语“示例”和“示例性”表示“用作示例、实例或说明”。本文作为“示例”或“示例性”描述的任何实施例或特征不一定被解释为比其他实施例或特征更优选或更有利。在不脱离本文呈现的主题的范围的情况下,可以利用其他实施例,并且可以做出其他改变。
26.深度估计是一种具有多种应用的技术,包括在图像处理中。深度估计数据通常被配置为深度图,其可以是存储与场景对象的表面离视点(例如,一个或多个相机的视角)的距离相关的信息的图或其他数据结构。例如,由相机捕获的图像的深度图可以指定与从相机到图像中描绘的对象的表面的距离相关的信息,其中深度图可以在逐像素(或其他)的基础上指定图像的信息。例如,深度图可以包括图像中每个像素的深度值,其中图像im的像素pix的深度图dm的深度值dv1表示从视点到图像im中像素pix所描绘的一个或多个对象的距离。作为另一示例,图像可被划分成区域(例如,n
×
m个像素的块,其中n和m是正整数),并且深度图可包括图像中每个像素区域的深度值(例如,图像im的像素区域pixr的深度图dm的深度值dv2表示从视点到图像im中像素区域pixr所描绘的一个或多个对象的距离)。其他深度图以及图像的像素和深度图的深度值之间的对应也是可能的。
27.存在不同的方法来开发深度图,每种方法都有一些会降低估计精度的障碍。在一个方面,估计场景的深度图可以包括使用从多个相机捕获的图像来执行立体视觉。类似于人类视觉中的三维(3d)感测,立体视觉可以包括识别和比较表示描绘场景的一对或多对图像内的场景中的同一点的图像像素。特别地,因为相机从稍微不同的视角捕获场景,所以可以使用从每个相机延伸到点的射线经由三角测量来确定点在内的3d位置。随着处理器跨图
像识别更多的像素对,处理器可以将深度分配给场景内更多的点,直到可以为场景生成深度图。在一些情况下,使用相关立体方法来获得立体图像中像素的对应,其可以导致随每个立体图像生成的数千个3d值。
28.当比较表示由双相机捕获的场景的图像的对时,处理器可以检测图像之间的一个或多个微小差异。例如,当比较图像时,相对于相机位于场景前景的对象可能表现为保持相对静止,而背景表现为移位(例如,垂直移动)。背景跨不同图像的该移位可被称为视差,其可用于确定场景内表面的深度。如上所述,处理器可以通过识别视图之间的对应像素并进一步分解相机的基线(即,相机之间的距离)来估计视差的数量级,并从而估计场景的一个或多个点的深度。
29.用于估计场景的深度图的另一种方法包括使用单相机。具体地,相机可以使能双像素的使用来生成场景的稍微不同的视角,而不是使用多个相机来获得场景的不同视角。双像素技术反映了双相机,但是涉及将像素划分成不同的部分(例如,两个部分)。然后,每个像素的不同部分可以从使深度能被估计的不同的视角来表示场景。例如,双像素图像可以包含被分成两部分的像素,诸如左像素和右像素。在一些示例中,像素的不同部分可以被称为子像素。
30.通过将像素分成不同的部分,可以将图像划分成两个图像并进行分析,诸如左像素图像和右像素图像。然后,左像素图像和右像素图像可以以类似于上述关于双相机的深度估计过程的方式进行处理。具体地,来自左像素图像和右像素图像的对应像素的对可以被配对,并与不同像素部分(例如,几毫米或更少)之间的基线一起使用,以估计场景内的表面深度。因此,尽管双像素的不同部分之间的基线可能比双相机之间的基线小得多,但处理器可使用图像内的双像素来执行如上所述的类似深度估计过程,以导出场景的深度图。
31.如上所示,设备可以被配置成以不同的方式来估计场景的深度。在一些情况下,用于估计场景的深度图的技术会影响深度图的精度。具体而言,对象相对于一个或多个相机的接近度会影响深度估计的精度。当对象位于相机附近(例如,1米或更短)时,双相机之间的较大基线会降低场景的深度图的精度。相反,与双像素相关联的较小基线会降低位于远离相机(例如,10米或更远)的表面的深度估计的精度。因此,尽管两种技术都可以用于确定图像的深度图,但是存在其中一种技术可能产生更好结果的一些情况。因此,可能期望计算系统能够以能够降低复杂度并增加为场景生成的深度图的精度的方式来使用上述技术。
32.本文呈现的示例描述了用于来自双相机与双像素的联合深度预测的方法和系统。为了克服与上述不同深度估计技术相关联的潜在障碍,示例实施例可以包括使用多种深度估计技术的组合来生成场景的深度图。例如,计算系统可以使用双相机技术和双像素技术来生成场景的深度图。当生成深度图时,与双相机相关联的较大视差可以使能对位于离相机更远的对象的更精确的深度估计,而与双像素相关联的较小视差可以使能对位于附近的对象的更精确的深度估计。
33.在一些示例中,使用立体图像导出的深度估计可以使用双像素技术来改进。具体而言,可以基于视差是图像中呈现的许多深度线索(cue)(包括语义、散焦和其他潜在线索)之一的观察来改进深度估计的精度。示例语义线索可以是相对近的对象比相对远的对象在图像中占据更多像素的推断。散焦线索可以是基于相对远离观察者(例如,相机)的点表现为比相对近的点更不锐利/模糊的观察的线索。在一些示例中,可以训练神经网络使用视差
线索、语义线索和双像素图像的其他方面来预测输入双像素图像的深度图。
34.在一些实施例中,可以训练神经网络来执行深度数据(例如,来自相机的图像和/或深度估计)的加权分析,以生成联合深度预测。这样,联合深度图可以组合每种深度估计技术的更精确的方面,同时较少(或根本不)依赖于这些技术的不太精确的方面。通过训练,神经网络可以学习如何以产生最优联合深度估计的方式对深度信息输入进行加权,该最优联合深度估计随后可以用于修改图像或执行其他图像处理技术。
35.为了说明一个示例,当神经网络正在估计位于远离配置有捕获图像的相机的设备的视点的场景的联合深度图时,相对于应用于从使用单相机的图像中导出的深度信息的权重,神经网络可以将更大的权重应用于从使用多相机立体布置捕获的图像中导出的深度信息。这样,多相机立体视觉的强度可能比从单相机技术导出的影响对最终的联合深度图具有更大的影响。作为另一示例,当神经网络正在估计位于配置有相机的设备的视点附近的场景的联合深度图时,相对于应用于多相机立体技术的权重,神经网络可以将更大的权重应用于从使用单相机技术(例如,双像素、绿色子像素)捕获的图像中导出的深度信息。单相机技术可以提供更精确的结果,其可以积极地影响为近场场景生成的联合深度图。
36.联合深度图可以用于多种应用。在一些示例中,联合深度预测可以用于修改一个或多个图像。例如,为了部分模糊图像,由深度数据确定的具有远离(多个)相机视点的深度的图像的背景部分可以至少部分模糊。适当的模糊软件可以采用深度图来将自然且令人愉悦的深度相关模糊应用于图像的背景,同时以锐聚焦保持前景对象。此外,图像的深度图可以在计算摄影、增强现实和图像处理中具有其他应用。
37.在一些实施例中,系统可以使用双相机技术和双像素技术来进一步获得关于场景内不同方向的线和纹理的补充信息。特别地,当每种技术的基线正交时,系统可以使用这些技术的组合来识别场景内的线和纹理的不同方向。例如,双相机可能具有基线方向(例如,垂直或水平基线),这可能使得难以估计图像内具有相同方向的线的深度。如果双像素的基线相对于双相机的基线方向是正交基线,则双像素图像可以用于帮助估计使用双相机难以检测的线条和纹理的深度。这样,该信息可以用于执行如上所述的一种或多种图像处理技术,诸如增强图像在前景中的一个或多个对象上的聚焦的部分模糊。此外,可以使用多种技术来改进在离设备近距离和远距离捕获的图像,诸如肖像模式图像。
38.i.示例计算设备和基于云的计算环境
39.以下实施例描述了可以采用公开的ann实现的示例计算设备和系统的架构和操作方面,以及其特征和优点。
40.图1是例示计算系统100的简化框图,示出了可以包括在被布置成根据本文的实施例操作的计算设备中的一些组件。计算系统100可以是客户端设备(例如,由用户主动操作的设备)、服务器设备(例如,向客户端设备提供计算服务的设备)、或一些其他类型的计算平台。为了执行特定的操作,一些服务器设备有时可以作为客户端设备来操作,并且一些客户端设备可以合并服务器特征。
41.在该示例中,计算系统100包括处理器102、存储器104、网络接口106和输入/输出单元108,所有这些都可以通过系统总线110或类似机制耦接。在一些实施例中,计算系统100可以包括其他组件和/或外围设备(例如,可拆卸储存器、打印机等)。
42.处理器102可以是任何类型的计算机处理元件中的一个或多个,诸如中央处理单
元(cpu)、协处理器(例如,数学、图形或加密协处理器)、数字信号处理器(dsp)、网络处理器和/或执行处理器操作的集成电路或控制器的形式。在一些情况下,处理器102可以是一个或多个单核处理器。在其他情况下,处理器102可以是具有多个独立处理单元的一个或多个多核处理器。处理器102还可以包括用于临时存储正在运行的指令和相关数据的寄存器存储器,以及用于临时存储最近使用的指令和数据的高速缓冲存储器。
43.存储器104可以是任何形式的计算机可用存储器,包括但不限于随机存取存储器(ram)、只读存储器(rom)和非易失性存储器。这可以包括闪存、硬盘驱动器、固态驱动器、可重写光盘(cd)、可重写数字视频光盘(dvd)和/或磁带储存器,这只是几个示例。
44.计算系统100可以包括固定存储器以及一个或多个可移动存储器单元,后者包括但不限于多种类型的安全数字(sd)卡。因此,存储器104既表示主存储器单元,也表示长期储存器。其他类型的存储器可以包括生物存储器。
45.存储器104可以存储程序指令和/或程序指令可以操作的数据。举例来说,存储器104可以将这些程序指令存储在非暂时性的计算机可读介质上,使得这些指令可由处理器102运行,以执行本说明书或附图中公开的任何方法、过程或操作。
46.如图1所示,存储器104可以包括固件104a、内核104b和/或应用104c。固件104a可以是用于启动或以其他方式发起部分或全部计算系统100的程序代码。内核104b可以是操作系统,包括用于存储器管理、进程调度和管理、输入/输出以及通信的模块。内核104b还可以包括允许操作系统与计算系统100的硬件模块(例如,存储器单元、网络接口、端口和总线)通信的设备驱动器。应用104c可以是一个或多个用户空间软件程序,诸如网络浏览器或电子邮件客户端,以及这些程序使用的任何软件库。在一些示例中,应用104c可以包括一个或多个神经网络应用。存储器104还可以存储由这些和其他程序和应用使用的数据。
47.网络接口106可以采取一个或多个有线接口的形式,诸如以太网(例如,快速以太网、千兆以太网等)。网络接口106还可以支持在一个或多个非以太网介质上的通信,诸如同轴电缆或电力线,或者在广域介质上的通信,诸如同步光纤网络(sonet)或数字用户线路(dsl)技术。网络接口106可以另外采取一个或多个无线接口的形式,诸如ieee 802.11(wifi)、全球定位系统(gps)或广域无线接口。然而,可以在网络接口106上使用其他形式的物理层接口和其他类型的标准或专有通信协议。此外,网络接口106可以包括多个物理接口。例如,计算系统100的一些实施例可以包括以太网、和wifi接口。
48.输入/输出单元108可以促进用户和外围设备与计算系统100和/或其他计算系统的交互。输入/输出单元108可以包括一种或多种类型的输入设备,诸如键盘、鼠标、一个或多个触摸屏、传感器、生物传感器等等。类似地,输入/输出单元108可以包括一种或多种类型的输出设备,诸如屏幕、监视器、打印机和/或一个或多个发光二极管(led)。另外地或替代地,计算系统100可以使用例如通用串行总线(usb)或高清多媒体接口(hdmi)端口接口与其他设备通信。
49.在一些实施例中,可以部署计算系统100的一个或多个实例来支持集群架构。这些计算设备的确切物理位置、连通性和配置对于客户端设备来说可能是未知的和/或不重要的。因此,计算设备可以被称为“基于云”的设备,其可以被封装在多种远程数据中心位置。此外,计算系统100可以使能本文描述的实施例的性能,包括使用神经网络和实现神经光传输。
50.图2描绘了根据示例实施例的基于云的服务器集群200。在图2中,计算设备(例如,计算系统100)的一个或多个操作可以分布在服务器设备202、数据储存器204和路由器206之间,所有这些都可以通过本地集群网络208连接。服务器集群200中的服务器设备202、数据储存器204和路由器206的数量可以取决于分配给服务器集群200的(多个)计算任务和/或应用。在一些示例中,服务器集群200可以执行本文描述的一个或多个操作,包括神经网络的使用和神经光传输功能的实现。
51.服务器设备202可以被配置成执行计算系统100的多种计算任务。例如,一个或多个计算任务可以分布在一个或多个服务器设备202当中。就这些计算任务可以并行执行而言,这种任务的分布可以减少完成这些任务并返回结果的总时间。为了简单起见,服务器集群200和单独的服务器设备202二者都可以被称为“服务器设备”。该术语应该被理解为暗示一个或多个不同的服务器设备、数据储存器设备和集群路由器可能包括在服务器设备操作中。
52.数据储存器204可以是包括驱动器阵列控制器的数据储存器阵列,驱动器阵列控制器被配置成管理对硬盘驱动器和/或固态驱动器组的读取和写入访问。驱动器阵列控制器(单独或与服务器设备202结合)也可以被配置为管理存储在数据储存器204中的数据的备份或冗余拷贝,以防止驱动器故障或阻止一个或多个服务器设备202访问集群数据储存器204的单元的其他类型的故障。可以使用除驱动器之外的其他类型的存储器。
53.路由器206可以包括被配置为向服务器集群200提供内部和外部通信的网络设备。例如,路由器206可以包括一个或多个分组交换和/或路由设备(包括交换机和/或网关),其被配置为提供(i)经由集群网络208在服务器设备202和数据储存器204之间的网络通信,和/或(ii)经由到网络212的通信链路210在服务器集群200和其他设备之间的网络通信。
54.此外,集群路由器206的配置可以至少部分地基于服务器设备202和数据储存器204的数据通信要求、本地集群网络208的等待时间和吞吐量、通信链路210的等待时间、吞吐量和成本、和/或可能有助于系统架构的成本、速度、容错、弹性、效率和/或其他设计目标的其他因素。
55.作为可能的示例,数据储存器204可以包括任何形式的数据库,诸如结构化查询语言(sql)数据库。多种类型的数据结构可以在这样的数据库中存储信息,包括但不限于表格、数组、列表、树和元组。此外,数据储存器204中的任何数据库可以是单片的或者分布在多个物理设备上。
56.服务器设备202可以被配置成向集群数据储存器204发送数据和从集群数据储存器204接收数据。该种传输和检索可以分别采取sql查询或其他类型的数据库查询以及这种查询的输出的形式。也可以包括另外的文本、图像、视频和/或音频。此外,服务器设备202可以将接收到的数据组织成网页表示。这种表示可以采取标记语言的形式,诸如超文本标记语言(html)、可扩展标记语言(xml)或一些其他标准化或专有格式。此外,服务器设备202可以具有运行多种类型的计算机化脚本语言的能力,诸如但不限于perl、python、php超文本预处理器(php)、动态服务器页面(asp)、javascript等。以这些语言编写的计算机程序代码可以促进向客户端设备提供网页,以及客户端设备与网页的交互。
57.ii.人工神经网络
58.a.示例ann
59.人工神经网络(ann)是一种可以组合起来解决复杂的问题的计算模型,其中许多简单的单元独立并行工作,并且没有中央控制。ann表示为布置成若干层的若干节点,相邻层的节点之间有连接。
60.图3a中示出了一个示例ann 300。特别地,ann 300表示前馈多层神经网络,但是类似的结构和原理用于例如卷积神经网络(cnn)、循环神经网络和递归神经网络。ann 300可以表示被训练来执行特定任务的ann,诸如图像处理技术(例如,分割、语义分割、图像增强)或学习本文描述的神经光传输功能。在进一步的示例中,ann 300可以学习执行其他任务,诸如计算机视觉、风险评估等。
61.如图3a所示,ann 300包括四层:输入层304、隐藏层306、隐藏层308和输出层310。输入层304的三个节点分别接收x1、x2和x3作为初始输入值302。输出层310的两个节点分别产生y1和y2作为最终输出值312。这样,ann300是全连接的网络,其中除了输入层304之外的每一层的节点接收来自先前层中所有节点的输入。
62.节点的对之间的实线箭头表示中间值流经的连接,并且每个连接都与应用于相应中间值的相应权重相关联。每个节点对其输入值及其相关权重(例如,0和1之间的值,包含本数)执行操作,以产生输出值。在一些情况下,该操作可能包括每个输入值和相关权重的乘积的点积和。可以将激活函数应用于点积和的结果,以产生输出值。其他操作也是可能的。
63.例如,如果节点在n个连接上接收到具有相应权重{w1,w2,

,wn}的输入值{x1,x2,

,xn},则点积和d可以被确定为:
[0064][0065]
其中b是特定节点或特定层的偏差。
[0066]
值得注意的是,ann 300的全连接性质可以用于通过给一个或多个权重赋值为0来有效地表示部分连接的ann。同样,偏差也可以设为0,以去除b项。
[0067]
诸如逻辑函数的激活函数可用于将d映射到0和1之间(包含本数)的输出值y:
[0068][0069]
可以使用除了逻辑函数之外的替代的函数,诸如sigmoid或tanh函数。
[0070]
然后,y可以在每个节点的输出连接上使用,并且将通过其相应权重来修改。特别地,在ann 300中,输入值和权重从左到右应用于每层的节点,直到产生最终输出值312。如果ann 300已经被完全训练,最终输出值312是ann 300已经被训练来解决的问题的建议解决方案。为了获得有意义的、有用的和相当精确的解,ann 300至少需要某种程度的训练。
[0071]
b.训练
[0072]
训练ann可以包括向ann提供某种形式的监督训练数据,即输入值和期望的或地面真实(ground truth)输出值的集合。例如,使能ann以执行图像处理任务的监督训练可以包括提供包括训练图像和表示训练图像的期望输出(例如,期望分割)的对应地面真实掩膜的图像的对。对于ann 300,该训练数据可以包括与输出值配对的输入值集m。更正式地,训练数据可以表示为:
[0073]
[0074]
其中i=1

m和以及是对x
1,i
、x
2,i
和x
3,i
的输入值的期望输出值。
[0075]
训练过程包括将来自该集的输入值应用到ann 300,并产生相关输出值。损失函数可用于评估产生的输出值和地面真实输出值之间的误差。在一些情况下,该损失函数可以是差的和、均方误差或一些其他度量。在一些情况下,确定所有m集合的误差值,并且误差函数包括计算这些值的总计(例如,平均值)。
[0076]
一旦确定了误差,就更新连接上的权重以试图减少误差。简单地说,这个更新过程应该奖励“好”的权重,惩罚“坏”的权重。因此,更新应该通过ann300以导致训练数据的未来迭代的较低误差的方式来分布误差的“责任”。例如,更新过程可以包括修改ann 300的至少一个权重,使得ann 300在训练图像上的后续应用生成新的输出,该新的输出更紧密地匹配对应于训练图像的地面真实掩膜。
[0077]
训练过程继续将训练数据应用于ann 300,直到权重收敛。当误差小于阈值或者在训练的连续迭代之间误差的变化足够小时,收敛发生。此时,可以说ann 300被“训练”并且可以为预测未知的输出值而应用于新的输入值集合。当被训练以执行图像处理技术时,ann 300可以产生输入图像的输出,该输出非常像为输入图像创建的地面真实(即,期望的结果)。
[0078]
ann的许多训练技术利用了某种形式的反向传播。在反向传播期间,输入信号通过网络输出前向传播,并且然后相对于目标变量计算网络误差,并朝向输入反向传播。特别地,反向传播通过ann 300从右到左一次一层地分布误差。因此,首先更新隐藏层308和输出层310之间的连接的权重,其次更新隐藏层306和隐藏层308之间的连接的权重等。这种更新基于激活函数的导数。
[0079]
为了进一步解释误差确定和反向传播,看一个实际过程的示例是有帮助的。然而,反向传播可能变得非常复杂来表示,除非是在最简单的ann上。因此,图3b介绍了一个非常简单的ann 330,为了提供一个反向传播的说明性示例。
[0080]
权重节点权重节点w1i1,h1w5h1,o1w2i2,h1w6h2,o1w3i1,h2w7h1,o2w4i2,h2w8h2,o2
[0081]
表1
[0082]
ann 330由三层组成:输入层334、隐藏层336和输出层338,每层有两个节点。初始输入值332被提供给输入层334,并且输出层338产生最终输出值340。在一些示例中,权重已经被分配给每个连接,并且偏差(例如,如图3b所示的b1、b2)也可以应用于隐藏层336中的每个节点的网络输入。为了清楚起见,表1将权重映射到具有这些权重应用到的连接的节点的对。例如,w2应用于节点i2和h1之间的连接,w7应用于节点h1和o2之间的连接等。
[0083]
训练ann 330的目标是通过一定数量的前馈和反向传播迭代来更新权重,直到最终输出值340足够接近指定的期望输出。注意,使用单个训练数据集有效地仅为该集训练ann 330。如果使用多个训练数据集,ann 330也将根据这些集进行训练。
[0084]
1.前馈传递示例
[0085]
为了发起前馈传递,计算隐藏层336中每个节点的网络输入。通过应用激活函数,可以从网络输入中找到这些节点的输出。对于节点h1,网络输入net
h1
为:
[0086]
net
h1
=w1x1 w2x2 b1ꢀꢀ
(4)
[0087]
将激活函数(此处是逻辑函数)应用于该输入来确定节点h1的输出out
h1
为:
[0088][0089]
按照对节点h2的相同流程,也可以确定输出out
h2
。前馈迭代中的下一步是对输出层338的节点执行相同的计算。例如,节点o1的网络输入net
o1
为:
[0090]
net
o1
=w5out
h1
w6out
h2
b2ꢀꢀ
(6)
[0091]
因此,节点o1的输出out
o1
为:
[0092][0093]
按照节点o2的相同流程,可以确定输出out
o2
。此时,可以基于损失函数确定总误差δ。例如,损失函数可以是输出层508中节点的误差平方和。即:
[0094][0095]
每一项中的乘法常数用于简化反向传播期间的微分。因为总体结果是通过学习率来缩放的,所以该常数不会对训练产生负面影响。无论如何,此时,前馈迭代完成,并且反向传播开始。
[0096]
2.反向传播
[0097]
如上所述,反向传播的目标是使用δ(即,基于损失函数确定的总误差)来更新权重,使得它们在未来的前馈迭代中贡献较少的误差。例如,考虑权重w5。目标包括确定w5中的变化影响δ多少。这可以表示为偏导数使用链式法则,该项可以扩展为:
[0098][0099]
因此,对w5的改变的对δ影响等于(i)对out
o1
的改变的对δ的影响、(ii)对net
o1
的改变的对out
o1
的影响以及(iii)对w5的改变的对net
o1
的影响的乘积。这些乘法项中的每一项都可以独立确定。直观上,该过程可以被认为是隔离w5对net
o1
的影响、net
o1
对out
o1
的影响以及our
o1
对δ的影响。
[0100]
对于馈送到输出层338的其他权重,可以重复该过程。注意,直到在反向传播结束时以及确定了对所有权重的更新,才不更新权重。然后,在下一次前馈迭代之前更新所有权重。
[0101]
在计算了对剩余权重w1、w2、w3和w4的更新之后,反向传播传递继续到隐藏层336。对于馈送到输出层338的其他权重,可以重复该过程。此时,反向传播迭代结束,并且所有权重都已更新。ann 330可以通过后续的前馈和反向传播迭代继续被训练。在一些情况下,在经过几次前馈和反向传播迭代(例如,数千次迭代)之后,误差可以被减小以产生接近原始期望结果的结果。此时,y1和y2的值将接近目标值。如图所示,通过使用可微损失函数,可以
确定由ann 330输出的预测与期望结果相比的总误差,并用于相应地修改ann 330的权重。
[0102]
在一些情况下,如果系统的超参数(例如,偏差b1和b2以及学习率α)被调整,等量的训练可以用较少的迭代来完成。例如,将学习率设置得更接近特定值可以导致误差率更快地降低。此外,作为学习过程的一部分,可以以与更新权重类似的方式更新偏差。
[0103]
不管怎样,ann 330只是一个简化的示例。可以开发任意复杂的ann,调整每个输入和输出层中的节点数,以解决特定的问题或目标。此外,可以使用多于一个隐藏层,并且每个隐藏层中可以有任意数量的节点。
[0104]
iii.卷积神经网络
[0105]
卷积神经网络(cnn)类似于ann,因为cnn可以由若干层的节点组成,其间具有加权连接和可能的每层偏差。权重和偏差可以通过上面讨论的前馈和反向传播流程来更新。损失函数可以用于将前馈处理的输出值与期望的输出值进行比较。
[0106]
另一方面,cnn通常被设计为明确假设初始输入值从一个或多个图像导出。在一些实施例中,图像片(patch)中每个像素的每个颜色通道是分离的初始输入值。假设每像素三个颜色通道(例如,红色、绿色和蓝色),即使一个小的32
×
32像素片也将导致第一隐藏层中的每个节点有3072个传入权重。显然,使用朴素ann进行图像处理可能会导致一个非常庞大和复杂的需要很长时间来训练的模型。
[0107]
相反,cnn被设计成利用几乎所有图像中存在的固有结构。特别地,cnn中的节点仅连接到先前层中的少量节点。该cnn架构可以被认为是三维的,具有布置在具有宽度、高度和深度的块中的节点。例如,上述具有3个颜色通道的32
×
32像素片可以被布置成具有32个节点的宽度、32个节点的高度和3个节点的深度的输入层。
[0108]
在图4a中示出了示例cnn 400。表示为像素x1…
xm的初始输入值402被提供给输入层404。如上所述,基于像素x1…
xm的宽度、高度和颜色通道的数量,输入层404可以具有三维。输入层404向一个或多个特征提取层集提供值,每集包含卷积层406、relu层408和池化层410的实例。池化层410的输出被提供给一个或多个分类层412。最终输出值414可以布置在表示初始输入值402的简明表征的特征向量中。
[0109]
卷积层406可以通过在这些输入值的三维空间布置周围滑动一个或多个滤波器来变换其输入值。滤波器由应用于节点的偏差和节点间连接的权重表示,并且其宽度和高度通常小于输入值的宽度和高度。每个滤波器的结果可以是输出值的二维块(称为特征图),其中宽度和高度可以具有与输入值相同的大小,或者这些维度中的一个或多个可以具有不同的大小。每个滤波器的输出的组合导致深度维度中的特征图的层,其中每层表示一个滤波器的输出。
[0110]
应用滤波器可以包括计算滤波器中的条目和输入值的二维深度切片之间的点积和。图4b示出了这样的一个示例。矩阵420表示卷积层的输入,并因此例如可以是图像数据。卷积运算将滤波器422覆盖在矩阵420上,以确定输出424。例如,当滤波器422位于矩阵420的左上角,并且计算每个条目的点积和时,结果是4。这被放置在输出424的左上角。
[0111]
回到图4a,cnn在训练期间学习滤波器,使得这些滤波器能够最终识别输入值中特定位置处的某些类型的特征。例如,卷积层406可以包括滤波器,其最终能够检测从其导出初始输入值402的图像片中的边缘和/或颜色。称为感受域的超参数确定卷积层406和输入层404中每个节点之间的连接数。这允许每个节点关注输入值的子集。
[0112]
relu层408对卷积层406提供的输出应用激活函数。在实践中,已经确定的是,整流线性单元(relu)函数或其变体似乎在cnn中提供了强有力的结果。relu函数是一个简单的阈值函数,定义为f(x)=max(0,x)。因此,当x为负时,输出为0,并且当x为非负时,输出为0。对relu函数的平滑的、可微的近似是softplus函数。其被定义为f(x)=log(1 e
x
)。尽管如此,该层中也可以使用其他函数。
[0113]
池化层410通过对来自relu层408的输出的每个二维深度切片进行下采样来减小数据的空间大小。一种可能的方法是对深度切片的每个2
×
2块应用步长为2的2
×
2滤波器。这将使每个深度切片的宽度和高度减少2倍,从而使数据的总体大小减少75%。
[0114]
分类层412以特征向量的形式计算最终输出值414。例如,在被训练为图像分类器的cnn中,特征向量中的每个条目可以编码图像片包含特定类别的项目(例如,人脸、猫、海滩、树等)的概率。
[0115]
在一些实施例中,存在多个特征提取层集。因此,池化层410的实例可以向卷积层406的实例提供输出。此外,对于池化层410的每个实例,可以有卷积层406和relu层408的多个实例。
[0116]
cnn 400表示可以在图像处理中使用的一般结构。卷积层406和分类层412与ann 300中的层类似地应用权重和偏差,并且这些权重和偏差可以在反向传播期间更新,使得cnn 400可以学习。另一方面,relu层408和池化层410通常应用固定操作,并因此可能不学习。
[0117]
与ann不同,cnn可以包括与本文的示例中所示不同数量的层,并且这些层中的每一层可以包括不同数量的节点。因此,cnn 400仅仅是为了说明的目的,并不应该被认为是限制cnn的结构。
[0118]
图5描绘了根据示例实施例的包括在计算系统502和移动设备510上操作的ann的系统500。
[0119]
在计算系统502上操作的ann可以对应于上述ann 300或ann 330。例如,ann可以被配置成运行指令,以便执行所描述的操作,包括确定联合深度图。在一些示例中,ann可以表示cnn(例如,cnn 400)、前馈ann、基于梯度下降的激活函数ann或调节性反馈ann,以及其他类型。
[0120]
例如,ann可以基于训练图像集来确定多个图像处理参数或技术。例如,ann可以接受机器学习过程,以“学习”如何像人类专业人员一样操纵图像。训练图像集可以包括许多图像对。例如,ann可以分析1,000-10,000个图像对。每个图像对可以包括“原始”图像(本文也称为输入图像)和表示原始图像所具有的期望质量的对应的地面真实掩膜。在一些情况下,地面真实掩膜表示训练图像的期望分割。在进一步的示例中,地面真实掩膜可以表示在ann的应用之后对应的输入图像将具有的其他期望质量。
[0121]
掩膜常用于图像处理,并可以包括将图像内的像素值设置为零或诸如此类的其他背景值。例如,掩膜图像可以对应于其中一些像素强度值为零,而其他像素值为非零(例如,使用“1”和“0”的二进制掩膜)的图像。只要掩膜图像中的像素强度值为零,则生成的掩膜图像的像素强度可以被设置为背景值(例如,零)。为了进一步说明,示例掩膜可以包括将对应于图像的前景中的对象的所有像素设置为白色,并将对应于背景特征或对象的所有像素设置为黑色。预测掩膜可以对应于由ann产生的图像的估计分割(或其他估计输出)。预测掩膜
可以与地面真实掩膜进行比较,地面真实掩膜可以表示输入图像的期望分割。
[0122]
在一个示例实施例中,地面真实掩膜可以由人类使用图像处理/操纵程序(诸如adobe lightroom、adobe photoshop、adobe photoshop elements、google picasa、microsoft photos、dxo opticspro、corel paintshop pro或apple photos)来开发和调整。在其他示例中,地面真实掩膜可以由一个或多个先前训练的ann开发。例如,可以使用ann的多次迭代来确定地面真实掩膜。在另一个示例中,可以基于ann和人工另外调整的组合来生成地面真实掩膜。将会理解,其他类型的图像处理软件也是可能的,并且在本文中被考虑。可选地,图像对可以表示使用预设或随机滤波器或其他图像调整算法对原始图像的调整。
[0123]
在机器学习过程期间,ann可以确定“权重”集,表示人类进行的不同类型的图像操作(或更复杂的计算处理)。更具体地,这些权重可以与各种图像参数相关联,诸如曝光、清晰度、对比度、锐度、色调、饱和度、颜色、色差、聚焦、色调、白平衡、色彩映射、hdr色调映射等。权重还可以影响由ann应用的分割、语义分割或其他图像处理技术。将会理解,与其他图像参数相关联的权重是可能的。随着时间的推移,并且利用足够数量的训练图像,ann可以将这些权重发展为图像处理参数集,其可以用于ann的表示。在其他示例中,ann的权重可以取决于ann被训练执行的其他任务。
[0124]
图6示出了根据示例实施例的用于增强深度估计的系统。系统600表示可以训练和使用神经网络来分析和产生使用多种深度估计技术的增强的深度估计的示例系统。如图6所示,系统600可以包括使用多相机深度信息602(例如,来自两个或更多个相机的立体视觉)和单相机深度信息604(例如,双像素612、绿色子像素614)。深度信息602、604的组合可以被神经网络(例如ann、cnn)用来开发和提供场景的联合深度预测,该联合深度预测可以随后被用来以多种方式增强场景的图像,诸如模拟图像的散景效果或者以其他方式部分模糊图像的部分。
[0125]
一个或多个计算系统(例如,图1所示的计算系统100)可以执行系统600的特征。例如,具有多个相机的智能手机可以捕获多相机深度信息602和单相机深度信息604。捕获图像的相机可以被配置成提供多相机深度信息602和单相机深度信息604中的一个或两个。例如,智能手机可以包括能够立体操作的一对相机,其中一个或两个相机还被配置成捕获单相机深度信息604的图像。这样,智能手机和/或另一计算系统(例如,远程服务器)可以运行经过训练的神经网络,其可以使用图像和深度估计来产生场景的联合深度图。一个或多个计算系统可以使用联合深度图来随后修改图像的输出。为了说明一个示例,深度图可以用于部分模糊图像的背景部分,以增强位于前景中的(多个)对象的聚焦。
[0126]
系统600内实现的神经网络可以由一个或多个计算系统训练。此外,训练的神经网络可以在多种计算设备上运行,诸如可穿戴计算设备、智能手机、膝上型计算机和服务器。在一些示例中,第一计算系统可以训练神经网络并将训练的神经网络提供给第二计算系统。
[0127]
多相机深度信息602可以表示从多个相机(诸如立体布置中的两个或更多相机)获得的图像和其他数据。在一些示例中,多相机深度信息602可以包括由训练的神经网络处理以开发联合深度图估计的图像。在其他示例中,多相机深度信息602可以包括以深度图形式的深度数据或使用多相机深度估计技术(例如,立体视觉)导出的其他数据。在这些示例中,
训练的神经网络可以获得深度数据(以及潜在地从相机捕获的图像)来确定联合深度图。
[0128]
在一些实施例中,立体视觉可以包括立体预处理608和立体校准610。立体预处理608可以包括为后续的深度分析准备多个图像集。这可以包括清理和组织用于立体校准的图像610。在一些示例中,立体预处理可以包括使用相机(例如,远摄相机)的环形缓冲区,并且原始远摄图像可以在传感器2
×
2处入库(be binned)以节省存储器和功率。此外,图像帧可以被对齐和合并以减少噪声。这可能类似于高动态范围成像(hdri),其可用于再现光度的更大动态范围。在一些示例中,立体预处理608还可以包括选择基帧以匹配主相机(如果指定的话)的基帧。此外,低分辨率完成可以用于节省时间。
[0129]
立体校准610可以包括使用特征匹配和来自运动和/或直接自校正(dsr)结构中的一种或其组合。在一些示例中,使用来自多个相机的图像的深度估计可以包括其他技术。特征匹配可以包括检测跨多个图像的特征,以使用局部特征来匹配图像区域。局部特征可以对遮挡和混乱具有鲁棒性,并且可以帮助区分大型对象数据库。这可以使能在图像当中确定视差,并且有助于图像对齐和3d重建(例如,立体)。可以使用不同类型的特征检测器,诸如尺度不变特征变换(sift)或加速鲁棒特征(surf)。
[0130]
来自运动的结构可以包括从可以与局部运动信号耦接的2d图像序列中估计3d结构。为了找到图像之间的对应关系,可以在图像之间跟踪诸如角点(在多个方向上具有梯度的边缘)的特征。然后,可以使用特征随时间的轨迹来重建它们的3d位置和相机的运动。在一些情况下,几何信息(3d结构和相机运动)可以从图像中直接估计,而不需要对特征或角的中间抽象。
[0131]
dsr可以用于执行立体校正,并且可以去除对每对相机的单独离线校准的需要。dsr可以包括最小化原始图像和变换图像之间对应点的垂直位移。dsr可以专用于电话上的双相机(例如,为立体布置的相机)。在一些实例中,如果基线的y和z分量很小,可以通过仅扭曲图像中的一个来校正图像。这使能通过在图像空间中对齐特征匹配来直接解决扭曲。
[0132]
单相机深度信息604可以表示从能够单独用于深度信息的一个或多个相机获得的图像和其他数据。例如,智能手机或另一计算系统可以包括被配置成捕获用于深度估计技术的图像的相机,诸如双像素612和绿色子像素614。可以使用其他单相机技术来导出深度信息,训练的神经网络可以使用该深度信息来生成场景的联合深度估计。
[0133]
在一些示例中,单相机深度信息604可以包括由训练的神经网络处理以开发联合深度图估计的图像。在其他示例中,单相机深度信息602可以包括以深度图形式的深度数据或使用一个或多个单相机深度估计技术(例如,双像素612和绿色子像素614)导出的其他数据。在这些示例中,训练的神经网络可获得深度数据(以及潜在地从一个或多个相机捕获的图像)来确定联合深度图。
[0134]
双像素612和绿色子像素614是可以使能基于使用单相机捕获的图像生成深度图的类似技术。例如,可以通过将每个双像素图像用作两个不同的单像素图像并试图匹配这两个不同的单像素图像来从双像素图像计算深度。每个点的深度确定了像素在两个视图之间移动的程度。绿色子像素614可以表示类似的技术,该技术可以包括使用图像的像素内的绿色子像素作为从使用三角测量来分析以确定深度的图像创建多个图像的方式。
[0135]
使用神经网络606的深度预测可以包括使用训练的神经网络在另一结构中生成增强的深度图或深度数据。训练的神经网络可以使用多相机深度信息602和单相机深度信息
604作为输入来生成联合深度图作为输出。联合深度图可用于随后修改场景的一个或多个图像,诸如部分模糊图像的一个或多个部分。
[0136]
图7a示出了根据示例实施例的联合深度估计架构的第一布置。联合深度估计架构700表示可以用于基于诸如双像素输入702和差分体积(diff-volume)输入710的多个输入来生成联合深度图的示例架构。其他示例布置也是可能的。
[0137]
双像素输入702和差分体积输入710表示单相机和多相机深度信息,其可被用作导出深度估计和用于估计的相关置信度的输入。例如,神经网络704或另一种处理技术可以使用双像素输入702来生成双像素深度706,其表示根据双像素输入702的场景的深度图。另外,双像素深度706可以包括双像素置信度708,其指示与深度图相关联的置信度水平。对于双像素深度706的不同部分,置信水平可以不同。类似地,神经网络712或另一种处理技术可以使用差分体积输入710来生成代价体积(cost-volume)深度714,其可以表示根据差分体积输入710的场景的深度图。代价体积深度714还可以包括代价体积置信度716,其表示与深度图的部分相关联的一个或多个置信度水平。神经网络可以使用和组合718信息,诸如双像素深度706、双像素置信度708、代价体积深度714和代价体积置信度716,以生成最终深度图720。
[0138]
图7b示出了根据示例实施例的图7a所示的联合深度估计架构的实现。实现730表示图7a所示的联合深度估计架构700的示例实现,并且包括深度预测732、736、置信度734、738和联合深度图740。
[0139]
具体而言,在接收到双像素输入702和差分体积输入710后,可以执行一个或多个过程来确定深度预测732、736和相关联的置信度734、738。如图7b所示,置信度734与深度预测732相关联,并指示在实现730的深度图中表示的人的边界附近的较高置信度。类似地,置信度738与深度预测736相关联,并且指示对背景的较高置信度。这样,神经网络可以使用置信度734、738来使用和组合深度预测732、736,以确定联合深度图表示740。例如,联合地图表示740可以。
[0140]
图8a示出了根据示例实施例的另一种联合深度估计架构。联合深度估计架构800表示可以用于基于诸如双像素输入802和差分体积输入808的多个输入来生成联合深度图的另一示例架构。其他示例布置也是可能的。
[0141]
双像素输入802和差分体积输入808表示单相机和多相机深度信息,其可用作确定最终深度810的输入,该最终深度810表示基于输入的联合深度图。特别地,神经网络804可以使用一个或多个编码器和/或共享的解码器806来处理输入,以开发最终深度810的联合深度图。例如,神经网络804可以包括一个或多个神经网络,其被训练来对双像素输入802和差分体积输入808进行编码、组合并运行共享解码器806以产生最终深度810的联合深度图。
[0142]
图9示出了根据示例实施例的基于联合深度估计的图像修改。输入图像900表示由一个或多个照相机捕获的图像或图像总计。例如,智能电话或可穿戴设备的相机可以捕获输入图像900。这样,输入图像900传达了包括位于输入图像900的前景中的玩具狗902的场景。特别地,场景示出了玩具狗902位于人的脚904和椅子906前面的板上。这样,输入图像900在图9中被示出,其中2d中的所有元素被清晰地呈现,而没有输入图像900的任何部分被模糊。例如,输入图像900可以表示在没有应用任何修改的情况下,图像一旦被相机捕获后会如何表现。
[0143]
在一些示例中,输入图像900可以表示图像集。图像集可用于导出图9所示的联合深度估计908。在一个实施例中,联合深度图908可由神经网络开发,该神经网络使用从输入图像900和其它图像导出的深度估计,如以上参考图6-图8所述。
[0144]
联合深度图908描绘了由输入图像900表示的场景内的元素的估计深度。具体而言,联合深度图908示出了输入图像900的各部分的估计深度,其中较亮部分(例如,玩具狗902)指示与位于背景中的较暗部分(例如,脚904和椅子906)相比位于更靠近相机的元素。如图所示,联合深度图908中的阴影表现为指示玩具狗902位于前景中(例如,较浅的阴影),而脚904和椅子906表现为具有背景中的位置(例如,较深的阴影)。即,联合深度图908指示玩具狗902在图像捕获期间比脚904和椅子906位于更靠近相机。
[0145]
此外,图9还示出了修改的图像910,其表示原始捕获的输入图像900的修改版本。通过使用联合深度图908,以类似于散景效果的方式生成了修改的图像910,其聚焦于前景中的玩具狗902以及脚904和椅子906。
[0146]
在一些示例中,生成修改的图像910可以包括锐化图像的部分以增加图像对比度。特别地,锐化可以增强修改的图像910中的边缘的清晰度。例如,玩具狗902的边缘可以被锐化。锐化可以在一个步骤或一系列迭代中执行。
[0147]
在进一步的示例中,生成修改的图像910可以包括模糊图像的一个或多个部分。模糊可以从输入图像900和其他输入图像中去除图像颗粒和噪声。在一些情况下,模糊可以包括向修改图像910的部分添加或去除噪声,以创建模糊效果。可以使用高斯模糊,其包括通过高斯函数来模糊图像的一部分。与散景效果不同,高斯模糊可以产生平滑的模糊,类似于透过半透明屏幕查看图像的部分。这样,可以执行高斯模糊来增强图像元素。在其他示例中,可以使用其他类型的模糊效果。例如,圆盒模糊可以用于模糊修改图像910的背景元素。
[0148]
在一些示例中,生成聚焦在场景的一部分上并且场景的一个或多个其他部分模糊的图像的新版本可以包括执行边缘感知平滑。具体而言,边缘感知平滑可以使能新版本中聚焦的部分相对于场景中模糊的一个或多个其他部分具有平滑的边缘。
[0149]
在一些实施例中,修改的图像910内的聚焦的部分和模糊的部分可以在捕获输入图像900时分解(factor)原始接收的用户输入。例如,当准备捕获输入图像900时,相机设备可以使用取景器显示相机的潜在图像的视点。取景器可以是触摸屏,其使用户能选择相机在图像捕获期间应该聚焦的场景的部分。结果,当生成修改的图像910时,当确定在修改的图像910内聚焦哪个元素(例如,玩具狗902)以及模糊哪个元素时,相机设备可以分解用户对场景的先前选择。
[0150]
图10是根据示例实施例的用于实现神经光传输功能的方法1000的流程图。方法1000可以包括如框1002、1004和1006中的一个或多个所示的一个或多个操作、功能或动作。尽管这些框是以顺序示出的,但是在一些情况下,这些框可以并行执行,和/或以与本文描述的顺序不同的顺序执行。此外,基于期望的实现,多种块可以被组合成更少的块、被划分成另外的块和/或被去除。
[0151]
此外,对于方法1000和本文公开的其他过程和方法,流程图示出了当前实施例的一种可能实现的功能和操作。在这点上,每个块可以表示模块、程序代码段或程序代码的一部分,其包括可由处理器运行的一个或多个指令,用于实现过程中的特定逻辑功能或步骤。程序代码可以存储在任何类型的计算机可读介质或存储器上,例如,诸如包括磁盘或硬盘
驱动器的储存器设备。
[0152]
计算机可读介质可以包括非暂时性的计算机可读介质,例如,诸如寄存器存储器、处理器高速缓存和随机存取存储器(ram)那样短期存储数据的计算机可读介质。例如,计算机可读介质还可以包括非暂时性介质或存储器,诸如二级或永久性长期储存器,如只读存储器(rom)、光学盘或磁盘、光盘只读存储器(cd-rom)。
[0153]
计算机可读介质也可以是任何其他易失性或非易失性储存系统。例如,计算机可读介质可以被认为是计算机可读储存介质、有形储存设备或其他制品。此外,对于方法1000和本文公开的其他过程和方法,图10中的每个块可以表示被连线以执行该过程中的特定逻辑功能的电路。
[0154]
在框1002,方法1000包括从第一源获得表示场景的第一深度信息集,以及从第二源获得表示场景的第二深度信息集。计算系统可以从包括相机、传感器和/或计算系统的多种类型的源获得一个或多个深度信息集。
[0155]
计算系统可以从单相机接收表示场景的深度信息(例如,第一深度信息集),其中第一深度信息集对应于描绘场景的一个或多个双像素图像。第一深度信息集可以包括基于从单相机获得的双像素图像的场景的第一深度估计。在一些示例中,计算系统可以从被配置成捕获用于双像素深度估计和/或绿色子像素深度估计的图像的一个或多个相机接收深度信息(例如,深度估计和/或图像)。
[0156]
此外,计算系统可以从一对立体相机接收深度信息(例如,第二深度信息集)。具体地,第二深度信息集可以对应于描绘场景的一个或多个立体图像集。第二深度信息集可以包括基于描绘场景的一个或多个立体图像集生成的场景的第二深度估计。在一些示例中,使用差分体积技术来确定场景的第二深度估计。差分体积技术可以包括将远摄图像投影到不同深度的平面上,并从主图像中减去以形成叠加(stack)。在一些情况下,差分体积技术可以使能深度估计以与一个或多个图像对齐。
[0157]
在框1004,方法1000包括使用神经网络来确定传达场景中元素的相应深度的联合深度图。神经网络可以基于第一深度信息集和第二深度信息集的组合来确定联合深度图。具体而言,可以训练神经网络来确定如何组合从多个源(例如,单相机、立体相机)导出的多个深度信息集,以产生最佳的联合深度图。最佳联合深度图可以清楚地区分场景中的不同元素,并且还指示场景中背景和前景元素之间的明显差异。联合深度图可以包括元素的锐利边缘以及对仅使用一种技术建立的深度图的其他潜在改进。
[0158]
在一些示例中,确定联合深度图可以包括由神经网络将第一权重分配给第一深度信息集,并将第二权重分配给第二深度信息集。它还可以包括基于分配给第一深度信息集的第一权重和分配给第二深度信息集的第二权重来确定联合深度图。在一些情况下,由神经网络将第一权重分配给第一深度信息集并将第二权重分配给第二深度信息集可以基于捕获场景图像的相机和场景前景中的元素之间的距离。此外,分配给深度信息(例如,图像和/或深度估计)的权重可以取决于其他因素,诸如用于训练神经网络的训练数据(例如,图像集)。
[0159]
在一些示例中,确定联合深度图可以基于与深度信息集相关联的置信度。例如,可以基于与第一深度信息集相关联的第一置信度和与第二深度信息集相关联的第二置信度来确定联合深度。可以用多种方式来确定置信度。例如,基于从相机接收的图像开发深度估
计的计算系统可以为每个估计分配置信度。为了说明,神经网络或另一过程可被配置成使用多种技术(诸如三角测量、立体视觉、差分体积计算、双像素和绿色子像素等)基于一个或多个图像来估计深度。这样,网络或过程也可以为每个深度估计分配置信度。置信度可以针对深度估计的全部,也可以针对深度估计的部分。在一些示例中,计算系统可以将第一深度信息集和第二深度信息集作为输入提供给神经网络,使得神经网络使用与第一深度信息集相关联的第一置信度和与第二深度信息集相关联的第二置信度来确定联合深度图。
[0160]
另外,确定联合深度图可以基于使用深度信息集(例如,第一集和第二集)作为神经网络的输入,使得神经网络使用解码器来确定联合深度图。当神经网络被训练来执行能够识别场景内的元素的深度并在它们之间进行区分的其他成像处理技术时,它们可以用作神经网络的输入。
[0161]
在框1006,方法1000包括基于联合深度图修改表示场景的图像。例如,可以基于联合深度图对描绘场景的一个或多个图像执行一种或多种图像修改技术。这些图像可以对应于原始捕获以开发深度信息集的图像,或者可以是同一场景的新图像。
[0162]
在一些示例中,基于联合深度图,图像的一个或多个部分可以被部分模糊。例如,可以模糊图像的背景部分,以突出前景中的一个或多个对象。
[0163]
在一些示例中,训练神经网络可以包括使用被布置和同步的多相机装配来生成训练数据。例如,双相机可以提供十个视图来从其计算地面真实深度。在进一步的示例中,可以使用来自立体校准的稀疏点云将联合深度图转换成几乎公制的深度。
[0164]
在一些示例中,当以特定模式(诸如肖像模式)捕获图像时,设备可以执行本文描述的一种或多种技术。特定模式(例如,肖像模式)可以包括计算系统最初估计场景中像素处的对象距离(即,深度确定)。计算系统然后可以通过用基于深度的大小的半透明盘替换原始图像(例如,hdr 图像)中的每个像素来呈现结果。
[0165]
在进一步的示例中,系统可以使用与每种深度估计技术相关联的基线方向信息来进一步增强纹理和线识别以及深度估计。例如,双像素可以具有第一方向(例如,垂直)的基线,并且双相机可以具有与第一方向正交的第二方向(例如,水平)的基线。通过具有正交方向,神经网络或另一种图像处理技术可以使用基线的正交性来进一步增强关于场景的信息的导出,诸如纹理、线的方向和元素的深度。
[0166]
图11是示出根据本文呈现的至少一些实施例布置的用于在计算系统上运行计算机过程的计算机程序的概念性部分视图的示意图。在一些实施例中,所公开的方法可以被实现为以机器可读格式编码在非暂时性计算机可读存储介质上的计算机程序指令,或者编码在其他非暂时性介质或制品上的计算机程序指令。
[0167]
在一个实施例中,使用信号承载介质1102来提供示例计算机程序产品1100,该信号承载介质1102可以包括一个或多个程序指令1104,当由一个或多个处理器运行时,程序指令1104可以提供以上参考图1-图10描述的功能或部分功能。在一些示例中,信号承载介质1102可以包含非暂时性计算机可读介质1106,诸如但不限于硬盘驱动器、光盘(cd)、数字视频盘(dvd)、数字磁带、存储器等。在一些实现中,信号承载介质1102可以包含计算机可记录介质1108,诸如但不限于存储器、读/写(r/w)cd、r/w dvd等。在一些实现中,信号承载介质1102可以包含通信介质1110,诸如但不限于数字和/或模拟通信介质(例如,光缆、波导、有线通信链路、无线通信链路等)。因此,例如,信号承载介质1102可以通过无线形式的通信
介质1110来传达。
[0168]
一个或多个编程指令1104可以是例如计算机可运行和/或逻辑实现的指令。在一些示例中,诸如图1的计算机系统100的计算设备可以被配置成响应于由计算机可读介质1106、计算机可记录介质1108和/或通信介质1110中的一个或多个传达到计算机系统100的编程指令1104来提供多种操作、功能或动作。
[0169]
非暂时性计算机可读介质也可以分布在多个数据储存器元件当中,该数据储存器元件可以彼此远离。可选地,运行一些或所有存储的指令的计算设备可以是另一个计算设备,诸如服务器。
[0170]
以上详细描述参考附图描述了所公开的系统、设备和方法的多种特征和功能。虽然本文已经公开了多种方面和实施例,但是其他方面和实施例将是显而易见的。本文公开的多个方面和实施例是为了说明的目的,而不是为了限制,真正的范围由所附权利要求指出。
[0171]
应该理解,本文描述的布置仅仅是为了示例的目的。同样地,本领域技术人员将理解,其他布置和其他元件(例如,机器、装置、接口、功能、顺序和功能分组等)可以被用来代替,并且根据期望的结果,可以完全省略一些元素。此外,所描述的许多元件是功能实体,其可以以任何合适的组合和位置被实现为离散的或分布式的组件或者与其他组件结合。
再多了解一些

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

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

相关文献