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

使用神经网络进行图像感测和处理以跟踪感兴趣区域的制作方法

2022-06-06 00:31:30 来源:中国专利 TAG:

使用神经网络进行图像感测和处理以跟踪感兴趣区域
1.相关申请
2.本专利申请要求标题为“efficient hardware accelerator for sparse sensor”并且于2019年11月7日提交的美国临时专利申请序列号为62/932,067的优先权,其被转让给本技术的受让人,并为所有目的通过引用以其整体并入本文。
3.背景
4.典型的图像传感器包括像素单元阵列。每个像素单元可以包括光电二极管,以通过将光子转换成电荷(例如,电子或空穴)来感测光。在每个像素单元处转换的电荷可以被量化成数字像素值,并且可以从数字像素值的阵列生成图像。
5.可以处理由图像传感器生成的图像以支持不同的应用,诸如,例如虚拟现实(vr)应用、增强现实(ar)或混合现实(mr)应用。然后可以对图像执行图像处理操作以检测特定感兴趣对象及其在图像中的定位(location)。基于对象及其在图像中的定位的检测,vr/ar/mr应用可以生成和更新例如用于通过显示器向用户显示的虚拟图像数据、用于通过扬声器向用户输出的音频数据等,以向用户提供交互体验。
6.为了提高图像操作的空间和时间分辨率,图像传感器通常包括大量像素单元并以高帧速率生成图像。以高帧速率生成高分辨率图像帧,以及传输和处理这些高分辨率图像帧会导致图像传感器和图像处理操作的巨大功耗。此外,假定通常仅像素单元的一小部分接收来自感兴趣对象的光,在生成、传输和处理对于对象检测/跟踪操作无用的像素数据中浪费了大量的功率,这降低了图像感测和处理操作的总体效率。
7.概述
8.本公开涉及图像传感器。更具体地说,但不限于,本公开涉及执行稀疏图像感测和处理操作的技术。
9.在一个示例中,提供了一种装置。该装置包括图像传感器、帧缓冲器和传感器计算电路。图像传感器包括多个像素单元,图像传感器可通过编程数据来配置以选择像素单元的子集来生成激活像素(active pixel)。传感器计算电路被配置为:从帧缓冲器接收包括第一激活像素和第一非激活像素的第一图像帧,第一激活像素由基于第一编程数据选择的像素单元的第一子集生成,第一非激活像素对应于未被选择用于生成第一激活像素的像素单元的第二子集;对第一图像帧的第一像素子集执行图像处理操作,由此将第一图像帧的第二像素子集从图像处理操作中排除,以生成处理输出;基于处理输出,生成第二编程数据;以及将第二编程数据传输到图像传感器以选择像素单元的第二子集以生成第二图像帧的第二激活像素。
10.在一些方面,图像处理操作包括由神经网络模型进行的处理操作,以检测第一图像帧中的感兴趣对象。第一像素子集对应于感兴趣对象。
11.在一些方面,传感器计算电路与主机设备耦合,主机设备被配置为执行使用感兴趣对象的检测结果的应用。主机设备被配置为向传感器计算电路提供关于感兴趣对象的信息。
12.在一些方面,传感器计算电路包括:计算存储器,其被配置为存储:输入到神经网
络的神经网络层的输入数据、神经网络层的权重数据和神经网络层的中间输出数据;数据处理电路,其被配置为对输入数据和权重数据执行神经网络层的算术运算,以生成中间输出数据;以及计算控制器,其被配置为:从计算存储器中提取输入数据的第一子集和与输入数据的第一子集相对应的权重数据的第一子集,输入数据的第一子集与第一激活像素中的至少一些相对应;控制数据处理电路对输入数据的第一子集和权重数据的第一子集执行算术运算,以生成用于第一图像帧的中间输出数据的第一子集,中间输出数据的第一子集对应于输入数据的第一子集;将用于第一图像帧的中间输出数据的第一子集存储在计算存储器中;以及在计算存储器中存储用于第一图像帧的中间输出数据的第二子集的预定值,中间输出数据的第二子集对应于非激活像素。
13.在一些方面,基于在图像处理操作之前重置计算存储器来存储预定值。
14.在一些方面,计算控制器被配置为:从计算存储器提取输入数据;从所提取的输入数据中识别输入数据的第一子集;以及将所识别的输入数据的第一子集提供给计算控制器。
15.在一些方面,计算控制器被配置为:确定存储输入数据的第一子集的计算存储器的地址区域;并从计算存储器中提取输入数据的第一子集。
16.在一些方面,地址区域是基于以下中的至少一个来确定的:第一编程数据,或关于神经网络模型的神经网络层之间的连接性的信息。
17.在某些方面,第一激活像素包括静态像素和非静态像素;静态像素对应于第一激活像素的第一子集,对于第一激活像素的第一子集,第一图像帧和先前图像帧之间的像素值的变化程度高于变化阈值;非静态像素对应于第一激活像素的第二子集,对于第一激活像素的第二子集,第一图像帧与先前图像帧之间的像素值的变化程度低于变化阈值;以及计算控制器被配置为提取与第一激活像素的非静态像素相对应的输入数据的第一子集。
18.在一些方面,预定值是第一预定值。帧缓冲器被配置为存储静态像素中的每个静态像素的第二预定值,以发信号表示静态像素。计算控制器被配置为基于检测到静态像素具有第二预定值而将静态像素从数据处理电路中排除。
19.在一些方面,帧缓冲器被配置为基于确定像素在阈值数目的帧中的变化程度低于变化阈值来存储像素的第二预定值。
20.在一些方面,帧缓冲器被配置为基于具有时间常数的泄漏积分器函数(leaky integrator function),并基于像素上次经历的变化程度大于变化阈值的时间,来设置更新像素的像素值。
21.在一些方面,计算控制器被配置为:基于神经网络模型的拓扑,确定指示非静态像素中的变化如何传播通过神经网络模型的不同神经网络层的数据变化传播图(map);基于数据变化传播图,确定计算存储器的第一地址区域以提取输入数据的第一子集,并且确定计算存储器的第二地址区域以存储中间输出数据的第一子集;从第一地址区域提取输入数据的第一子集;以及将中间输出数据的第一子集存储在第二地址区域。
22.在一些方面,计算控制器被配置为:基于神经网络模型的深度和神经网络模型的每个神经网络层处的量化精度来确定变化阈值。
23.在一些方面,变化阈值是第一变化阈值。计算控制器被配置为:跟踪第一激活像素的像素值在两个非连续帧之间的变化程度;和基于超过第二变化阈值的变化程度,将第一
激活像素的第三子集确定为非静态像素。
24.在一些方面,图像传感器在第一半导体衬底中实现。帧缓冲器和传感器计算电路在一个或更多个第二半导体衬底中实现。第一半导体衬底和一个或更多个第二半导体衬底形成堆叠并容纳在单个半导体封装中。
25.在一些示例中,提供了一种方法。该方法包括:向包括多个像素单元的图像传感器传输第一编程数据,以选择像素单元的第一子集以生成第一激活像素;从帧缓冲器接收包括第一激活像素和第一非激活像素的第一图像帧,第一非激活像素对应于未被选择用于生成第一激活像素的像素单元的第二子集;对第一图像帧的第一像素子集执行图像处理操作,由此将第一图像帧的第二像素子集排除在图像处理操作之外,以生成处理输出;基于处理输出,生成第二编程数据;并且将第二编程数据传输到图像传感器以选择像素单元的第二子集以生成用于第二图像帧的第二激活像素。
26.在一些方面,图像处理操作包括:通过神经网络进行的处理操作以检测第一图像帧中的感兴趣对象。第一像素子集对应于感兴趣对象。
27.在一些方面,该方法还包括:在计算存储器中存储输入到神经网络的神经网络层的输入数据、神经网络层的权重数据;从计算存储器中提取输入数据的第一子集和与输入数据的第一子集相对应的权重数据的第一子集,输入数据的第一子集与第一激活像素中的至少一些相对应;使用数据处理电路对输入数据的第一子集和权重数据的第一子集执行算术运算,以生成用于第一图像帧的中间输出数据的第一子集,中间输出数据的第一子集对应于输入数据的第一子集;在计算存储器中存储用于第一图像帧的中间输出数据的第一子集;以及在计算存储器中存储第一图像帧的中间输出数据的第二子集的预定值,中间输出数据的第二子集对应于非激活像素。
28.在某些方面,第一激活像素包括静态像素和非静态像素。静态像素对应于第一激活像素的第一子集,对于第一激活像素的第一子集,第一图像帧和先前图像帧之间的像素值的变化程度高于变化阈值。非静态像素对应于第一激活像素的第二子集,对于第一激活像素的第二子集,第一图像帧与先前图像帧之间的像素值的变化程度低于变化阈值。输入数据的第一子集对应于第一激活像素的非静态像素。
29.附图简述
30.参考以下附图描述了说明性的示例。
31.图1a和图1b是近眼显示器示例的示意图。
32.图2是近眼显示器的横截面的示例。
33.图3示出了具有单个源组件的波导显示器的示例的等轴视图。
34.图4示出了波导显示器的示例的横截面。
35.图5是包括近眼显示器的系统的示例的框图。
36.图6a和图6b示出了图像传感器及其操作的示例。
37.图7a、图7b、图7c以及图7d示出了由图6a和图6b的图像传感器的输出进行支持的应用的示例。
38.图8a和图8b示出了用于支持在图7a-图7d中示出的操作的成像系统的示例。
39.图9a、图9b和图9c示出了图8a和图8b的成像系统的示例内部部件及其操作。
40.图10a、图10b和图10c示出了图8a和图8b的图像处理器的示例内部部件及其操作。
41.图11a、图11b和图11c示出了图10a-图10c的图像处理器的示例内部部件及其操作。
42.图12a、图12b和图12c示出了图8a和图8b的帧缓冲器的示例内部部件及其操作。
43.图13a、图13b和图13c示出了图10a-图10c的图像处理器的示例内部部件及其操作。
44.图14a和图14b示出了图8a-图13c的图像传感器的示例物理布置。
45.图15示出了操作图像传感器的示例过程的流程图。
46.附图仅为了说明的目的而描绘本公开的实施例。本领域中的技术人员从下面的描述中将容易认识到示出的结构和方法的可选示例可以被采用而不偏离本公开的原理和所推崇的益处。
47.在附图中,相似的部件和/或特征可以具有相同的附图标记。此外,可以通过在附图标记之后用短划线和在相似部件之间进行区分的第二标记来区分相同类型的各种部件。如果在说明书中仅使用第一附图标记,则该描述适用于具有相同第一附图标记的任何一个相似部件,而与第二附图标记无关。
48.详细描述
49.在以下描述中,为了解释的目的而阐述了具体细节,以提供对某些创造性示例的透彻理解。然而,将明显的是,在没有这些具体细节的情况下可以实施各种示例。附图和描述不意图是限制性的。
50.如上所述,图像传感器通常包括大量像素单元并以高帧速率生成图像,以提高成像操作的空间和时间分辨率。但是,以高帧率生成高分辨率图像帧,以及传输和处理这些高分辨率图像帧会导致图像传感器和图像处理操作的巨大功耗。此外,假定通常仅像素单元的一小部分接收来自感兴趣对象的光,在生成、传输和处理对于对象检测/跟踪操作无用的像素数据中浪费了大量的功率,这降低了图像感测和处理操作的总体效率。
51.本公开提出了能够解决至少一些上面问题的图像感测和处理技术。在一些示例中,一种装置包括图像传感器、帧缓冲器和计算电路。图像传感器包括多个像素单元,图像传感器可通过编程数据来配置以选择像素单元的子集来生成激活像素。帧缓冲器可以存储包括由图像传感器基于第一编程数据选择的像素单元的第一子集生成的至少一些激活像素的第一图像帧。第一图像帧还包括对应于未被选择用于生成激活像素的像素单元的第二子集的非激活像素。计算电路可从帧缓冲器接收第一图像帧。计算电路可以包括图像处理器,用于对第一图像帧的第一像素子集执行图像处理操作,由此第一图像帧的第二像素子集被从图像处理操作中排除,以生成处理输出。计算电路还包括编程图生成器,用于基于来自图像处理器的处理输出生成第二编程数据,并将第二编程数据传输到图像传感器以选择像素单元的第二子集以输出用于第二图像帧的像素数据。对其执行图像处理操作的第一图像帧的第一像素子集可以对应于例如激活像素、经历帧之间一定程度变化的非静态像素等。
52.在一些示例中,装置可以支持基于稀疏图像感测操作的对象检测和跟踪操作。可以选择性地启用第一像素单元子集以仅捕获与跟踪和检测对象相关的像素数据作为激活像素,或仅将激活像素发送到帧缓冲器,以支持稀疏图像感测操作。由于仅启用像素单元的子集以生成和/或发送激活像素,因此可以减少为图像帧生成/发送的像素数据量,这可以
减少在图像传感器处的功耗。稀疏图像感测操作可以基于对象检测和跟踪操作的结果连续地调整,以考虑对象相对于图像传感器的相对移动,这可以提高激活像素包括对象的图像数据的可能性,并提高依赖于对象检测和跟踪操作的应用(例如,vr/ar/mr应用)的性能。此外,计算电路仅对可包括对象的图像数据的激活像素或激活像素的子集执行图像处理操作,而非激活像素被排除在图像处理操作之外,这可以进一步降低图像处理操作的功耗。所有这些都可以提高图像感测和处理操作的整体功率效率和计算效率和性能。
53.在一些示例中,图像处理操作可以包括神经网络操作。具体地说,图像处理器可以包括数据处理电路,该数据处理电路为神经网络操作(诸如包括输入层和输出层的多层卷积神经网络(cnn))提供硬件加速。图像处理器可以包括计算存储器,以存储输入图像帧和与每个神经网络层相关联的权重集。权重集可以表示待检测对象的特征。图像处理器可以包括控制器,以控制数据处理电路从计算存储器中提取输入图像帧数据和权重。控制器可以控制数据处理电路在输入图像帧和权重之间执行算术运算,诸如乘累加(mac)操作,以生成用于输入层的中间输出数据。基于例如激活函数、池化(pooling)操作等对中间输出数据进行后处理,并且然后将后处理的中间输出数据存储在计算存储器中。后处理的中间输出数据可以从计算存储器中提取,并作为输入提供给下一个神经网络层。对直到输出层的所有层重复算术运算、以及重复中间输出数据的提取和存储,以生成神经网络输出。神经网络输出可以指示例如该对象存在于输入图像帧中的可能性,以及该对象在输入图像帧中的像素定位。
54.控制器可以配置数据处理电路以高效的方式处理稀疏图像数据。例如,对于输入层,控制器可以控制数据处理电路仅从计算存储器中提取激活像素和相应的权重,并且仅对激活像素和相应的权重执行mac操作,以生成与用于输入层的激活像素相对应的中间输出的子集。控制器还可以基于神经网络的拓扑和后续神经网络层之间的连接,确定每个后续神经网络处的中间输出数据的子集,该子集可以追溯到激活像素。控制器可以控制数据处理电路以执行mac操作,以仅在每个后续神经网络层生成中间输出数据的子集。此外,为了减少对计算存储器的访问,可以在神经网络操作之前将每一层的中间输出数据的预定值(例如零)存储在计算存储器中。仅更新激活像素的中间输出数据。所以这些都可以降低神经网络在稀疏图像数据上的运算功耗。
55.在一些示例中,为了进一步降低功耗并提高功率效率和计算效率,帧缓冲器和计算电路可以支持时间稀疏操作。作为时间稀疏操作的一部分,可以识别静态像素和非静态像素。静态像素可以对应于由图像传感器捕获的场景的第一部分,其在第一图像帧和先前图像帧之间经历了小的变化(或没有变化),而非静态像素对应于在第一图像帧和先前图像帧之间经历了大的变化的场景的第二部分。如果像素的变化程度低于阈值,则可以确定像素是静态的。在一些示例中,非静态像素可以从激活像素中识别,而静态像素可以从激活像素以及在帧之间保持不激活(且没有变化)的非激活像素两者中识别。
56.为了降低功率消耗,数据处理电路可以仅对第一图像帧的非静态像素执行图像处理操作(例如,神经网络操作),以生成非静态像素的更新输出。对于静态像素,可以跳过图像处理操作,同时可以保留来自先前图像帧上的图像处理操作的输出。在图像处理操作包括神经网络操作的情况下,控制器可以控制数据处理电路仅从计算存储器中提取非静态像素和相应的权重数据,以更新与输入层的非静态像素相对应的中间输出数据子集。可以针
对输入层保留对应于静态像素(从先前图像帧获得)的和对应于计算存储器中的非激活像素(例如,具有诸如零的预定值)的中间输出数据的其余部分。控制器还可以基于神经网络的拓扑和后续神经网络层之间的连接来确定每个后续神经网络处的中间输出数据子集,该子集可以追溯到非静态像素,并且仅更新中间输出数据子集,以减少对计算存储器的访问并降低功耗。
57.在一些示例中,帧缓冲器可以从由图像传感器输出的激活像素中检测静态像素,并存储这些像素的像素值,以向图像处理器发出信号表示这些像素是静态像素。例如,帧缓冲器可以存储来自图像传感器的每个像素单元的最新像素数据(包括激活和非激活像素)作为第一图像帧。对于激活像素的每个像素,帧缓冲器可以确定像素相对于先前帧(诸如紧接在第一图像帧之前的图像帧)的变化程度。帧缓冲器可以设置像素值以各种方式指示静态像素。例如,帧缓冲器可以基于具有时间常数的泄漏积分器函数,并且基于由图像传感器输出的像素保持静态的连续图像帧的数量,来为帧缓冲器中的像素设置像素值。如果该像素在大量连续图像帧中保持静态,则该像素的像素值可以稳定在预定的像素值。作为另一示例,如果像素在阈值数量(例如,10个)的连续图像帧内保持静态,则帧缓冲器可以为帧缓冲器中的像素设置预定像素值。预定像素值可以对应于深色(0)、白色(255)、灰色(128)或指示静态像素的任何值。在所有这些情况下,图像处理器可以基于识别发出静态像素信号的像素值来区分静态像素和非静态像素,并且如上所述仅对非静态像素执行图像处理操作。
58.在一些示例中,图像处理器还可以生成附加信息以促进非静态像素的处理。例如,图像处理器可以基于神经网络模型的拓扑确定数据变化传播图,该数据变化传播图跟踪数据变化从神经网络模型的输入层到输出层的传播。基于传播图以及来自帧缓冲器的静态像素,图像处理器可以识别每个神经网络的非静态输入数据,并且在每个层仅提取那些输入数据进行神经网络操作。此外,图像处理器还可以基于神经网络模型的拓扑确定用于静态/非静态像素确定的阈值变化程度,以确保被确定为非静态的像素可以导致输出层的必要变化程度。另外,图像处理器还可以跟踪连续帧之间和非连续帧之间的像素的变化。图像处理器可以识别在连续帧之间表现出小变化的像素,但也可以将非连续帧之间的巨大变化识别为非静态像素,以便图像处理器可以对这些像素执行图像处理操作。
59.利用所公开的技术,图像传感器可以被配置为执行稀疏图像感测操作以生成稀疏图像,这可以降低图像传感器处的功耗。此外,图像处理器可以被配置为仅对激活和/或非静态像素执行图像处理操作,同时跳过对非激活和/或静态像素的图像处理操作,这可以进一步降低功耗。此外,可以基于图像处理结果来选择用于生成激活像素的像素单元,以确保激活像素包含相关信息(例如,感兴趣对象的图像)。所以这些都可以提高图像传感器和图像处理器的功率效率和计算效率。
60.所公开的技术可以包括人工现实系统或者结合人工现实系统来实现。人工现实是一种在呈现给用户之前已经以某种方式进行了调整的现实形式,其可以包括例如虚拟现实(vr)、增强现实(ar)、混合现实(mixed reality,mr)、混杂现实(hybrid reality)或其某种组合和/或衍生物。人工现实内容可以包括完全生成的内容或者与所捕获的(例如,真实世界)内容组合地生成的内容。人工现实内容可以包括视频、音频、触觉反馈、或它们的某种组合,其中任何一个都可以在单个通道中或在多个通道中被呈现(诸如向观看者产生三维效
果的立体视频)。另外地,在一些示例中,人工现实还可以与用于例如在人工现实中创建内容和/或以其他方式在人工现实中使用(例如,在人工现实中执行活动)的应用、产品、附件、服务或它们的某种组合相关联。提供人工现实内容的人工现实系统可以在各种平台上实现,这些平台包括连接到主计算机系统的头戴式显示器(hmd)、独立的hmd、移动设备或计算系统、或者能够向一个或更多个观看者提供人工现实内容的任何其他硬件平台。
61.图1a是近眼显示器100的示例的示意图。近眼显示器100向用户呈现媒体。由近眼显示器100呈现的媒体的示例包括一个或更多个图像、视频和/或音频。在一些示例中,音频经由外部设备(例如,扬声器和/或头戴式耳机(headphone))呈现,该外部设备从近眼显示器100、控制台或两者接收音频信息,并基于音频信息来呈现音频数据。近眼显示器100通常被配置成作为虚拟现实(vr)显示器进行操作。在一些示例中,近眼显示器100被修改为作为增强现实(ar)显示器和/或混合现实(mr)显示器来进行操作。
62.近眼显示器100包括框架105和显示器110。框架105耦合到一个或更多个光学元件。显示器110被配置成让用户看到由近眼显示器100呈现的内容。在一些示例中,显示器110包括波导显示组件,用于将来自一个或更多个图像的光导向用户的眼睛。
63.近眼显示器100还包括图像传感器120a、120b、120c和120d。图像传感器120a、120b、120c和120d中的每一个可以包括像素阵列,该像素阵列被配置为生成表示沿着不同方向的不同视场的图像数据。例如,传感器120a和120b可以被配置为提供表示沿着z轴朝向方向a的两个视场的图像数据,而传感器120c可以被配置为提供表示沿着x轴朝向方向b的视场的图像数据,并且传感器120d可以被配置为提供表示沿着x轴朝向方向c的视场的图像数据。
64.在一些示例中,传感器120a-120d可以被配置为输入设备,以控制或影响近眼显示器100的显示内容,从而向佩戴近眼显示器100的用户提供交互式vr/ar/mr体验。例如,传感器120a-120d可以生成用户所处物理环境的物理图像数据。物理图像数据可以被提供给定位跟踪系统,以跟踪用户在物理环境中的定位和/或移动路径。然后,系统可以基于例如用户的定位和取向来更新提供给显示器110的图像数据,以提供交互式体验。在一些示例中,当用户在物理环境内移动时,定位跟踪系统可以运行同步定位和映射(slam)算法来跟踪在物理环境中和用户视场内的一组对象。定位跟踪系统可以基于该组对象来构建和更新物理环境的图,并且跟踪用户在图内的定位。通过提供对应于多个视场的图像数据,传感器120a-120d可以向定位跟踪系统提供物理环境的更全面的视图,这可以导致更多的对象被包括在图的构建和更新中。利用这种布置,可以提高跟踪用户在物理环境内的定位的精确度和鲁棒性。
65.在一些示例中,近眼显示器100还可以包括一个或更多个有源照明器130,以将光投射到物理环境中。投射的光可以与不同的频谱(例如,可见光、红外(ir)光、紫外光)相关联,并且可以用于各种目的。例如,照明器130可以在黑暗环境中(或者在具有低强度的(ir)光、紫外光等的环境中)投射光,以帮助传感器120a-120d捕获黑暗环境内不同对象的图像,从而例如实现对用户的定位跟踪。照明器130可以将某些标记(marker)投射到环境内的对象上,以帮助定位跟踪系统识别对象用于图构建/更新。
66.在一些示例中,照明器130还可以实现立体成像。例如,传感器120a或120b中的一个或更多个可以包括用于可见光感测的第一像素阵列和用于(ir)光感测的第二像素阵列。
第一像素阵列可以覆盖有彩色滤光器(例如,bayer滤光器),第一像素阵列的每个像素被配置为测量与特定颜色(例如,红色、绿色或蓝色(rgb)之一)相关联的光的强度。第二像素阵列(用于ir光感测)也可以覆盖有仅允许ir光通过的滤光器,第二像素阵列的每个像素被配置为测量ir光的强度。像素阵列可以生成对象的rgb图像和ir图像,其中ir图像的每个像素被映射到rgb图像的每个像素。照明器130可以将一组ir标记投射到对象上,该对象的图像可以被ir像素阵列捕获。基于图像中所示的对象的ir标记分布,系统可以估计对象的不同部分离ir像素阵列的距离,并基于该距离生成对象的立体图像。基于对象的立体图像,系统可以确定例如,对象相对于用户的相对位置,并且可以基于相对位置信息来更新提供给显示器100的图像数据,以提供交互式体验。
67.如上面所讨论的,近眼显示器100可以在与宽的光强度范围相关联的环境中操作。例如,近眼显示器100可以在室内环境或室外环境中和/或在一天中的不同时间操作。近眼显示器100也可以在开启或不开启有源照明器130的情况下操作。结果,图像传感器120a-120d可能需要具有宽的动态范围,以便能够在与近眼显示器100的不同操作环境相关联的非常宽的光强度范围上正确操作(例如,生成与入射光的强度相关的输出)。
68.图1b是近眼显示器100的另一个示例的示意图。图1b示出了近眼显示器100的面向佩戴近眼显示器100的用户的眼球135的一侧。如图1b所示,近眼显示器100还可以包括多个照明器140a、140b、140c、140d、140e和140f。近眼显示器100还包括多个图像传感器150a和150b。照明器140a、140b和140c可以朝向方向d(与图1a的方向a相反)发射特定频率范围(例如近红外(nir))的光。发射的光可以与某种图案相关联,并且可以被用户的左眼球反射。传感器150a可以包括像素阵列,以接收反射的光并生成反射图案的图像。类似地,照明器140d、140e和140f可以发射携带图案的nir光。nir光可以被用户的右眼球反射,并且可以被传感器150b接收。传感器150b还可以包括像素阵列,以生成反射图案的图像。基于来自传感器150a和150b的反射图案的图像,系统可以确定用户的凝视点,并基于所确定的凝视点来更新提供给显示器100的图像数据,以向用户提供交互式体验。
69.如上面所讨论的,为了避免损害用户的眼球,照明器140a、140b、140c、140d、140e和140f通常被配置为输出低强度的光。在图像传感器150a和150b包括与图1a的图像传感器120a-120d相同的传感器设备的情况下,当入射光的强度低时,图像传感器120a-120d可能需要能够生成与入射光的强度相关的输出,这可能进一步增加图像传感器的动态范围要求。
70.此外,图像传感器120a-120d可能需要能够以高速度生成输出来跟踪眼球的移动。例如,用户的眼球可以进行非常快速的运动(例如,眼跳运动(saccade movement)),其中可以从一个眼球位置快速跳跃到另一个眼球位置。为了跟踪用户的眼球的快速移动,图像传感器120a-120d需要以高速度生成眼球的图像。例如,图像传感器生成图像帧的速率(帧速率)至少需要匹配眼球的移动速度。高的帧速率要求生成图像帧所涉及的所有像素单元的总曝光时间要短,并且要求将传感器输出转换成用于图像生成的数字值的速度要快。此外,如上面所讨论的,图像传感器也需要能够在具有低光强度的环境下操作。
71.图2是图1所示的近眼显示器100的横截面200的示例。显示器110包括至少一个波导显示组件210。出射光瞳(exit pupil)230是当用户佩戴近眼显示器100时,用户的单个眼球220在视窗(eyebox)区域中的定位。为了说明的目的,图2示出了与眼球220和单个波导显
示组件210相关联的横截面200,但是第二波导显示器用于用户的第二只眼睛。
72.波导显示组件210被配置成将图像光导向位于出射光瞳230处的视窗,并导向眼球220。波导显示组件210可以由具有一个或更多个折射率的一种或更多种材料(例如,塑料、玻璃)组成。在一些示例中,近眼显示器100包括在波导显示组件210和眼球220之间的一个或更多个光学元件。
73.在一些示例中,波导显示组件210包括一个或更多个波导显示器的堆叠,该一个或更多个波导显示器包括但不限于堆叠式波导显示器、变焦波导显示器等。堆叠式波导显示器是多色显示器(例如,rgb显示器),其通过堆叠波导显示器创建,这些波导显示器的相应单色源具有不同的颜色。堆叠式波导显示器也是可以被投射在多个平面上的多色显示器(例如,多平面彩色显示器)。在一些配置中,堆叠式波导显示器是可以被投射在多个平面上的单色显示器(例如,多平面单色显示器)。变焦波导显示器是可以调节从波导显示器发射的图像光的焦点位置的显示器。在替代示例中,波导显示组件210可以包括堆叠式波导显示器和变焦波导显示器。
74.图3示出了波导显示器300的示例的等轴视图。在一些示例中,波导显示器300是近眼显示器100的部件(例如,波导显示组件210)。在一些示例中,波导显示器300是将图像光导向特定定位的某个其他近眼显示器或其他系统的一部分。
75.波导显示器300包括源组件310、输出波导320和控制器330。为了说明的目的,图3示出了与单个眼球220相关联的波导显示器300,但是在一些示例中,与波导显示器300分离或部分分离的另外的波导显示器向用户的另一只眼睛提供图像光。
76.源组件310生成图像光355。源组件310生成图像光355并将其输出到位于输出波导320的第一侧面370-1上的耦合元件350。输出波导320是向用户的眼球220输出扩展的图像光340的光波导。输出波导320在位于第一侧面370-1上的一个或更多个耦合元件350处接收图像光355,并将接收到的输入图像光355引导至导向元件360。在一些示例中,耦合元件350将来自源组件310的图像光355耦合到输出波导320中。耦合元件350可以是例如衍射光栅、全息光栅、一个或更多个级联反射器、一个或更多个棱柱面元件(prismatic surface element)、和/或全息反射器阵列。
77.导向元件360将接收到的输入图像光355重定向到去耦元件(decoupling element)365,使得接收到的输入图像光355经由去耦元件365从输出波导320去耦出去。导向元件360是输出波导320的第一侧面370-1的一部分,或固定到输出波导320的第一侧面370-1。去耦元件365是输出波导320的第二侧面370-2的一部分,或固定到输出波导320的第二侧面370-2,使得导向元件360与去耦元件365相对。导向元件360和/或去耦元件365可以是例如衍射光栅、全息光栅、一个或更多个级联反射器、一个或更多个棱柱面元件、和/或全息反射器阵列。
78.第二侧面370-2表示沿x维度和y维度的平面。输出波导320可以由有助于图像光355的全内反射的一种或更多种材料组成。输出波导320可以由例如硅、塑料、玻璃和/或聚合物组成。输出波导320具有相对较小的形状因子。例如,输出波导320可以沿x维度宽约50mm,沿y维度长约30mm,以及沿z维度厚约0.5mm-1mm。
79.控制器330控制源组件310的扫描操作。控制器330确定源组件310的扫描指令。在一些示例中,输出波导320将扩展的图像光340输出到用户的眼球220,具有大视场(fov)。例
如,扩展的图像光340以(x和y中的)60度和/或更大和/或150度和/或更小的对角fov被提供给用户的眼球220。输出波导320被配置成提供视窗,其长度为20mm或更大和/或等于或小于50mm;和/或宽度为10mm或更大和/或等于或小于50mm。
80.此外,控制器330还基于由图像传感器370提供的图像数据来控制由源组件310生成的图像光355。图像传感器370可以位于第一侧面370-1上,并且可以包括例如图1a的图像传感器120a-120d。图像传感器120a-120d可以被操作来执行对例如用户前方(例如,面向第一侧面370-1)的对象372的2d感测和3d感测。对于2d感测,图像传感器120a-120d的每个像素单元可以被操作来生成表示由光源376生成并被对象372反射的光374的强度的像素数据。对于3d感测,图像传感器120a-120d的每个像素单元可以被操作来生成表示由照明器325生成的光378的飞行时间测量结果的像素数据。例如,图像传感器120a-120d的每个像素单元可以确定当照明器325被启用以投射光378的第一时间和当像素单元检测到从对象372反射的光378的第二时间。第一时间和第二时间之间的差可以指示图像传感器120a-120d和对象372之间的光378的飞行时间,并且飞行时间信息可以用于确定图像传感器120a-120d和对象372之间的距离。图像传感器120a-120d可以被操作来在不同时间执行2d和3d感测,并且将2d和3d图像数据提供给远程控制台390,远程控制台390可以(或者可以不)位于波导显示器300内。远程控制台可以组合2d和3d图像以例如生成用户所处环境的3d模型,以跟踪用户的定位和/或取向等。远程控制台可以基于从2d和3d图像导出的信息来确定要显示给用户的图像的内容。远程控制台可以向控制器330传输与所确定的内容相关的指令。基于这些指令,控制器330可以控制源组件310生成并输出图像光355,以向用户提供交互式体验。
81.图4示出了波导显示器300的横截面400的示例。横截面400包括源组件310、输出波导320和图像传感器370。在图4的示例中,图像传感器370可以包括位于第一侧面370-1上的一组像素单元402,以生成用户前方的物理环境的图像。在一些示例中,可以在该组像素单元402和物理环境之间插入机械快门404和光学滤波器阵列406。机械快门404可以控制该组像素单元402的曝光。在一些示例中,如下面将讨论的,机械快门404可以由电子快门(electronic shutter gate)代替。如下所述,光学滤波器阵列406可以控制该组像素单元402暴露于的光的光学波长范围。每个像素单元402可以对应于图像的一个像素。尽管图4中未示出,但应当理解,每个像素单元402也可以覆盖有滤光器,以控制要由像素单元感测的光的光学波长范围。
82.在从远程控制台接收到指令之后,机械快门404可以在曝光周期中打开并曝光该组像素单元402。在曝光周期期间,图像传感器370可以获得入射到该组像素单元402上的光样本,并且基于由该组像素单元402检测到的入射光样本的强度分布来生成图像数据。图像传感器370然后可以向远程控制台提供图像数据,该远程控制台确定显示内容,并向控制器330提供显示内容信息。控制器330然后可以基于显示内容信息来确定图像光355。
83.源组件310根据来自控制器330的指令生成图像光355。源组件310包括源410和光学系统415。源410是生成相干光或部分相干光的光源。源410可以是,例如,激光二极管、垂直腔面发射激光器和/或发光二极管。
84.光学系统415包括一个或更多个光学部件,光学部件调节来自源410的光。调节来自源410的光可以包括例如,根据来自控制器330的指令来扩展、准直和/或调整定向。一个或更多个光学部件可以包括一个或更多个透镜、液体透镜、反射镜、光圈和/或光栅。在一些
示例中,光学系统415包括具有多个电极的液体透镜,该液体透镜允许用阈值的扫描角度来扫描光束,以将光束移到液体透镜外部的区域。从光学系统415(还有源组件310)发射的光被称为图像光355。
85.输出波导320接收图像光355。耦合元件350将来自源组件310的图像光355耦合到输出波导320中。在耦合元件350是衍射光栅的示例中,衍射光栅的栅距(pitch)被选择成使得在输出波导320中发生全内反射,并且图像光355在输出波导320中(例如,通过全内反射)朝向去耦元件365进行内部传播。
86.导向元件360将图像光355重定向到去耦元件365,用于从输出波导320去耦。在导向元件360是衍射光栅的示例中,衍射光栅的栅距被选择成使得入射图像光355以相对于去耦元件365的表面倾斜的角度离开输出波导320。
87.在一些示例中,导向元件360和/或去耦元件365在结构上类似。离开输出波导320的扩展的图像光340沿着一个或更多个维度被扩展(例如,可以沿着x维度被拉长)。在一些示例中,波导显示器300包括多个源组件310和多个输出波导320。每个源组件310发射对应于原色(例如,红色、绿色或蓝色)的特定波段的单色图像光。每个输出波导320可以以一定的间隔距离堆叠在一起,以输出多色的扩展的图像光340。
88.图5是包括近眼显示器100的系统500的示例的框图。系统500包括近眼显示器100、成像设备535、输入/输出接口540以及图像传感器120a-120d和150a-150b,它们各自耦合到控制电路510。系统500可以被配置为头戴式设备、移动设备、可穿戴设备等。
89.近眼显示器100是向用户呈现媒体的显示器。由近眼显示器100呈现的媒体示例包括一个或更多个图像、视频和/或音频。在一些示例中,音频经由外部设备(例如,扬声器和/或头戴式耳机)呈现,该外部设备从近眼显示器100和/或控制电路510接收音频信息,并基于音频信息来向用户呈现音频数据。在一些示例中,近眼显示器100也可以充当ar眼镜。在一些示例中,近眼显示器100利用计算机生成的元素(例如,图像、视频、声音)来增强物理、真实世界环境的视图。
90.近眼显示器100包括波导显示组件210、一个或更多个位置传感器525和/或惯性测量单元(imu)530。波导显示组件210包括源组件310、输出波导320和控制器330。
91.imu 530是一种电子设备,其基于从一个或更多个位置传感器525接收的测量信号生成快速校准数据,该快速校准数据指示相对于近眼显示器100的初始位置的近眼显示器100的估计位置。
92.成像设备535可以生成用于各种应用的图像数据。例如,成像设备535可以根据从控制电路510接收的校准参数来生成图像数据以提供慢速校准数据。成像设备535可以包括例如图1a的图像传感器120a-120d,用于生成用户所处物理环境的图像数据,用于执行用户的定位跟踪。成像设备535可以进一步包括例如图1b的图像传感器150a-150b,用于生成用于确定用户凝视点的图像数据,以识别用户感兴趣的对象。
93.输入/输出接口540是允许用户向控制电路510发送动作请求的设备。动作请求是执行特定动作的请求。例如,动作请求可以是开始或结束应用,或者是在应用内执行特定动作。
94.控制电路510根据从成像设备535、近眼显示器100和/或输入/输出接口540中的一个或更多个接收的信息来向近眼显示器100提供媒体以呈现给用户。在一些示例中,控制电
路510可以被容纳在被配置为头戴式设备的系统500内。在一些示例中,控制电路510可以是与系统500的其他部件通信耦合的独立控制台设备。在图5所示的示例中,控制电路510包括应用储存器545、跟踪模块550和引擎555。
95.应用储存器545存储用于由控制电路510执行的一个或更多个应用。应用是一组指令,该组指令当由处理器执行时生成用于显现给用户的内容。应用的示例包括:游戏应用、会议应用、视频回放应用或其他合适的应用。
96.跟踪模块550使用一个或更多个校准参数来校准系统500,并且可以调整一个或更多个校准参数以减小近眼显示器100的位置确定中的误差。
97.跟踪模块550使用来自成像设备535的慢速校准信息来跟踪近眼显示器100的移动。跟踪模块550还使用来自快速校准信息的位置信息来确定近眼显示器100的参考点的位置。
98.引擎555执行系统500内的应用,并从跟踪模块550接收近眼显示器100的位置信息、加速度信息、速度信息和/或预测的未来位置。在一些示例中,引擎555接收的信息可以用于产生信号(例如,显示指令)给波导显示组件210,该信号确定呈现给用户的内容类型。例如,为了提供交互式体验,引擎555可以基于(例如,由跟踪模块550提供的)用户的定位、(例如,基于由成像设备535提供的图像数据的)用户的凝视点、或(例如,基于由成像设备535提供的图像数据的)对象与用户之间的距离来确定要呈现给用户的内容。
99.图6a、图6b、图6c和图6d示出了图像传感器600及其操作的示例。如图6a所示,图像传感器600可以包括像素单元阵列,包括像素单元601,并且可以生成对应于图像像素的数字强度数据。像素单元601可以是图4的像素单元402的一部分。如图6a所示,像素单元601可以包括光电二极管602、电子快门开关603、转移开关(transfer switch)604、电荷存储设备605、缓冲器606和量化器607。光电二极管602可以包括例如p-n二极管、p-i-n二极管、钉扎二极管(pinned diode)等,而电荷存储设备605可以是转移开关604的浮置漏极节点。当在曝光周期内接收光时,光电二极管602可以产生并累积剩余电荷。当在曝光周期内剩余电荷饱和时,光电二极管602可以通过转移开关604向电荷存储设备605输出溢出电荷。电荷存储设备605可以将溢出电荷转换成电压,该电压可以由缓冲器606缓冲。量化器607可以对缓冲电压进行量化,以生成测量数据608,例如表示曝光周期内光电二极管602接收的光的强度。
100.量化器607可以包括比较器,用于针对与不同强度范围相关联的不同量化操作,将缓冲电压与不同阈值进行比较。例如,对于由光电二极管602产生的溢出电荷量超过电荷存储设备605的饱和极限的高强度范围,量化器607可以通过检测缓冲电压是否超过表示饱和极限的静态阈值并且如果超过则测量缓冲电压超过静态阈值所花费的时间,来执行饱和时间(tts)测量操作。测量到的时间可以与光强度成反比。此外,对于其中光电二极管被剩余电荷饱和但溢出电荷保持低于电荷存储设备605的饱和极限的中等强度范围,量化器607可以执行全数字模数转换器(fd adc)操作来测量存储在电荷存储设备605中的溢出电荷的量。此外,对于光电二极管没有被剩余电荷饱和并且没有溢出电荷累积在电荷存储设备605中的低强度范围,量化器607可以执行用于模拟传感器的数字处理仪表(pd adc)操作来测量累积在光电二极管602中的剩余电荷的量。tts、fd adc或pd adc操作之一的输出可以作为测量数据608输出,以表示光的强度。
101.图6b示出了像素单元601的示例操作序列。如图6b所示,可以基于控制电子快门开
关603的ab信号的时序(timing)并基于控制转移开关604的tg信号的时序来定义曝光周期,该电子快门开关603可以在被使能时将光电二极管602产生的电荷引导走,该转移开关604被控制以转移溢出电荷,然后将剩余电荷转移到电荷存储设备605以供读出。例如,参考图6b,ab信号可以在时间t0被宣称无效(de-assert),以允许光电二极管602产生电荷。t0可以标志曝光周期的开始。在曝光周期内,tg信号可以将转移开关604设置为部分导通状态,以允许光电二极管602累积电荷中的至少一些作为剩余电荷,直到光电二极管602饱和,之后溢出的电荷可以被转移到电荷存储设备605。在时间t0和t1之间,量化器607可以执行tts操作以确定电荷存储设备605处的溢出电荷是否超过饱和极限,然后在时间t1和t2之间,量化器607可以执行fd adc操作以测量电荷存储设备605处的溢出电荷的量。在时间t2和t3之间,tg信号可以被生效(assert)以将转移开关604偏置在完全导通状态,从而将剩余电荷转移到电荷存储设备605。在时间t3,tg信号可以被宣称无效以将电荷存储设备605与光电二极管602隔离,而ab信号可以被生效以将光电二极管602生成的电荷引导走。时间t3可以标志曝光周期的结束。在时间t3和t4之间,量化器607可以执行pd操作来测量剩余电荷的量。
102.ab和tg信号可以由控制器(未在图6a中示出)生成,该控制器可以是像素单元601的一部分,以控制曝光周期的持续时间和量化操作的序列。控制器还可以检测电荷存储设备605是否饱和以及光电二极管602是否饱和,以从tts、fd adc或pd adc操作之一中选择输出作为测量数据608。例如,如果电荷存储设备605饱和,控制器可以提供tts输出作为测量数据608。如果电荷存储设备605未饱和,但是光电二极管602饱和,则控制器可以提供fd adc输出作为测量数据608。如果光电二极管602不饱和,控制器可以提供pd adc输出作为测量数据608。在曝光周期内生成的来自图像传感器600的每个像素单元的测量数据608可以形成图像帧。控制器可以在后续曝光周期中重复图6b中的操作序列,以生成后续图像帧。
103.来自图像传感器600的图像帧数据可以被传输到主处理器(未在图6a和图6b中示出)以支持不同的应用,诸如跟踪一个或更多个对象、检测运动(例如,作为动态视觉感测(dvs)操作的一部分)等。图7a-图7d示出了可由来自图像传感器600的图像帧数据支持的应用的示例。图7a示出了基于来自图像传感器600的图像帧的对象跟踪操作的示例。如图7a所示,在主处理器处操作的应用可以从在时间t0捕获的图像帧700中识别与对象704相对应的感兴趣区域(roi)702中的像素组。该应用可以继续跟踪包括在时间t1捕获的图像帧710在内的后续图像帧中的对象704的定位,并识别与对象704相对应的roi 712中的像素组。可以执行对图像帧内对象704的图像定位的跟踪以支持slam算法,该slam算法可以基于跟踪由图像传感器600捕获的场景中对象704的图像定位来构造/更新图像传感器600(以及包括图像传感器600的移动设备,诸如近眼显示器100)所处的环境的图。
104.图7b示出了对来自图像传感器600的图像帧进行对象检测操作的示例。如图7b左边所示,主处理器可以识别在图像帧720中捕获的场景中的一个或更多个对象,诸如车辆722和人724。如图7b右边所示,基于该识别,主处理器可确定像素组726对应于车辆722,而像素组728对应于人724。可以执行对车辆722和人724的识别以支持各种应用,诸如,其中车辆722和人724是监视目标的监视应用、其中车辆722和人724被替换为虚拟对象的mr应用、为了隐私而降低某些图像(例如,车辆722的牌照、人724的面部)分辨率的中央凹(foveated)成像操作等。
105.图7c示出了对来自图像传感器600的图像帧的眼睛跟踪操作的示例。如图7c所示,
主处理器可以从眼球的图像730和732中识别对应于瞳孔738和闪光(glint)739的像素组734和736。可以执行对瞳孔738和闪光739的识别以支持眼睛跟踪操作。例如,基于瞳孔738和闪光739的图像定位,应用可以确定用户在不同时间的凝视方向,该凝视方向可以作为输入提供给系统以确定例如要显示给用户的内容。
106.图7d示出了对来自图像传感器600的图像帧的动态视觉感测(dvs)操作的示例。在dvs操作中,图像传感器600可以仅输出经历预定亮度变化程度(反映在像素值中)的像素,而图像传感器600不输出未经历该变化程度的像素。可以执行dvs操作以检测对象的运动和/或减少被输出的像素数据的量。例如,参考图7d,在时间t0捕获图像740,图像740包含光源的像素组742和人的像素组744。像素组742和744都可以在时间t0作为图像740的一部分输出。在时间t1,捕获图像750。与光源对应的像素组742的像素值在时间t0和t1之间保持相同,并且像素组742不作为图像750的一部分输出。另一方面,人在时间t0和t1之间从站立变为行走,这导致在时间t0和t1之间像素组744的像素值的变化。结果,人的像素组744作为图像750的一部分被输出。
107.在图7a-图7d的操作中,图像传感器600可被控制以执行稀疏捕获操作,其中仅选择像素单元的子集以将感兴趣的像素数据输出到主处理器。感兴趣的像素数据可以包括支持主处理器处的特定操作所需的像素数据。例如,在图7a中的对象跟踪操作中,图像传感器600可被控制为仅传输对象704分别在图像帧700和图像帧710中的roi 702和712中的像素组。在图7b中的对象检测操作中,图像传感器600可被控制为仅分别传输车辆722的像素组726和人724的像素组728。此外,在图7c的眼睛跟踪操作中,图像传感器600可被控制成仅传输包含瞳孔738和闪光739的像素组734和736。此外,在图7d的dvs操作中,可以控制图像传感器600在时间t1仅传输运动者的像素组744,而不传输静态光源的像素组742。所有这些布置可以允许生成和传输更高分辨率的图像,而不相应地增加功率和带宽。例如,包括更多像素单元的更大的像素单元阵列可以被包括在图像传感器600中以提高图像分辨率,而当只有像素单元的子集以高分辨率生成感兴趣的像素数据并将高分辨率像素数据传输到主处理器,而其余的像素单元或者不生成/传输像素数据或者以低分辨率生成/传输像素数据时,可以减少提供提高的图像分辨率所需的带宽和功率。此外,虽然图像传感器600可以被操作来以较高的帧速率生成图像,但是当每个图像仅包括高分辨率并且由大量的位表示的一小组像素值,而其余的像素值不被传输或者由较少的位表示时,可以减少带宽和功率的增加。
108.在3d感测的情况下,也可以减少像素数据传输的量。例如,参考图6d,照明器640可以将结构光的图案642投射到对象650上。结构光可以在对象650的表面上反射,并且反射光的图案652可以被图像传感器600捕获以生成图像。主处理器可以将图案652与图案642匹配,并基于图像中图案652的图像定位来确定对象650相对于图像传感器600的深度。对于3d感测,只有像素单元组660、662、664和666包含相关信息(例如,图案652的像素数据)。为了减少被传输的像素数据量,图像传感器600可以被配置为仅发送来自像素单元组660、662、664和666的像素数据到主处理器,或者以高分辨率发送来自像素单元组660、662、664和666的像素数据,而其余像素数据以低分辨率发送到主处理器。
109.图8a和图8b示出了可执行稀疏捕获操作以支持图7a-图7d中示出的操作的成像系统800的示例。如图8a所示,成像系统800包括图像传感器802和主处理器804。图像传感器
802包括传感器计算电路806和像素单元阵列808。传感器计算电路806包括图像处理器810和编程图生成器812。在一些示例中,传感器计算电路806可以被实现为专用集成电路(asic)、现场可编程门阵列(fpga)或执行指令以实现图像处理器810和编程图生成器812的功能的硬件处理器。此外,主处理器804包括可以执行应用814的通用中央处理单元(cpu)。
110.像素单元阵列808的每个像素单元或像素单元块可以单独编程,以例如启用/禁用像素值的输出、设置由像素单元输出的像素值的分辨率等。像素单元阵列808可以从传感器计算电路806的编程图生成器812接收第一编程信号820,第一编程信号820可以是包含用于每个像素单元的编程数据的编程图的形式。像素单元阵列808可以感测来自场景的光,并基于第一编程信号820生成该场景的第一图像帧822。具体地说,像素单元阵列808可以由第一编程信号820控制以在不同的稀疏模式下工作,诸如在全帧模式和/或在稀疏模式工作,在全帧模式中第一图像帧822包括全像素图像帧,在稀疏模式中第一图像帧822仅包括由编程图指定的像素的子集。像素单元阵列808可以将第一图像帧822输出到主处理器804和传感器计算电路806。在一些示例中,像素单元阵列808还可以将具有不同像素稀疏度的第一图像帧822输出到主处理器804和传感器计算电路806。例如,像素单元阵列808可以将具有全像素图像帧的第一图像帧822输出回传感器计算电路806,并将具有由第一编程信号820定义的稀疏像素的第一图像帧822输出回主处理器804。
111.传感器计算电路806和主处理器804与图像传感器802一起可基于第一图像帧822形成两层反馈系统,以控制图像传感器生成后续图像帧824。在两层反馈操作中,传感器计算电路806的图像处理器810可以对第一图像帧822执行图像处理操作以获得处理结果,然后编程图生成器812可以基于处理结果更新第一编程信号820。可以基于从应用814接收的第二编程信号832来指导/配置图像处理器810处的图像处理操作,应用814可以基于第一图像帧822生成第二编程信号832。然后,像素单元阵列808可以基于更新的第一编程信号820生成后续图像帧824。然后,主处理器804和传感器计算电路806可以基于后续图像帧824分别更新第一编程信号820和第二编程信号832。
112.在上述两层反馈系统中,来自主处理器804的第二编程信号832可以是示教/指导信号、神经网络训练操作的结果(例如,反向传播结果)等的形式,以影响传感器计算电路806处的图像处理操作和/或编程图生成。主处理器804可以不仅基于第一图像帧,而且基于其他传感器数据(例如,由其他图像传感器捕获的其他图像帧、音频信息、运动传感器输出、来自用户的输入)来生成示教/指导信号,以确定图像传感器802的光感测操作的上下文,并且然后确定示教/指导信号。该上下文可以包括例如图像传感器802在其中操作的环境条件、图像传感器802的定位或应用814的任何其他要求。可以基于上下文以相对低的速率(例如,低于帧速率的速率)更新示教/指导信号,假定上下文通常以比帧速率低得多的速率改变,而图像处理操作和传感器计算电路806处的编程图的更新可以以相对高的速率(例如,以帧速率)发生,以适应由像素单元阵列808捕获的图像。
113.虽然图8a示出像素单元阵列808将第一图像帧822和第二图像帧824传输到主处理器804和传感器计算电路806两者,但在一些情况下,像素单元阵列808可以将不同稀疏性的图像帧传输到主处理器804和传感器计算电路806。例如,像素单元阵列808可以将具有全像素的第一图像帧822和第二图像帧824传输到图像处理器810,同时将两个图像帧的稀疏版本发送到主处理器804,每个图像帧的稀疏版本包括基于第一编程信号820选择的像素子
集。
114.图8b示出了用来支持图7a的对象跟踪操作的成像系统800的操作的示例。具体地,在时刻t0,像素单元阵列808(未在图8b中示出)基于指示要生成全像素帧的第一编程信号820,生成包括场景的全像素的第一图像帧822,并将第一图像帧822传输到主处理器804和图像处理器810两者,该场景包括对象704。主处理器804基于执行应用814,可以确定对象704要被跟踪。这样的确定可以基于例如用户输入、应用814的要求等。主处理器804还可以处理第一图像帧822以提取对象704的空间特征,诸如特征840和842。基于处理结果,主处理器804可以确定感兴趣区域(roi)850的近似定位、大小和形状,感兴趣区域(roi)850包括第一图像帧822中的对象704(或其他对象,诸如图7c的瞳孔738和闪光739)的像素。此外,基于来自其他传感器(例如,imu)的其他输出,主处理器804还确定图像传感器802正以特定速度相对于对象704移动,并且可以估计在后续图像帧中roi 852的新定位。然后,主处理器804可以将对象704的目标特征(例如,特征840和842)、roi的信息(例如,roi 850的初始定位、形状、大小)、速度等作为第二编程信号832的一部分传输到图像处理器810和编程图生成器812。
115.基于第二编程信号832,图像处理器810可以处理第一图像帧822,以检测对象704的目标图像特征,并基于检测结果确定roi 852的精确定位、大小和形状。然后,图像处理器810可以将包括第一图像帧822中的roi 850的精确定位、大小和形状的roi信息854传输到编程图生成器812。基于roi信息854以及第二编程信号832,编程图生成器812可以估计要在时间t1捕获的后续图像帧中roi 852的预期定位、大小和形状。例如,基于包括在第二编程信号832中的速度信息,编程图生成器812可以确定roi 850将在时间t0和t1之间移动距离d而成为roi 852,并基于距离d确定roi 852在时间t1的定位。作为另一个示例,在图7c的瞳孔738和闪光739作为眼睛跟踪操作的一部分被跟踪的情况下,编程图生成器812可以获得关于用户的凝视改变的信息,并基于凝视改变确定在时间t1包括瞳孔738和闪光739的roi(例如,roi 852)的预期定位。然后,编程图生成器812可以更新第一编程信号820来在时间t1选择roi 852内的像素单元,以输出用于后续图像帧的对象704(或瞳孔738和闪光739或其他对象)的像素数据。
116.图9a、图9b、图9c以及图9d示出了图8a的成像系统800的内部部件的示例。图9a示出了像素单元阵列808的示例。如图9a所示,像素单元阵列808可以包括列控制器904、行控制器906和编程信号解析器920。列控制器904与列总线908(例如,908a、908b、908c、
……
、908n)连接,而行控制器906与行总线910(例如,910a、910b、
……
、908n)连接。列控制器904或行控制器906中的一个也与编程总线912连接,以传输针对特定像素单元或一组像素单元的像素级编程信号926。每个标有p
00
、p
01
、p
0j
等的方框可以表示像素单元或一组像素单元(例如,一组299个1
×
2像素单元)。每个像素单元或每组像素单元可以连接到列总线908之一、行总线910之一、编程总线912和输出数据总线,以输出像素数据(未在图9a中示出)。每个像素单元(或每组像素单元)可由列控制器904提供的列总线908上的列地址信号930和行控制器906提供的行总线910上的行地址信号932单独寻址,以一次经由像素级编程总线912接收像素级编程信号926。可以基于来自编程图生成器812的第一编程信号820生成列地址信号930、行地址信号932以及像素级编程信号926。
117.此外,图9a包括编程信号解析器920,其可以从第一编程信号820中提取像素级编
程信号。在一些示例中,第一编程信号820可以包括编程图,该编程图可以包括针对像素单元阵列808的每个像素单元或每组像素单元的编程数据。图9b示出了像素阵列编程图940的示例。如图9b所示,像素阵列编程图940可以包括像素级编程数据的二维阵列,二维阵列的每个像素级编程数据针对像素单元阵列808的一个像素单元或一组像素单元。例如,在每个像素级编程数据以像素单元为目标的情况下,并且假设像素单元阵列808具有m个像素的宽度(例如,m列像素)和n个像素的高度(例如,n行像素),像素阵列编程图940还可以具有m个条目的宽度(例如,m列条目)和n个条目的高度(例如,n行条目),每个条目存储对应像素单元的像素级编程数据。例如,像素阵列编程图940的条目(0,0)处的像素级编程数据a
00
针对像素单元阵列808的像素定位(0,0)处的像素单元p
00
,而像素阵列编程图940的条目(0,1)处的像素级编程数据a
01
针对像素单元阵列808的像素定位(0,1)处的像素单元p
01
。在像素级编程数据以一组像素单元为目标的情况下,像素阵列编程图940沿高度和宽度的条目数量可以基于每组中的像素单元数量进行缩放。
118.像素阵列编程图940可以被配置为支持图9b中描述的反馈操作。例如,存储在每个条目处的像素级编程数据可以单独地将每个像素单元(或每组像素单元)编程为例如通电或断电、启用或禁用像素数据的输出、设置量化分辨率、设置输出像素数据的精度、选择量化操作(例如tts、fd adc、pd adc之一)、设置帧速率等。如上所述,编程图生成器812可以基于例如一个或更多个roi的预测来生成像素阵列编程图940,其中roi内的像素单元的像素级编程数据不同于roi外的像素单元的像素级编程数据。例如,像素阵列编程图940可以使像素单元(或像素单元组)的子集能够输出像素数据,而其余的像素单元不输出像素数据。作为另一示例,像素阵列编程图940可以控制像素单元的子集以较高分辨率输出像素数据(例如,使用较大数量的位来表示每个像素),而其余像素单元以较低分辨率输出像素数据。
119.返回参考图9a,编程图解析器920可以解析可以在串行数据流中的像素阵列编程图940,以识别每个像素单元(或每个像素单元组)的像素级编程数据。像素级编程数据的识别可以基于例如预定的扫描模式(通过该扫描模式二维像素阵列编程图被转换成串行格式)、以及编程信号解析器920从串行数据流接收像素级编程数据的顺序。对于编程数据的每个条目,编程信号解析器920可以生成行地址信号930和列地址信号832,并将行地址信号830和列地址信号832分别传输到行传感器计算电路806和列控制器904,以选择像素单元并将像素级编程信号826传输到所选择的像素单元(或像素单元组)。
120.图9c示出了像素单元阵列808的像素单元950的示例内部部件,其可以包括图6a的像素单元601的至少一些部件。像素单元950可以包括一个或更多个光电二极管,包括光电二极管952a、952b等。在一些示例中,像素单元950的一个或更多个光电二极管可以被配置成检测不同频率范围的光。例如,光电二极管952a可以检测可见光(例如,单色,或红色、绿色或蓝色之一),而光电二极管952b可以检测红外光。在一些示例中,像素单元950的一些或全部光电二极管可以检测相同波长的光。像素单元950还包括开关954(例如,晶体管、控制器阻挡层)来控制哪个光电二极管输出电荷用于像素数据生成。在光电二极管检测不同频率范围的光的情况下,来自每个光电二极管的输出可以对应于像素以支持共定位2d/3d感测。在光电二极管检测相同频率范围的光的情况下,来自光电二极管的输出可以在模拟合并(analog binning)操作中组合,以例如增加测量低强度光时的信噪比(snr)。
121.此外,像素单元950还包括如图6a所示的电子快门开关603、转移开关604、电荷存
储设备605、缓冲器606、量化器607、以及复位开关951和存储器955。电荷存储设备605可以具有可配置的电容,以设置电荷-电压转换增益。在一些示例中,对于中等光强度,可以增大电荷存储设备605的电容,以存储溢出电荷用于fd adc操作,从而降低电荷存储设备605被溢出电荷饱和的可能性。对于低光强度,也可以减小电荷存储设备605的电容,以增加电荷-电压转换增益用于pd adc操作。电荷-电压转换增益的增加可以减少量化误差并增加量化分辨率。在一些示例中,也可以在fd adc操作期间减小电荷存储设备605的电容,以增加量化分辨率。复位开关951可以在捕获图像帧之前和/或在fd adc和pd adc操作之间复位电荷存储设备605。缓冲器606包括电流源956和功率门(power gate)958,电流源的电流可以由偏置信号bias1设置,功率门858可以由pwr_gate信号控制以打开/关闭缓冲器606。作为禁用像素单元950的一部分,可以关闭缓冲器606。
122.此外,量化器607包括比较器960和输出逻辑962。比较器960可以将缓冲器的输出与参考电压(vref)进行比较,以生成输出。根据量化操作(例如,tts、fd adc和pd adc操作),比较器960可以将缓冲的电压与不同的vref电压进行比较以生成输出,并且输出被输出逻辑962进一步处理以使存储器955存储来自自由运行计数器或数字斜坡(digital ramp)的值作为像素输出。比较器960的偏置电流可以由偏置信号bias2控制,该偏置信号bias2可以设置比较器960的带宽,该带宽可以基于像素单元950支持的帧速率来设置。此外,比较器960的增益可以由增益控制信号gain控制。比较器960的增益可以基于像素单元950支持的量化分辨率来设置。比较器960还包括功率开关961a和功率开关961b,它们也可以由pwr_gate信号控制以分别接通/关断比较器960和存储器955。作为禁用像素单元950的一部分,可以关闭比较器960。
123.此外,输出逻辑962可以选择tts、fd adc或pd adc操作之一的输出,并且基于该选择,确定是否将比较器960的输出转发到存储器955以存储来自计数器/数字斜坡的值。输出逻辑962可以包括内部存储器,以基于比较器960的输出来存储光电二极管952(例如,光电二极管952a)是否被剩余电荷饱和以及电荷存储设备605是否被溢出电荷饱和的指示。如果电荷存储设备605被溢出电荷饱和,输出逻辑962可以选择tts输出以存储在存储器955中,并且防止存储器955通过fd adc/pd adc输出来重写tts输出。如果电荷存储设备605未饱和,但是光电二极管952饱和,输出逻辑962可以选择fd adc输出以存储在存储器955中;在其他情况下,输出逻辑962可以选择pd adc输出来存储在存储器955中。在一些示例中,代替计数器值,光电二极管952是否被剩余电荷饱和以及电荷存储设备605是否被溢出电荷饱和的指示可以存储在存储器955中,以提供最低精度的像素数据。
124.此外,像素单元950可包括像素单元控制器970,其可包括逻辑电路以生成控制信号,诸如ab、tg、bias1、bias2、gain、vref、pwr_gate等。像素单元控制器970也可以由像素级编程信号926来编程。例如,为了禁用像素单元950,可以通过像素级编程信号926对像素单元控制器970进行编程,以宣称pwr_gate无效,从而关闭缓冲器606和比较器960。此外,为了提高量化分辨率,像素单元控制器970可以由像素级编程信号926编程,以减小电荷存储设备605的电容、经由gain信号来提高比较器960的增益等。为了提高帧速率,像素单元控制器970可以由像素级编程信号926编程,以增强bias1信号和bias2信号,从而分别增加缓冲器606和比较器960的带宽。此外,为了控制像素单元950输出的像素数据的精度,像素单元控制器970可以通过像素级编程信号926进行编程,以例如仅将计数器的位子集(例如,最高有
效位)连接到存储器955,使得存储器955仅存储位子集,或者将存储在输出逻辑962中的指示作为像素数据存储到存储器955。另外,像素单元控制器970可以由像素级编程信号926编程,以控制ab和tg信号的序列和时序,例如,调整曝光周期和/或选择特定量化操作(例如,tts、fd adc或pd adc之一),同时基于操作条件跳过其他操作,如上所述。
125.图9d示出了图像处理器810的内部部件的示例。如图9d所示,图像处理器810可以包括特征提取电路972和存储器976。待由图像处理器810提取/检测的特征可以包括例如预定对象(诸如,人脸、身体部分、场景中的某些物理对象)的空间特征和关键点、时间对比等。在一些示例中,特征提取电路972可以实现机器学习模型973,诸如卷积神经网络(cnn)、递归神经网络(rnn)等,其可以被训练以对由像素单元阵列808生成的输入图像帧(诸如,第一图像帧822)执行图像特征操作。在一些示例中,特征提取电路972还可以包括比较电路975,用于将像素数据与阈值进行比较,以识别具有预定时间对比度的像素。特征提取电路972可以包括其它电路,诸如数字信号处理器(dsp)、线性求解器单元、微控制器、算术电路等,以执行特征提取操作。图像处理器810可以接收目标特征/阈值、机器学习参数(例如,权重、向后传播梯度)或其他配置参数,作为来自主处理器804的第二编程信号832的一部分,以支持机器学习模型973的特征提取操作和/或训练操作。作为特征提取操作的结果,特征提取电路972可以输出例如在输入图像帧中检测到的特征的像素定位,然后该像素定位可以被馈送到编程图生成器812以生成像素阵列编程图940。
126.此外,存储器976可以提供片上存储器以存储输入图像帧的像素数据、用于特征提取操作的各种配置数据以及特征提取电路972的输出(例如,像素定位)。在一些示例中,提供给特征提取电路972的当前输入图像帧可以仅包括稀疏像素数据而不是全像素数据帧。在这种情况下,存储器976还可以存储先前输入图像帧的像素数据,该像素数据可以被馈送到特征提取电路972并与当前输入图像组合以生成重构的全像素数据帧。特征提取电路972然后可以基于重构的全像素数据帧执行特征提取操作。存储器976可以包括例如自旋隧道随机存取存储器(stram)、非易失性随机存取存储器(nvram)等。在一些示例中,图像处理器810还可以包括到片外存储器(例如,动态随机存取存储器)的接口,以支持特征提取电路880处的特征提取操作。
127.特征提取电路972可以采用各种技术来执行特征提取操作。在一个示例中,特征提取电路972可以使用诸如cnn的机器学习模型973,以用滤波器在像素数据块之间执行卷积操作。滤波器可以包括表示要提取的目标特征的权重集。作为卷积操作的一部分,滤波器在特定步幅(stride)定位与像素数据块的一部分叠加,并且可以确定滤波器的每个元素与该部分内的每个像素的乘积之和。当滤波器在像素块内移位时,关于不同步幅定位的乘积和的分布可以被确定为卷积输出。卷积输出可以指示例如特定像素捕获目标特征的概率、像素属于目标对象的概率等。基于这些概率,特征提取电路972可以输出被确定为可能包括目标特征或作为目标对象的一部分的像素的像素定位。然后可以输出像素定位作为图8b的roi信息852的一部分来如上所述调整像素单元阵列808的稀疏捕获操作。
128.卷积操作的滤波器权重可以从训练过程中获得,该训练过程可以离线、在线或两者组合执行。在离线训练过程中,可以在特征提取操作之前将权重预存储在存储器976中。权重可以从基于训练数据集的训练过程中获得,该训练数据集覆盖了期望由图像处理器810处理的图像数据的范围。训练数据集可以存储在云环境中,并且训练也可以作为离线训
练过程在云环境中执行。从离线训练过程获得的权重对于不同成像系统800的所有图像处理器810来说可以是公共的。
129.在在线训练过程中,当图像处理器810接收待检测的实际对象的图像数据时,可以获得图像处理器810使用的权重。示例应用可以是眼睛跟踪(例如,基于由图像传感器捕获的眼睛图像)。作为在线训练过程的一部分,图像处理器810可以在训练模式下操作,在该模式下,当要求用户观察空间中的特定目标或定位时,图像处理器接收用户眼睛的像素数据。通过训练过程,图像处理器810可以调整权重以最大化正确识别用户眼睛的可能性。在这种情况下,特定成像系统800的图像处理器810使用的权重可以不同于另一成像系统800的图像处理器810使用的权重,因为权重是针对特定用户和/或特定操作条件优化的。在一些示例中,图像处理器810使用的权重可以通过离线和在线训练过程的组合来获得。例如,第一神经网络层使用的权重可以是用于提取对象的一般特征的一般权重,而上层神经网络层的权重可以在在线训练过程中被训练,以变得特定于用户和/或特定的操作条件。
130.此外,为了支持动态视觉感测(dvs)操作,特征提取电路972可以使用比较电路975将输入图像帧中的像素与存储在存储器976中的先前图像帧中的对应像素进行比较,以获得像素的时间对比度。比较电路975还可以将时间对比度与(作为第二编程信号832的一部分被接收的)目标阈值进行比较,以输出具有(或超过)预定的时间对比度阈值的像素的像素定位。
131.可以基于第二编程信号832来配置特征提取电路972处的特征提取操作。例如,主处理器804可将待提取的目标特征编码为滤波器权重,并将滤波器权重提供给cnn模型以执行卷积操作。此外,主处理器804可以为dvs操作设置时间对比度阈值,并将时间对比度阈值作为第二编程信号832的一部分发送。然后可以输出像素定位作为图8b的roi信息852的一部分来如上所述调整像素单元阵列808的稀疏捕获操作。
132.除了目标特征和阈值之外,主处理器804可以基于包括在第二编程信号832中的其他配置参数来影响特征提取电路972处的特征提取操作。例如,主处理器804可以是在线训练操作的一部分,并且可以基于涉及从单个成像系统800或多个成像系统800接收的图像的训练操作来确定后向传播梯度。然后,主处理器804可以将后向传播梯度提供回每个成像系统800作为第二编程信号832的一部分,以在每个成像系统处局部调整权重。作为另一示例,主处理器804可以将图像处理操作的中间结果(诸如较低级别神经网络层的输出)作为第二编程信号832的一部分提供给特征提取电路972,特征提取电路972然后可以使用该输出在较高级别神经网络层执行神经网络计算。作为另一示例,主处理器804可以提供由神经网络执行的图像处理操作的预测精度作为反馈,这允许特征提取电路972的神经网络更新权重以提高图像处理操作的预测精度。
133.作为另一示例,主处理器804可以提供初始roi(例如,图8b的roi850)的定位。图像处理器810可以在两步处理中执行特征提取操作(例如,卷积操作、动态感测操作)。例如,图像处理器810可以首先对由初始roi识别的像素执行特征提取操作。如果提取结果指示初始roi关闭(例如,所识别的像素不类似于目标对象的形状),则图像处理器810可以使用初始roi作为基线,以在第二步骤中搜索可包括目标特征的附加像素。在第二步骤结束时,图像处理器810可以确定细化的像素定位以提供更细化的roi。
134.此外,主处理器804还可以执行特征提取操作的评估,并将评估结果提供回特征提
取电路972。主处理器804可以提供评估结果作为反馈,以影响特征提取电路972处的特征提取操作。评估结果可以包括例如由像素单元阵列808输出的稀疏像素是否包含由应用814所需数据(和/或由像素单元阵列808输出的稀疏像素包含由应用814所需数据的百分比)的指示。在基于作为特征提取操作的结果生成的第一编程信号820中定义的roi来输出稀疏像素的情况下,特征提取电路972可以基于评估结果调整roi和/或特征提取操作。例如,在对象跟踪/检测操作的情况下,主处理器804可以评估由像素单元阵列808输出的图像帧中的稀疏像素是否包含目标对象的所有像素,并将评估结果提供回特征提取电路972。特征提取电路972然后可以基于评估结果来调整例如像素的选择以执行特征提取操作。在评估结果指示稀疏像素不包含目标对象的所有像素的情况下,特征提取电路972可以扩展roi以处理更多像素,或者甚至放弃roi并处理输入图像帧的所有像素以提取/检测目标特征。
135.来自图像传感器600的图像帧数据可以被传输到主处理器(未在图6a和图6b中示出)以支持不同的应用,诸如跟踪一个或更多个对象、检测运动(诸如,作为动态视觉感测(dvs)操作的一部分)等。图7a-图7d示出了可由来自图像传感器600的图像帧数据支持的应用的示例。图7a示出了基于来自图像传感器600的图像帧的对象跟踪操作的示例。如图7a所示,在主处理器处操作的应用可以从在时间t0捕获的图像帧700中识别与对象704相对应的感兴趣区域(roi)702中的像素组。该应用可以继续跟踪包括在时间t1捕获的图像帧710在内的后续图像帧中的对象704的定位,并识别与对象704相对应的roi 712中的像素组。可以执行对图像帧内对象704的图像定位的跟踪以支持slam算法,该slam算法可以基于跟踪由图像传感器600捕获的场景中对象704的图像定位来构造/更新图像传感器600(以及包括图像传感器600的移动设备,诸如近眼显示器100)所处的环境的图。
136.图7b示出了对来自图像传感器600的图像帧进行对象检测操作的示例。如图7b左边所示,主处理器可以识别在图像帧720中捕获的场景中的一个或更多个对象,诸如车辆722和人724。如图7b右边所示,基于该识别,主处理器可确定像素组726对应于车辆722,而像素组728对应于人724。可以执行对车辆722和人724的识别以支持各种应用,诸如其中车辆722和人724是监视目标的监视应用、其中车辆722和人724被替换为虚拟对象的混合现实(mr)应用、为了隐私而降低某些图像(诸如,车辆722的牌照、人724的面部)分辨率的中央凹成像操作等。
137.图7c示出了对来自图像传感器600的图像帧的眼睛跟踪操作的示例。如图7c所示,主处理器可以从眼球的图像730和732中识别对应于瞳孔738和闪光739的像素组734和736。可以执行瞳孔738和闪光739的识别以支持眼睛跟踪操作。例如,基于瞳孔738和闪光739的图像定位,应用可以确定用户在不同时间的凝视方向,该凝视方向可以作为输入提供给系统以确定例如要显示给用户的内容。
138.图7d示出了对来自图像传感器600的图像帧的动态视觉感测(dvs)操作的示例。在dvs操作中,图像传感器600可以仅输出经历预定亮度变化程度(反映在像素值中)的像素,而图像传感器600不输出未经历该变化程度的像素。可以执行dvs操作以检测对象的运动和/或减少被输出的像素数据的量。例如,参考图7d,在时间t0捕获图像740,图像740包含光源的像素组742和人的像素组744。像素组742和744都可以在时间t0作为图像740的一部分输出。在时间t1,捕获图像750。与光源对应的像素组742的像素值在时间t0和t1之间保持相同,并且像素组742不作为图像750的一部分输出。另一方面,人在时间t0和t1之间从站立变
为行走,这导致在时间t0和t1之间像素组744的像素值的变化。结果,人的像素组744作为图像750的一部分被输出。
139.在图7a-图7d的操作中,图像传感器600可被控制以执行稀疏捕获操作,其中仅选择像素单元的子集以将感兴趣的像素数据输出到主处理器。感兴趣的像素数据可以包括支持主处理器处的特定操作所需的像素数据。例如,在图7a的对象跟踪操作中,图像传感器600可被控制为仅传输对象704分别在图像帧700和710中的roi 702和712中的像素组。在图7b的对象检测操作中,图像传感器600可被控制为仅分别传输车辆722的像素组726和人724的像素组728。此外,在图7c的眼睛跟踪操作中,图像传感器600可被控制成仅传输包含瞳孔738和闪光739的像素组734和736。此外,在图7d的dvs操作中,可以控制图像传感器600在时间t1仅传输运动者的像素组744,而不传输静态光源的像素组742。所有这些布置可以允许生成和传输更高分辨率的图像,而不相应地增加功率和带宽。例如,包括更多像素单元的更大的像素单元阵列可以被包括在图像传感器600中以提高图像分辨率,而当只有像素单元的子集以高分辨率生成感兴趣的像素数据并将高分辨率像素数据传输到主处理器而其余的像素单元不生成/传输像素数据或者以低分辨率生成/传输像素数据时,可以减少提供提高的图像分辨率所需的带宽和功率。此外,虽然图像传感器600可以被操作来以较高的帧速率生成图像,但是当每个图像仅包括高分辨率并且由大量的位表示的一小组像素值,而其余的像素值不被传输或者由较少数量的位表示时,可以减少带宽和功率的增加。
140.在3d感测的情况下,也可以减少像素数据传输的量。例如,参考图6d,照明器640可以将结构光的图案642投射到对象650上。结构光可以在对象650的表面上反射,并且反射光的图案652可以被图像传感器600捕获以生成图像。主处理器可以将图案652与图案642匹配,并基于图像中图案652的图像定位来确定对象650相对于图像传感器600的深度。对于3d感测,只有像素单元组660、662、664和666包含相关信息(例如,图案652的像素数据)。为了减少被传输的像素数据量,图像传感器600可以被配置为仅从像素单元组660、662、664和666发送像素数据到主处理器,或者以高分辨率从像素单元组660、662、664和666发送像素数据到主处理器,而其余像素数据以低分辨率发送到主处理器。
141.图8a和图8b示出了可执行稀疏捕获操作以支持图7a-图7d中示出的操作的成像系统800的示例。如图8a所示,成像系统800包括图像传感器802和主处理器804。图像传感器802包括传感器计算电路806、像素单元阵列808和帧缓冲器809。传感器计算电路806包括图像处理器810和编程图生成器812。在一些示例中,传感器计算电路806可以被实现为专用集成电路(asic)、现场可编程门阵列(fpga)或执行指令以实现图像处理器810和编程图生成器812的功能的硬件处理器。帧缓冲器809可以包括存储器,用于存储由像素单元阵列808输出的图像帧,并将图像帧提供给传感器计算电路806进行处理。帧缓冲器809可包括与传感器计算电路806集成在同一晶圆上的片上存储器(例如,静态随机存取存储器(sram))或片外存储器(例如,电阻随机存取存储器(reram)、动态随机存取存储器(dram))。此外,主处理器804包括可以执行应用814的通用中央处理单元(cpu)。
142.像素单元阵列808的每个像素单元或像素单元块可以单独编程,以例如启用/禁用像素值的输出、设置由像素单元输出的像素值的分辨率等。像素单元阵列808可以从传感器计算电路806的编程图生成器812接收第一编程信号820,第一编程信号820可以是包含用于每个像素单元的编程数据的编程图的形式。像素单元阵列808可以感测来自场景的光,并基
于第一编程信号820生成该场景的第一图像帧822。具体地说,像素单元阵列808可以由第一编程信号820控制以在不同的稀疏模式下工作,诸如在全帧模式和/或在稀疏模式下工作,全帧模式中第一图像帧822包括全像素图像帧,稀疏模式中第一图像帧822仅包括由编程图指定的像素的子集。像素单元阵列808可以将第一图像帧822输出到主处理器804和传感器计算电路806。在一些示例中,像素单元阵列808还可以将具有不同像素稀疏度的第一图像帧822输出到主处理器804和传感器计算电路806。例如,像素单元阵列808可以将具有全像素图像帧的第一图像帧822输出回传感器计算电路806,并将具有由第一编程信号820定义的稀疏像素的第一图像帧822输出到主处理器804。
143.除了生成第一编程信号820之外,传感器计算电路806还可以生成发送到像素单元阵列808的每个像素单元的全局信号。全局信号可以包括例如用于tts、fd adc和pd adc操作中的量化操作的阈值电压(诸如,用于fd adc和pd adc操作的全局电压斜坡、用于tts操作的平坦电压等),以及诸如图6b的ab和tg信号的全局控制信号。
144.传感器计算电路806和主处理器804与图像传感器802一起可基于第一图像帧822形成两层反馈系统,以控制图像传感器生成后续图像帧824。在两层反馈操作中,传感器计算电路806的图像处理器810可以对第一图像帧822执行图像处理操作以获得处理结果,然后编程图生成器812可以基于处理结果更新第一编程信号820。可以基于从应用814接收的第二编程信号832来指导/配置图像处理器810处的图像处理操作,应用814可以基于第一图像帧822生成第二编程信号832。然后,像素单元阵列808可以基于更新的第一编程信号820生成后续图像帧824。然后,主处理器804和传感器计算电路806可以基于后续图像帧824分别更新第一编程信号820和第二编程信号832。
145.在上述两层反馈系统中,来自主处理器804的第二编程信号832可以是示教/指导信号、神经网络训练操作的结果(例如,反向传播结果)等的形式,以影响传感器计算电路806处的图像处理操作和/或编程图生成。主处理器804可以不仅基于第一图像帧,而且基于其他传感器数据(例如,由其他图像传感器捕获的其他图像帧、音频信息、运动传感器输出、来自用户的输入)来生成示教/指导信号,以确定图像传感器802的光感测操作的上下文,并且然后确定示教/指导信号。该上下文可以包括,例如,图像传感器802在该图像传感器802的定位上操作的环境条件、或应用814的任何其他要求。可以基于上下文以相对较低的速率(例如,低于帧速率的速率)更新示教/指导信号,假定上下文通常以比帧速率低得多的速率改变,而图像处理操作和传感器计算电路806处的编程图的更新可以以相对较高的速率(例如,以帧速率)发生,以适应由像素单元阵列808捕获的图像。
146.虽然图8a示出像素单元阵列808将第一图像帧822和第二图像帧824传输到主处理器804和传感器计算电路806两者,但在一些情况下,像素单元阵列808可以将不同稀疏性的图像帧传输到主处理器804和传感器计算电路806。例如,像素单元阵列808可以将具有全像素的第一图像帧822和第二图像帧824传输到图像处理器810,同时将两个图像帧的稀疏版本发送到主处理器804,图像帧的每个稀疏版本包括基于第一编程信号820选择的像素子集。
147.图8b示出了用来支持图7a的对象跟踪操作的成像系统800的操作的示例。具体地,在时间t0,像素单元阵列808(未在图8b中示出)基于指示要生成全像素帧的第一编程信号820,生成包括场景的全像素的第一图像帧822,并将第一图像帧822传输到主处理器804和
图像处理器810两者,该场景包括对象704。主处理器804基于执行应用814,可以确定对象704要被跟踪。这样的确定可以基于诸如用户输入、应用814的要求等。主处理器804还可以处理第一图像帧822以提取对象704的空间特征,诸如特征840和842。基于处理结果,主处理器804可以确定roi 850的近似定位、大小和形状,该roi 850包括第一图像帧822中的对象704(或其他对象,诸如图7c的瞳孔738和闪光739)的像素。此外,基于来自其他传感器(例如,imu)的其他输出,主处理器804还确定图像传感器802正以特定速度相对于对象704移动,并且可以估计在后续图像帧中roi 852的新定位。然后,主处理器804可以将对象704的目标特征(例如,特征840和842)、roi的信息(例如,roi 850的初始定位、形状、大小)、速度等作为第二编程信号832的一部分传输到图像处理器810和编程图生成器812。
148.基于第二编程信号832,图像处理器810可以处理第一图像帧822,以检测对象704的目标图像特征,并基于检测结果确定roi 852的精确定位、大小和形状。然后,图像处理器810可以将包括第一图像帧822中的roi 850的精确定位、大小和形状的roi信息854传输到编程图生成器812。基于roi信息854以及第二编程信号832,编程图生成器812可以估计要在时间t1捕获的后续图像帧中roi 852的预期定位、大小和形状。例如,基于包括在第二编程信号832中的速度信息,编程图生成器812可以确定roi 850将在时间t0和t1之间移动距离d而成为roi 852,并基于距离d确定roi 852在时间t1的定位。作为另一个示例,在图7c的瞳孔738和闪光739被跟踪而作为眼睛跟踪操作的一部分的情况下,编程图生成器812可以获得关于用户的凝视改变的信息,并基于凝视改变确定在时间t1包括瞳孔738和闪光739的roi(例如,roi 852)的预期定位。然后,编程图生成器812可以更新第一编程信号820,来在时间t1选择roi 852内的像素单元,以输出用于后续图像帧的对象704(或瞳孔738和闪光739,或其他对象)的像素数据。
149.图9a、图9b和图9c示出了图8a的像素单元阵列808的内部部件的示例。如图9a所示,像素单元阵列808可以包括列控制器904、行控制器906和编程信号解析器920。列控制器904与列总线908(例如,908a、908b、908c、
……
、908n)连接,而行控制器906与行总线910(例如,910a、910b、
……
、908n)连接。列控制器904或行控制器906中的一个也与编程总线912连接,以传输针对特定像素单元或一组像素单元的像素级编程信号926。每个标有p
00
、p
01
、p
0j
等的方框可以表示像素单元或一组像素单元(例如,一组2
×
2像素单元)。每个像素单元或每组像素单元可以连接到列总线908之一、行总线910之一、编程总线912和输出数据总线,以输出像素数据(未在图9a中示出)。每个像素单元(或每组像素单元)可由列控制器904提供的列总线908上的列地址信号930和行控制器906提供的行总线910上的行地址信号932单独寻址,以一次经由像素级编程总线912接收像素级编程信号926。可以基于来自编程图生成器812的第一编程信号820生成列地址信号930、行地址信号932以及像素级编程信号926。
150.此外,图9a包括编程信号解析器920,其可以从第一编程信号820中提取像素级编程信号。在一些示例中,第一编程信号820可以包括编程图,该编程图可以包括针对像素单元阵列808的每个像素单元或每组像素单元的编程数据。图9b示出了像素阵列编程图940的示例。如图9b所示,像素阵列编程图940可以包括像素级编程数据的二维阵列,二维阵列的每个像素级编程数据针对像素单元阵列808的一个像素单元或一组像素单元。例如,在每个像素级编程数据以像素单元为目标的情况下,并且假设像素单元阵列808具有m个像素的宽度(例如,m列像素)和n个像素的高度(例如,n行像素),像素阵列编程图940还可以具有m个
条目的宽度(例如,m列条目)和n个条目的高度(例如,n行条目),每个条目存储对应像素单元的像素级编程数据。例如,像素阵列编程图940的条目(0,0)处的像素级编程数据a
00
针对像素单元阵列808的像素定位(0,0)处的像素单元p
00
,而像素阵列编程图940的条目(0,1)处的像素级编程数据a
01
针对像素单元阵列808的像素定位(0,1)处的像素单元p
01
。在像素级编程数据以一组像素单元为目标的情况下,像素阵列编程图940沿高度和宽度的条目数量可以基于每组中的像素单元数量进行缩放。
151.像素阵列编程图940可以被配置为支持图9b中描述的反馈操作。例如,存储在每个条目处的像素级编程数据可以单独地将每个像素单元(或每组像素单元)编程为例如通电或断电、启用或禁用像素数据的输出、设置量化分辨率、设置输出像素数据的精度、选择量化操作(例如tts、fd adc、pd adc之一)、设置帧速率等。如上所述,编程图生成器812可以基于例如一个或更多个roi的预测来生成像素阵列编程图940,其中roi内的像素单元的像素级编程数据不同于roi外的像素单元的像素级编程数据。例如,像素阵列编程图940可以使像素单元(或像素单元组)的子集能够输出像素数据,而其余的像素单元不输出像素数据。作为另一示例,像素阵列编程图940可以控制像素单元的子集以较高分辨率输出像素数据(例如,使用较大数量的位来表示每个像素),而其余像素单元以较低分辨率输出像素数据。
152.返回参考图9a,编程图解析器920可以解析可以在串行数据流中的像素阵列编程图940,以识别每个像素单元(或每个像素单元组)的像素级编程数据。像素级编程数据的识别可以基于例如预定的扫描模式(通过该扫描模式二维像素阵列编程图被转换成串行格式)、以及编程信号解析器920从串行数据流接收像素级编程数据的顺序。对于编程数据的每个条目,编程信号解析器920可以生成行地址信号930和列地址信号832,并将行地址信号830和列地址信号832分别发送到行传感器计算电路806和列控制器904,以选择像素单元并将像素级编程信号826发送到所选择的像素单元(或像素单元组)。
153.图9c示出了像素单元阵列808的像素单元950的示例内部部件,其可以包括图6a的像素单元601的至少一些部件。像素单元950可以包括一个或更多个光电二极管,包括光电二极管952a、952b等,每个光电二极管可以被配置成检测不同频率范围的光。例如,光电二极管952a可以检测可见光(例如,单色,或红色、绿色或蓝色之一),而光电二极管952b可以检测红外光。像素单元950还包括开关954(例如,晶体管、控制器阻挡层)来控制哪个光电二极管输出电荷用于像素数据生成。
154.此外,像素单元950还包括如图6a所示的电子快门开关603、转移开关604、电荷存储设备605、缓冲器606、量化器607、以及存储器955。在一些示例中,像素单元950可以包括用于每个光电二极管的单独的转移开关604和/或单独的电荷存储设备605。电荷存储设备605可以具有可配置的电容,以设置电荷-电压转换增益。在一些示例中,对于中等光强度,可以增大电荷存储设备605的电容,以存储fd adc操作的溢出电荷,从而降低电荷存储设备605被溢出电荷饱和的可能性。对于低光强度,也可以减小电荷存储设备605的电容,以增加电荷-电压转换增益用于pd adc操作。电荷-电压转换增益的增加可以减少量化误差并增加量化分辨率。在一些示例中,也可以在fd adc操作期间减小电荷存储设备605的电容,以增加量化分辨率。缓冲器606包括电流源956和功率门958,电流源的电流可以由偏置信号bias1设置,功率门可以由pwr_gate信号控制以打开/关闭缓冲器606。作为禁用像素单元950的一部分,可以关闭缓冲器606。
155.此外,量化器607包括比较器960和输出逻辑962。比较器960可以将缓冲器的输出与参考电压(vref)进行比较,以生成输出。根据量化操作(例如,tts、fd adc和pd adc操作),比较器960可以将缓冲的电压与不同的vref电压进行比较以生成输出,并且输出被输出逻辑962进一步处理以使存储器955存储来自自由运行计数器的值作为像素输出。比较器960的偏置电流可以由偏置信号bias2控制,该偏置信号bias2可以设置比较器960的带宽,该带宽可以基于像素单元950支持的帧速率来设置。此外,比较器960的增益可以由增益控制信号gain控制。比较器960的增益可以基于像素单元950支持的量化分辨率来设置。比较器960还包括功率开关961,其也可以由pwr_gate信号控制以开启/关闭比较器960。作为禁用像素单元950的一部分,可以关闭比较器960。
156.此外,输出逻辑962可以选择tts、fd adc或pd adc操作之一的输出,并且基于该选择,确定是否将比较器960的输出转发到存储器955以存储来自计数器的值。输出逻辑962可以包括内部存储器,以基于比较器960的输出来存储光电二极管952(例如,光电二极管952a)是否被剩余电荷饱和以及电荷存储设备605是否被溢出电荷饱和的指示。如果电荷存储设备605被溢出电荷饱和,输出逻辑962可以选择tts输出以存储在存储器955中,并且防止存储器955通过fd adc/pd adc输出来重写tts输出。如果电荷存储设备605未饱和,但是光电二极管952饱和,输出逻辑962可以选择fd adc输出以存储在存储器955中;在其他情况下,输出逻辑962可以选择pd adc输出来存储在存储器955中。在一些示例中,代替计数器值,光电二极管952是否被剩余电荷饱和以及电荷存储设备605是否被溢出电荷饱和的指示可以存储在存储器955中,以提供最低精度的像素数据。
157.此外,像素单元950可包括像素单元控制器970,其可包括逻辑电路以生成控制信号,诸如ab、tg、bias1、bias2、gain、vref、pwr_gate等。像素单元控制器970也可以由像素级编程信号926来编程。例如,为了禁用像素单元950,可以通过像素级编程信号926对像素单元控制器970进行编程,以宣称pwr_gate无效,从而关闭缓冲器606和比较器960。此外,为了提高量化分辨率,像素单元控制器970可以由像素级编程信号926编程,以减小电荷存储设备605的电容、经由gain信号来提高比较器960的增益等。为了提高帧速率,像素单元控制器970可以由像素级编程信号926编程,以增强bias1信号和bias2信号,以分别增加缓冲器606和比较器960的带宽。此外,为了控制像素单元950输出的像素数据的精度,像素单元控制器970可以通过像素级编程信号926进行编程,以例如仅将计数器的位子集(例如,最高有效位)连接到存储器955,使得存储器955仅存储位子集,或者将存储在输出逻辑962中的指示作为像素数据存储到存储器955。另外,像素单元控制器970可以由像素级编程信号926编程,以控制ab和tg信号的序列和时序,例如,调整曝光周期和/或选择特定量化操作(例如,tts、fd adc或pd adc之一),同时基于操作条件跳过其他操作,如上所述。
158.图10a、图10b、和图10c示出了图像处理器810的内部部件的示例。如图10a所示,图像处理器810可以包括计算存储器1002、控制器1004和数据处理电路1006。计算存储器1002可以存储将由图像处理器810处理的图像帧(诸如图8a的图像帧822/824)的像素。控制器1004可以接收图像处理配置参数,作为来自主处理器804的第二编程信号832的一部分。控制器1004然后可以基于配置参数控制数据处理电路1006以从计算存储器1002提取图像帧来执行图像处理操作。例如,在图像处理操作是检测感兴趣对象并跟踪其在图像帧中的定位的情况下,第二编程信号832可以包括感兴趣对象的图像特征。数据处理电路1006可以生
成图像处理输出1008,该图像处理输出例如指示对象在图像帧中的像素定位。
159.在一些示例中,数据处理电路1006可以实现机器学习模型,诸如卷积神经网络(cnn)模型,以执行对象检测和跟踪操作。图10b示出了可由数据处理电路1006实现的cnn 1020的示例架构。参考图10b,cnn 1020可包括四个主要操作:(1)卷积;(2)通过激活函数(例如,relu)进行处理;(3)池化或者子采样(sub-sampling);以及(4)分类(全连接层)。这些操作可以是每个卷积神经网络的基本构建块。不同的cnn可以具有这四种主要操作的不同组合。
160.待分类的图像,诸如输入图像1022,可以由像素值的矩阵表示。输入图像1022可以包括多个通道,每个通道表示图像的某个分量。例如,来自数码相机的图像可以有红色通道、绿色通道和蓝色通道。每个通道可以由具有0到255(即,8位)范围内的像素值的像素的2d矩阵表示。灰度图像可以只有一个通道。在下面的描述中,描述使用cnn 1020对单个图像通道的处理。可以类似地处理其他通道。
161.如图10b所示,输入图像1022可以由第一卷积层(例如,输入层)1024使用第一权重数组(在图10b中标记为[w0])来处理。第一卷积层1024可以包括多个节点,其中每个节点被分配用于将输入图像1022的像素与第一权重数组中的对应权重相乘。作为卷积操作的一部分,在乘累加(mac)操作中,输入图像1022的像素块可以与第一权重数组相乘以产生乘积,并且然后累加这些乘积以生成和。然后,每个和可以由激活函数进行后处理,以生成中间输出。激活函数可以模拟神经网络中线性感知器的行为。激活函数可以包括线性函数或非线性函数(例如,relu、softmax)。中间输出可以形成中间输出张量1026。第一权重数组可用于例如从输入图像1022中提取某些基本特征(例如,边缘),并且中间输出张量1026可将基本特征的分布表示为基本特征图。中间输出张量1026可以被传递到池化层1028,在池化层,中间输出张量1026可以被池化层1028子采样或下采样以生成中间输出张量1030。
[0162]
中间输出张量1030可以由第二卷积层1032使用第二权重数组(在图10b中标记为[w1])来处理。例如,第二权重数组可用于从中间输出张量1030中识别特定于诸如手的对象的特征的模式。作为卷积操作的一部分,张量1030的像素块可以与第二权重数组相乘以生成乘积,并且乘积可以累加以生成和。然后还可以由激活函数处理每个和以生成中间输出,并且中间输出可以形成中间输出张量1034。中间输出张量1034可以表示代表手的特征的分布。中间输出张量1034可以被传递到池化层1036,在池化层1036中,中间输出张量1034可以被子采样或下采样以生成中间输出张量1038。
[0163]
然后,中间输出张量1038可以被传递通过可包括多层感知器(mlp)的全连接层1040。全连接层1040可基于中间输出张量1038执行分类操作,以例如分类图像1022中的对象是否代表手、图像1022中的手的可能像素定位等。全连接层1040可将中间输出张量1038与第三权重数组(在图10b中标记为[w2])相乘以生成和,并且和可由激活函数处理以生成神经网络输出1042。神经网络输出1042可以指示例如在图像帧中是否存在感兴趣的对象(例如,手)及其像素定位和尺寸。
[0164]
图10c示出了数据处理电路1006的内部部件及其用于实现cnn 1020的操作的示例。如图10c所示,数据处理电路1006可以包括算术电路1050的阵列。每个算术电路,诸如1050a-1050f,可以包括乘法器1054,用于将输入数据元素(用“i”表示)和权重数据元素(用“w”表示)相乘以生成局部部分和。输入数据元素可以对应于例如图像帧中的像素,而权重
数据元素可以是神经网络层的权重矩阵(例如,[w0]、[w1]、[w2])中的对应权重。每个算术电路1050还可以包括加法器1052,用于将局部部分和与从邻近算术电路接收的输入部分和(标记为“p_in”)相加,并生成输出部分和(标记为“p_out”)。输出部分和然后被输入到另一邻近算术电路。例如,算术电路1050a可以从算术电路1050b接收输入部分和,将其局部部分和与该输入部分和相加以生成输出部分和,并将输出部分和提供给算术电路1050c。因此,每个算术电路生成局部部分和,并且局部部分和被累加在算术电路阵列中以形成中间输出。数据处理电路1006还包括后处理电路1056,用于对中间输出执行后处理(例如,激活函数处理、池化)。在一些示例中,数据处理电路1006可以包括其它类型的电路,诸如查找表,以实现乘法器1054和后处理电路1056。
[0165]
为了执行第一输入卷积层1024和池化层1028的卷积和后处理操作,控制器1004(未在图10c中示出)可以控制数据处理电路1006,根据cnn1020基于输入数据和算术电路之间的预定映射从计算存储器1002提取输入数据。例如,包括算术电路1050a、1050b和1050c的第一组算术电路可以从计算存储器1002提取一组输入像素1064,而包括算术电路1050d、1050e和1050f的第二组算术电路可以从计算存储器1002提取一组输入像素1066。如上所述,每组算术电路可以基于乘累加操作在输入像素组和权重数组之间执行卷积操作,以生成中间输出。然后可以由后处理电路1056对中间输出进行后处理。后处理的输出可以被存储回计算存储器1002。例如,可以从输入像素组1064的卷积和后处理生成中间输出1068,而可以从输入像素组1066的卷积和后处理生成中间输出1070。在第一卷积层1024和池化层1028的操作完成并且中间输出被存储在计算存储器1002中之后,控制器1004可以控制算术电路阵列1050以提取中间输出来执行第二卷积层1032和池化层1036的卷积和后处理操作,以生成第二组中间输出并将其存储在计算存储器1002中。控制器然后可以基于全连接层1040的拓扑来控制算术电路阵列以提取第二组中间输出,从而生成神经网络输出1042。
[0166]
如图8a所描述的,图像处理器810可以从帧缓冲器809接收稀疏图像,其包括激活像素和非激活像素。激活像素可以对应于一个或更多个感兴趣的对象,而非激活像素可以不包含图像信息(例如,具有完全暗的或其他预定的颜色)。图11a示出了存储在图像处理器810的计算存储器1002中的稀疏图像1100的示例。如图11a所示,为了支持跟踪受试者头部和手的应用,稀疏图像1100可以包括第一组激活像素1102、第二组激活像素1104以及第三组激活像素1106,该第一组激活像素1102包括受试者头部的像素,第二组激活像素1104包括受试者左手的像素,并且第三组激活像素1106包括受试者右手的像素。可以由像素单元阵列808基于第一编程信号820来生成和传输激活像素组。稀疏图像1100的其余像素——包括像素组1108——是不激活的,并且不包含图像信息。每个非激活像素可以具有为零的像素值或指示该像素非激活的另一个值。在一些示例中,帧缓冲器809的存储器设备可以在接收图像帧的激活像素之前被复位。当激活像素被写入帧缓冲器809的对应存储器设备时,未接收到激活像素的其余存储器设备可保持其复位状态(例如,逻辑零)并成为非激活像素。然后,表示图像帧的激活像素和非激活像素的像素值可以存储在图像处理器810的计算存储器1002中。
[0167]
尽管稀疏图像1100的生成和传输可以减少像素单元阵列808的功耗,但如果数据处理电路1006要对稀疏图像1100的每个像素执行处理操作(例如,卷积操作),则数据处理电路1006仍然可以消耗大量的功率。另一方面,如图11a所示,假定仅有小的像素子集是激
活像素并包含图像数据,而大多数像素是非激活像素,使得数据处理电路1006对非激活像素执行处理操作将不会生成对检测和定位感兴趣对象有用的信息。结果,大量的功率被浪费在生成无用的信息上,这会降低图像处理操作的整体功率和计算效率。
[0168]
参考图11b,为了提高总功率效率和计算效率,控制器1004可以包括稀疏数据处理电路1110。在一些示例中,稀疏数据处理电路1110可以从存储器1002提取输入数据组(例如,像素、中间输出等)到神经网络层并且检测输入数据组的子集,其中整个输入数据组具有非激活值(例如,零),或者以其他方式不包含图像信息。稀疏数据处理电路1110可以从数据处理电路1006排除那些非激活输入数据组,并且数据处理电路1006不生成那些非激活输入数据组的中间输出并且不将其写回计算存储器1002。另一方面,包括表示图像信息的激活值(例如,非零)的输入数据组可以由稀疏数据处理电路1110转发到数据处理电路1006,然后数据处理电路1006可以处理该组激活输入数据以生成中间输出并将其写回计算存储器1002。
[0169]
在一些示例中,稀疏数据处理电路1110还可以接收关于存储在存储器1002中的图像帧的稀疏性的信息。稀疏性信息可以基于例如来自编程图生成器812的编程图信息,或者基于如下所述的神经网络模型拓扑。稀疏数据处理电路1110可以确定存储激活像素数据的存储器1002的存储器地址,并从那些存储器地址中提取激活像素数据。
[0170]
在计算存储器1002在不同图像帧之间被复位/重新初始化(例如,到逻辑零)的情况下,计算存储器1002的被分配来存储用于非激活输入数据组的中间输出(基于神经网络层的输入和输出之间的映射被分配)的存储器设备可以保持它们的初始化/复位状态,并且对于非激活输入数据组不被访问。同时,计算存储器1002的被分配来存储用于激活输入数据组的中间输出的存储器设备可以由数据处理电路1006更新。针对稀疏图像数据的处理,这样的布置可以减少对计算存储器1002的访问,这可以进一步降低计算存储器1002和图像处理器810整体的功耗。
[0171]
例如,返回参考图10c,稀疏数据处理电路1110可以检测到输入像素组1064可能完全不激活并且不包含图像信息,而输入像素组1066包含激活像素和图像信息。稀疏数据处理电路1110可以从第一组算术电路(包括算术电路1050a-1050c)中排除输入像素组1064和相应的权重,或者以其他方式禁用第一组算术电路,使得对于输入像素组1064不将中间输出写回计算存储器1002。输入像素组1064的中间输出1068可以在第一卷积层1024的处理结束时保留复位值(例如,逻辑零)。另一方面,稀疏数据处理电路1110可以向第二组算术电路(包括算术电路1050d-1050f)提供输入像素组1066和相应的权重,以生成中间输出1070,然后可以将中间输出1070写入计算存储器1002。稀疏数据处理电路1110还可以基于检测到非激活的输入数据组并将它们从数据处理电路1006中排除,来对其他神经网络层重复稀疏数据处理,以防止数据处理电路1006对那些非激活的输入数据组执行计算并将中间输出写入计算存储器1002。
[0172]
此外,数据处理电路1006还可以包括旁路机制,以减少与由稀疏数据处理电路1110转发的激活输入数据组内的非激活/零输入数据的处理相关联的功率消耗。具体参考图11c,算术电路1050a可以包括禁用电路1120和多路复用器1122。当输入数据元素(i)或权重数据元素(w)中的一个或更多个为零时,乘积将为零。为了避免算术电路1050a在计算零时浪费功率,禁用电路1120可以在检测到输入数据元素(i)或权重数据元素(w)中的一个或
更多个为零时禁用加法器1052和乘法器1054(例如,基于切断它们的电源)。此外,由于乘积将为零,可控制多路复用器1122将输入部分和(p_in)直接传递为输出部分和(p_out)。
[0173]
在一些示例中,为了进一步降低功耗并提高功率效率和计算效率,图像传感器802可以支持时间稀疏操作。作为在激活像素中的时间稀疏操作的一部分,可以识别静态像素和非静态像素。图像处理器810可以被配置为仅对非静态像素执行图像处理操作,而静态像素以及非激活像素可以由稀疏数据处理电路1110从数据处理电路1006中排除,以进一步降低功耗并提高功率和计算效率。
[0174]
图12a示出了具有静态和非静态像素的激活像素组1200的示例。如图12a所示,在时间t0和时间t1在两个图像帧中捕获激活像素组1200。激活像素组1200可以包括要跟踪的感兴趣对象(例如,受试者的头部)。激活像素组1200还可以包括像素1202和1204的子集(其包括图12a中的眼睛和嘴的像素),它们在时间t0和t1之间经历变化,而激活像素1200的其余部分在时间t0和t1之间保持静止。如果像素的变化程度低于阈值,则可以确定像素是静态的。
[0175]
在一些示例中,帧缓冲器809可以从图像传感器输出的激活像素中检测静态像素,并存储那些像素的像素值,以向图像处理器电路发信号表示那些像素是静态像素。在一些示例中,帧缓冲器809还可以从存储在帧缓冲器中的像素中检测静态像素,其中一些像素可以对应于图像传感器不提供并且因此保持静态的非激活像素。图12b包括帧缓冲器809的示例内部部件以支持对静态像素的发信号表示。如图12b所示,帧缓冲器809可以包括像素更新模块1212、缓冲器1204和像素更新跟踪表1216。具体地说,像素更新模块1212可以接收从像素单元阵列808接收的最新图像帧,包括激活和非激活像素,并用最新图像帧重写缓冲存储器1214中的先前图像帧像素。对于缓冲存储器1214中的每个像素,像素更新模块1212可确定该像素相对于先前图像帧的变化程度,并基于该变化程度是否超过阈值来确定该像素是静态还是非静态。像素更新模块1212还可以在像素更新跟踪表1216中更新针对每个像素的(并且被视为非静态的)像素被更新的最后帧时间。在像素更新模块1212用来自由像素单元阵列808生成的先前帧的像素值更新像素之后,像素更新模块1212可以基于来自像素更新跟踪表1216的信息来跟踪像素保持静态的帧数(静态帧时间),并基于静态帧时间设置像素的像素值。
[0176]
图12c示出了像素更新模块1212可通过其设置静态像素的像素值的示例技术。如图12c左边的图表1220所示,像素更新模块1212可以基于具有时间常数c的泄漏积分器函数来设置静态像素的像素值,如下所示:
[0177]
p=s0 se-t/c
ꢀꢀꢀꢀꢀꢀꢀꢀ
(等式1)
[0178]
在等式1中,p表示由像素更新模块1212设置的像素值,s0表示用于表示静态像素的预定像素值,而s表示在前一帧中获得的原始像素值与s0之间的差。当该像素上次经历大于变化阈值的变化程度时,从该先前帧获得原始像素值,并因此在帧缓冲器中更新该原始像素值。静态像素的像素值被设置为s0 s,并且随着像素保持静态而衰减。最终,如果该像素在持续的帧数中保持静态,则该静态像素的像素值稳定在s0。
[0179]
作为另一个示例,如图12c右边的图表1222所示,像素更新模块1212可以基于阶跃函数(step function)设置静态像素的像素值。具体地说,像素更新模块1212可以对于由t
th
表示的阈值数目的帧使静态像素的像素值保持在s0 s。在已经经过阈值数目的帧之后,像
素更新模块1212可以将像素值设置为像素值s0。
[0180]
预定像素值s0可以对应于深色(0)、白色(255)、灰色(128)或指示静态像素的任何值。在所有这些情况下,图像处理器可以基于识别发信号表示静态像素的像素值来区分静态像素和非静态像素,并且如上所述仅对非静态像素执行图像处理操作。
[0181]
在一些示例中,图像处理器810的控制器1004可以包括附加部件以进一步细化静态像素的处理。如图13a所示,控制器1004可以包括神经网络操作控制器1302和数据传播控制器1304,数据传播控制器1304可以包括图11b的稀疏数据处理电路1110。神经网络操作控制器1302可以确定每个神经网络层的操作,包括输入数据的提取、中间输出数据的存储、算术操作,并生成反映这些操作的控制信号1306。数据传播控制器1304可以基于控制信号1306执行输入数据的提取和中间输出数据的存储。
[0182]
具体地,神经网络操作控制器1302可以具有由数据处理电路1006实现的神经网络模型的拓扑信息,包括例如每个神经网络层和相邻网络层之间的输入/输出连接性、每个神经网络层的大小、在每个神经网络层的量化操作和其他后处理操作(例如,激活函数处理、池化操作)、神经网络的感受野等。神经网络操作控制器1302可以生成控制信号1306,以基于拓扑信息来控制输入数据的提取、中间输出数据的存储和算术操作。例如,神经网络操作控制器1302可以包括作为控制信号1306的一部分的基于连接性信息的每个神经网络的输入数据的地址与计算存储器1002中的中间输出的地址之间的映射,该映射允许数据传播控制器1304获取输入数据并将中间输出数据存储在计算存储器1002中的正确存储器定位。
[0183]
此外,神经网络操作控制器1302可以在控制信号1306中包括附加信息,以促进静态像素处理操作。例如,基于神经网络模型的拓扑信息以及激活和非激活像素的分布,神经网络操作控制器1302可以确定指示像素(在图像帧之间)的变化如何在神经网络的不同层中传播的数据变化传播图1310,并将该图提供给数据传播控制器1304。基于识别静态像素和数据变化传播图,数据传播控制器1304(和稀疏数据处理电路1110)可以选择性地将预定为非静态的输入数据提取到数据处理电路1006中,以生成中间输出数据的子集,并将中间输出数据的子集存储在计算存储器1002中。同时,(从先前帧生成的)对应于静态像素的中间输出数据被保留在计算存储器1002中并且不更新。
[0184]
图13b示出了基于数据变化传播图1310识别不同神经网络层的非静态输入/输出的示例操作。在图13b中,暗区域1314a、1314b、1314c、1314d和1314n可对应于计算存储器1002中存储非静态/激活像素数据以及每个神经网络层处的非静态中间输出的激活数据地址区域,而白色区域可对应于计算存储器1002中存储静态/非激活像素数据和静态中间输出的地址区域。基于数据变化传播图1310,数据传播控制器1304可以确定计算存储器1002中存储或将要存储非静态/激活像素数据的数据地址区域,并且仅从计算存储器1002中的那些数据区域提取像素数据和/或中间输出数据到数据处理电路1006,以对每个神经网络层执行神经网络计算(例如,乘累加操作)。
[0185]
返回参考图13a,神经网络操作控制器302还可以确定用于确定像素是否是静态的变化阈值1320。变化阈值1320可以基于神经网络模型的拓扑(诸如神经网络模型的深度)以及每一层的量化操作和池化操作来确定。具体地说,虽然像素数据中的变化可以传播通过神经网络模型的不同层,但中间输出的变化程度和神经网络模型的输出中的变化程度通常在较高的神经网络层减小,特别是如果输入和输出数据被大量量化(例如,由非常多的位来
表示)。因此,对于具有一定层数和一定量化方案的给定神经网络模型,神经网络操作控制器302可以确定像素数据的变化阈值1320,使得被认为是非静态的像素可以在神经网络模型输出产生至少一定程度的变化。在一些示例中,由于例如在不同神经网络层处执行的不同池化操作、在不同神经网络层处的不同量化精度、针对不同神经网络层的输入数据的不同稀疏性分布等,神经网络操作控制器302还可以针对不同神经网络层确定不同变化阈值1320,以确保基于变化阈值选择的非静态输入数据可以在该神经网络层的输出数据产生有意义的变化。
[0186]
在一些示例中,数据传播控制器1304可以包括残差处理电路1316,以跟踪连续图像帧之间的像素的变化,以及由其他图像帧的序列(例如,10个图像帧)分开的非连续图像帧之间的像素的变化。残差处理电路1316可以处理以下情况:由于在连续图像帧之间具有小的变化而确定像素是静态,但是在非连续帧之间像素的变化大到需要更新神经网络的中间输出。这种情况在图13c中示出。如图13c所示,在帧1、2、3和4之间,只有像素1330和1332在帧之间改变。在连续帧之间,像素值的变化(0.2-0.3)可能很小,并且这些像素可以被确定为静态像素。但是在帧4和帧1之间,变化是0.5-0.7,并且该变化是显著的,这些变化反映在帧1和帧4之间卷积输出的显著差异(0.119相对0.646)。为了处理这种情况,残差处理电路1316可以不仅基于两个连续帧之间的像素的变化、而且基于被预定数量的帧分开的两个非连续帧之间的变化来确定像素是否是静态的。如果像素在两个连续帧之间表现出小的变化,但在非连续帧之间表现出大的变化,则残差处理电路1316可以确定像素是非静态像素,并允许数据处理电路1006对该像素执行图像处理操作。
[0187]
图14a和图14b示出了图像传感器802的示例物理布置。如图14a所示,图像传感器802可以包括半导体衬底1400以及一个或更多个半导体衬底1402,半导体衬底1400包括像素单元阵列808的一些部件,诸如像素单元的光电二极管,一个或更多个半导体衬底1402包括像素单元阵列808的处理电路,诸如缓冲器606、量化器607和存储器955,以及传感器计算电路806。在一些示例中,一个或更多个半导体衬底1402包括半导体衬底1402a和半导体衬底1402b。半导体衬底1402a可以包括像素单元阵列808的处理电路,而半导体衬底1402b可以包括传感器计算电路806。半导体衬底1400和一个或更多个半导体衬底1402可容纳在半导体封装内以形成芯片。
[0188]
在一些示例中,半导体衬底1400和一个或更多个半导体衬底1402可以沿着(例如,由z轴表示的)垂直方向形成堆叠,垂直互连件1404和1406提供衬底之间的电连接。这种布置可以减小像素单元阵列808和传感器计算电路806之间的电连接的路由距离,这可以提高数据(尤其是像素数据)从像素单元阵列808到传感器计算电路806的传输速度,并降低传输所需的功率。在一些示例中,图像传感器802可以包括形成在半导体衬底上或半导体衬底之间的存储器设备阵列(例如,sram、rram等),以提供帧缓冲器809和计算存储器1002。
[0189]
图14b示出了图像传感器802的堆叠结构的示例细节。如图14b所示,第一半导体衬底1000可以包括被配置为光接收表面并包括每个像素单元的光电二极管的后侧表面1408、以及在其上实现转移晶体管604和电荷存储设备605(例如,转移晶体管604的浮动漏极)的前侧表面1410,而包括缓冲器606、量化器607、存储器955等的像素单元的处理电路在半导体衬底1402a的前侧表面1412下面实现。半导体衬底1400的前侧表面1410可以通过包括芯片到芯片的铜键合的垂直互连件1404与半导体衬底1402a的前侧表面1012电连接。芯片到
芯片的铜键合可以在例如每个像素单元的转移晶体管604和每个像素单元的缓冲器606之间提供像素互连。
[0190]
此外,成像传感器800还包括在像素单元阵列808和传感器计算电路806之间的贯穿垂直互连件,诸如贯穿硅通孔(tsv)、微tsv、铜铜凸点(copper-copper bump)等。垂直互连件可以在堆叠的肩区1420和1422上,并穿透半导体衬底1402a和1402b。垂直互连件可以被配置为传输例如第一编程信号820和图像帧(例如,第一图像帧822)。垂直互连件可以支持例如以正常帧速率(例如,60帧/秒)将全像素数据帧(例如,1920像素
×
1080像素)从像素单元阵列808传输到图像处理器810,以执行图像特征提取操作。
[0191]
图15示出了操作诸如图8a的图像传感器802的图像传感器的方法1500。方法1500可以由例如图像传感器802的各种部件(包括传感器计算电路806、像素单元阵列808和帧缓冲器809)执行。传感器计算电路806还包括图像处理器810和编程图生成器812。在一些示例中,图像传感器实现在第一半导体衬底中,帧缓冲器和传感器计算电路实现在一个或更多个第二半导体衬底中,而第一半导体衬底和一个或更多个第二半导体衬底形成堆叠并容纳在单个半导体封装中。
[0192]
在步骤1502中,编程图生成器812向包括多个像素单元的图像传感器传输第一编程数据,以选择像素单元的第一子集来生成第一激活像素。
[0193]
在一些示例中,可以基于稀疏图像感测操作来生成第一编程数据以支持主处理器804处的对象检测和跟踪操作。第一像素单元子集可被选择性地启用以仅捕获与跟踪和检测对象相关的像素数据作为激活像素,或仅将激活像素传输到帧缓冲器,从而支持稀疏图像感测操作。可以基于例如来自主处理器804的反馈数据来生成第一编程数据。
[0194]
在步骤1504中,传感器计算电路806从帧缓冲器809接收包括由图像传感器基于第一编程数据选择的像素单元的第一子集生成的至少一些激活像素的第一图像帧。第一图像帧还包括对应于未被选择用于生成激活像素的像素单元的第二子集的非激活像素。在一些示例中,如图12a-图12c所述,帧缓冲器809还可以用预定值重写第一图像帧中的一些像素,以指示这些像素是静态像素并且在多个图像帧上没有经历阈值变化程度。
[0195]
具体地说,帧缓冲器可以从由图像传感器输出的激活像素中检测静态像素,并存储这些像素的像素值,以向图像处理器发出信号表示这些像素是静态像素。例如,帧缓冲器可以存储来自图像传感器的每个像素单元的最新像素数据(包括激活和非激活像素)作为第一图像帧。对于激活像素的每个像素,帧缓冲器可以确定像素相对于先前帧(诸如紧接在第一图像帧之前的图像帧)的变化程度。帧缓冲器可以设置像素值以各种方式指示静态像素。例如,帧缓冲器可以基于具有时间常数的泄漏积分器函数,并且基于图像传感器输出的像素保持静态的连续图像帧的数量,来为帧缓冲器中的像素设置像素值。如果该像素在大量连续图像帧中保持静态,则该像素的像素值可以稳定在预定的像素值。作为另一示例,如果像素在阈值数目(例如,10个)连续图像帧内保持静态,则帧缓冲器可以针对帧缓冲器中的像素设置预定像素值。预定像素值可以对应于深色(0)、白色(255)、灰色(128)或指示静态像素的任何值。
[0196]
在步骤1506中,图像处理器810对第一图像帧的第一像素子集执行图像处理操作,由此从图像处理操作中排除第一图像帧的第二像素子集,以生成处理输出。对其执行图像处理操作的第一图像帧的第一像素子集可以对应于例如激活像素、在帧之间经历一定程度
变化的非静态像素等。例如,第一像素子集可以对应于由主处理器804处的对象检测和跟踪操作来跟踪/检测的感兴趣对象。
[0197]
在一些示例中,图像处理操作可以包括神经网络操作。具体参考图10a,图像处理器810可以包括数据处理电路1006,该数据处理电路1006为神经网络操作(诸如包括输入层和输出层的多层卷积神经网络(cnn))提供硬件加速。图像处理器可以包括计算存储器1002,以存储与每个神经网络层相关联的输入图像帧和权重集。权重集可以表示待检测对象的特征。图像处理器还可以包括控制器1004,以控制数据处理电路从计算存储器提取输入图像帧数据和权重。控制器可以控制数据处理电路在输入图像帧和权重之间执行算术操作,诸如乘累加(mac)操作,以生成用于输入层的中间输出数据。基于例如激活函数、池化操作等对中间输出数据进行后处理,然后将后处理的中间输出数据存储在计算存储器中。后处理的中间输出数据可以从计算存储器中提取,并作为输入提供给下一个神经网络层。对直到输出层的所有层都重复算数运算、以及重复中间输出数据的提取和存储,以生成神经网络输出。神经网络输出可以指示例如该对象存在于输入图像帧中的可能性,以及该对象在输入图像帧中的像素定位。
[0198]
控制器可以配置数据处理电路以高效的方式处理稀疏图像数据。例如,对于输入层,控制器可以控制数据处理电路仅从计算存储器中提取第一像素子集和相应的权重,并且仅对激活像素和相应的权重执行mac操作,以生成与输入层的激活像素相对应的中间输出的子集。控制器还可以基于神经网络的拓扑和后续神经网络层之间的连接,来确定每个后续神经网络处的中间输出数据的子集,该子集可以追溯到激活像素。控制器可以控制数据处理电路执行mac操作,以仅在每个后续神经网络层生成中间输出数据的子集。此外,为了减少对计算存储器的访问,可以在神经网络操作之前将每一层的中间输出数据的预定值(例如零)存储在计算存储器中。仅更新激活像素的中间输出数据。所有这些都可以降低神经网络对稀疏图像数据操作的功耗。
[0199]
在一些示例中,为了进一步降低功耗并提高功率效率和计算效率,数据处理电路可以仅对第一图像帧的非静态像素执行图像处理操作(例如,神经网络操作),以生成非静态像素的更新输出。对于静态像素(其可以包括非激活像素),可以跳过图像处理操作,同时可以保留对先前图像帧的图像处理操作的输出。在图像处理操作包括神经网络操作的情况下,控制器可以控制数据处理电路仅从计算存储器中提取非静态像素和相应的权重数据,以更新与输入层的非静态像素相对应的中间输出数据子集。针对输入层可以保留对应于静态像素(从先前图像帧获得)的和对应于计算存储器中的非激活像素(诸如,具有诸如零的预定值)的中间输出数据的其余部分。控制器还可以基于神经网络的拓扑和后续神经网络层之间的连接来确定每个后续神经网络处的中间输出数据子集,该子集可以追溯到非静态像素,并且仅更新中间输出数据子集,以减少对计算存储器的访问并降低功耗。
[0200]
在一些示例中,图像处理器还可以生成附加信息以促进非静态像素的处理。例如,图像处理器可以基于神经网络模型的拓扑确定数据变化传播图,该数据变化传播图跟踪数据变化从神经网络模型的输入层到输出层的传播。基于传播图以及来自帧缓冲器的静态像素,图像处理器可以识别每个神经网络的非静态输入数据,并且仅提取那些输入数据进行每个层的神经网络操作。此外,图像处理器还可以基于神经网络模型的拓扑确定用于静态/非静态像素确定的阈值变化程度,以确保被确定为非静态的像素可以导致输出层的必要变
化程度。另外,图像处理器还可以跟踪连续帧之间和非连续帧之间的像素的变化。图像处理器可以识别在连续帧之间表现出小变化的像素,但也可以将非连续帧之间的巨大变化识别为非静态像素,使得图像处理器可以对这些像素执行图像处理操作。
[0201]
在步骤1508,编程图生成器812基于处理输出来生成第二编程数据。基于处理输出,第二编程数据可以反映例如对象的移动、被跟踪的对象的一部分的变化等。
[0202]
在步骤1510中,编程图生成器812将第二编程数据传输到图像传感器以生成第二图像帧的第二激活像素。
[0203]
本描述的一些部分从对信息的操作的算法和符号表示方面描述了本公开的示例。数据处理领域的技术人员通常使用这些算法描述和表示来向本领域的其他技术人员有效地传达他们工作的实质。这些操作虽然在功能上、计算上或逻辑上进行了描述,但应理解为将由计算机程序或等效电路、微代码等来实现。此外,将操作的这些布置视为模块有时也被证明是方便的而不失一般性。所描述的操作和它们的相关模块可以体现在软件、固件和/或硬件中。
[0204]
可以利用一个或更多个硬件或软件模块单独地或与其他设备组合地来执行或实现所描述的步骤、操作或过程。在一些示例中,利用包括包含计算机程序代码的计算机可读介质的计算机程序产品来实现软件模块,计算机程序代码可以由计算机处理器执行,用于执行所描述的任何或全部步骤、操作或过程。
[0205]
本公开的示例也可以涉及用于执行所描述操作的装置。该装置可以为所需目的而专门构造,和/或它可以包括由存储在计算机中的计算机程序选择性激活或重新配置的通用计算装置。这种计算机程序可以存储在非暂时的、有形的计算机可读存储介质中,或者任何类型的适于存储电子指令的介质中,该介质可以耦合到计算机系统总线。此外,说明书中提到的任何计算系统可以包括单个处理器,或者可以是采用多个处理器设计以增加计算能力的架构。
[0206]
本公开的示例也可以涉及由本文所述的计算过程产生的产品。这样的产品可以包括由计算过程产生的信息,其中信息被存储在非暂时性的、有形的计算机可读存储介质上且可以包括计算机程序产品或本文所述的其他数据组合的任何示例。
[0207]
在说明书中使用的语言主要出于可读性和指导性的目的而被选择,并且它可以不被选择来描绘或限制发明的主题。因此,意图是本公开的范围不由该详细描述限制,而是由在基于其的申请上发布的任何权利要求限制。因此,示例的公开意图对本公开的范围是说明性的,而不是限制性的,在所附权利要求中阐述了本公开的范围。
再多了解一些

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

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

相关文献