CN117581256A - 稀疏图像处理 - Google Patents
稀疏图像处理 Download PDFInfo
- Publication number
- CN117581256A CN117581256A CN202280045006.3A CN202280045006A CN117581256A CN 117581256 A CN117581256 A CN 117581256A CN 202280045006 A CN202280045006 A CN 202280045006A CN 117581256 A CN117581256 A CN 117581256A
- Authority
- CN
- China
- Prior art keywords
- data
- neural network
- channel
- graph
- spatial
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012545 processing Methods 0.000 title claims abstract description 181
- 238000013528 artificial neural network Methods 0.000 claims abstract description 343
- 238000004364 calculation method Methods 0.000 claims abstract description 27
- 230000006870 function Effects 0.000 claims description 48
- 238000000034 method Methods 0.000 claims description 42
- 238000011176 pooling Methods 0.000 claims description 39
- 238000010586 diagram Methods 0.000 claims description 21
- 238000009826 distribution Methods 0.000 claims description 16
- 238000012805 post-processing Methods 0.000 claims description 8
- 238000013519 translation Methods 0.000 claims description 8
- 238000013507 mapping Methods 0.000 claims description 4
- 238000012549 training Methods 0.000 description 32
- 238000003860 storage Methods 0.000 description 28
- 238000012546 transfer Methods 0.000 description 27
- 238000001514 detection method Methods 0.000 description 22
- 230000004913 activation Effects 0.000 description 17
- 238000003384 imaging method Methods 0.000 description 16
- 238000010801 machine learning Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 14
- 210000005252 bulbus oculi Anatomy 0.000 description 13
- 210000001508 eye Anatomy 0.000 description 13
- 238000005259 measurement Methods 0.000 description 13
- 230000033001 locomotion Effects 0.000 description 11
- 230000002452 interceptive effect Effects 0.000 description 10
- 230000003287 optical effect Effects 0.000 description 9
- 229920006395 saturated elastomer Polymers 0.000 description 9
- 239000004065 semiconductor Substances 0.000 description 9
- 230000036961 partial effect Effects 0.000 description 8
- 239000000758 substrate Substances 0.000 description 8
- 230000014616 translation Effects 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 230000008878 coupling Effects 0.000 description 6
- 238000010168 coupling process Methods 0.000 description 6
- 238000005859 coupling reaction Methods 0.000 description 6
- 230000002829 reductive effect Effects 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 210000001747 pupil Anatomy 0.000 description 5
- 239000003086 colorant Substances 0.000 description 4
- 238000005070 sampling Methods 0.000 description 4
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 239000007788 liquid Substances 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 229910052710 silicon Inorganic materials 0.000 description 3
- 239000010703 silicon Substances 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000011521 glass Substances 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 239000004033 plastic Substances 0.000 description 2
- 238000013139 quantization Methods 0.000 description 2
- 241000724291 Tobacco streak virus Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009792 diffusion process Methods 0.000 description 1
- ALKZAGKDWUSJED-UHFFFAOYSA-N dinuclear copper ion Chemical compound [Cu].[Cu] ALKZAGKDWUSJED-UHFFFAOYSA-N 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000004424 eye movement Effects 0.000 description 1
- 238000005286 illumination Methods 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 229920000642 polymer Polymers 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 230000001711 saccadic effect Effects 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Landscapes
- Image Analysis (AREA)
Abstract
在一个示例中,一种装置包括:存储器,该存储器用于存储输入数据和权重,该输入数据包括多组数据元素,每组数据元素与多个通道中的一个通道相关联,所述权重包括多个权重张量,每个权重张量与该多个通道中的一个通道相关联;数据稀疏图生成电路,该数据稀疏图生成电路被配置为基于输入数据生成通道稀疏图和空间稀疏图,该通道稀疏图指示与待被选择的第一权重张量相关联的通道,该空间稀疏图指示第一数据元素的空间位置;门控电路,该门控电路被配置为:基于通道稀疏图和稀疏图,从存储器中读取第一权重张量和第一数据元素;以及处理电路,该处理电路被配置为对第一数据元素和第一权重张量执行神经网络计算,以生成处理结果。
Description
技术领域
本公开总体上涉及图像处理器。更具体地,本公开涉及用于执行稀疏图像处理操作的技术。
背景技术
典型的图像传感器包括像素单元阵列。每个像素单元可以包括光电二极管,该光电二极管用于通过将光子转换成电荷(例如,电子或空穴)来感测光。在每个像素单元处转换的电荷可以被量化为数字像素值,并且可以根据数字像素值阵列生成图像,其中每个数字像素值表示由像素单元采集的特定波长范围的光的强度。
可以对由图像传感器生成的图像进行处理以支持不同的应用,例如,虚拟现实(virtual-reality,VR)应用、增强现实(augmented-reality,AR)应用或混合现实(mixedreality,MR)应用。然后,可以对图像执行图像处理操作,以例如检测某个感兴趣对象及其在图像中的位置。基于对对象及其在图像中的位置的检测,VR/AR/MR应用可以生成并更新例如用于经由显示器向用户显示的虚拟图像数据、用于经由扬声器向用户输出的音频数据等,以向用户提供交互式体验。
为了提高成像操作的空间分辨率和时间分辨率,图像传感器通常包括大量像素单元以生成高分辨率图像。图像传感器还可以以高帧率生成图像。以高帧率生成高分辨率图像、以及传输和处理这些高分辨率图像可能会导致图像传感器和图像处理操作的巨大功耗。此外,考虑到通常只有多个像素单元的一小子集接收来自感兴趣对象的光,大量的计算资源和存储资源以及功率可能会用于生成、传输和处理对于对象检测/追踪操作无用的像素数据,这降低了图像感测和处理操作的整体效率。
本公开试图至少部分地解决上述劣势和缺点中的任何或全部。
发明内容
本公开涉及图像处理器。更具体地且非限制性地,本公开涉及用于执行稀疏图像处理操作的技术。
根据本公开的第一方面,提供了一种装置,该装置包括:存储器,该存储器被配置为存储输入数据和权重,该输入数据包括多组数据元素,每组数据元素与多个通道中的一个通道相关联,所述权重包括多个权重张量,每个权重张量与该多个通道中的一个通道相关联;数据稀疏图生成电路,该数据稀疏图生成电路被配置为基于输入数据生成数据稀疏图,该数据稀疏图包括通道稀疏图和空间稀疏图,该通道稀疏图指示与待从该多个权重张量中选择的一个或多个第一权重张量相关联的一个或多个通道,该空间稀疏图指示待从该多组数据元素中选择的第一数据元素的空间位置;门控(gating)电路,该门控电路被配置为:基于通道稀疏图,从存储器中读取该一个或多个第一权重张量;以及基于空间稀疏图,从存储器中读取第一数据元素;以及处理电路,该处理电路被配置为使用神经网络对第一数据元素和该一个或多个第一权重张量执行计算,以生成输入数据的处理结果。
在一些实施例中,神经网络可以包括第一神经网络层和第二神经网络层;门控电路可以包括第一门控层和第二门控层;第一门控层可以被配置为基于第一数据稀疏图执行以下项中的至少一项,该第一数据稀疏图是基于该多组数据元素生成的:对所述多个权重张量执行第一通道门控操作,以向第一神经网络层提供该一个或多个第一权重张量的第一权重;或者对该多组数据元素执行第一空间门控操作,以向第一神经网络层提供包括第一数据元素的第一输入数据;第一神经网络层可以被配置为基于第一输入数据和第一权重生成第一中间输出,该第一中间输出具有与不同通道相关联的第一多组数据元素;第二门控层可以被配置为基于第二数据稀疏图执行以下项中的至少一项,该第二数据稀疏图是基于第一中间输出生成的:对该多个权重张量执行第二通道门控操作,以向第二神经网络层提供该一个或多个第一权重张量的第二权重;或者对第一中间输出执行第二空间门控操作,以向第二神经网络层提供第二输入数据;第二神经网络层可以被配置为基于第二输入数据和第二权重生成第二中间输出,该第二中间输出具有与不同通道相关联的第二多组数据元素;并且处理结果可以是基于第二中间输出生成的。
在一些实施例中,神经网络还可以包括第三神经网络层;门控电路还可以包括第三门控层;第三门控层可以被配置为基于第三数据稀疏图执行以下项中的至少一项,该第三数据稀疏图是基于第二中间输出生成的:对该多个权重张量执行第三通道门控操作,以向第三神经网络层提供该一个或多个第一权重张量的第三权重;或者对第二中间输出执行第三空间门控操作,以向第三神经网络层提供第三输入数据;并且第三神经网络层可以被配置为基于第三输入数据和第三权重生成包括处理结果的输出。
在一些实施例中,第二神经网络层可以包括卷积层;并且其中,第三神经网络层可以包括全连接层。
在一些实施例中,第一门控层可以被配置为执行第一空间门控操作,但不执行第一通道门控操作;第二门控层可以被配置为执行第二空间门控操作,但不执行第二通道门控操作;并且第三门控层可以被配置为执行第三通道门控操作,但不执行第三空间门控操作。
在一些实施例中,第二数据稀疏图可以是基于空间张量生成的,该空间张量可以是基于在第一中间输出的与不同通道相关联的第一多组数据元素之间执行逐通道(channel-wise)池化操作来生成的;并且第三数据稀疏图可以是基于通道张量生成的,该通道张量可以是基于在第二中间输出的第二多组数据元素的每组数据元素内执行组间池化操作来生成的,使得通道张量可以和与第二中间输出相同的通道相关联。
在一些实施例中,神经网络可以是第一神经网络;并且其中,数据稀疏图生成电路可以被配置为使用第二神经网络来生成数据稀疏图。
在一些实施例中,数据稀疏图可以包括二元掩模阵列,每个二元掩模具有两个值中的一个值;其中,数据稀疏图生成电路可以被配置为:使用第二神经网络来生成软掩模(soft mask)阵列,每个软掩模与二元掩模阵列中的一个二元掩模相对应并且具有一值范围;以及基于将对极大(argmax)函数的自变量进行近似的可微分函数应用于软掩模阵列来生成数据稀疏图。
在一些实施例中,数据稀疏图生成电路可以被配置为:将来自Gumbel分布的随机数添加到软掩模阵列中,以生成软掩模阵列的随机样本;以及对该随机样本应用柔性最大值(soft max)函数,以对argmax函数进行近似。
在一些实施例中,数据稀疏图生成电路、门控电路和处理电路可以是神经网络硬件加速器的一部分;并且其中,存储器可以是神经网络硬件加速器外部的外部存储器。
在一些实施例中,神经网络硬件加速器还可以包括本地存储器、计算引擎、输出缓冲器和控制器;其中,控制器可以被配置为:基于通道稀疏图,从外部存储器中读取该一个或多个第一权重张量;基于空间稀疏图,从外部存储器中读取第一数据元素;将该一个或多个第一权重张量和第一数据元素存储在本地存储器处;控制计算引擎从本地存储器中读取该一个或多个第一权重张量和第一数据元素,并控制计算引擎执行神经网络的第一神经网络层的计算以生成中间输出;控制输出缓冲器对中间输出执行后处理操作;以及将经后处理的中间输出存储在外部存储器处,以为神经网络的第二神经网络层提供输入。
在一些实施例中,本地存储器还可以存储有地址表,该地址表在本地存储器的地址与外部存储器的地址之间进行映射;并且其中,控制器可以被配置为:基于该地址表,从外部存储器中读取该一个或多个第一权重张量和第一数据元素,并将该一个或多个第一权重张量和第一数据元素存储在本地存储器处。
在一些实施例中,地址表可以包括转译后备缓冲区(translation lookasidebuffer,TLB);并且其中,TLB可以包括多个条目,每个条目可以被映射到本地存储器的一地址,并且每个条目还可以存储有外部存储器的一地址。
在一些实施例中,控制器可以被配置为:接收第一指令,该第一指令用于将该多组数据元素中的一数据元素存储在本地存储器的第一地址处,该数据元素在该多组数据元素中具有第一空间位置;基于空间稀疏图确定:将要读取位于第一空间位置处的该数据元素;以及基于确定将要读取位于第一空间位置处的该数据元素:检索地址表的、被映射到第一地址的第一条目;检索存储在该第一条目中的第二地址;从外部存储器的第二地址读取该数据元素;以及将该数据元素存储在本地存储器的第一地址处。
在一些实施例中,控制器可以被配置为:接收第二指令,该第二指令用于将该多个权重张量的一权重张量存储在本地存储器的第三地址处,该权重张量与该多个通道中的第一通道相关联;基于通道稀疏图确定:将要读取第一通道的权重张量;以及基于确定将要读取第一通道的权重张量:检索地址表的、被映射到第三地址的第二条目;检索存储在第二条目中的第四地址;从外部存储器的第四地址读取该权重张量;以及将该权重张量存储在本地存储器的第三地址处。
在一些实施例中,神经网络可以是第一神经网络;其中,通道稀疏图可以是第一通道稀疏图;其中,空间稀疏图可以是第一空间稀疏图;其中,控制器可以被配置为:控制输出缓冲器基于对中间输出执行组间池化操作来生成通道张量;控制输出缓冲器基于对中间输出执行逐通道池化操作来生成空间张量;将通道张量、空间张量和中间输出存储在外部存储器处;从外部存储器中读取通道张量和空间张量;从外部存储器中读取与通道稀疏图神经网络和空间稀疏图神经网络相关联的权重;控制计算引擎对通道张量执行通道稀疏图神经网络的计算,以生成第二通道稀疏图;控制计算引擎对空间张量执行空间稀疏图神经网络的计算,以生成第二空间稀疏图;以及执行以下项中的至少一项:对该多个权重张量执行通道门控操作,以将该一个或多个第一权重张量的第二权重读取到第一神经网络的第二神经网络层;或者对中间输出执行空间门控操作,以向第一神经网络的第二神经网络层提供第二输入数据。
在一些实施例中,该装置还可以包括可编程像素单元阵列和编程电路;其中,输入数据是第一输入数据;并且编程电路可以被配置为:基于来自处理电路的处理结果,确定感兴趣区域;生成指示该感兴趣区域的编程信号,以选择可编程像素单元阵列的像素单元子集来执行光感测操作,从而执行稀疏图像采集操作;以及向可编程像素单元阵列发送该编程信号以执行稀疏图像采集操作,从而采集第二输入数据。
在一些实施例中,数据稀疏图生成电路、门控电路、处理电路和可编程像素单元阵列可以被容纳在一芯片封装内以形成芯片。
根据本公开的第二方面,提供了一种方法,该方法包括:将输入数据和权重存储在存储器处,该输入数据包括多组数据元素,每组数据元素与多个通道中的一个通道相关联,所述权重包括多个权重张量,每个权重张量与该多个通道中的一个通道相关联;基于输入数据生成数据稀疏图,该数据稀疏图包括通道稀疏图和空间稀疏图,该通道稀疏图指示与待从该多个权重张量中选择的一个或多个第一权重张量相关联的一个或多个通道,该空间稀疏图指示待从该多组数据元素中选择的第一数据元素的空间位置;基于通道稀疏图,从存储器中读取该一个或多个第一权重张量;基于空间稀疏图,从存储器中读取第一数据元素;以及使用神经网络对第一数据元素和该一个或多个第一权重张量执行计算,以生成输入数据的处理结果。
在一些实施例中,神经网络可以是第一神经网络;并且其中,数据稀疏图是使用第二神经网络生成的。
将理解的是,本文被描述为适合于结合到本公开的一个或多个方面或实施例中的任何特征旨在在本公开的任何和所有的方面和实施例中具有普遍性。本领域技术人员可以根据本公开的说明书、权利要求书和附图理解本公开的其它方面。上述总体描述和以下详细描述仅是示例性和说明性的,且不对权利要求进行限制。
附图说明
参考以下附图对多个说明性示例进行了描述。
图1A和图1B是根据本公开一个或多个实施例的近眼显示器的示例的示意图。
图2是根据本公开一个或多个实施例的近眼显示器的横截面的示例。
图3示出了根据本公开一个或多个实施例的具有单个源组件的波导显示器的示例的等轴测视图。
图4示出了根据本公开一个或多个实施例的波导显示器的示例的横截面。
图5是根据本公开一个或多个实施例的包括近眼显示器的系统的示例的框图。
图6A、图6B、图6C和图6D示出了根据本公开一个或多个实施例的图像传感器及其操作的示例。
图7A和图7B示出了根据本公开一个或多个实施例的由图6A至图6D中的图像传感器的输出支持的应用的示例。
图8A、图8B、图8C、图8D、图8E和图8F示出了根据本公开一个或多个实施例的用于支持图7A和图7B中所示出的多个应用的多个图像处理操作的示例。
图9A、图9B、图9C和图9D示出了根据本公开一个或多个实施例的多个动态稀疏图像处理器及其操作的示例。
图10A、图10B和图10C示出了根据本公开一个或多个实施例的图9A至图9D中的动态稀疏图像处理器的多个示例内部部件及其操作。
图11A、图11B、图11C、图11D、图11E和图11F示出了根据本公开一个或多个实施例的实现图9A至图9D中的动态稀疏图像处理器的神经网络硬件加速器及其操作的示例。
图12A和图12B示出了包括图9A至图9D中的动态稀疏图像处理器的成像系统的示例。
图13示出了根据本公开一个或多个实施例的执行稀疏图像处理操作的示例过程的流程图。
各附图仅出于说明的目的而描绘了本公开的多个示例。本领域技术人员将从以下描述中容易地认识到,在不脱离本公开的原理或本公开中所宣称的益处的情况下,可以采用所示出的结构和方法的替代示例。
在各附图中,相似的部件和/或特征可以具有相同的附图标记。此外,同一类型的各个部件可以通过在附图标记后跟随连接号和区分多个相似部件的第二标记来进行区分。如果在说明书中仅使用了第一附图标记,则该描述可应用于具有同一第一附图标记的多个相似部件中的任何部件,而不考虑第二附图标记。
具体实施方式
在以下描述中,出于解释的目的,阐述了具体细节以提供对某些创造性示例的透彻理解。然而,将显而易见的是,可以在没有这些具体细节的情况下实践各个示例。各附图和描述不旨在是限制性的。
如上所述,图像传感器可以感测光以生成图像。图像传感器可以感测来自一场景的不同波长范围的光,以生成不同通道的图像(例如,根据不同波长范围的光而采集到的图像)。图像处理器可以对这些图像进行处理以支持不同的应用,例如VR/AR/MR应用。例如,图像处理器可以对图像执行图像处理操作,以检测感兴趣对象/目标对象、以及该感兴趣对象/目标对象在图像中的位置。对目标对象的检测可以基于从图像中检测该目标对象的特征的图案。特征可以例如由不同波长范围的光强度图案来表示。基于对目标对象的检测,VR/AR/MR应用可以生成输出内容(例如,用于经由显示器向用户显示的虚拟图像数据、用于经由扬声器向用户输出的音频数据等),以向用户提供交互式体验。
可以使用各种技术来提高对象检测操作的准确性。例如,图像传感器可以包括大量像素单元以生成高分辨率输入图像,从而提高图像的空间分辨率、以及在图像中采集到的特征的空间分辨率。此外,这些像素单元可以被操作为以高帧率生成输入图像,从而提高图像的时间分辨率。提高图像的分辨率允许图像处理器提取更细节的特征以执行对象检测操作。另外,图像处理器可以采用经训练的机器学习模型来执行对象检测操作。在训练操作中,机器学习模型可以被训练为从一大组训练图像中学习目标对象的特征。例如,训练图像可以反映图像传感器采集目标对象的不同的操作条件/环境、以及要与目标对象进行区分的其它对象。然后,机器学习模型可以将从训练操作中学习到的模型参数应用于输入图像,以执行对象检测操作。与图像处理器使用固定的一组规则来执行目标检测操作的情况相比,机器学习模型可以调整其模型参数以反映从训练图像学习到的特征的复杂图案,这可以提高图像处理操作的鲁棒性。
机器学习模型的一个示例可以包括深度神经网络(deep neural network,DNN)。DNN可以包括多个级联层,该多个级联层包括输入层、一个或多个中间层、以及输出层。输入层可以接收输入图像并生成中间输出数据,然后该中间输出数据被中间层处理、接着被输出层处理。输出层可以生成多个分类输出,该多个分类输出例如指示输入图像中的各个像素是目标对象的一部分的可能性。每个神经网络层可以与一组权重相关联,其中每组权重与特定通道相关联。根据一神经网络层与前一层之间的连接,该神经网络层可以被配置作为对前一层的中间输出数据执行卷积操作的卷积层,或者作为执行分类操作的全连接层。在训练操作中,可以对每个神经网络层的权重进行调整,以反映从一组训练图像中学习到的目标对象的特征的图案。可以对模型中的每个神经网络层的大小以及神经网络层的数量进行扩展,以使神经网络能够处理高分辨率图像、以及能够学习和检测更复杂且高分辨率的特征图案,以上两者都可以提高对象检测操作的准确性。
DNN可以在提供用于支持DNN计算的计算资源和存储资源的硬件系统上实现。例如,该硬件系统可以包括存储器,该存储器用于存储每个神经网络层的输入数据、输出数据和权重。此外,该硬件系统可以包括计算电路,例如通用的中央处理单元(centralprocessing unit,CPU)、专用的算术硬件电路等,所述计算电路用于执行每个神经网络层的计算。计算电路可以从存储器中读取神经网络层的输入数据和权重,执行该神经网络层的计算以生成输出数据,并将该输出数据存储回存储器。该输出数据可以作为下一神经网络层的输入数据被提供,或者作为输入图像的整个神经网络的分类输出被提供。
尽管可以通过增加输入图像的分辨率来提高图像处理操作的准确性,但是对高分辨率图像执行图像处理操作可能需要大量的资源和功率,这尤其可能会在诸如移动设备等资源受限的设备中产生挑战。具体地,在使用神经网络来执行图像处理操作的情况下,可以增加神经网络层的大小、以及神经网络层的数量,以处理高分辨率图像、并学习和检测复杂且高分辨率的特征图案。但是扩展神经网络层可能会导致该层的计算电路执行更多的计算,而增加神经网络层的数量也可能会增加为图像处理操作执行的总计算。此外,由于计算依赖于从存储器读取的输入数据和权重、以及输出数据在存储器中的存储,因此扩展神经网络还可能会增加存储器与计算电路之间的数据传输。
另外,待检测的目标对象通常仅由多个像素的一小子集表示、并且目标对象的像素可能仅与多个波长通道的一小子集相关联(例如,具有一小组颜色),从而导致图像中的空间稀疏性和通道稀疏性。因此,大量的计算资源和存储资源以及功率可能会被用于生成、传输和处理对于对象检测/追踪操作无用的像素数据,这进一步降低了图像处理操作的整体效率。所有这些可能会使得在资源受限的设备上执行高分辨率图像处理操作具有挑战性。
本公开提出了一种动态稀疏图像处理系统,该动态稀疏图像处理系统可以解决以上问题中的至少一些问题。在一些示例中,动态稀疏图像处理系统包括数据稀疏图(sparsity map)生成电路、门控电路和处理电路。数据稀疏图生成电路可以接收输入数据,并且基于该输入数据生成数据稀疏图。门控电路可以基于数据稀疏图选择输入数据的第一子集,并向图像处理电路提供该输入数据的第一子集以用于处理。输入数据可以包括多组数据元素,其中每组数据元素与多个通道中的一个通道相关联。每组数据元素可以形成张量。在一些示例中,输入数据可以包括图像数据,其中每组数据元素表示特定波长通道的图像,并且一数据元素可以表示该图像的一像素值。在一些示例中,输入数据还可以包括目标对象的特征,其中每组数据元素指示某些特征的不存在/存在,以及这些特征在图像中的位置。可以(例如,由主机、由动态稀疏图像处理系统等)将输入数据存储在以下存储器中:该存储器可以是动态稀疏图像处理系统的一部分或在动态稀疏图像处理系统外部。
在一些示例中,数据稀疏图包括通道稀疏图和空间稀疏图。通道稀疏图可以指示与待从多组数据元素中选择以支持通道门控的一组或多组数据元素相关联的一个或多个通道,而空间稀疏图可以指示该一组或多组数据元素中、被选择为输入数据的第一子集的一部分以支持空间门控的数据元素的空间位置。空间位置例如可以包括图像中的像素位置、输入数据张量中的坐标等。在一些示例中,通道稀疏图和空间稀疏图这两者可以包括二元掩模阵列,其中每个二元掩模具有两个二进制值(例如,0和1)中的一个值。通道稀疏图可以包括与多个通道相对应的一维二元掩模阵列,其中每个二元掩模指示特定通道是否被选择。此外,空间稀疏图可以包括与一组数据元素相对应的一维二元掩模阵列或二维二元掩模阵列,其中每个二元掩模指示每组中的对应数据元素是否被选择为输入数据的第一子集的一部分。
门控电路可以基于数据稀疏图从存储器中选择性地读取输入数据的第一子集,然后处理电路可以对该输入数据的第一子集执行稀疏图像处理操作以生成处理结果。门控电路可以选择性地读取输入数据的、在空间稀疏图中指示的数据元素,以执行空间门控。在一些示例中,门控电路还可以跳过在空间稀疏图中指示的、但与在通道稀疏图中未被选择的通道相关联的数据元素。在图像处理电路使用图像处理神经网络来执行稀疏图像处理操作的情况下,作为通道门控的一部分,图像处理电路还可以从存储器中读取图像处理神经网络的多个权重的第一子集。图像处理电路还可以跳过从存储器中读取输入数据的剩余子集和该多个权重的剩余子集。这样的布置可以减少存储器与图像处理电路之间的数据传输,这可以降低功耗。在一些示例中,图像处理电路还可以包括旁路电路,该旁路电路用于跳过涉及输入数据的剩余子集和该多个权重的剩余子集的计算。所有这些可以减少图像处理操作中所涉及的存储器数据传输和计算,这进而可以降低稀疏图像处理操作的功耗。
数据稀疏图生成电路可以基于输入数据动态地生成数据稀疏图,这可以增加输入数据的被选择的第一子集包含目标对象的可能性。在一些示例中,数据稀疏图可以表示目标对象的像素在输入图像中的预期空间位置、以及与这些像素相关联的预期波长通道。但是像素的预期空间位置及其相关联的波长通道可能会在不同的输入图像之间改变。例如,由于目标对象的移动、摄像头的移动等,目标对象的空间位置可能会在不同的输入图像之间改变。此外,例如由于操作条件的改变(例如,不同的照明条件),目标对象的像素的波长通道也可能会在不同的输入图像之间改变。在所有这些情况下,基于输入数据动态地更新数据稀疏图可以增加图像处理电路对输入数据的对于检测目标对象有用的子集进行处理、并丢弃输入数据的不是目标对象的部分的其余部分的可能性,这可以在降低功耗的同时提高稀疏图像处理操作的准确性。
在一些示例中,除了基于输入数据动态地更新空间稀疏图和通道稀疏图之外,数据稀疏图生成电路还可以为图像处理神经网络的每个层生成不同的空间稀疏图和不同的通道稀疏图。在一些示例中,可以针对一些神经网络层执行空间门控,而可以针对一些其它神经网络层执行通道门控。在一些示例中,可以针对一些神经网络层执行空间门控和通道门控这两者的组合。然后,针对每个神经网络层,图像处理电路可以选择输入数据(其可以是来自前一神经网络层的即时输出数据)的不同子集和多个权重的不同子集,以执行该神经网络层的计算。这样的布置可以在利用每个神经网络层处的神经网络计算的空间稀疏性和通道稀疏性方面、以及针对不同的神经网络拓扑提供更细的粒度,这进而可以进一步提高图像处理操作的准确性和效率。具体地,在一些示例中,可以基于权重和/或拓扑将图像处理神经网络的不同层配置为从输入图像中检测目标对象的不同组特征。目标对象的各特征可以位于输入数据中的不同位置处,并且与不同神经网络层的不同通道相关联。此外,通道门控可能不适合于提取与全通道范围相关联的某些特征,因为通道门控可能会降低提取这些特征的准确性。因此,通过针对不同的神经网络层使用不同的空间稀疏图和不同的通道稀疏图,图像处理电路可以为每个神经网络层和特定神经网络拓扑选择输入数据的正确子集,这进而可以进一步提高图像处理操作的准确性。
在一些示例中,为了减少在为神经网络层生成空间稀疏图和通道稀疏图时所涉及的存储器数据传输,图像处理电路可以将来自前一神经网络层的中间输出数据、以及经压缩的中间输出数据这两者存储在存储器中。然后,数据稀疏图生成电路可以从存储器中读取经压缩的中间输出数据,以为神经网络层生成数据稀疏图,随后图像处理电路基于该数据稀疏图从存储器中选择性地读取中间输出数据的子集。与数据稀疏图生成电路从存储器中读取前一神经网络层的全部中间输出数据以生成数据稀疏图的情况相比,这样的布置允许数据稀疏图生成电路从存储器中读取经压缩的中间输出数据,这可以减少稀疏图像处理操作中所涉及的存储器数据传输。
图像处理电路可以使用各种技术来生成经压缩的数据。在一些示例中,图像处理电路可以基于在中间输出张量的每组数据元素的各数据元素之间执行池化操作(例如,平均池化、下采样等)来生成通道张量,从而生成多组经压缩的数据元素,并且该通道张量的该多组经压缩的数据元素可以保持与中间输出张量相同的通道模式。图像处理电路还可以基于在不同通道的多组数据元素之间执行池化操作(例如,平均池化、下采样等)来生成空间张量,并且该空间张量可以保持与中间输出数据一样的一组中的数据元素数量和特征图案,但是具有减少的通道数量和组数量。数据稀疏图生成电路可以基于前一网络层的通道张量来生成通道稀疏图,并且可以基于前一网络层的空间张量来生成空间稀疏图。
在一些示例中,数据稀疏图生成电路可以基于检测输入数据中的特征图案和/或通道模式来生成数据稀疏图。数据稀疏图生成电路可以使用机器学习模型(例如数据稀疏图神经网络)来学习输入数据中的特征图案和通道模式,以生成数据稀疏图。在一些示例中,数据稀疏图神经网络可以包括通道稀疏图神经网络和空间稀疏图神经网络,该通道稀疏图神经网络用于根据具有多组/多通道的经压缩的数据元素的通道张量来生成通道稀疏图,该空间稀疏图神经网络用于根据具有经压缩的通道的空间张量来生成空间稀疏图。通道稀疏图神经网络可以包括多个全连接层,而空间稀疏图神经网络可以包括多个卷积层。可以使用与参考输出/目标输出相关联的训练数据来训练数据稀疏图神经网络。可以将神经网络训练为使该神经网络的输出与参考输出/目标输出之间的差异最小化。
在一些示例中,数据稀疏图神经网络可以采用重参数化技巧和近似技术(例如,Gumbel-Softmax技巧)来生成数据稀疏图。具体地,首先,数据稀疏图神经网络可以基于输入数据生成用于通道稀疏图和空间稀疏图的一组软掩模,其中每个软掩模具有在0与1之间的值范围,以指示通道(对于通道稀疏图)或像素(对于空间稀疏图)与感兴趣对象相关联的概率。可以将激活函数(例如,极大(argmax)函数的自变量)应用于该组软掩模以生成一组二元掩模,其中每个二元掩模具有用于选择通道或像素的二进制值(例如,0或1)。但是激活函数(例如,argmax)可以包括不可微分的数学运算。这使实施以下训练操作具有挑战性:所述训练操作可以包括确定输出层处的损失梯度,以关于输出中的每个数据元素来测量输出与参考之间的差异率,并且将该损失梯度传播回其它层以更新各权重,从而减小输出与参考之间的差异。为了克服由argmax激活函数的不可微分性带来的挑战,数据稀疏图神经网络可以采用Gumbel-Softmax技巧来提供argmax的可微分近似。作为Gumbel-Softmax技巧的一部分,可以将来自Gumbel分布的随机数作为采样噪声添加到软掩模中,随后对具有采样噪声的软掩模应用柔性最大值函数以生成二元掩模。在反向传播操作期间,可以使用软掩模来计算输出掩模相对于权重的梯度。
在一些示例中,数据图生成电路和图像处理电路可以在神经网络硬件加速器上实现。神经网络硬件加速器可以包括片上本地存储器(例如,静态随机存取存储器(staticrandom-access memory,SRAM))、计算引擎、输出缓冲器和控制器。神经网络硬件加速器还可以经由总线连接到外部电路,例如主机和外部片外存储器(例如,动态随机存取存储器(dynamic random-access memory,DRAM))。片上本地存储器可以存储神经网络层的输入数据和权重。计算引擎可以包括处理元件阵列,每个处理元件包括用于执行神经网络层的神经网络计算的算术电路(例如,乘法器、加法器等)。输出缓冲器可以为计算引擎的输出提供临时存储。输出缓冲器还可以包括如下电路:所述电路用于对计算引擎的输出执行各种后处理操作(例如,池化、激活函数处理等)以生成神经网络层的中间输出数据。
为了执行神经网络层的计算,控制器可以从外部片外存储器中读取该神经网络层的输入数据和权重,并将该输入数据和权重存储在片上本地存储器。控制器还可以存储有地址表,该地址表可以是转译后备缓冲区(TLB)的形式,该地址表在外部片外存储器的地址与片上本地存储器的地址之间进行转译。TLB允许控制器确定输入数据和权重在外部片外存储器处的读地址以及它们在片上本地存储器处的写地址,以支持将输入数据和权重从外部片外存储器读取到片上本地存储器。然后,控制器可以控制计算引擎从片上本地存储器中读取输入数据和权重,以执行计算。在输出缓冲器完成对计算引擎的输出的后处理并生成中间输出数据之后,控制器可以将该中间输出数据存储回外部片外存储器以作为下一神经网络层的输入,或者作为神经网络的最终输出。
控制器可以使用计算引擎来执行数据稀疏图神经网络的计算以生成数据稀疏图,然后使用该数据稀疏图来选择性地将输入数据的子集和多个权重的子集读取到计算引擎,以执行用于稀疏图像处理操作的图像处理神经网络的计算。在一些示例中,外部片外存储器可以存储用于图像处理神经网络的每个层的数据稀疏图神经网络的第一组权重、该图像处理神经网络的每个层的第二组权重、以及已完成计算的神经网络层的未经压缩的中间输出数据和第一经压缩的中间输出数据和第二经压缩的中间输出数据。控制器可以从外部片外存储器中读取这些数据,以支持稀疏图像处理操作。
具体地,在执行图像处理神经网络层的计算之前,控制器可以首先从片外外部存储器中读取数据稀疏图神经网络的第一组权重、以及前一图像处理神经网络层的第一经压缩的中间输出数据和第二经压缩的中间输出数据。然后,控制器可以控制计算引擎使用第一组权重、以及第一经压缩的中间输出数据和第二经压缩的中间输出数据来执行神经网络计算,以分别生成图像处理神经网络层的空间稀疏图和通道稀疏图,并将该空间稀疏图和该通道稀疏图存储在本地存储器处。
然后,控制器可以将TLB中的地址表与空间稀疏图和通道稀疏图组合以生成读地址和写地址,从而选择性地将前一图像处理神经网络层的中间输出数据的子集和当前图像处理神经网络层的第二组权重的子集从片外外部存储器中读取到本地存储器。在一些示例中,控制器可以访问地址表以访问与不同通道相关联的第二组权重的读地址,并使用与通道稀疏图中所选择通道相关联的权重的读地址来读取第二组权重的子集。另外,控制器还可以访问地址表以访问前一图像处理神经网络层的中间输出数据的读地址,并使用空间稀疏图中所选择的、且与所选择通道相关联的中间输出数据元素的读地址来读取中间输出数据的子集。控制器还可以在本地存储器中、为未被读取的权重的剩余子集和中间输入数据的剩余子集存储预定无效值(例如零)。然后,控制器可以控制计算引擎从本地存储器中读取权重和中间输出数据(其包括从外部存储器中读取的权重和中间输出数据以及具有零值的权重和中间输出数据)以执行当前图像处理神经网络层的计算,从而生成新的中间输出数据。控制器还可以控制输出缓冲器对该新的中间输出数据执行池化操作以生成新的经压缩的中间输出数据,并将新的未经压缩的中间输出数据和该新的经压缩的中间输出数据存储回外部存储器,以支持下一图像处理神经网络层的数据稀疏生成操作和稀疏图像处理操作。
在一些示例中,神经网络硬件加速器可以集成在与像素单元阵列相同的封装内,以形成图像传感器,其中,可以执行神经网络硬件加速器处的稀疏图像处理操作以支持由图像传感器进行的稀疏图像感测操作。例如,神经网络硬件加速器可以是图像传感器的计算电路的一部分。对于像素单元阵列的图像采集,神经网络硬件加速器可以执行稀疏图像处理操作以从该图像中检测感兴趣对象、并确定待由像素单元阵列采集的后续图像中的感兴趣区域。然后,计算电路可以选择性地使像素单元阵列的、与感兴趣区域相对应的子集能够将后续图像采集为稀疏图像。作为另一示例,神经网络硬件加速器还可以向主机中的应用(例如,VR/AR/MR应用)提供对象检测结果,以允许该应用更新输出内容,从而提供交互式用户体验。
利用所公开的技术,可以使用资源密集型技术(例如,深度神经网络(DNN))对高分辨率图像执行稀疏图像处理操作,这可以提高稀疏图像处理操作的准确性,同时减少稀疏图像处理操作的计算资源和存储资源、以及功耗。这允许在诸如移动设备等资源受限的设备上执行稀疏图像处理操作。此外,通过基于神经网络的输入图像来动态地为不同的神经网络层生成不同的通道稀疏图和空间稀疏图、并使用机器学习模型来生成这些稀疏图,这些稀疏图可以适应不同的输入图像、不同的神经网络层和不同的神经网络。所有这些都可以在利用每个神经网络层处的神经网络计算的空间稀疏性和通道稀疏性方面、以及针对不同的神经网络拓扑提供更细的粒度,这进而可以进一步提高稀疏图像处理操作的准确性和效率。
所公开的技术可以包括人工现实系统、或结合人工现实系统来实现。人工现实是在呈现给用户之前已经以某些方式进行了调整的现实形式,该人工现实例如可以包括虚拟现实(VR)、增强现实(AR)、混合现实(MR)、混合现实(hybrid reality),或它们的某种组合和/或衍生物。人工现实内容可以包括完全的生成内容、或与采集到的(例如,真实世界的)内容相结合的生成内容。人工现实内容可以包括视频、音频、触觉反馈、或它们的某种组合,以上中的任何一者可以在单个通道或多个通道中呈现(例如,为观看者带来三维效果的立体视频)。另外,在一些示例中,人工现实还可以与应用、产品、附件、服务、或它们的某种组合相关联,这些应用、产品、附件、服务、或它们的某种组合例如用于在人工现实中创建内容、和/或以其它方式用于人工现实中(例如,在人工现实中执行活动)。提供人工现实内容的人工现实系统可以在各种平台上实现,这些平台包括连接到主计算机系统的头戴式显示器(head-mounted display,HMD)、独立的HMD、移动设备或计算系统、或能够向一位或多位观看者提供人工现实内容的任何其它硬件平台。
图1A是近眼显示器100的示例的示意图。近眼显示器100向用户呈现媒体。由近眼显示器100呈现的媒体的示例包括一幅或多幅图像、视频、和/或音频。在一些示例中,音频经由外部设备(例如,扬声器和/或耳机)来呈现,该外部设备接收来自近眼显示器100、控制台、或它们两者的音频信息,并基于该音频信息来呈现音频数据。近眼显示器100通常被配置为作为虚拟现实(VR)显示器来运行。在一些示例中,近眼显示器100被修改为作为增强现实(AR)显示器和/或混合现实(MR)显示器来运行。
近眼显示器100包括框架105和显示器110。框架105耦接到一个或多个光学元件。显示器110被配置用于用户观看由近眼显示器100呈现的内容。在一些示例中,显示器110包括波导显示组件,该波导显示组件用于将来自一幅或多幅图像的光引导到用户的眼睛。
近眼显示器100还包括图像传感器120a、120b、120c和120d。图像传感器120a、120b、120c和120d中的每个图像传感器可以包括像素阵列,该像素阵列被配置为生成表示沿不同方向的不同视场的图像数据。例如,传感器120a和120b可以被配置为提供表示朝向沿Z轴的方向A的两个视场的图像数据,而传感器120c可以被配置为提供表示朝向沿X轴的方向B的视场的图像数据,而传感器120d可以被配置为提供表示朝向沿X轴的方向C的视场的图像数据。
在一些示例中,传感器120a至120d可以被配置作为这样的输入设备:所述输入设备控制或影响近眼显示器100的显示内容,以向佩戴了近眼显示器100的用户提供交互式VR/AR/MR体验。例如,传感器120a至120d可以生成用户所处的物理环境的物理图像数据。可以将物理图像数据提供给位置追踪系统,以追踪用户在物理环境中的位置和/或移动路径。然后,系统可以例如基于用户的位置和方位来更新提供给显示器110的图像数据,以提供交互式体验。在一些示例中,位置追踪系统可以运行即时定位与地图构建(simultaneouslocalization and mapping,SLAM)算法,以在用户在物理环境内移动时追踪处于该物理环境中且在该用户的视场内的一组对象。位置追踪系统可以基于该组对象来构建和更新物理环境的地图,并追踪用户在该地图内的位置。传感器120a至120d可以通过提供与多个视场相对应的图像数据,来向位置追踪系统提供物理环境的更全面的视图,这可以使得在地图的构建和更新中包括更多的对象。利用这样的布置,可以提高对用户在物理环境内的位置进行追踪的准确性和鲁棒性。
在一些示例中,近眼显示器100还可以包括一个或多个有源的照明器130,该一个或多个有源的照明器用于将光投射到物理环境中。所投射的光可以与不同的频谱(例如,可见光、红外(infrared,IR)光、紫外光)相关联,并且可以用于各种目的。例如,照明器130可以在黑暗环境中(或者在具有较低强度的(IR)光、紫外光等的环境中)投射光,以协助传感器120a至120d采集该黑暗环境内的不同对象的图像,从而例如实现对用户的位置追踪。照明器130可以将某些标记投射到环境内的多个对象上,以协助位置追踪系统识别这些对象以用于地图构建/更新。
在一些示例中,照明器130还可以实现立体成像。例如,传感器120a或120b中的一者或两者可以包括用于可见光感测的第一像素阵列和用于(IR)光感测的第二像素阵列这两者。第一像素阵列可以覆盖有滤色器(例如,拜耳滤色器(Bayer filter)),其中第一像素阵列的每个像素被配置为测量与特定颜色(例如,红色、绿色或蓝色(RGB)中的一种颜色)相关联的光的强度。(用于IR光感测的)第二像素阵列也可以覆盖有仅允许IR光通过的滤光器,其中第二像素阵列的每个像素被配置为测量IR光的强度。这些像素阵列可以生成对象的RGB图像和IR图像,其中IR图像中的每个像素被映射到RGB图像中的每个像素。照明器130可以将一组IR标记投射到对象上,该对象的图像可以由IR像素阵列采集。系统可以基于如图像中所示的该对象的IR标记的分布,估计该对象的不同部分距IR像素阵列的距离,并且基于所述距离来生成该对象的立体图像。系统例如可以基于该对象的立体图像确定该对象相对于用户的相对位置,并且可以基于相对位置信息对提供给显示器100的图像数据进行更新,从而提供交互式体验。
如上所述,近眼显示器100可以在与较宽的光强度范围相关联的环境中运行。例如,近眼显示器100可以在室内环境中或室外环境中运行,和/或在一天中的不同时间运行。近眼显示器100还可以在有源的照明器130被开启或未被开启的情况下运行。因此,图像传感器120a至120d可能需要具有较宽的动态范围,以能够跨与近眼显示器100的不同运行环境相关联的、非常宽的光强度范围而正确地运行(例如,以生成与入射光的强度相关的输出)。
图1B是近眼显示器100的另一示例的示意图。图1B示出了近眼显示器100面向佩戴了该近眼显示器100的用户的一个或多个眼球135的一侧。如图1B所示,近眼显示器100还可以包括多个照明器140a、140b、140c、140d、140e和140f。近眼显示器100还包括多个图像传感器150a和150b。照明器140a、140b和140c可以朝向方向D(该方向与图1A中的方向A相反)发射特定频率范围(例如,近红外(near-infra red,NIR))的光。所发射的光可以与特定图案相关联,并且可以被用户的左眼球反射。传感器150a可以包括用于接收所反射的光、并生成所反射图案的图像的像素阵列。类似地,照明器140d、140e和140f可以发射带有图案的NIR光。NIR光可以被用户的右眼球反射,并且可以被传感器150b接收。传感器150b还可以包括用于生成所反射图案的图像的像素阵列。系统可以基于来自传感器150a和150b的所反射图案的图像来确定用户的注视点,并且基于所确定的注视点对提供给显示器100的图像数据进行更新,从而向用户提供交互式体验。
如上所述,为了避免损伤用户的眼球,照明器140a、140b、140c、140d、140e和140f通常被配置为输出较低强度的光。在图像传感器150a和150b包括与图1A中的图像传感器120a至120d相同的传感器器件的情况下,在入射光的强度较低时,图像传感器120a至120d可能需要能够生成与入射光的强度相关的输出,这可能会进一步提高这些图像传感器的动态范围要求。
此外,图像传感器120a至120d可能需要能够高速地生成输出,以追踪眼球的运动。例如,用户的眼球可以进行非常快速的运动(例如,扫视运动),在该非常快速的运动中,可能存在从一个眼球位置到另一个眼球位置的快速跳跃。为了追踪用户眼球的快速运动,图像传感器120a至120d需要高速地生成眼球的图像。例如,图像传感器生成图像的速率(帧率)至少需要匹配眼球运动的速度。较高的帧率要求涉及生成图像的所有像素单元的总曝光时间短,且要求将传感器输出高速地转换为数字值以用于图像生成。此外,如上所述,图像传感器还需要能够在具有较低光强度的环境中运行。
图2是图1A和图1B中所示出的近眼显示器100的横截面200的示例。显示器110包括至少一个波导显示组件210。出射光瞳230是在用户佩戴着近眼显示器100时、该用户的单个眼球220被定位在适眼框(eyebox)区域中的位置。出于说明的目的,图2示出了与眼球220和单个波导显示组件210相关联的横截面200,而对于用户的第二只眼睛,使用第二波导显示器。
波导显示组件210被配置为将图像光引导到位于出射光瞳230处的适眼框、以及眼球220。波导显示组件210可以由具有一种或多种折射率的一种或多种材料(例如,塑料、玻璃)构成。在一些示例中,近眼显示器100包括波导显示组件210与眼球220之间的一个或多个光学元件。
在一些示例中,波导显示组件210包括堆叠的一个或多个波导显示器,该堆叠的一个或多个波导显示器包括但不限于,堆叠式波导显示器、可变焦波导显示器等。堆叠式波导显示器是通过堆叠如下的多个波导显示器而形成的多色显示器(例如,RGB显示器):该多个波导显示器的相应单色光源具有不同颜色。堆叠式波导显示器还是可被投射到多个平面上的多色显示器(例如,多平面彩色显示器)。在一些配置中,堆叠式波导显示器是可被投射到多个平面上的单色显示器(例如,多平面单色显示器)。可变焦波导显示器是可调整从波导显示器发射的图像光的焦点位置的显示器。在替代示例中,波导显示组件210可以包括堆叠式波导显示器和可变焦波导显示器。
图3示出了波导显示器300的示例的等轴测视图。在一些示例中,波导显示器300是近眼显示器100的部件(例如,波导显示组件210)。在一些示例中,波导显示器300是某些其它近眼显示器的或其它系统的将图像光引导到特定位置的部分。
波导显示器300包括源组件310、输出波导320和控制器330。出于说明的目的,图3示出了与单个眼球220相关联的波导显示器300,但是在一些示例中,与波导显示器300分开或部分分开的另一波导显示器向用户的另一只眼睛提供图像光。
源组件310生成图像光355。源组件310生成图像光355,并向位于输出波导320的第一侧370-1上的耦合元件350输出该图像光。输出波导320是向用户的眼球220输出扩展后的图像光340的光波导。输出波导320在位于第一侧370-1上的一个或多个耦合元件350处接收图像光355,并将接收到的输入的图像光355引导到引导元件360。在一些示例中,耦合元件350将来自源组件310的图像光355耦合到输出波导320中。耦合元件350例如可以是衍射光栅、全息光栅、一个或多个级联反射器、一个或多个棱镜表面元件、和/或全息反射器阵列。
引导元件360将接收到的输入的图像光355重定向到解耦元件365,使得该接收到的输入的图像光355经由解耦元件365解耦到输出波导320之外。引导元件360是输出波导320的第一侧370-1的一部分,或者被固定到该输出波导的第一侧。解耦元件365是输出波导320的第二侧370-2的一部分,或者被固定到该输出波导的第二侧,使得引导元件360与解耦元件365相对。引导元件360和/或解耦元件365例如可以是衍射光栅、全息光栅、一个或多个级联反射器、一个或多个棱镜表面元件、和/或全息反射器阵列。
第二侧370-2表示沿x-维度和y-维度的平面。输出波导320可以由促进图像光355的全内反射的一种或多种材料构成。输出波导320例如可以由硅、塑料、玻璃和/或聚合物构成。输出波导320具有相对小的形状要素。例如,输出波导320可以沿x-维度为约50毫米(mm)宽,沿y-维度为约30mm长,并且沿z-维度为约0.5mm至1mm厚。
控制器330控制源组件310的扫描操作。控制器330确定用于源组件310的扫描指令。在一些示例中,输出波导320以大视场角(field of view,FOV)向用户的眼球220输出扩展后的图像光340。例如,以等于和/或大于60度、和/或等于和/或小于150度的对角线FOV(沿x和y)向用户的眼球220提供扩展后的图像光340。输出波导320被配置为提供适眼框,该适眼框具有等于或大于20mm和/或等于或小于50mm的长度、和/或等于或大于10mm和/或等于或小于50mm的宽度。
此外,控制器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的飞行时间(time-of-flight)测量结果的像素数据。例如,图像传感器120a至120d的每个像素单元可以确定照明器325能够投射光378的第一时间、以及像素单元检测到从对象372反射出的光378的第二时间。第一时间与第二时间之间的差可以指示光378在图像传感器120a至120d与对象372之间的飞行时间,并且该飞行时间信息可以用于确定图像传感器120a至120d与对象372之间的距离。图像传感器120a至120d可以被操作为在不同的时间执行2D感测和3D感测,并向远程控制台390提供2D图像数据和3D图像数据,该远程控制台可以位于(或可以不位于)波导显示器300内。该远程控制台可以将2D图像和3D图像进行组合,以例如生成用户所处的环境的3D模型、追踪用户的位置和/或方位等。该远程控制台可以基于从2D图像和3D图像中得到的信息来确定待向用户显示的图像的内容。该远程控制台可以向控制器330发送与所确定的内容相关的指令。控制器330可以基于所述指令,控制源组件310生成和输出图像光355,以向用户提供交互式体验。
图4示出了波导显示器300的横截面400的示例。横截面400包括源组件310、输出波导320和图像传感器370。在图4的示例中,图像传感器370可以包括位于第一侧370-1上的一组像素单元402,该一组像素单元用于生成用户前方的物理环境的图像。在一些示例中,可以存在插入在该一组像素单元402与物理环境之间的机械快门404和滤光器阵列406。机械快门404可以控制该一组像素单元402的曝光。在一些示例中,如以下将论述的,机械快门404可以由例如全局快门或卷帘快门配置中的电子快门代替。如以下将论述的,滤光器阵列406可以控制以下光的光波长范围:该一组像素单元402被曝光于该光。多个像素单元402中的每个像素单元可以与图像中的一个像素相对应。尽管在图4中未示出,但应理解的是,多个像素单元402中的每个像素单元还可以被覆盖有滤光器,以控制即将被这些像素单元感测的光的光波长范围。
机械快门404在接收到来自远程控制台的指令之后,可以打开,并在曝光周期内使该一组像素单元402暴露。在曝光周期期间,图像传感器370可以获取入射在该一组像素单元402上的光样本,并且基于由该一组像素单元402检测到的入射光样本的强度分布来生成图像数据。然后,图像传感器370可以向远程控制台提供该图像数据,该远程控制台确定显示内容、并向控制器330提供显示内容信息。然后,控制器330可以基于该显示内容信息来确定图像光355。
源组件310根据来自控制器330的指令来生成图像光355。源组件310包括源410和光学系统415。源410是生成相干光或部分相干光的光源。源410例如可以是激光二极管、垂直腔面发射激光器、和/或发光二极管。
光学系统415包括对来自源410的光进行调节的一个或多个光学元件。对来自源410的光进行调节例如可以包括:根据来自控制器330的指令,进行扩展、准直和/或调整方位。该一个或多个光学元件可以包括一个或多个透镜、一个或多个液体透镜、一个或多个反射镜、一个或多个光圈、和/或一个或多个光栅。在一些示例中,光学系统415包括具有多个电极的液体透镜,该具有多个电极的液体透镜允许以扫描角度的阈值对光束进行扫描,以将该光束移位到液体透镜外部的区域。从光学系统415(以及也从源组件310)发射的光被称为图像光355。
输出波导320接收图像光355。耦合元件350将来自源组件310的图像光355耦合到输出波导320中。在耦合元件350是衍射光栅的示例中,选择该衍射光栅的节距(pitch)使得输出波导320中发生全内反射、且图像光355在输出波导320中朝向解耦元件365(例如,通过全内反射)内部传播。
引导元件360将图像光355重定向为朝向解耦元件365,以用于从输出波导320解耦。在引导元件360是衍射光栅的示例中,选择该衍射光栅的栅距使得入射的图像光355以相对于解耦元件365的表面的一个或多个倾斜角度离开输出波导320。
在一些示例中,引导元件360和/或解耦元件365在结构上相似。离开输出波导320的扩展后的图像光340是沿一个或多个维度扩展的(例如,可以是沿x-维度延长的)。在一些示例中,波导显示器300包括多个源组件310和多个输出波导320。多个源组件310中的每个源组件发射与一原色(例如,红色、绿色或蓝色)相对应的特定波段的单色图像光。多个输出波导320中的各输出波导可以以一间隔距离堆叠在一起,以输出多色的扩展后的图像光340。
图5是包括近眼显示器100的系统500的示例的框图。系统500包括均耦接到控制电路510的近眼显示器100、成像设备535、输入/输出接口540、以及图像传感器120a至120d和图像传感器150a至150b。系统500可以被配置作为头戴式设备、移动设备、可穿戴设备等。
近眼显示器100是向用户呈现媒体的显示器。由近眼显示器100呈现的媒体的示例包括一幅或多幅图像、视频和/或音频。在一些示例中,音频经由外部设备(例如,扬声器和/或耳机)来呈现,该外部设备接收来自近眼显示器100和/或控制电路510的音频信息,并基于该音频信息向用户呈现音频数据。在一些示例中,近眼显示器100还可以充当AR眼镜镜片。在一些示例中,近眼显示器100利用计算机生成的元素(例如,图像、视频、声音)来增强物理的、真实世界环境的视图。
近眼显示器100包括波导显示组件210、一个或多个位置传感器525、和/或惯性测量单元(inertial measurement unit,IMU)530。波导显示组件210包括源组件310、输出波导320和控制器330。
IMU 530是这样的电子设备:该电子设备基于从多个位置传感器525中的一个或多个位置传感器接收到的测量信号而生成快速校准数据,该快速校准数据指示近眼显示器100相对于该近眼显示器100的初始位置的估计位置。
成像设备535可以生成用于各种应用的图像数据。例如,成像设备535可以根据从控制电路510接收到的校准参数来生成用于提供慢速校准数据的图像数据。成像设备535例如可以包括图1A中的图像传感器120a至120d,以用于生成用户所处的物理环境的图像数据以用于执行对用户的位置追踪。成像设备535例如还可以包括图1B中的图像传感器150a和150b,以用于生成如下图像数据:所述图像数据用于确定用户的注视点以识别用户的感兴趣对象。
输入/输出接口540是允许用户向控制电路510发送动作请求的设备。动作请求是执行特定动作的请求。例如,动作请求可以是启动或结束一应用、或者在应用内执行特定动作。
控制电路510根据从以下中的一者或多者接收到的信息来向近眼显示器100提供用于向用户呈现的媒体:成像设备535、近眼显示器100、和/或输入/输出接口540。在一些示例中,控制电路510可以被容纳在被配置作为头戴式设备的系统500内。在一些示例中,控制电路510可以是与系统500中的其它部件通信耦接的独立控制台设备。在图5所示出的示例中,控制电路510包括应用存储库545、追踪模块550和引擎555。
应用存储库545存储有用于供控制电路510执行的一个或多个应用。应用是一组指令,该一组指令在被处理器执行时生成用于向用户呈现的内容。应用的示例包括:游戏应用、会议应用、视频播放应用、或其它合适的应用。
追踪模块550使用一个或多个校准参数来对系统500进行校准,并且可以调整一个或多个校准参数以减少确定近眼显示器100的位置时的误差。
追踪模块550使用来自成像设备535的慢速校准信息来追踪近眼显示器100的移动。追踪模块550还使用来自快速校准信息的位置信息,来确定近眼显示器100的参考点的位置。
引擎555执行系统500内的应用,并接收来自追踪模块550的近眼显示器100的位置信息、加速度信息、速度信息和/或预测的未来位置。在一些示例中,由引擎555接收的信息可以用于为波导显示组件210生成确定向用户呈现的内容的类型的信号(例如,显示指令)。例如,为了提供交互式体验,引擎555可以基于以下项来确定待向用户呈现的内容:(例如,由追踪模块550提供的)用户的位置、或(例如,基于由成像设备535提供的图像数据的)用户的注视点、或(例如,基于由成像设备535提供的图像数据的)对象与用户之间的距离。
图6A、图6B、图6C和图6D示出了图像传感器600及其操作的示例。如图6A所示,图像传感器600可以包括像素单元阵列(包括像素单元601),并且可以生成与图像的多个像素相对应的数字强度数据。像素单元601可以是图4中的多个像素单元402的一部分,并且还可以是图1A中的传感器120和图1B中的传感器150的一部分。如图6A所示,像素单元601可以包括光电二极管602、电子快门开关603、转移开关604、电荷存储器件605、缓冲器606和量化器607。光电二极管602例如可以包括P-N二极管、P-I-N二极管、钉扎二极管(pinned diode)等,而电荷存储器件605可以是转移开关604的浮置扩散节点。光电二极管602一经在曝光周期内接收到光,就可以产生并积累剩余电荷。在曝光周期内剩余电荷一经饱和,光电二极管602就可以经由转移开关604向电荷存储器件605输出溢出电荷。电荷存储器件605可以将溢出电荷转换成电压,该电压可由缓冲器606缓冲。可以由量化器607对缓冲电压进行量化以生成测量结果数据608,该测量结果数据例如用于表示由光电二极管602在曝光周期内接收到的光的强度。然后,可以生成由图像传感器600进行成像的对象612的图像610。
量化器607可以包括比较器,该比较器用于将缓冲电压与不同量化操作的不同阈值进行比较,该不同量化操作与不同强度范围相关联。例如,对于由光电二极管602产生的溢出电荷的量超过了电荷存储器件605的饱和极限的高强度范围,量化器607可以通过检测缓冲电压是否超过表示该饱和极限的静态阈值来执行饱和时间(time-to-saturation,TTS)测量操作,并且如果该缓冲电压超过了该静态阈值,则测量该缓冲电压超过该静态阈值所花费的时间。所测得的时间可能与光强度成反比。此外,对于剩余电荷使光电二极管饱和、但溢出电荷保持在电荷存储器件605的饱和极限以下的中等强度范围,量化器607可以执行全数字模数转换器(fully digital analog to digital converter,FD ADC)操作,以测量存储在电荷存储器件605中的溢出电荷的量。此外,对于剩余电荷没有使光电二极管饱和、且电荷存储器件605中没有积累溢出电荷的低强度范围,量化器607可以执行模拟传感器(PD ADC)操作的数字处理计量,以测量积累在光电二极管602中的剩余电荷的量。TTS操作、FD ADC操作或PD ADC操作中的一个操作的输出可以作为用于表示光强度的测量结果数据608输出。
图6B示出了像素单元601的一系列操作的示例。如图6B所示,可以基于对电子快门开关603进行控制的AB信号的时序、以及基于对转移开关604进行控制的TG信号的时序来定义曝光周期,该电子快门开关在被启用时可以将由光电二极管602产生的电荷引导走,该转移开关可以被控制为转移溢出电荷、然后将剩余电荷转移到电荷存储器件605以用于读出。例如,参照图6B,AB信号可以在时间T0处变为无效(de-assert),以允许光电二极管602产生电荷。T0可以标记曝光周期的开始。在曝光周期内,TG信号可以将转移开关604设置为处于部分导通状态,以允许光电二极管602将至少一些电荷积累为剩余电荷,直到光电二极管602饱和,在光电二极管602饱和后,溢出电荷可以被转移到电荷存储器件605。在时间T0与时间T1之间,量化器607可以执行TTS操作以确定电荷存储器件605处的溢出电荷是否超过饱和极限,然后在时间T1与时间T2之间,量化器607可以执行FD ADC操作以测量电荷存储器件605处的溢出电荷的量。在时间T2与时间T3之间,TG信号可以被置为有效,以将转移开关604偏置到全导通状态,从而将剩余电荷转移到电荷存储器件605。在时间T3处,TG信号可以被置为无效,以将电荷存储器件605与光电二极管602隔离开;然而AB信号可以被置为有效,以将由光电二极管602产生的电荷引导走。时间T3可以标记曝光周期的结束。在时间T3与时间T4之间,量化器607可以执行PD操作以测量剩余电荷的量。
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中的一系列操作,以生成后续的图像。
尽管图6A示出了像素单元601包括光电二极管602,但是像素单元601还可以包括多个光电二极管,其中每个光电二极管被配置为感测不同波长范围的光。图6C示出了像素单元601的另一示例,该像素单元包括多个光电二极管602a、602b、602c和602d,该多个光电二极管中的每个光电二极管具有对应的电子快门开关(快门开关603a至603d中的一个快门开关)和对应的转移开关(转移开关604a至604d中的一个转移开关)。光电二极管602a可以被配置为感测可见红光波长范围(例如,622纳米(nm)至780nm)的光,光电二极管602b可以被配置为感测可见绿光波长范围(例如,492nm至577nm)的光,光电二极管602c可以被配置为感测可见蓝光波长范围(例如,455nm至492nm)的光,而光电二极管602d可以被配置为感测红外波长范围(例如,780nm至1mm)的光。这些波长范围中的每个波长范围可以对应于一个通道。可以使这些光电二极管能够基于AB0信号、AB1信号、AB2信号和AB3信号的时序,在与如图6B所示的相同的曝光周期内感测光并产生电荷。然后,各个光电二极管可以基于TG0信号、TG1信号、TG2信号和TG3信号的时序,轮流将电荷转移到电荷存储器件605,随后量化器607对电荷进行量化以生成每个通道的测量结果数据608。
具有多光电二极管像素单元601的阵列的图像传感器600可以基于在曝光周期内接收到的光来生成多幅图像,每幅图像与一个通道相对应。例如,参照图6D,图像传感器600可以基于在曝光周期614内检测到的光来生成多幅图像616,该多幅图像包括红色图像616a、蓝色图像616b、绿色图像616c和红外图像616d。图像616a至616d的对应像素618a、618b、618c和618d可以基于同一像素单元中的光电二极管602a至602d的输出而被生成。
可以对来自图像传感器600的图像数据进行处理,以支持不同的应用,例如追踪一个或多个对象、检测运动(例如,作为动态视觉感测(dynamic vision sensing,DVS)操作的一部分)等。图7A和图7B示出了可由来自图像传感器600的图像数据支持的应用的示例。图7A示出了基于来自图像传感器600的图像的对象追踪操作的示例。如图7A所示,可以基于图像处理操作,从在时间T0处采集到的图像700中识别与对象704相对应的感兴趣区域(region of interest,ROI)702中的一组像素。然后,应用可以基于图像处理操作结果来追踪对象704在后续图像(包括在时间T1处采集到的图像710)中的位置。该应用可以识别与对象704相对应的ROI 712中的一组像素。可以执行对对象704在图像内的图像位置的追踪以支持SLAM算法,该SLAM算法可以基于对对象704在由图像传感器600采集到的场景中的图像位置进行追踪来构建/更新图像传感器600(以及包括图像传感器600的移动设备,例如近眼显示器100)所处的环境的地图。
图7B示出了对来自图像传感器600的图像进行的眼动追踪操作的示例。在一些示例中,返回参照图1B,照明器(例如,照明器140a至140f)可以将红外光投射到眼球中,并且所反射的红外光可以由图像传感器600检测。参照图7B,基于对眼球的图像730和732的图像处理操作,可以识别与瞳孔738和闪烁739相对应的像素组734和像素组736。可以执行对瞳孔738和闪烁739的识别以支持眼动追踪操作。例如,应用可以基于瞳孔738和闪烁739的图像位置,来确定用户在不同时间的注视方向,所述注视方向可以作为输入提供给系统以例如确定待向用户显示的内容。
在图7A和图7B这两者中,可以由图像处理器对图像执行图像处理操作以检测感兴趣对象/目标对象(例如,图7A中的对象704,图7B中的眼球等)及其在图像中的位置。对目标对象进行检测可以基于从图像中检测该目标对象的特征的图案。特征可以例如由不同波长范围的光强度图案来表示。例如,在图7A中,可以通过与不同颜色相关联的特征来识别对象704,而在图7B中,可以通过所反射红外光的强度图案来识别眼球。
从图像中提取/识别特征的一种方式是执行卷积操作。作为卷积操作的一部分,表示待被检测的特征的过滤器张量可以以多个步幅遍历表示图像的数据张量并与该数据张量重叠。对于每个步幅,可以生成权重张量与输入数据张量中的重叠部分之间的乘积之和作为卷积操作的输出,并且可以以多个步幅生成卷积操作的多个输出。例如,在一步幅位置处的乘积之和可以指示在图像的该步幅位置处找到由过滤器张量表示的特征的可能性。
图8A示出了卷积操作的示例。如图8A所示,C数量个过滤器802可以与相同数量(C)幅图像804相对应。一组过滤器802可以表示目标对象在C个不同通道中的特征,并且多幅图像804还可以与该C个不同通道相对应。例如,一组C个过滤器可以与可见红光通道、可见蓝光通道、可见绿光通道和红外通道相对应。多幅图像804中的每幅图像也可以与C个不同通道中的一个通道相对应。可以将每个过滤器-图像对的卷积结果相加以生成如下卷积输出,从而生成卷积阵列806:
此处,卷积操作涉及图像(或像素阵列)。Xc eD+r,fD+s可以指数量(C)个图像帧760中的索引为c的图像处的一像素的值,该像素具有行坐标eD+r和列坐标fD+s。索引c可以表示特定的输入通道。D是滑动窗口步幅距离,而e和f与数据元素在卷积输出阵列中的位置相对应,该卷积输出阵列也可以与特定的滑动窗口相对应。此外,r和s与滑动窗口内的特定位置相对应。索引为c的图像的、且在(r,s)位置处的像素还可以与具有相同索引c的、在相同(r,s)位置处的对应过滤器中的权重Wc r,s相对应。等式1指示:为了计算卷积输出Oe,f,滑动窗口内的每个像素(由(e,f)索引)可以与对应的权重Wc r,s相乘。可以计算图像集内多幅图像中的每幅图像在每个滑动窗口内的多个乘积的部分和,然后可以计算该图像集的所有图像的多个部分和的和。基于在C个通道上对多幅图像804应用多个过滤器802,卷积输出Oe,f例如可以指示位置(e,f)处的像素包括由过滤器802表示的特征的可能性。
可以使用各种技术来提高对象检测操作的准确性。例如,图像传感器600可以包括大量像素单元以生成高分辨率输入图像,从而提高图像的空间分辨率、以及在图像中采集到的特征的空间分辨率。此外,这些像素单元可以被操作为以高帧率生成输入图像,以提高图像的时间分辨率。提高图像的分辨率允许图像处理器提取更细节的特征以执行对象检测操作。
另外,图像处理器可以采用经训练的机器学习模型来执行对象检测操作。在训练操作中,机器学习模型可以被训练从一大组训练图像中学习目标对象的特征。例如,训练图像可以反映图像传感器采集目标对象的不同的操作条件/环境、以及要待与目标对象进行区分的其它对象。然后,机器学习模型可以将从训练操作中学习到的模型参数应用于输入图像,以执行对象检测操作。与图像处理器使用固定的一组规则来执行目标检测操作的情况相比,机器学习模型可以调整其模型参数以反映从训练图像学习到的特征的复杂图案,这可以提高图像处理操作的鲁棒性。
机器学习模型的一个示例可以包括深度神经网络(DNN)。图8B示出了可由图像处理器实现的DNN 810的示例架构。参照图8B,DNN 810可以包括四个主要操作:(1)卷积;(2)通过激活函数(例如,ReLU)进行的处理;(3)池化或下采样;以及(4)分类(全连接层)。DNN810可以被配置作为图像处理神经网络。
待分类的图像(例如,图像804)可以由像素值的张量来表示。如上所述,输入图像804可以包括与多个通道相关联的多幅图像,每个通道与不同的波长范围相对应,该多个通道例如为红色通道、绿色通道和蓝色通道。应理解的是,在多个通道表示粒度更细的调色板(例如,256种颜色的256个通道)的情况下,图像804可以与三个以上的通道相关联。
如图8B所示,输入图像804可以由第一卷积层(例如,输入层)814处理。图8C的左侧示出了卷积层814的示例。如图8C所示,卷积层814可以包括第一层节点816和第二层节点818,并且可以与第一权重张量[W0]相关联。第一层节点816的一节点块连接到第二层节点818中的一节点。例如,第一层的节点块816a连接到第二层中的节点818a,而第一层的节点块816b连接到第二层中的节点818b。为了执行卷积操作(例如,等式1中所描述的卷积操作),可以由第一层的节点块816a将输入图像804的第一像素块与第一权重张量[W0]相乘以生成多个乘积,并且第二层的节点818a可以将该多个乘积相加以生成和820a。此外,可以由第一层的节点块816b将输入图像804的第二像素块与第一权重张量[W0]相乘以生成多个乘积,并且第二层的节点818b可以将该多个乘积相加以生成和820b。
返回参照图8B,第一卷积层814可以包括与多个通道相关联的多个卷积层,该多个卷积层包括层814a、814b和814c。每个层可以具有如图8C所示的第一层节点816和第二层节点818,并且每个层可以与不同的第一权重张量相关联。例如,第一卷积层814a可以与第一通道(例如,红色通道)的第一权重张量[W0-0]相关联,并且第一卷积层814b可以与第二通道(例如,绿色通道)的第一权重张量[W0-1]相关联,而第一卷积层814c可以与第三通道(例如,蓝色通道)的第一权重张量[W0-2]相关联。然后,可以由激活函数对由第二层节点818生成的总和进行后处理,以生成中间输出数据。激活函数可以模拟神经网络中线性感知器的行为。激活函数可以包括线性函数或非线性函数(例如,ReLU、SoftMax)。中间输出数据可以形成中间输出张量826。第一权重张量例如可以用于从多幅图像804中提取某些基本特征(例如边缘),并且中间输出张量826可以将这些基本特征的分布表示为基本特征图。在一些示例中,可以可选地将中间输出张量826传递到池化层828,其中可以由池化层828对中间输出张量826进行下采样、降采样和/或平均化,以生成中间输出张量830。
可以由第二卷积层834使用多个第二权重张量(在图8B中被标记为[W1-0]、[W1-1]和[W1-2])来对中间输出张量830进行处理。第二卷积层832可以具有与图8B所示出的第一卷积层814相似的拓扑,并且可以包括与不同通道相关联的第二卷积层832a、832b和832c。第二权重张量例如可以用于从中间输出张量830中识别特定于对象(例如,手)的特征的图案。作为卷积操作的一部分,如在第一卷积层814中那样,一通道的张量830的各像素块可以与同一通道的第二权重张量相乘以生成乘积,并且可以累加多个乘积以生成总和。然后,还可以由激活函数对每个总和进行处理以生成中间输出,然后该中间输出数据可以形成中间输出张量836。中间输出张量836可以表示以下多个特征的空间分布:该多个特征表示手且跨不同通道。可以可选地将中间输出张量836传递到池化层838,在该池化层处可以对中间输出张量836进行下采样、降采样或平均化,以生成中间输出张量840。
然后,可以将中间输出张量840传递通过全连接层842,该全连接层可以包括多层感知器(multi-layer perceptron,MLP)。图8C的右侧示出了全连接层842的示例。如图8C所示,全连接层842可以包括第一层节点846和第二层节点848。第二层中的各个节点连接到第一层的每个节点。第一层节点846可以将多个输入(例如,中间输出张量840)与第三权重张量(在图8C中被标记为[W2])相乘以生成多个总和(例如,总和850a和850b),并且可以由激活函数对该多个总和进行处理以生成神经网络输出852。神经网络输出852可以表示:图像804中的对象是否表示手这一分类、以及手在该图像中的可能像素位置。返回参照图8B,全连接层842可以包括与不同通道的第三权重张量(在图8C中被标记为[W2-0]、[W2-1]和[W2-2])相关联的层842a、842b和842c,并且神经网络输出852可以提供针对每个通道的分类。
DNN 810可以在提供用于支持DNN计算的计算资源和存储资源的硬件系统上实现。例如,该硬件系统可以包括存储器,该存储器用于存储每个神经网络层的输入数据、输出数据和权重。此外,该硬件系统可以包括计算电路,例如通用的中央处理单元(CPU)、专用的算术硬件电路等,所述计算电路用于执行每个神经网络层的计算。计算电路可以从存储器中读取神经网络层的输入数据和权重,执行该神经网络层的计算以生成输出数据,并将该输出数据存储回存储器。该输出数据可以作为下一神经网络层的输入数据被提供,或者作为输入图像的整个神经网络的分类输出被提供。
尽管可以通过增加输入图像的分辨率来提高图像处理操作的准确性,但是对高分辨率图像执行图像处理操作可能需要大量的资源和功率,这尤其可能会在诸如移动设备等资源受限的设备中产生挑战。具体地,在使用DNN 810来执行图像处理操作的情况下,可以增加神经网络层(例如,第一卷积层814、第二卷积层834和全连接层842)的大小,以使每个层具有足够数量的节点来对高分辨率图像中的像素进行处理。此外,随着待检测的特征图案变得更加复杂和详细,也可以增加DNN 810中的卷积层的数量以使用更多的卷积层来检测特征图案的不同部分。但是扩展神经网络层可能会导致该层的计算电路执行更多的计算,而增加神经网络层的数量也可能会增加为图像处理操作执行的总计算。此外,由于计算依赖于从存储器中读取的输入数据和权重、以及输出数据在存储器中的存储,因此扩展神经网络还可能会增加存储器与计算电路之间的数据传输,这进而会增加功耗。
另外,待检测的目标对象通常仅由多个像素的一小子集表示,这导致了图像内的空间稀疏性。此外,目标对象的像素可能仅与多个波长通道的一小子集相关联,这导致了跨不同通道的图像的通道稀疏性。因此,在生成、传输和处理对于对象检测/追踪操作无用的像素数据时浪费了大量功率,这进一步降低了图像感测和处理操作的整体效率。
图8D和图8E示出了空间稀疏性的示例,而图8F示出了通道稀疏性的示例。图8D示出了图像860和对应的空间稀疏图862。如图8D所示,在图像860中,只有像素组863、864、865和866包括这样的特征图案:所述特征图案可被分析以确定这些特征图案是否形成待检测/追踪的感兴趣对象(例如,飞机、建筑物、桥梁等)的部分。但是其余像素是空白物理空间(例如,天空)的部分,并且不具有待分析对象的可检测特征图案。在图8E中示出了空间稀疏性的另一示例,该图示出了图像870及其对应的空间稀疏图872。如图8E所示,在图像870中,像素组874包括这样的特征图案:所述特征图案可被分析以确定这些特征图案是否形成待检测/追踪的感兴趣对象(例如,熊)的部分。但是其余像素是空白物理空间(例如,风景)的部分,并且不具有待分析对象的可检测特征图案。如图8D和图8E所示,空间稀疏图(其指示了像素在图像中的空间位置,该图像包含用于检测对象的特征图案的有用信息)通常在采集不同场景和不同对象的不同输入图像之间发生变化。此外,由于对象的移动,空间稀疏图还可以在一场景中针对该对象采集到的一系列图像中发生改变。
图8F示出了用于不同图像(被标记为图像0至图像7)的通道稀疏图880a至880h的示例。每个通道稀疏图可以指示图像中存在或不存在出自通道0至12中的特定通道。每个通道例如可以表示光的波长范围、可见颜色通道等。带阴影的通道可以指示在图像中存在该通道。一图像可以包括多个通道,使得该图像中的各像素表示多个通道中的强度。例如,图像0中存在通道6、8和9,使得图像0可以被分割成表示通道6中的强度的空间分布的图像、表示通道8中的强度的空间分布的图像、以及表示通道9中的强度的空间分布的图像(与图6D中所示出的类似)。与图8D和图8E中的空间稀疏图类似,通道稀疏图可能会在各图像之间发生改变,因为不同的图像可能会采集不同的特征图案、且不同的特征图案可能会由不同通道中的不同强度分布来表示。
输入相关的动态稀疏图像处理器
如上所述,采集高分辨率图像、并使用经训练的多层神经网络来处理高分辨率图像可以提高图像处理操作的准确性,但是尤其是对于计算资源和存储资源以及功率非常有限的移动设备而言,相关联的计算资源和存储资源以及功耗可能是难以承受的。图9A示出了可以解决以上问题中的至少一些问题的动态稀疏图像处理器900的示例。参照图9A,动态稀疏图像处理器900包括数据稀疏图生成电路902、门控电路904和处理电路906。数据稀疏图生成电路902可以从存储器910中读取输入数据908,然后生成数据稀疏图912以选择输入数据908中的待由处理电路906处理的第一子集。门控电路904可以选择性地从存储器910中读取输入数据908的第一子集以作为稀疏输入数据909,并向处理电路906提供稀疏输入数据909,该处理电路可以对输入数据908的第一子集执行稀疏图像处理操作以生成处理输出914。如以下将所描述的,动态稀疏图像处理器900可以在集成电路(例如神经网络硬件加速器)中实现。
具体地,输入数据908可以包括一组或多组数据元素,其中每组数据元素与多个通道中的一个通道相关联。每组可以包括一张量。在一些示例中,输入数据908可以包括图像数据,其中每组数据元素表示特定波长通道的一图像帧,并且一数据元素可以表示该图像帧的一像素值。输入数据908可以包括与多个通道相关联的多个图像帧。在一些示例中,输入数据908可以是来自前一神经网络层的中间输出数据,并且可以包括由前一神经网络层提取的目标对象的特征。每组数据元素可以指示特定通道中不存在/存在某些特征、以及这些特征在该通道的图像帧中的位置。在一些示例中,如以下将论述的,可以基于对神经网络层的中间输出数据进行压缩来生成输入数据908。在一些示例中,可以通过在中间输出数据的每组数据元素内执行平均池化操作来生成输入数据908,使得输入数据908保持通道的属性、但具有减小的组尺寸。在一些示例中,还可以基于跨中间输出数据的多组数据元素执行平均池化操作来生成输入数据908,以减少输入数据908中所表示的组/通道的数量。另外,输入数据908还可以包括待与前一神经网络层的图像数据和/或中间输出数据进行组合的神经网络层的权重。
如图9A所示,数据稀疏图912可以包括通道稀疏图912a和空间稀疏图912b。通道稀疏图912a可以指示与待从多组数据中选择的一组或多组数据元素相关联的一个或多个通道,而空间稀疏图912b可以指示在该一组或多组数据元素中被选择为输入数据908的第一子集的部分的一组或多组中的数据元素。
通道门控和空间门控
在一些示例中,通道稀疏图和空间稀疏图都可以包括二元掩模阵列,其中每个二元掩模具有两个二进制值(例如,0和1)中的一个值。图9B示出了通道稀疏图912a和空间稀疏图912b的示例。图9B的左侧示出了通道稀疏图912a的示例,该通道稀疏图可以包括与多个通道相对应的一维二元掩模阵列,其中每个二元掩模指示特定通道是否被选择。在图9B中,带阴影的二元掩模(表示1)可以指示对应的通道被选择,而空白的二元掩模(表示0)可以指示对应的通道未被选择。图9B的右侧示出了空间稀疏图912b的示例。在一些示例中,空间稀疏图912b可以包括与图像帧的多个像素相对应的二维二元掩模阵列,其中每个二元掩模指示图像帧的对应像素是否将被选择为输入数据908的第一子集的部分。在一些示例中,空间稀疏图912b可以包括与神经网络层的中间输出数据(由图9B中的O0、O1、O2、……O11表示)相对应的一维二元掩模阵列。
返回参照图9A,门控电路904可以基于数据稀疏图912来选择性地将输入数据908的第一子集读取到处理电路906,该处理电路可以对输入数据908的第一子集执行稀疏图像处理操作以生成处理输出914。尽管图9A示出了门控电路904与处理电路906是分开的,但是在一些示例中,门控电路904也可以是处理电路906的一部分。例如,在处理电路906实现多层神经网络(例如,DNN 810)的情况下,门控电路904可以包括用于实现每个神经网络层的空间门控电路和通道门控电路的子电路。另外,每个神经网络层的空间门控电路和通道门控电路还可以接收不同神经网络层的不同数据稀疏图912。
图9C示出了处理电路906的示例,该处理电路包括DNN 810、空间门控电路和通道门控电路以形成动态稀疏神经网络。在图9C的示例中,门控电路904包括:用于选择第一卷积层814的输入数据和权重的第一门控层924、用于选择第二卷积层834的输入数据和权重的第二门控层934、以及用于选择全连接层842的输入数据和权重的第三门控层944。门控层可以包括通道门控电路,该通道门控电路用于基于通道稀疏图(例如,通道稀疏图912a0、912a1和912a2(被标记为c-图0、c-图1和c-图2))来选择神经网络层的权重。在一些示例中,门控层还可以包括空间门控电路,该空间门控电路用于基于空间稀疏图(例如,空间稀疏图912b0、912b1和912b2(被标记为s-图0、s-图1和s-图2))来选择神经网络层的输入数据。在一些示例中,空间门控电路还可以基于通道稀疏图来选择输入数据,以滤除与在通道稀疏图中未被选择的通道相关联的输入数据。尽管图9C示出了每个门控层包括通道门控电路和空间门控电路,但是在一些示例中,门控层可以包括通道门控电路或空间门控电路。
例如,第一门控层924可以包括第一通道门控电路924a,该第一通道门控电路用于基于在通道稀疏图912a0中所指示的所选择通道来选择性地读取一个或多个第一权重张量[W0-0]、[W0-1]和[W0-2]。另外,第一门控层924可以包括第一空间门控电路924b,该第一空间门控电路用于选择图像804中与空间稀疏图912b0中的所选择像素相对应的像素。第一门控层924还可以为未被选择作为第一卷积层814的稀疏输入的部分的其它像素和权重张量提供零值(或其它预定值)。然后,第一卷积层814可以对包括所选择的第一权重张量和像素的稀疏输入执行计算,以生成中间输出张量826,随后由池化层828进行可选的池化操作以生成中间输出张量830。
另外,第二门控层934可以包括第二通道门控电路934a,该二通道门控电路用于基于在通道稀疏图912a1中所指示的所选择通道来选择一个或多个第二权重张量[W1-0]、[W1-1]和[W1-2]。另外,第二门控层934可以包括第二空间门控电路934b,该第二空间门控电路用于选择中间输出张量830中与空间稀疏图912b1中的所选择数据元素相对应的数据元素。第二门控层934还可以为未被选择作为第二卷积层834的稀疏输入的部分的其它像素和权重张量提供零值(或其它预定值)。然后,第二卷积层834可以基于包括所选择的第二权重张量和中间输出张量830的数据元素的稀疏输入来生成中间输出张量836,随后由池化层838进行可选地池化操作以生成中间输出张量840。
此外,第三门控层944可以包括第三通道门控电路944a,该第三通道门控电路用于基于在通道稀疏图912a2中所指示的所选择通道来选择一个或多个第三权重张量[W2-0]、[W2-1]和[W2-2]。另外,第三门控层944可以包括第三空间门控电路944b,该第三空间门控电路用于选择中间输出张量840的与空间稀疏图912b2中的所选择数据元素相对应的数据元素。第三门控层944还可以为未被选择作为全连接层842的稀疏输入的其它像素和权重张量提供零值(或其它预定值)。然后,全连接层842可以基于稀疏输入,来生成作为处理输出914的一部分的输出852。
在图9C中,除了基于图像804来动态地更新通道稀疏图912a和空间稀疏图912b之外,数据稀疏图生成电路902还可以基于该神经网络层的输入,来为第一卷积层814、第二卷积层834和全连接层842中的每个生成不同的通道稀疏图912a和不同的空间稀疏图912b。例如,数据稀疏图生成电路902可以基于图像804来为第一卷积层814生成通道稀疏图912a0和空间稀疏图912b0。此外,数据稀疏图生成电路902还可以基于中间输出张量830来为第二卷积层834生成通道稀疏图912a1和空间稀疏图912b1,并且基于中间输出张量840来为全连接层842生成通道稀疏图912a2和空间稀疏图912b2。
这样的布置允许处理电路906为每个神经网络层选择输入数据(其可以是来自前一神经网络层的即时输出数据)的不同子集和多个权重的不同子集,以执行该神经网络层的计算。此外,对于不同的神经网络层以及对于不同的神经网络拓扑,可以使用不同类型的门控。例如,仅将空间门控应用于一些神经网络层的输入数据,其中所有通道由通道稀疏图使能。此外,仅将通道门控应用于一些其它神经网络层的输入数据,其中该输入数据的各个通道的所有像素/数据元素都被提供给这些神经网络层。
使不同的通道稀疏图和空间稀疏图用于不同的神经网络层以及不同的神经网络拓扑,可以在利用神经网络计算的空间稀疏性和通道稀疏性方面提供更细的粒度,这进而可以进一步提高图像处理操作的准确性和效率。具体地,如上所述,第一卷积层814和第二卷积层834可以被配置为从输入图像804中检测目标对象的不同组特征,而全连接层842可以被配置为对这些特征执行分类操作。例如,第一卷积层814可以检测用于将对象与背景区分开的基本特征(例如边缘),而第二卷积层834可以检测特定于待检测的目标对象的特征。不同神经网络层的输入特征和输出特征可以位于输入数据中的不同位置处,并且还可以与不同通道相关联。因此,可以使用不同的通道稀疏图和空间稀疏图来选择输入数据的与第一卷积层814、第二卷积层834和全连接层842的不同通道相关联的不同子集。
另外,一些网络拓扑(例如,掩模基于区域的卷积神经网络(Mask R-CNN))不能很好地与统一门控一起运作,因为这些网络拓扑可能会包括不同的子网络(例如特征提取器、区域建议网络、感兴趣区域(ROI)池化、分类等),这些子网络中的每个子网络具有对空间门控和通道门控的不同的敏感性(例如,在准确性和功率方面)。因此,处理电路906可以通过针对不同的神经网络层以及针对不同的神经网络拓扑提供不同的空间稀疏图和不同的通道稀疏图,来为每个神经网络层以及为特定的神经网络拓扑选择正确的输入数据的子集以执行图像处理操作,这进而可以在降低功率的同时进一步提高图像处理操作的准确性。
在一些示例中,可以将通道门控和空间门控的不同组合应用于神经网络的不同神经网络层。例如,如上所述,对于一些神经网络层,使用通道门控或空间门控中的一者来选择输入的子集,而对于一些其它神经网络层,使用通道门控和空间门控这两者来选择输入的子集。具体地,在一些情况下,仅使用通道门控或空间门控中的一者来选择输入的子集,以减少准确性损失。此外,在一些情况下,如果对象特征倾向于分布在不同的通道中,则对于特征提取中所涉及的神经网络级(例如,第一卷积层814、第二卷积层834等),可以禁用通道门控。在这种情况下,可以使用通道门控来向全连接层842提供稀疏输入。
训练
图9C中的包括DNN 810以及门控层924、934和944的动态稀疏神经网络可以以在某些稀疏约束下最大化任务准确性的目标来进行训练。稀疏性引起的损失可以被定义为如下:
在等式2中,C稀疏,l和C稠密,l分别表示在具有动态稀疏性的情况下卷积层l中的乘法和加法(multiple-and-add,MAC)操作的数量、以及在不具有动态稀疏性的情况下卷积层1中的MAC操作的数量。θ是用于控制整个网络的稀疏性的超参数,该超参数进而会控制整个计算。
在一些示例中,尤其是在大型网络中,仅依赖于稀疏性引起的损失可能会导致跨多个层的稀疏性分布不均匀。例如,在残差神经网络(ResNet)中,由于残差连接可以恢复特征图维度,因此一些层实际上可以完全跳过。为了维持每个单独层的足够密度,损失函数可以包括损失项L惩罚,如果一层的稀疏性超过某个阈值B,则该损失项L惩罚会惩罚该损失,该损失项如下所示:
在等式3中,比值C稀疏,li/C稠密,li可以表示层li所需的计算的百分比。MSE可以表示均方函数,而西塔θ可以表示一层的目标稀疏性。MSE输出可以表示每个层的比值C稀疏,li/C稠密,li与西塔θ之间的总差异。随着稀疏性提高,C稀疏,li/C稠密,li可以变小,这通常会引起更低的罚值。最小值(minimum,Min)函数可以将MSE输出与由B上表示的阈值进行比较,以获得MSE输出与该阈值之间的最小值,从而为每个层生成罚值。使用最小值函数,B上可以是罚值的上限。然后,可以将每个层的罚值相加,以生成损失项L惩罚。
在对图9C中的动态稀疏神经网络的训练中要优化的总损失函数L可以基于以下三个损失的加权总和:任务损失L任务、稀疏性引起的损失L稀疏和惩罚项L惩罚:
L=L任务+αL稀疏+βL惩罚 (等式4)
在等式4中,任务损失L任务可以是没有门控层的DNN 810的损失函数、且可以基于DNN 810的输出与一组训练输入的目标输出之间的差异,而L稀疏和L惩罚在以上等式2和等式3中进行了定义。权重α和β可以提供一种方式以告知训练过程是强调减小稀疏性引起的损失L稀疏(这可以降低稀疏性),还是强调减小惩罚项L惩罚(这可以提高稀疏性)。在一些示例中,权重α和β都可以为1.0。
用于输入相关的动态门控的存储器传输操作
在图9C中的示例中,每个门控层可以基于神经网络层的通道稀疏图和空间稀疏图,从存储器910中选择性地读取像素或中间输出张量的数据元素、以及权重张量,以减少用于支持每个神经网络层处的神经网络计算的存储器数据传输。在一些示例中,每个神经网络层可以跳过诸如涉及零输入(例如,像素、中间输出张量的数据元素、权重等)的加法和乘法等计算,以进一步减少对稀疏输入的处理所涉及的计算。
在一些示例中,为了减少生成神经网络层的空间稀疏图和通道稀疏图所涉及的存储器数据传输,图像处理电路可以将来自前一神经网络层的中间输出张量、以及经压缩的中间输出张量这两者存储在存储器910处。然后,数据稀疏图生成电路902可以从存储器910中读取经压缩的中间输出张量以生成数据稀疏图912。与数据稀疏图生成电路902从存储器910中读取整个中间输出张量以生成数据稀疏图912的情况相比,这样的布置允许数据稀疏图生成电路902读取更少的数据,这可以减少数据稀疏图生成中所涉及的存储器数据传输、以及稀疏图像处理操作中所涉及的总存储器数据传输。
图9D示出了生成经压缩的中间输出张量、以及将该经压缩的中间输出张量存储在存储器910处的示例。如图9D所示,存储器910可以存储第一权重张量[W0]、第二权重张量[W1]、中间张量830、以及通道张量950a和空间张量950b。具体地,在第一卷积层814(以及可选地,池化层828)生成中间张量830之后,DNN 810可以对该中间张量830执行附加的池化操作,以生成通道张量950a和空间张量950b。在图9D中,中间张量830可以包括Cl数量组数据元素,其中每组数据元素具有维度为Wl×Hl的张量并且与一个通道相对应。可以通过组间池化操作952b(例如,平均池化、下采样等)来在每组数据元素内生成通道张量950a,并且该通道张量950a可以保持与中间输出张量830相同的通道模式和相同数量的组,但是每组具有减少的数据元素数量(例如,图9D中的一个数据元素)。另外,可以通过逐通道池化操作952a(例如,平均池化、下采样等)来跨中间张量830的多个通道生成空间张量950b,并且该空间张量950b可以保持与中间张量830相同的组中的数据元素数量,但是具有减少的通道数量和组数量(例如,图9D中的一个通道/组)。
然后,数据稀疏图生成电路902可以从存储器910中读取通道张量950a和空间稀疏张量950b、而不读取中间张量830,并基于通道张量950a生成通道稀疏图912a1、且基于空间张量950b生成空间稀疏图912b1。由于数据稀疏图生成电路902不需要针对数据稀疏图生成读取中间张量830,因此可以减少数据稀疏图生成所涉及的存储器数据传输。
通道门控电路934a可以基于通道稀疏图912a1、将第一权重[W0]的子集从存储器910中读取到第二卷积层834,而空间门控电路934b可以基于空间稀疏图912b1、将中间张量830的子集从存储器910中读取到第二卷积层834。在完成第二卷积层834(以及可选地,池化层838)处的计算并且生成中间张量840之后,可以对中间张量840执行另一组间池化操作952a以生成通道张量960a,并且可以对中间张量840执行另一逐通道池化操作952b以生成空间张量960b。可以将通道张量960a、空间张量960b以及中间张量840存储回存储器910。与第二权重[W1]一起,所有这些数据可以支持下一神经网络层(例如,全连接层842)的计算。
在一些示例中,数据稀疏图生成电路902可以基于检测目标对象在输入数据中的特征图案和/或通道模式来生成数据稀疏图912。例如,数据稀疏图912可以根据通道张量(例如,图9D中的通道张量950a/960a)来检测输入数据中与目标对象(或目标对象的特征)相关联的通道模式,并基于检测到的通道模式来生成通道稀疏图。此外,数据稀疏图912可以根据空间张量(例如,图9D中的空间张量950b/960b)来检测输入数据中表示目标对象的特征的像素的空间图案,并基于检测到的像素的空间图案来生成空间稀疏图。
基于机器学习的门控电路
在一些示例中,数据稀疏图生成电路902可以使用机器学习模型(例如,神经网络)来学习输入数据中的特征图案和通道模式,以生成数据稀疏图。图10A示出了数据稀疏图神经网络1000的示例,该数据稀疏图神经网络可以是数据稀疏图生成电路902的一部分。在一些示例中,数据稀疏图神经网络1000可以是图9C中的门控层924、934和944的一部分。如图10A所示,数据稀疏图神经网络1000可以包括一个或多个数据稀疏图神经网络,该一个或多个数据稀疏图神经网络包括通道稀疏图神经网络1002和空间稀疏图神经网络1004。通道稀疏图神经网络1002可以接收根据图像处理神经网络(例如,DNN 810)的神经网络层的输入数据生成的通道张量1006、并生成通道稀疏图1008(被标记为c-图),而空间稀疏图神经网络1004可以接收根据该输入数据生成的空间张量1016、并生成空间稀疏图1018(被标记为s-图)。
具体地,通道稀疏图神经网络1002可以包括全连接层网络1020,并且实现了argmax激活函数1022。全连接层网络1020可以接收通道张量1006、并生成具有各个软掩模的软通道稀疏图1024,每个软掩模具有一数值范围(例如,在0和1之间)中的数字,以指示通道(对于软通道稀疏图)或像素(对于软空间稀疏图)与感兴趣对象相关联的概率。可以将激活函数(例如,argmax函数)应用于该组软掩模以生成一组二元掩模,其中每个二元掩模具有用于选择通道或像素的二进制值(例如,0或1)。另外,空间稀疏图神经网络1004可以包括卷积层网络1030,并且实现了极大(argmax)激活函数1032的自变量。卷积层网络1030可以接收空间张量1016、并生成软空间稀疏图1034,其中每个软掩模具有一数值范围(例如,在0和1之间)中的数字。可以将argmax激活函数1032应用于软空间稀疏图1034以生成二元空间稀疏图1018,该二元空间稀疏图也可以包括多个二元掩模,每个二元掩模具有一二进制值(例如,0或1)。argmax函数可以表示对通道和像素的如下分布的采样,该分布使该采样表示感兴趣对象的一部分可能性最大化。
通道稀疏图神经网络1002和空间稀疏图神经网络1004都可以通过输入数据的训练集来进行训练。在数据稀疏图生成电路为图像处理神经网络的每个神经网络层生成数据稀疏图的情况下,可以使用针对该图像处理神经网络层的输入数据的训练集来训练数据稀疏图神经网络,使得不同的图像处理神经网络层可以具有不同的数据稀疏图。
可以使用梯度下降方案来训练神经网络,该梯度下降方案包括前向传播操作、损失梯度操作和反向传播。通过前向传播操作,具有初始的一组权重的每个神经网络层可以对一组训练输入执行计算以计算输出。可以执行损失梯度操作以计算该输出与该神经网络针对训练输入的目标输出之间的差异(损失)相对于该输出的梯度,作为损失梯度。训练操作的目标是使所述差异最小化。通过反向传播,可以将损失梯度传播回每个神经网络层以计算权重梯度,并且可以基于该权重梯度来更新每个神经网络层的该一组权重。然而,由通道稀疏图神经网络1002和空间稀疏图神经网络1004生成二元掩模可能会给梯度下降方案带来挑战。具体地,应用于软掩模以生成二元掩模的argmax激活函数1022和1032是不可微分的数学运算。这使根据二元掩模来计算损失梯度以支持反向传播操作具有挑战性。
为了克服由激活函数的不可微分性带来的挑战,数据稀疏图神经网络可以采用重参数化技术和近似技术(例如,Gumbel-Softmax技巧)来提供argmax的可微分近似。图10B示出了在通道稀疏图神经网络1002和空间稀疏图神经网络1004中执行的Gumbel-Softmax技巧1040的示例。如图10B所示,可以由全连接层网络1020根据输入数据1042来生成软通道稀疏图1024,而可以由卷积层网络1030根据输入数据1042生成软空间稀疏图1034。输入数据1042可以包括维度为Wl×Hl的张量,其中为神经网络层l定义了Cl数量个通道。软通道稀疏图1024可以具有用于Cl个通道中的每个通道的一组软掩模,而软空间稀疏图1034可以具有用于Wl×Hl维度内的每个数据元素的一组软掩模。可以将来自Gumbel分布的随机数1050添加到软通道稀疏图1024和软空间稀疏图1034的软掩模中以作为采样噪声,随后对具有采样噪声的软掩模应用柔性最大值函数1052,从而生成包括二元通道稀疏图1008和二元空间稀疏图1018的二元掩模。柔性最大值函数可以提供图10A中的argmax函数1022/1032的可微分近似,而添加来自Gumbel分布的随机数允许(使用argmax或柔性最大值近似的)采样被重构为确定性函数,这允许使用该确定性函数的参数来计算损失梯度以用于反向传播操作。基于柔性最大值函数的确定性函数的示例如下所示:
在以上等式5中,yi可以表示与索引i相关联的通道或像素的二元掩模。Gi表示来自Gumbel分布的随机数,而π(πi和πj)表示作为输入的软掩模值。τ表示温度变量,该温度变量确定新的样本接近argmax函数的程度。在一些示例中,τ的值可以为0.7。
然后,图9A中的门控电路904(图10B中未示出)可以使用二元通道稀疏图1008和二元空间稀疏图1018来读取稀疏输入数据1056,该稀疏输入数据例如包括Wl×Hl维度中的像素数据/中间输出数据的、与Cl个通道的子集相关联的子集。在图9A中,稀疏输入数据1056可以具有与用于神经网络层l+1的Cl+1个通道相关联的Wl+1×Hl+1维度。
图10C示出了用于通道稀疏图神经网络1002和空间稀疏图神经网络1004的训练操作的示例。如图10C所示,用于通道稀疏图神经网络1002的训练操作可以涉及前向传播操作1060、损失梯度操作1062和反向传播操作1064,而用于空间稀疏图神经网络1004的训练操作可以涉及前向传播操作1070、损失梯度操作1072和反向传播操作1074。
具体地,作为前向传播操作1060的一部分,具有一组权重的全连接层网络1020可以接收训练通道张量1066,并生成软通道稀疏图1024。损失梯度操作1062可以计算关于等式5中的参数的损失梯度1069。损失梯度1069可以基于软通道稀疏图1024和与训练通道张量1066相关联的目标软通道稀疏图1068之间的差异,并且基于等式5中的确定性函数关于软通道稀疏图1024的导数。然后,可以将损失梯度1069传播回全连接层网络1020的每个层以用于计算每个层处的权重梯度,并且全连接层网络1020的每个层处的权重可以基于所述权重梯度来更新。
另外,作为前向传播操作1070的一部分,具有一组权重的卷积层网络1030可以接收训练通道张量1066,并生成软通道稀疏图1024。损失梯度操作1072可以计算关于等式5中的参数的损失梯度1079。损失梯度1079可以基于软空间稀疏图1034和与训练空间张量1076相关联的目标软空间稀疏图1078之间的差异,并且基于等式5中的确定性函数关于软空间稀疏图1034的导数。然后,可以将损失梯度1079传播回卷积层网络1030的每个层以用于计算每个层处的权重梯度,并且卷积层网络1030的每个层处的权重可以基于所述权重梯度来更新。
神经网络硬件加速器的示例实施方式
在一些示例中,包括DNN 810、通道稀疏图神经网络1002和空间稀疏图神经网络1004的动态稀疏图像处理器900可以在神经网络硬件加速器上实现。图11A示出了神经网络硬件加速器1100的示例。如图11A所示,神经网络硬件加速器1100可以包括片上本地存储器1102、计算引擎1104、输出缓冲器1106和控制器1108。片上本地存储器1102可以存储用于支持神经网络层的计算的数据,这些数据包括数据稀疏图912、权重1110、输入数据1112和输出数据1114。如以下将描述的,片上本地存储器1102还可以存储地址表1115以促进将数据传输到片上本地存储器1102。片上本地存储器1102例如可以使用静态随机存取存储器(SRAM)、磁阻随机存取存储器(magnetoresistive random-access memory,MRAM)等来实现。
另外,计算引擎1104可以包括处理元件(例如,处理元件1105)阵列,每个处理元件包括用于执行神经网络层的神经网络计算的算术电路(例如,乘法器和加法器)。例如,处理元件可以包括乘法器1116和加法器1118,该乘法器用于生成输入数据元素(i)与权重元素(w)之间的乘积以生成乘积,该加法器用于将该乘积与部分总和(p_in)相加以生成更新后的部分总和(p_out),以作为乘法和加法(MAC)操作的一部分。在一些示例中,处理元件阵列可以被布置为脉动阵列。此外,输出缓冲器1106可以为计算引擎1104的输出提供临时存储。输出缓冲器1106还可以包括这样的电路:所述电路用于对计算引擎1104的输出执行各种后处理操作(例如,池化、激活函数处理等),以生成神经网络层的中间输出数据。
神经网络硬件加速器1100还可以经由总线1124连接到其它电路(例如主处理器1120和片外外部存储器1122)。主处理器1120可以托管使用动态稀疏图像处理器900的处理结果的应用(例如AR/VR/MR应用)。片外外部存储器1122可以存储待由DNN 810处理的输入数据、以及其它数据,该其它数据例如为:DNN 810、通道稀疏图神经网络1002和空间稀疏图神经网络1004的权重,以及每个神经网络层处的中间输出数据。该数据中的一些数据(例如输入数据和权重)可以由主处理器1120存储,而中间输出数据可以由神经网络硬件加速器1100存储。在一些示例中,片外外部存储器1122可以包括动态随机存取存储器(DRAM)。神经网络硬件加速器1100还可以包括直接存储器访问(direct memory access,DMA)引擎,该DMA引擎用于支持片外外部存储器1122与本地存储器1102之间的数据传输。
为了执行神经网络层的计算,控制器1108可以执行以下指令:所述指令用于从外部片外存储器1122中读取神经网络层的输入数据和权重,并将该输入数据和权重存储在片上本地存储器1102。此外,在计算完成且输出缓冲器1106将中间输出数据存储在片上本地存储器1102之后,控制器1108可以读取中间输出数据并将其存储在外部片外存储器1122处。为了促进数据在片外存储器1122与片上本地存储器1102之间的传输,地址表1115可以存储有外部片外存储器1122的一组物理地址,控制器1108将在该一组物理地址处读取输入数据和权重、并存储中间输出数据。
在一些示例中,地址表1115可以是地址转译表(例如转译后备缓冲区(TLB))的形式,该地址转换表进一步提供片上本地存储器1102的地址与外部片外存储器1122的地址之间的转译。图11B示出了地址表1115的示例。如图11B所示,地址表1115可以包括具有多个条目的页表,其中该页表中的每个条目被映射到片上本地存储器1102中的块/页。片上本地存储器1102中的页例如可以由生成指令的编译器通过存储器分配操作而预确定为存储某些数据。例如,条目1130可以被映射到片上本地存储器1102的地址A0,该地址A0由编译器分配为存储第一通道的第一权重张量[W0-0]的元素。条目1130还存储有外部片外存储器1122的存储有[W0-0]的地址A1。此外,条目1132可以被映射到片上本地存储器1102的地址B0,该地址B0被分配为存储第二通道的第二权重张量[W0-1]的元素。条目1132还存储有片外外部存储器1122的存储有[W0-1]的地址B1。此外,条目1134可以被映射到片上本地存储器1102的地址C0,该地址C0被分配为存储第一通道的输入数据的元素,这些元素包括I0,0-0、I0,1-0、I0,2-0、I0,3-0。条目1134还存储有片外外部存储器1122的、存储有第一通道的中间输出的元素的地址C1。另外,条目1136可以被映射到片上本地存储器1102的地址D0,该地址D0被分配为存储第二通道的中间输出的元素,这些元素包括I0,0-1、I0,1-1、I0,2-1、I0,3-1。条目1134还存储有片外外部存储器1122的、存储有第二通道的中间输出的元素的地址D1。
为了将数据读取到本地存储器1102中的地址、或从本地存储器1102中的地址读取数据,控制器1108可以参考地址表1115、并确定映射到本地存储器1102中的该地址的条目。然后,控制器1108可以检索存储在该条目中的、片外外部存储器1122的地址,然后在本地存储器1102的地址与片外外部存储器1122的地址之间执行数据传输。例如,为了执行神经网络层的计算,控制器1108可以在本地存储器1102的地址A0处存储第一通道的第一权重张量[W0-0]、在本地存储器1102的地址B0处存储第二通道的第二权重张量[W0-1]、在本地存储器1102的地址C0处存储第一通道的输入数据、并且在本地存储器的地址D0处存储第二通道的输入数据。控制器1108可以访问地址表1115中、映射到本地存储器1102的地址A0、B0、C0和D0的条目,以检索片外外部存储器1122的地址A1、B1、C1和D1,从检索到的地址中读取权重张量和输入数据,并将权重张量和输入数据存储到本地存储器1102的A0、B0、C0和D0处。然后,控制器1108可以控制计算引擎1104从本地存储器1102中读取该输入数据和权重,以执行计算。在输出缓冲器1106完成对计算引擎的输出的后处理、并将中间输出存储在本地存储器1102处之后,控制器1108可以参考地址表1115来获取片外外部存储器1122的地址,以接收中间输出、并将中间输出存储回片外外部存储器1122的这些地址处。
图11C至图11E示出了神经网络硬件加速器1100执行稀疏图像处理操作的各操作的示例。控制器1108可以使用计算引擎1104来执行数据稀疏图神经网络1000的计算以生成数据稀疏图912,然后使用数据稀疏图912与地址表1115来选择性地将输入数据的子集和多个权重的子集读取到计算引擎1104,以执行稀疏图像处理操作。具体地,参照图11C,片外存储器1102可以存储用于图像处理神经网络(例如,DNN 810)的每个层的数据稀疏图神经网络1000的权重1140、该图像处理神经网络的每个层的权重1142、DNN 810的已经完成计算的层的且将作为输入提供给DNN 810的其它层的中间输出/输入数据1144、以及从对中间输出1144的池化操作中获取到的空间张量1146和通道张量1148。
在执行DNN 810的层的计算之前,控制器1108可以使用地址表1115来确定外部存储器1122处的、该层的数据稀疏图神经网络1000的权重1140、以及根据前一层的中间输出生成的空间张量和/或通道张量的地址。数据稀疏图神经网络1000可以包括用于执行通道门控的通道稀疏图神经网络1002、用于执行空间门控的空间稀疏图神经网络1004、或者用于执行空间门控和通道门控这两者的神经网络1002和1004。然后,控制器1108可以从片外外部存储器1122读取权重、以及空间张量和/或通道张量,并将它们存储在本地存储器1102处。然后,控制器1108可以控制计算引擎1104使用权重1140、以及空间张量1146和/或通道张量1150,来执行神经网络计算以生成数据稀疏图912、并将数据稀疏图912存储在本地存储器1102处,该数据稀疏图可以包括DNN 810的该层的通道稀疏图912a和/或空间稀疏图912b。
然后,控制器1108可以使用地址表1115和数据稀疏图912来实现门控电路904,以选择性地读取中间输出1144的作为DNN 810层的输入数据的子集。控制器1108还可以选择性地将DNN 810层的权重1142的子集读取到本地存储器1102。图11D示出了控制器1108在选择输入数据1144的子集时的示例操作。参照图11D中的操作1160,控制器1108可以接收如下指令1162:所述指令用于将具有坐标(0,0)且与第一通道(通道0)相关联的输入数据元素I0,0-0存储在本地存储器1102的地址C0处。控制器1108还可以从本地存储器1102中读取空间稀疏图912b。在操作1164中,控制器1108可以确定空间稀疏图912b在坐标(0,0)处的二元掩模是否等于一。如果该二元掩模不等于一(这表明该输入数据元素不是将要被读取的),则在操作1166中,控制器1108可以在地址C0处写入无效值(例如,零)。另一方面,如果空间稀疏图912b在坐标(0,0)处的二元掩模等于一,则在操作1168中,控制器1108可以:基于被映射到本地存储器1102的地址C0的条目来参考地址表1115的条目1134,从条目1134中检索片外外部存储器1122的地址C1,并将输入数据元素I0,0-0从片外外部存储器1122的地址C1读取到本地存储器1102的地址C0。
在一些示例中,控制器1108可以基于通道稀疏图912a和空间稀疏图912b这两者来选择输入数据1144的子集。具体地,参照图11D中的操作1170,控制器1108可以从本地存储器1102中读取通道稀疏图912a和空间稀疏图912b这两者。在操作1172中,控制器1108还可以确定空间稀疏图912b在坐标(0,0)处的二元掩模是否等于一。如果通道稀疏图912a针对通道0的二元掩模为零或空间稀疏图在坐标(0,0)处的二元掩模为零(在操作1164中确定),则在操作1166中,控制器1108可以在地址C0处写入无效值(例如,零)。如果这两个二元掩模都等于一,则在操作1168中,控制器1108可以将输入数据元素I0,0-0从片外外部存储器1122的地址C1读取到本地存储器1102的地址C0。
图11E示出了控制器1108在选择性地读取DNN 810的权重1142的子集时的示例操作1180。参照图11E,控制器1108可以接收如下指令1182:所述指令用于将第一通道的权重张量[W0-0]存储在本地存储器1102的地址A0处。控制器1108还可以从本地存储器1102中读取通道稀疏图912a。在操作1184中,控制器1108可以确定通道稀疏图912a针对通道0的二元掩模是否为一。如果该二元掩模不为一(这表明与通道0相关联的输入数据和权重不是将要被读取的),则在操作1186中,控制器1108可以在地址A0处写入无效值(例如,零)。另一方面,如果通道0处的二元掩模等于一,则在操作1188中,控制器1108可以:基于被映射到本地存储器1102的地址A0的条目来参考地址表1115的条目1130,从条目1130中检索片外外部存储器1122的地址A1,并将权重张量[W0-0]从片外外部存储器1122的地址A1读取到本地存储器1102的地址A0。
在针对神经网络对输入数据和权重到本地存储器1102的读取完成之后,控制器1108可以控制计算引擎1104从本地存储器1102中读取输入数据和权重、并执行神经网络层的计算以生成中间输出。控制器1108还可以控制输出缓冲器1106对中间输出执行组间池化操作952a(例如,平均池化、下采样等)以生成空间张量,并对中间输出执行逐通道池化操作952b以生成通道张量,并将该空间张量和通道张量存储回片外外部存储器1122,以支持下一神经网络层的通道门控和/或空间门控。
如上所述,由于通道门控和/或空间门控,输入数据和权重可以包括稀疏输入数据和权重,该稀疏输入数据和权重填充有不是从片外外部存储器1122中读取的输入数据的子集和权重的子集的无效值(例如,零)。在一些示例中,为了进一步减少对稀疏输入数据和权重进行处理所涉及的计算,计算引擎1104的每个处理元件可以在无效值被接收时旁路掉电路以跳过计算。图11F示出了具有旁路电路的处理元件1105的示例。如图11F所示,除了乘法器1116和加法器1118之外,处理元件1105可以包括禁用电路1190和多路复用器(multiplexor,MUX)1192。当输入数据元素(i)或权重元素(w)中的至少一者是无效值(例如,零)时,禁用电路1190可以(例如,通过将乘法器和加法器的输入接地)禁用乘法器1116和加法器1118,这意味着i与w之间的乘积也具有无效值、并且输入部分总和p_in不被更新。多路复用器1192可以在以下两者之间进行选择:将输入部分总和p_in转发为输出p_out(如果i或w中的至少一者是无效值),或者通过将i与w的乘积和输入部分总和p_in相加来转发更新后的部分总和(如果i和w都具有有效/非零值)。
包括动态稀疏图像处理器的示例图像传感器
在一些示例中,动态稀疏图像处理器900可以是成像系统的一部分,该成像系统还执行稀疏图像采集操作。图12A和图12B示出了成像系统1200的示例。如图12A所示,成像系统1200包括图像传感器1202和主处理器1204。图像传感器1202包括传感器计算电路1206和像素单元阵列1208。传感器计算电路1206包括动态稀疏图像处理器900和编程电路1209。动态稀疏图像处理器900可以接收来自像素单元阵列808的第一图像1210,并对第一图像1210执行稀疏图像处理操作以确定包括感兴趣对象的一个或多个感兴趣区域(ROI),并向编程电路1209发送ROI信息1212。ROI信息例如可以指示从第一图像1210确定的ROI的像素的像素位置。编程电路1209可以基于ROI信息1212来生成编程信号1214,以选择性地使像素单元阵列1208的多个像素单元的子集能够采集第二图像1216,以作为稀疏图像采集操作的一部分。对该多个像素单元的子集的选择例如可以基于第一图像1210中的ROI的像素位置、感兴趣对象在采集第一图像1210的时间与采集第二图像1216的时间之间相对于图像传感器1202的预期移动等。动态稀疏图像处理器900还可以将第一图像1210的和第二图像1216的处理结果1218(例如,对感兴趣对象的检测、感兴趣对象的位置等)发送回主处理器1204,该主处理器可以托管如下应用1220:该应用使用处理结果1218以例如生成输出内容。
在图12A的示例中,成像系统1200可以使用动态稀疏图像处理器900来执行稀疏图像处理操作、以及使用像素单元阵列1208并基于动态稀疏图像处理器900的输出来执行稀疏图像采集操作。这样的布置可以减少在采集和处理对于检测感兴趣对象无用的像素数据时使用的计算资源和存储资源、以及功率,这在允许采集和处理高分辨率的图像的同时,允许在诸如移动设备等资源受限的设备上实现图像系统1200。
图12B示出了图像传感器1202的物理布置的示例。如图12B所示,图像传感器1202可以包括:半导体衬底1250,该半导体衬底1250包括像素单元阵列1208的多个部件中的一些部件(例如像素单元中的光电二极管602);半导体衬底1252,该半导体衬底1252包括像素单元阵列1208的处理电路(例如缓冲器606和量化器607);以及半导体衬底1254,该半导体衬底1254包括传感器计算电路1206,该传感器计算电路可以包括神经网络硬件加速器1100。半导体衬底1250、1252和1254可以被容纳在一半导体封装内以形成芯片。
在一些示例中,半导体衬底1250、1252和1254可以沿(例如,由z-轴表示的)竖直方向形成堆叠。可以提供芯片至芯片铜接合1259,以在像素单元的光电二极管与处理电路之间提供像素互连件;而可以在像素单元的处理电路与传感器计算电路1206之间提供竖直互连件1260和1262,例如硅通孔(through silicon via,TSV)、微型-TSV、铜-铜凸块等)。这样的布置可以减少像素单元阵列1208与传感器计算电路1206之间的多个电连接件的布线距离,这可以提高数据(尤其是像素数据)从像素单元阵列1208到传感器计算电路1206的传输速度、并降低该传输所需的功率。
图13示出了执行稀疏图像处理操作的方法1300的流程图的示例。方法1300例如可以由动态稀疏图像处理器900结合其它部件(例如,传感器计算电路1206和/或主处理器1204)来执行。在一些示例中,方法1300可以由图11A中的神经网络硬件加速器1100来执行,该神经网络硬件加速器可以实现动态稀疏图像处理器900。
方法1300以步骤1302开始,在步骤1302中,将输入数据和权重存储在存储器中。该输入数据包括多组数据元素,每组数据元素与多个通道中的一个通道相关联,所述权重包括多个权重张量,每个权重张量与该多个通道中的一个通道相关联。在一些示例中,输入数据可以包括图像数据,其中每组数据元素表示特定波长通道的图像,并且一数据元素可以表示该图像的一像素值。在一些示例中,输入数据还可以包括目标对象的特征,其中每组数据元素指示某些特征的不存在/存在、以及这些特征在图像中的位置。输入数据例如可以由主处理器1204、动态稀疏图像处理系统900等存储在这样的存储器中:该存储器可以是该动态稀疏图像处理系统的一部分,或处于该动态稀疏图像处理系统的外部。
在步骤1302中,动态稀疏图像处理器900基于输入数据生成数据稀疏图,该数据稀疏图包括通道稀疏图和空间稀疏图,该通道稀疏图指示与一个或多个第一权重张量相关联的一个或多个通道,该空间稀疏图指示所述多组数据元素中的第一数据元素的空间位置。
具体地,如图9B所示,数据稀疏图可以包括通道稀疏图和空间稀疏图。通道稀疏图可以指示与待从所述多组数据元素中选择以支持通道门控的一组或多组数据元素相关联的一个或多个通道,而空间稀疏图可以指示被选择为输入数据的用于支持空间门控的第一子集的一部分的一组或多组数据元素中的数据元素的空间位置。空间位置例如可以包括图像中的像素位置、输入数据张量中的坐标等。在一些示例中,通道稀疏图和空间稀疏图都可以包括二元掩模阵列,其中每个二元掩模具有两个二进制值(例如,0和1)中的一个值。通道稀疏图可以包括与多个通道相对应的一维二元掩模阵列,其中每个二元掩模指示特定通道是否被选择。此外,空间稀疏图可以包括与一组数据元素相对应的一维二元掩模阵列或二维二元掩模阵列,其中每个二元掩模指示每组的对应数据元素是否被选择为输入数据的第一子集的一部分。
数据稀疏图可以由动态稀疏图像处理器900的数据稀疏图生成电路902生成。数据稀疏图生成电路902还可以为图像处理神经网络的每个层生成不同的空间稀疏图和不同的通道稀疏图。在一些示例中,可以针对一些神经网络层执行空间门控,而可以针对一些其它神经网络层执行通道门控。在一些示例中,可以针对一些神经网络层执行空间门控和通道门控这两者的组合。在一些示例中,如图9D所示,数据稀疏图生成电路902可以基于来自存储器的经压缩的中间输出数据来生成稀疏图。
在一些示例中,参照图10A至图10C,数据稀疏图生成电路902可以使用机器学习模型(例如,数据稀疏图神经网络)来学习输入数据中的特征图案和通道模式,以生成数据稀疏图。在一些示例中,数据稀疏图神经网络可以包括通道稀疏图神经网络和空间稀疏图神经网络,该通道稀疏图神经网络用于根据具有多组/多通道的经压缩的数据元素的通道张量来生成通道稀疏图,该空间稀疏图神经网络用于根据具有经压缩的通道的空间张量来生成空间稀疏图。通道稀疏图神经网络可以包括多个全连接层,而空间稀疏图神经网络可以包括多个卷积层。可以使用与参考输出/目标输出相关联的训练数据来训练数据稀疏图神经网络。可以将神经网络训练为使该神经网络的输出与参考输出/目标输出之间的差异最小化。在一些示例中,数据稀疏图神经网络可以采用重参数化技巧和近似技术(例如,Gumbel-Softmax技巧)来生成数据稀疏图。
在步骤1306中,动态稀疏图像处理器900基于通道稀疏图,从存储器中读取一个或多个第一权重张量。此外,在步骤1308中,动态稀疏图像处理器900基于空间稀疏图,从存储器中读取第一数据元素。进一步地,在步骤1310中,动态稀疏图像处理器900使用神经网络对第一数据元素和第一权重张量执行计算,以生成图像数据的处理结果。
具体地,如上所述,数据图生成电路和图像处理电路可以在图11A中的神经网络硬件加速器1100上实现,该神经网络硬件加速器可以包括片上本地存储器(例如,静态随机存取存储器(SRAM))、计算引擎、输出缓冲器和控制器。神经网络硬件加速器还可以经由总线连接到外部电路,例如主机和外部片外存储器(例如,动态随机存取存储器(DRAM))。片上本地存储器可以存储神经网络层的输入数据和权重。控制器还可以存储有以下地址表:该地址表可以是转译后备缓冲区(TLB)的形式,该地址表在外部片外存储器的地址与片上本地存储器的地址之间进行转译。TLB允许控制器确定输入数据和权重在外部片外存储器处的读地址、以及它们在片上本地存储器处的写地址,以支持将输入数据和权重从外部片外存储器读取到片上本地存储器。然后,控制器可以控制计算引擎从片上本地存储器中读取输入数据和权重,以执行计算。在输出缓冲器完成对计算引擎的输出的后处理并生成中间输出数据之后,控制器可以将该中间输出数据存储回外部片外存储器以作为下一神经网络层的输入,或者作为神经网络的最终输出。
控制器在执行图像处理神经网络层的计算之前,可以首先从片外外部存储器中读取数据稀疏图神经网络的第一组权重、以及前一图像处理神经网络层的第一经压缩的中间输出数据和第二经压缩的中间输出数据。然后,控制器可以控制计算引擎使用第一组权重、以及第一经压缩的中间输出数据和第二经压缩的中间输出数据来执行神经网络计算,以分别生成图像处理神经网络层的空间稀疏图和通道稀疏图,并将该空间稀疏图和该通道稀疏图存储在本地存储器处。
参照图11B至图11E,控制器可以将TLB中的地址表与空间稀疏图和通道稀疏图相结合以生成读地址和写地址,从而选择性地将前一图像处理神经网络层的中间输出数据的子集和当前图像处理神经网络层的第二组权重的子集从片外外部存储器读取到本地存储器。在一些示例中,控制器可以访问地址表以访问与不同通道相关联的第二组权重的读地址,并使用与在通道稀疏图中所选择的通道相关联的权重的读地址来读取第二组权重的子集。另外,控制器还可以访问地址表以访问前一图像处理神经网络层的中间输出数据的读地址,并使用在空间稀疏图中所选择的、且与所选择通道相关联的中间输出数据元素的读地址来读取中间输出数据的子集。控制器还可以在本地存储器中为未被读取的权重的剩余子集和中间输出数据的剩余子集存储预定无效值(例如零)。然后,控制器可以控制计算引擎从本地存储器中读取权重和中间输出数据(包括从外部存储器中读取的权重和中间输出数据、以及具有零值的权重和中间输出数据)以执行当前图像处理神经网络层的计算。在一些示例中,如图11F所示,计算引擎可以包括跳过对零值/无效值的算术运算的电路。
处理结果可以用于不同的应用。例如,对于由像素单元阵列采集的图像,稀疏图像处理操作从该图像中检测感兴趣对象,并确定待由该像素单元阵列采集的后续图像中的感兴趣区域。然后,计算电路可以选择性地使像素单元阵列的、与感兴趣区域相对应的子集能够采集后续图像作为稀疏图像,以执行稀疏图像感测操作。作为另一示例,可以将对象检测结果提供给主机中的应用(例如,VR/AR/MR应用),以允许该应用更新输出内容,从而提供交互式用户体验。
本说明书的一些部分在对信息进行的操作的算法和符号表示方面描述了本公开的多个示例。数据处理领域的技术人员通常使用这些算法描述和表示,来向本领域其他技术人员高效地传达其工作的实质。尽管在功能上、计算上或逻辑上对这些操作进行了描述,但是这些操作应被理解为由计算机程序或等效电路、或微代码等实现。此外,在不失一般性的情况下,有时将这些操作的布置称为模块也被证明是方便的。所描述的操作及其相关联的模块可以体现在软件、固件、和/或硬件中。
所描述的步骤、操作或过程可以用一个或多个硬件或软件模块单独地执行或实现、或者与其它设备相结合地执行或实现。在一些示例中,软件模块利用计算机程序产品来实现,该计算机程序产品包括计算机可读介质,该计算机可读介质包含计算机程序代码,该计算机程序代码可以被计算机处理器执行以用于执行所描述的步骤、操作或过程中的任何或全部。
本公开的各示例还可以涉及一种用于执行所描述的操作的装置。该装置可以为所需的目的而专门构造,和/或该装置可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算设备。这种计算机程序可以存储在可耦接到计算机系统总线的非暂态有形计算机可读存储介质、或者适合于存储电子指令的任何类型的介质中。此外,在本说明书中提及的任何计算系统可以包括单个处理器,或者可以是采用多处理器设计以用于增加的计算能力的架构。
本公开的各示例还可以涉及由本文描述的计算过程产生的产品。这样的产品可以包括从计算过程得到的信息,其中该信息被存储在非暂态有形计算机可读存储介质上并且可以包括本文所描述的计算机程序产品或其它数据组合的任何示例。
在本说明书中使用的用语主要是出于可读性和指导性的目的而选择的,并且其可以不被选择以描绘或限制本发明主题。因此,旨在本公开的范围不被本具体实施方式限制,而是由基于本文的申请而提出的任何权利要求进行限制。因此,各示例的公开内容旨在对本公开的范围进行说明而非限制,本公开的范围在以下权利要求书中进行了阐述。
Claims (16)
1.一种装置,包括:
存储器,所述存储器被配置为存储输入数据和权重,所述输入数据包括多组数据元素,每组数据元素与多个通道中的一个通道相关联,所述权重包括多个权重张量,每个权重张量与所述多个通道中的一个通道相关联;
数据稀疏图生成电路,所述数据稀疏图生成电路被配置为基于所述输入数据生成数据稀疏图,所述数据稀疏图包括通道稀疏图和空间稀疏图,所述通道稀疏图指示与待从所述多个权重张量中选择的一个或多个第一权重张量相关联的一个或多个通道,所述空间稀疏图指示待从所述多组数据元素中选择的第一数据元素的空间位置;
门控电路,所述门控电路被配置为:
基于所述通道稀疏图,从所述存储器中读取所述一个或多个第一权重张量;以及
基于所述空间稀疏图,从所述存储器中读取所述第一数据元素;
以及
处理电路,所述处理电路被配置为使用神经网络对所述第一数据元素和所述一个或多个第一权重张量执行计算,以生成所述输入数据的处理结果。
2.根据权利要求1所述的装置,其中:
所述神经网络包括第一神经网络层和第二神经网络层;
所述门控电路包括第一门控层和第二门控层;
所述第一门控层被配置为基于第一数据稀疏图执行以下项中的至少一项,所述第一数据稀疏图是基于所述多组数据元素生成的:
对所述多个权重张量执行第一通道门控操作,以向所述第一神经网络层提供所述一个或多个第一权重张量的第一权重,或者
对所述多组数据元素执行第一空间门控操作,以向所述第一神经网络层提供包括所述第一数据元素的第一输入数据;
所述第一神经网络层被配置为基于所述第一输入数据和所述第一权重生成第一中间输出,所述第一中间输出具有与不同通道相关联的第一多组数据元素;
所述第二门控层被配置为基于第二数据稀疏图执行以下项中的至少一项,所述第二数据稀疏图是基于所述第一中间输出生成的:
对所述多个权重张量执行第二通道门控操作,以向所述第二神经网络层提供所述一个或多个第一权重张量的第二权重,或者
对所述第一中间输出执行第二空间门控操作,以向所述第二神经网络层提供第二输入数据;
所述第二神经网络层被配置为基于所述第二输入数据和所述第二权重生成第二中间输出,所述第二中间输出具有与不同通道相关联的第二多组数据元素;并且
所述处理结果是基于所述第二中间输出生成的。
3.根据权利要求2所述的装置,其中:
所述神经网络还包括第三神经网络层;
所述门控电路还包括第三门控层;
所述第三门控层被配置为基于第三数据稀疏图执行以下项中的至少一项,所述第三数据稀疏图是基于所述第二中间输出生成的:
对所述多个权重张量执行第三通道门控操作,以向所述第三神经网络层提供所述一个或多个第一权重张量的第三权重,或者
对所述第二中间输出执行第三空间门控操作,以向所述第三神经网络层提供第三输入数据;并且
所述第三神经网络层被配置为基于所述第三输入数据和所述第三权重生成包括所述处理结果的输出;并且优选地,其中,所述第二神经网络层包括卷积层;并且其中,所述第三神经网络层包括全连接层。
4.根据权利要求3所述的装置,其中:
所述第一门控层被配置为执行所述第一空间门控操作,但不执行所述第一通道门控操作;
所述第二门控层被配置为执行所述第二空间门控操作,但不执行所述第二通道门控操作;并且
所述第三门控层被配置为执行所述第三通道门控操作,但不执行所述第三空间门控操作。
5.根据权利要求3或4所述的装置,其中,所述第二数据稀疏图是基于空间张量生成的,所述空间张量是基于在所述第一中间输出的与不同通道相关联的所述第一多组数据元素之间执行逐通道池化操作来生成的;并且
其中,所述第三数据稀疏图是基于通道张量生成的,所述通道张量是基于在所述第二中间输出的所述第二多组数据元素的每组数据元素内执行组间池化操作来生成的,使得所述通道张量和与所述第二中间输出相同的通道相关联。
6.根据前述权利要求中任一项所述的装置,其中,所述神经网络是第一神经网络;并且
其中,所述数据稀疏图生成电路被配置为使用第二神经网络来生成所述数据稀疏图。
7.根据权利要求6所述的装置,其中,所述数据稀疏图包括二元掩模阵列,每个二元掩模具有两个值中的一个值;
其中,所述数据稀疏图生成电路被配置为:
使用所述第二神经网络来生成软掩模阵列,每个软掩模与所述二元掩模阵列中的一个二元掩模相对应并且具有一值范围;以及
基于将对极大(argmax)函数的自变量进行近似的可微分函数应用于所述软掩模阵列来生成所述数据稀疏图;并且优选地,其中,所述数据稀疏图生成电路被配置为:
将来自Gumbel分布的随机数添加到所述软掩模阵列中,以生成所述软掩模阵列的随机样本;以及
对所述随机样本应用柔性最大值函数,以对所述argmax函数进行近似。
8.根据前述权利要求中任一项所述的装置,其中,所述数据稀疏图生成电路、所述门控电路和所述处理电路是神经网络硬件加速器的一部分;并且
其中,所述存储器是所述神经网络硬件加速器外部的外部存储器。
9.根据权利要求8所述的装置,其中,所述神经网络硬件加速器还包括本地存储器、计算引擎、输出缓冲器和控制器;
其中,所述控制器被配置为:
基于所述通道稀疏图,从所述外部存储器中读取所述一个或多个第一权重张量;
基于所述空间稀疏图,从所述外部存储器中读取所述第一数据元素;
将所述一个或多个第一权重张量和所述第一数据元素存储在所述本地存储器处;
控制所述计算引擎从所述本地存储器中读取所述一个或多个第一权重张量和所述第一数据元素,并控制所述计算引擎执行所述神经网络的第一神经网络层的计算以生成中间输出;
控制所述输出缓冲器对所述中间输出执行后处理操作;以及
将经后处理的所述中间输出存储在所述外部存储器处,以为所述神经网络的第二神经网络层提供输入。
10.根据权利要求9所述的装置,其中,所述本地存储器还存储有地址表,所述地址表在所述本地存储器的地址与所述外部存储器的地址之间进行映射;并且
其中,所述控制器被配置为:基于所述地址表,从所述外部存储器中读取所述一个或多个第一权重张量和所述第一数据元素,并将所述一个或多个第一权重张量和所述第一数据元素存储在所述本地存储器处;并且优选地,其中,所述地址表包括转译后备缓冲区(TLB);并且
其中,所述TLB包括多个条目,每个条目被映射到所述本地存储器的一地址,并且每个条目还存储有所述外部存储器的一地址。
11.根据权利要求10所述的装置,其中,所述控制器被配置为:
接收第一指令,所述第一指令用于将所述多组数据元素中的一数据元素存储在所述本地存储器的第一地址处,所述数据元素在所述多组数据元素中具有第一空间位置;
基于所述空间稀疏图确定:将要读取位于所述第一空间位置处的所述数据元素;以及
基于确定将要读取位于所述第一空间位置处的所述数据元素:
检索所述地址表的、被映射到所述第一地址的第一条目;
检索存储在所述第一条目中的第二地址;
从所述外部存储器的所述第二地址读取所述数据元素;以及
将所述数据元素存储在所述本地存储器的所述第一地址处。
12.根据权利要求10或11所述的装置,其中,所述控制器被配置为:
接收第二指令,所述第二指令用于将所述多个权重张量的一权重张量存储在所述本地存储器的第三地址处,所述权重张量与所述多个通道中的第一通道相关联;
基于所述通道稀疏图确定:将要读取所述第一通道的权重张量;以及
基于确定将要读取所述第一通道的所述权重张量:
检索所述地址表的、被映射到所述第三地址的第二条目;
检索存储在所述第二条目中的第四地址;
从所述外部存储器的所述第四地址读取所述权重张量;以及
将所述权重张量存储在所述本地存储器的所述第三地址处。
13.根据权利要求9至12中任一项所述的装置,其中,所述神经网络是第一神经网络;
其中,所述通道稀疏图是第一通道稀疏图;
其中,所述空间稀疏图是第一空间稀疏图;
其中,所述控制器被配置为:
控制所述输出缓冲器基于对所述中间输出执行组间池化操作来生成通道张量;
控制所述输出缓冲器基于对所述中间输出执行逐通道池化操作来生成空间张量;
将所述通道张量、所述空间张量和所述中间输出存储在所述外部存储器处;
从所述外部存储器中读取所述通道张量和所述空间张量;
从所述外部存储器中读取与通道稀疏图神经网络和空间稀疏图神经网络相关联的权重;
控制所述计算引擎对所述通道张量执行所述通道稀疏图神经网络的计算,以生成第二通道稀疏图;
控制所述计算引擎对所述空间张量执行所述空间稀疏图神经网络的计算,以生成第二空间稀疏图;以及
执行以下项中的至少一项:对所述多个权重张量执行通道门控操作,以将所述一个或多个第一权重张量的第二权重读取到所述第一神经网络的第二神经网络层;或者对所述中间输出执行空间门控操作,以向所述第一神经网络的所述第二神经网络层提供第二输入数据。
14.根据前述权利要求中任一项所述的装置,还包括:可编程像素单元阵列和编程电路;
其中,所述输入数据是第一输入数据;并且
其中,所述编程电路被配置为:
基于来自所述处理电路的所述处理结果,确定感兴趣区域;
生成指示所述感兴趣区域的编程信号,以选择所述可编程像素单元阵列的像素单元子集来执行光感测操作,从执行稀疏图像采集操作;以及
向所述可编程像素单元阵列发送所述编程信号以执行所述稀疏图像采集操作,从而采集第二输入数据;并且优选地,其中,所述数据稀疏图生成电路、所述门控电路、所述处理电路和所述可编程像素单元阵列被容纳在一芯片封装内以形成芯片。
15.一种方法,包括:
将输入数据和权重存储在存储器处,所述输入数据包括多组数据元素,每组数据元素与多个通道中的一个通道相关联,所述权重包括多个权重张量,每个权重张量与所述多个通道中的一个通道相关联;
基于所述输入数据生成数据稀疏图,所述数据稀疏图包括通道稀疏图和空间稀疏图,所述通道稀疏图指示与待从所述多个权重张量中选择的一个或多个第一权重张量相关联的一个或多个通道,所述空间稀疏图指示待从所述多组数据元素中选择的第一数据元素的空间位置;
基于所述通道稀疏图,从所述存储器中读取所述一个或多个第一权重张量;
基于所述空间稀疏图,从所述存储器中读取所述第一数据元素;以及
使用神经网络对所述第一数据元素和所述一个或多个第一权重张量执行计算,以生成所述输入数据的处理结果。
16.根据权利要求15所述的方法,其中,所述神经网络是第一神经网络;并且其中,所述数据稀疏图是使用第二神经网络生成的。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63/213,249 | 2021-06-22 | ||
US17/833,402 | 2022-06-06 | ||
US17/833,402 US20220405553A1 (en) | 2021-06-22 | 2022-06-06 | Sparse image processing |
PCT/US2022/034259 WO2022271639A1 (en) | 2021-06-22 | 2022-06-21 | Sparse image processing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117581256A true CN117581256A (zh) | 2024-02-20 |
Family
ID=89890504
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280045006.3A Pending CN117581256A (zh) | 2021-06-22 | 2022-06-21 | 稀疏图像处理 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117581256A (zh) |
-
2022
- 2022-06-21 CN CN202280045006.3A patent/CN117581256A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11888002B2 (en) | Dynamically programmable image sensor | |
US20210142086A1 (en) | Sparse image sensing and processing | |
TWI810304B (zh) | 用於產生影像圖框之設備及方法 | |
US11974044B2 (en) | Pixel sensor having adaptive exposure time | |
CN112640436A (zh) | 具有多个光电二极管和共享比较器的像素传感器 | |
US11910114B2 (en) | Multi-mode image sensor | |
US20210044742A1 (en) | Dynamically programmable image sensor | |
US10848681B2 (en) | Image reconstruction from image sensor output | |
CN112640113A (zh) | 具有多个光电二极管的像素单元 | |
US20230092325A1 (en) | Digital pixel sensor | |
EP4360001A1 (en) | Sparse image processing | |
CN117581256A (zh) | 稀疏图像处理 | |
US20220405553A1 (en) | Sparse image processing | |
US20220030183A1 (en) | Infrared and non-infrared channel blender for depth mapping using structured light | |
TW202219890A (zh) | 稀疏影像感測及處理 | |
WO2023049334A1 (en) | Digital pixel sensor | |
WO2023146969A1 (en) | On-sensor image processor utilizing contextual data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |