人工智能推理计算设备转让专利

申请号 : CN201910263665.4

文献号 : CN110059815B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨林董子拓杨晋董子翔刘超孙宝华

申请人 : 海青智盈技术公司

摘要 :

一种人工智能推理计算设备,包含印刷电路板(PCB)和安装在印刷电路板上的若干电子部件。电子部件包括无线通信模块、控制器模块、存储器模块、储存模块和至少一个基于细胞神经网络(CNN)的集成电路(IC),该基于细胞神经网络的集成电路被配置用于执行深度学习模型中的卷积操作以从输入数据中提取出特征。每一个基于CNN的IC包括可操作地耦接到至少一个输入/输出数据总线的若干CNN处理引擎。CNN处理引擎利用时钟偏移电路以环路连接。无线通信模块被配置用于传输深度学习模型的预训练的滤波器系数、输入数据和分类结果。

权利要求 :

1.一种人工智能推理计算设备,包括:

印刷电路板PCB,在所述印刷电路板上安装有多个电子部件;

所述多个电子部件包括:

无线通信接口模块;

控制器模块;以及

至少一个基于细胞神经网络CNN的集成电路IC,被配置用于执行深度学习模型中的卷积操作以从输入数据中提取出特征,并且每一个基于CNN的IC包括可操作地耦接到至少一个输入/输出数据总线的多个CNN处理引擎,所述多个CNN处理引擎利用时钟偏移电路以环路连接,每一个CNN处理引擎包括:CNN处理块,所述CNN处理块被配置用于使用对应的输入数据和预训练的滤波器系数来同时获得卷积操作结果;第一组存储缓冲器,所述第一组存储缓冲器可操作地耦接到CNN处理块,用于储存所述对应的输入数据;以及第二组存储缓冲器,所述第二组存储缓冲器可操作地耦接到CNN处理块,用于储存所述预训练的滤波器系数。

2.根据权利要求1所述的人工智能推理计算设备,其中,所述无线通信接口模块被配置用于从智能客户端设备接收所述深度学习模型的预训练的滤波器系数。

3.根据权利要求2所述的人工智能推理计算设备,其中,所述无线通信接口模块被配置用于从所述智能客户端设备接收输入数据。

4.根据权利要求3所述的人工智能推理计算设备,其中,所述无线通信接口模块被配置用于将分类结果发送到所述智能客户端设备。

5.根据权利要求4所述的人工智能推理计算设备,其中,所述无线通信接口模块基于蓝牙。

6.根据权利要求4所述的人工智能推理计算设备,其中,所述无线通信接口模块基于WiFi。

7.根据权利要求4所述的人工智能推理计算设备,其中,所述人工智能推理计算设备包括智能手机。

8.根据权利要求1所述的人工智能推理计算设备,其中,所述控制器模块被配置用于将所述深度学习模型的所述预训练的滤波器系数加载到所述每一个基于CNN的IC中。

9.根据权利要求8所述的人工智能推理计算设备,其中,所述控制器模块被配置用于:针对所接收的输入数据,在所述每一个基于CNN的IC上执行所述深度学习模型。

10.根据权利要求8所述的人工智能推理计算设备,其中,所述控制器模块被配置用于根据从所述每一个基于CNN的IC提取出的特征来执行完全连接层。

11.根据权利要求1所述的人工智能推理计算设备,其中,所述每一个CNN处理引擎还执行激活和池化操作。

12.根据权利要求1所述的人工智能推理计算设备,其中,所述输入数据被实施为具有专门的浮点格式。

13.根据权利要求12所述的人工智能推理计算设备,其中,所述专门的浮点格式包括5位尾数和4位指数。

14.根据权利要求1所述的人工智能推理计算设备,其中,所述预训练的滤波器系数被实施为具有专门的浮点格式。

15.根据权利要求14所述的人工智能推理计算设备,其中,所述专门的浮点格式包括12位尾数和2位指数。

16.根据权利要求1所述的人工智能推理计算设备,其中,所述多个电子部件还包括存储器模块和储存装置。

说明书 :

人工智能推理计算设备

技术领域

[0001] 本发明总体上涉及机器学习领域,并且更特别地涉及使用基于细胞神经网络(CNN)的数字集成电路(IC)的人工智能(AI)推理计算设备。

背景技术

[0002] 从1988年开始,细胞神经网络或细胞非线性网络(CNN)已经应用于许多不同领域和问题,包括但不限于图像处理。然而,大多数现有技术的CNN方法要么是基于软件解决方案(例如,卷积神经网络、递归神经网络等等),要么是基于被设计用于其他目的的硬件(例如,图形处理、通用计算等等)。结果,CNN现有方法在计算速度方面太缓慢和/或太昂贵,由此对于处理大量图像数据来说是不切实际的。图像数据可以是任何二维数据(例如,静止照片、图片、视频流帧、声音数据的转换形式等等)。
[0003] 直到现在,已经实现了现有技术的机器推理,这是通过经由长距离云连接将数据馈送到机械学习模型或者通过将数据和深度学习模型保持在单个计算系统中来进行的。然而,单个计算系统的要求将机械学习的商业可用性限制于仅小部分群体,因为极少数人拥有产生可靠推理和巨大计算能力以处理大组数据所需要的训练良好的模型。尽管现有技术的云解决方案通过将数据处理转移到可用场所而解决了计算能力的问题。该解决方案对客户造成了两种不同的问题。第一,因为数据行进到中央仓库,所以数据被暴露给利用该数据进行工作的人,使得不能通过云私密地处理数据。第二,因为云距离客户端太远,所以该数据将以非常缓慢的进度被处理。因此,将会期望拥有克服上述问题、缺点和缺陷的改进的人工智能推理计算设备。

发明内容

[0004] 本部分是出于总结本发明的一些方面并简要介绍一些优选实施方式的目的。在本部分中以及本文的摘要和标题中可以做出简化或省略,以避免模糊本部分的目的。这种简化或省略不意在限制本发明的范围。
[0005] 公开了人工智能推理计算设备。根据本公开内容的一个方面,人工智能推理计算设备包含印刷电路板(PCB)和安装在其上的若干电子部件。电子部件包括无线通信模块、控制器模块、存储器模块、储存模块以及至少一个基于细胞神经网络(CNN)的集成电路(IC),该集成电路被配置用于执行深度学习模型中的卷积操作,以从输入数据中提取出特征。每一个基于CNN的IC包括可操作地耦接到至少一个输入/输出数据总线的若干CNN处理引擎。CNN处理引擎利用时钟偏移电路以环路连接。无线通信模块被配置用于传输深度学习模型的预训练的滤波器系数、输入数据和分类结果。
[0006] 以结合附图检查本发明实施方式的以下详细描述为基础,本发明的对象、特征和优点将变得明显。

附图说明

[0007] 关于以下描述、所附权利要求以及随附附图将更好地理解本发明的这些和其他特征、方面和优点,附图如下:
[0008] 图1A至图1B是例示根据本发明的一种实施方式的示例集成电路的框图,该示例集成电路设计成用于从输入图像数据提取特征;
[0009] 图2是示出根据本发明的实施方式的示例控制器的功能框图,该示例控制器被配置用于控制一个或多个CNN处理引擎的操作;
[0010] 图3是示出根据本发明的一种实施方式的示例CNN处理引擎的示意图;
[0011] 图4是示出根据本发明的实施方式的在(M+2)像素乘(M+2)像素区域内的MxM像素位置的示意图;
[0012] 图5A至图5C是示出根据本发明的实施方式的三个示例像素位置的示意图;
[0013] 图6是例示根据本发明的一种实施方式的用于在像素位置处执行3x3卷积的示例数据布置的示意图;
[0014] 图7是例示根据本发明的一种实施方式的用于在像素位置处执行3x3卷积的示例电路的功能框图;
[0015] 图8是示出根据本发明的实施方式的示例校正的示意图;
[0016] 图9A至图9B是示出根据本发明的实施方式的两个示例2x2池化操作的示意图;
[0017] 图10是例示根据本发明的一种实施方式的2x2池化操作的示意图,该2x2池化操作将M像素乘M像素块减少至(M/2)像素乘(M/2)像素块;
[0018] 图11A至图11C是例示根据本发明的一种实施方式的输入图像中的M像素乘M像素块以及对应的(M+2)像素乘(M+2)像素区域的实施例的示意图;
[0019] 图12是例示根据本发明的实施方式的用于储存所接收的图像数据的第一组存储缓冲器的实施例的示意图;
[0020] 图13A是示出根据本发明的实施方式的用于储存滤波器系数的示例第二组存储缓冲器的两种操作模式的示意图;
[0021] 图13B是示出根据本发明的实施方式的第二组存储缓冲器中的滤波器系数的示例储存方案的示意图;
[0022] 图14是示出根据本发明的实施方式的经由示例时钟偏移电路连接为环路的多个CNN处理引擎的示意图;
[0023] 图15是示出根据本发明的实施方式的基于卷积神经网络的示例图像处理技术的示意图;
[0024] 图16是例示根据本发明的实施方式的实现具有二值3x3滤波器内核的经训练的卷积神经网络模型的示例过程的流程图;
[0025] 图17是示出根据本发明的示例滤波器内核转换方案的示意图;
[0026] 图18是示出示例数据转换方案的示意图;
[0027] 图19是示出根据本发明的实施方式的示例人工智能推理计算设备的显著部件的功能图;
[0028] 图20A是示出根据本发明的一种实施方式的用于具有四个CNN处理引擎和两个I/O数据总线的基于CNN的数字IC的图像数据和滤波器系数的第一示例数据样式的示意图;以及
[0029] 图20B是示出根据本发明的一种实施方式的用于具有四个CNN处理引擎和两个I/O数据总线的基于CNN的数字IC的图像数据和滤波器系数的第二示例数据样式的示意图。

具体实施方式

[0030] 在以下描述中,提出了许多具体细节以便提供对本发明的透彻理解。然而,对于本领域技术人员将变得明显的是,可以在没有这些具体细节的情况下实践本发明。本文中的描述和表示是本领域技术人员用来向本领域其他技术人员最有效地传达其工作实质的常用手段。在其他实例中,众所周知的方法、程序和部件没有做详细描述,以避免不必要地模糊本发明的方面。
[0031] 在本文中参考“一种实施方式”或“一实施方式”意味着结合实施方式被描述的具体特征、结构或特点可以被包括在本发明的至少一个实施方式中。出现在说明书各处的措辞“在一种实施方式中”不一定都指的是相同的实施方式,也不是相互排除其他实施方式的分开的或可替代的实施方式。另外,在本发明中,表示本发明一个或多个实施方式的过程流程图或示意图或电路中的框的顺序并不固有地指示任何特别的顺序或暗示任何限制条件。使用在本文中的术语“顶”、“底”、“右”和“左”出于描述目的意在提供相对位置,并且不意在指定绝对参考系。
[0032] 在本文中参考图1A至图20B讨论本发明的实施方式。然而,本领域技术人员将容易地领会到,本文中关于这些附图给出的详细描述是出于解释目的,因为本发明延伸超过这些限制性实施方式。
[0033] 首先参考图1A,该图示出了例示根据本发明的一种实施方式的用于从输入图像提取出特征的示例数字集成电路(IC)100的框图。
[0034] 集成电路100被实施为数字半导体芯片并且包含:CNN处理引擎控制器110;以及一个或多个神经网络(CNN)处理引擎102,其可操作地耦接到至少一个输入/输出(I/O)数据总线120。控制器110配置成控制CNN处理引擎102的各种操作,以基于图像处理技术通过执行多层3x3卷积和校正或其他非线性操作(例如,s型函数)、以及2x2池化操作来从输入图像提取出特征。为了执行3x3卷积,需要数字形式的图像数据和对应的滤波器系数,其经由输入/输出数据总线120被提供给CNN处理引擎102。众所周知,数字半导体芯片包含逻辑门、多路复用器、寄存器文件、存储器、状态机等等。
[0035] 根据一种实施方式,数字集成电路100是可扩展且可变规模的。例如,数字集成电路100的多个副本可以在一个半导体芯片上实施。
[0036] 所有的CNN处理引擎都是等同的。为了例示简单,只有少数(即,CNN处理引擎122a-122h、132a-132h)被示出在图1B中。本发明不对数字半导体芯片上的CNN处理引擎的数目设置限制。
[0037] 每一个CNN处理引擎122a-122h、132a-132h包含CNN处理块124、第一组存储缓冲器126和第二组存储缓冲器128。第一组存储缓冲器126被配置用于接收图像数据并且用于将已接收的图像数据提供给CNN处理块124。第二组存储缓冲器128被配置用于储存滤波器系数并且用于将已接收的滤波器系数提供给CNN处理块124。一般地,芯片上CNN处理引擎的数目为2n,其中,n是整数(即,0、1、2、3、…)。如图1B中所示,CNN处理引擎122a-122h可操作地耦接至第一输入/输出数据总线130a,而CNN处理引擎132a-132h可操作地耦接至第二输入/输出数据总线130b。每一个输入/输出数据总线130a-130b被配置用于独立地传输数据(即,图像数据和滤波器系数)。在一种实施方式中,第一和第二组存储缓冲器包括随机存取存储器(RAM)。第一和第二组中的每一个都是在逻辑上定义的。换言之,第一和第二组的相应大小可以被再配置成容纳相应量的图像数据和滤波器系数。
[0038] 第一和第二I/O数据总线130a-130b在这里被示出为以顺序方案连接CNN处理引擎122a-122h、132a-132h。在另一个实施方式中,该至少一个I/O数据总线可以具有不同的到CNN处理引擎的连接方案,以达到相同的平行数据输入和输出的目的,用于改进性能。
[0039] 图2是示出示例控制器200的功能框图,该示例控制器用于控制被配置在集成电路上的至少一个CNN处理引擎的各种操作。控制器200包括控制下述的电路:图像数据加载控件212、滤波器系数加载控件214、图像数据输出控件216和图像处理操作控件218。控制器200还包括用于将具体配置(例如,CNN处理引擎的数目、输入/输出数据总线的数目,等等)储存在集成电路中的寄存器文件220。
[0040] 图像数据加载控件212控制图像数据经由对应的I/O数据总线到相应的CNN处理引擎的加载。滤波器系数加载控件214控制滤波器系数经由对应的I/O数据总线到相应的CNN处理引擎的加载。图像数据输出控件216控制图像数据从相应的CNN处理引擎经由对应的I/O数据总线的输出。图像处理操作控件218控制诸如卷积、校正和池化操作的各种操作,该各种操作可以由集成电路的用户经由一组用户定义的指令(例如,包含一系列操作的文件,该一系列操作诸如卷积、校正、池化,等等)来限定。
[0041] CNN处理引擎302的更多细节示出在图3中。CNN处理块304包含数字电路,该数字电路通过在MxM像素位置处使用(M+2)像素乘(M+2)像素区域的图像数据以及来自相应存储缓冲器的对应滤波器系数来执行3x3卷积,来同时获得MxM卷积操作结果。(M+2)像素乘(M+2)像素区域被形成为M×M像素位置作为M像素乘M像素中心部分,加上一个像素边界围绕该中心部分。M是正整数。在一种实施方式中,M等于14,并且因此,(M+2)等于16,MxM等于14x14=196,并且M/2等于7。
[0042] 图4是示出表示用于CNN处理引擎302的、具有中心部分MxM像素位置420的(M+2)像素乘(M+2)像素区域410的图的简图。
[0043] 图像数据可以表示输入图像中的像素(例如,像素的颜色(例如,RGB(红、绿、蓝))值中的一个,或者像素与观察位置之间的距离)的特征。总体上,RGB的值是在0到255之间的整数。滤波器系数的值是可以为正或负的浮点整数。
[0044] 为了实现较快的计算,将少数计算性能改进技术使用和实施在CNN处理块304中。在一种实施方式中,图像数据的表示使用了可实践的尽量少的位(例如,5位表示)。在另一个实施方式中,每一个滤波器系数被表示为具有小数点的整数。类似地,表示滤波器系数的整数使用了可实践的尽量少的位。结果,然后可以使用定点算法来执行3x3卷积,用于更快速的计算。
[0045] 基于以下公式,每一个3x3卷积产生一个卷积操作结果Out(m,n):
[0046]
[0047] 其中:
[0048] m、n是用于识别(M+2)像素乘(M+2)像素区域内的哪一个图像数据(像素)在被执行卷积的对应的行和列数;
[0049] In(m,n,i,j)是以区域内的像素位置(m,n)为中心的3像素乘3像素区;
[0050] C(i,j)表示九个权重系数C(3x3)中的一个,每一个权重系数对应于3像素乘3像素区中的一个;
[0051] b表示偏移系数;以及
[0052] i、j是权重系数C(i,j)的索引。
[0053] 每一个CNN处理块304同时产生MxM卷积操作结果,并且,所有CNN处理引擎执行同时的操作。
[0054] 图5A至图5C示出了MxM像素位置的三个不同的示例。图5A中示出的第一个像素位置531是在(M+2)像素乘(M+2)像素区域内左上角处的3像素乘3像素区的中心。图5B中示出的第二像素位置532是向第一像素位置531右侧移位一个像素数据。图5C中示出的第三像素位置533是典型的示例像素位置。MxM像素位置包含(M+2)像素乘(M+2)像素区域内的多个叠置的3像素乘3像素区。
[0055] 为了在每一个采样位置处执行3x3卷积,示例数据布置示出在图6中。图像数据(即,In(3x3))和滤波器系数(即,权重系数C(3x3)和偏移系数b)被馈送到示例CNN 3x3电路600中。在根据公式(1)的3x3卷积操作之后产生了一个输出结果(即,Out(1x1))。在每一个采样位置处,图像数据In(3x3)以像素坐标(m,n)605为中心,具有八个直接邻近的像素601-
604、606-609。
[0056] 图7是示出用于在每一个像素位置处执行3x3卷积的示例CNN 3x3电路700的功能图。电路700至少包含加法器721、乘法器722、移位器723、校正器724和池化操作器725。在数字半导体实施方案中,所有这些可以利用逻辑门和多路复用器来实现,这可以使用众所周知的方法(例如,硬件描述语言诸如Verilog等等)来产生。加法器721和乘法器722用于加法和乘法操作。移位器723用于根据3x3卷积中涉及的定点算法来使输出结果移位。校正器724用于将负的输出结果设置成零。池化操作器725用于执行2x2池化操作。
[0057] 图像数据储存在第一组存储缓冲器306中,而滤波器系数储存在第二组存储缓冲器308中。图像数据和滤波器系数两者在数字集成电路的每一个时钟处被馈送到CNN块304。滤波器系数(即,C(3x3)和b)从第二组存储缓冲器308被直接馈送到CNN处理块304中。然而,图像数据从第一组存储缓冲器306经由多路复用器MUX 305被馈送到CNN处理块304中。多路复用器305基于时钟信号(例如,脉冲312)从第一组存储缓冲器选择图像数据。
[0058] 否则,多路复用器MUX 305通过时钟偏移电路320从第一邻居CNN处理引擎(从图3左侧,未示出)选择图像数据。
[0059] 同时,馈送到CNN处理块304中的图像数据的副本经由时钟偏移电路320被发送到第二邻居CNN处理引擎(到图3右侧,未示出)。时钟偏移电路320可以利用已知技术(例如,D触发器322)来实现。
[0060] 在通过时钟偏移电路320形成的环路中,第一邻居CNN处理引擎可以被称为上游邻居CNN处理引擎。第二邻居CNN处理引擎可以被称为下游CNN处理引擎。在另一个实施方式中,当时钟偏移电路的数据流方向反转时,第一和第二CNN处理引擎也反转,从而分别变成下游和上游邻居。
[0061] 在针对预定数目的滤波器系数对每一组图像数据执行3x3卷积之后,卷积操作结果Out(m,n)基于另一个时钟信号(例如,脉冲311)经由另一个多路复用器MUX 307被发送到第一组存储缓冲器。绘制示例时钟周期310以用于展示脉冲311与脉冲312之间的时间关系。如所示出的,脉冲311是在脉冲312之前的一个时钟,结果,在具体的图像数据块通过时钟偏移电路320被所有的CNN处理引擎处理之后,3x3卷积操作结果被储存到第一组存储缓冲器中。
[0062] 在根据公式(1)获得卷积操作结果Out(m,n)之后,校正程序可以被执行为由图像处理控制218进行引导。小于零(即,负值)的任何卷积操作结果Out(m,n)被设置成零。换言之,只保留输出结果的正值。图8示出了两个示例校正成果。正的输出值10.5保留为10.5,而-2.3变成0。校正引起集成电路中的非线性度。
[0063] 如果需要2x2池化操作,那么MxM输出结果被减少至(M/2)x(M/2)。为了将(M/2)x(M/2)输出结果储存在第一组存储缓冲器中的对应位置中,需要额外的簿记技术来追踪适当的存储器地址,使得四个(M/2)x(M/2)输出结果可以在一个CNN处理引擎中被处理。
[0064] 为了展示2x2池化操作,图9A是图解地示出2像素乘2像素块的第一示例输出结果被减少至单个值10.5的示意图,该单个值是四个输出结果中的最大值。图9A中示出的技术被称为“最大池化”。当四个输出结果的平均值4.6被用于图9B中示出的单个值时,其被称为“平均池化”。存在其他的池化操作,例如,“混合最大平均池化”,其是“最大池化”与“平均池化”的组合。池化操作的主要目标是减少被处理的图像数据的大小。图10是例示MxM像素位置通过2x2池化操作被减少至最初大小的四分之一的(M/2)x(M/2)位置的示意图。
[0065] 输入图像总体上包含大量的图像数据。为了执行图像处理操作。输入图像1100被划分成M像素乘M像素块1111-1112,如图11A中所示。然后,与这些M像素乘M像素块中的每一个关联的图像数据被馈送到相应的CNN处理引擎中。在具体的M像素乘M像素块中在MxM像素位置中的每一个像素位置处,3x3卷积在对应的CNN处理块中被同时执行。
[0066] 尽管本发明不需要输入图像的特定的特征尺寸,但是可能需要将输入图像调整大小以符合用于某些图像处理程序的预定特征尺寸。在实施方式中,需要具有(2KxM)像素乘(2KxM)像素的方形形状。K是正整数(例如,1、2、3、4等等)。当M等于14并且K等于4时,特征尺寸是224。在另一个实施方式中,输入图像是尺寸为(2IxM)像素乘(2JxM)像素的矩形形状,其中,I和J是正整数。
[0067] 为了在围绕M像素乘M像素块的边界的像素位置处适当地执行3x3卷积,需要来自邻近块的额外的图像数据。图11B示出了在(M+2)像素乘(M+2)像素区域1130内的典型的M像素乘M像素块1120(利用虚线定边界)。(M+2)像素乘(M+2)像素区域由下述形成:来自当前块的M像素乘M像素的中心部分;以及来自对应的邻近块的四个边缘(即,顶、右、底和左)和四个角部(即,左上、右上、右下和左下)。额外的细节示出在图12和对第一组存储缓冲器的对应描述中。
[0068] 图11C示出了两个示例M像素乘M像素块1122-1124以及相应的关联的(M+2)像素乘(M+2)像素区域1132-1134。这两个示例块1122-1124沿着输入图像的周缘定位。第一示例M像素乘M像素块1122定位在左上角部处,因此,第一示例块1122针对两个边缘和一个角部有邻居。值“0”用于在形成图像数据的关联的(M+2)像素乘(M+2)像素区域1132中没有邻居的两个边缘和三个角部(示出为阴影区)。类似地,第二示例块1124的关联的(M+2)像素乘(M+2)像素区域1134需要“0”用于顶边缘和两个顶角部。沿着输入图像周缘的其他块被类似地处理。换言之,出于在输入图像的每一个像素处执行3x3卷积的目的,一层零(“0”)被添加在输入图像的周缘外部。这可以利用许多众所周知的技术来实现。例如,第一组存储缓冲器的缺省值被设置为零。如果没有图像数据从邻近块被填入,那么那些边缘和角部将包含零。
[0069] 此外,输入图像可以包含大量的图像数据,该图像数据不能被整体馈送到CNN处理引擎中。因此,第一组存储缓冲器被配置在相应的CNN处理引擎上,用于储存输入图像的图像数据的一部分。第一组存储缓冲器包含图解地例示在图12中的九个不同的数据缓冲器。九个缓冲器被设计成如下匹配(M+2)像素乘(M+2)像素区域:
[0070] 1)缓冲器-0用于储存图像数据的表示中心部分的MxM像素;
[0071] 2)缓冲器-1用于储存图像数据的表示顶边缘的1xM像素;
[0072] 3)缓冲器-2用于储存图像数据的表示右边缘的Mx1像素;
[0073] 4)缓冲器-3用于储存图像数据的表示底边缘的1xM像素;
[0074] 5)缓冲器-4用于储存图像数据的表示左边缘的Mx1像素;
[0075] 6)缓冲器-5用于储存图像数据的表示左上角部的1x1像素;
[0076] 7)缓冲器-6用于储存图像数据的表示右上角部的1x1像素;
[0077] 8)缓冲器-7用于储存图像数据的表示右下角部的1x1像素;以及
[0078] 9)缓冲器-8用于储存图像数据的表示左下角部的1x1像素。
[0079] 从I/O数据总线接收的图像数据是图像数据的位于连贯块中的MxM像素的形式。图像数据的每一个MxM像素被储存到当前块的缓冲器-0中。图像数据被接收的MxM像素的左列被储存到在先块的缓冲器-2中,同时图像数据被接收的MxM像素的右列被储存到在后块的缓冲器-4中。图像数据被接收的MxM像素的顶行和底行以及四个角部基于输入图像的几何图形被储存到对应块的相应缓冲器中(例如,图11A至图11C)。
[0080] 用于储存滤波器系数的示例第二组存储缓冲器示出在图13A中。在一种实施方式中,设置有一对独立的缓冲器:缓冲器0 1301和缓冲器1 1302。该对独立的缓冲器允许缓冲器1301-1302中的一个缓冲器从I/O数据总线1330接收数据,而另一个缓冲器将数据馈送到CNN处理块(未示出)中。两种可操作模式被示出在本文中。
[0081] 滤波器系数的示例储存方案示出在图13B中。该对缓冲器中的每一个缓冲器(即,缓冲器0 1301或缓冲器1 1302)具有宽度(即,字长1310)。在一种实施方式中,字长为120位。相应地,在第一示例储存方案1311中,滤波器系数中的每一个(即,C(3x3)和b)占12位。在第二示例储存方案1312中,每一个滤波器系数占6位,由此在每一个字中储存20个系数。
在第三示例方案1313中,每一个系数使用3位,因此储存了四组滤波器系数(40个系数)。最终,在第四示例储存方案1314中,每一个字中储存80个系数,每一个系数占1.5位。换言之,数据架构根据应用灵活确定。
[0082] 在另一个实施方式中,第三存储缓冲器可以被建立用于储存整个滤波器系数以避免I/O延迟。一般地,输入图像必须处于一定的大小,使得所有的滤波器系数可以被储存。这可以通过在第一组存储缓冲器中分配一些未使用的容量以容纳这种第三存储缓冲器来做到。因为所有的存储缓冲器被逻辑上定义在RAM(随机存取存储器)中,所以可以使用众所周知的技术来创建第三存储缓冲器。换言之,第一和第二组存储缓冲器可以被调整以符合不同量的图像数据和/或滤波器系数。此外,RAM的总量取决于在图像处理操作中所需要的。
[0083] 当多于一个的CNN处理引擎被配置在集成电路上时,CNN处理引擎经由时钟偏移电路连接至第一和第二邻居CNN处理引擎。为了例示简单,只有CNN处理块和用于图像数据的存储缓冲器被示出。用于一组CNN处理引擎的示例时钟偏移电路1440示出在图14中。CNN处理引擎经由第二示例时钟偏移电路1440连接以形成环路。换言之,每一个CNN处理引擎将其自身的图像数据发送到第一邻居,并且同时接受第二邻居的图像数据。时钟偏移电路1440可以利用众所周知的方式实现。例如,每一个CNN处理引擎利用D触发器1442进行连接。
[0084] 具有仅两个CNN处理引擎连接在环路中的特殊情况,第一邻居和第二邻居是相同的。
[0085] 现在参考图15,该图是示出根据本发明的实施方式的基于卷积神经网络的示例图像处理技术的示意图。基于卷积神经网络,使用第一组滤波器或权重1520利用卷积对多层输入图像数据1511a-1511c进行处理。因为图像数据1511a-1511c大于滤波器1520,图像数据的每一个对应的叠置子区域1515被处理。在获得卷积结果之后,可以在第一池化操作1530之前进行激活。在一种实施方式中,激活利用在校正线性单元(ReLU)中执行的校正来实现。作为第一池化操作1530的结果,图像数据被减少至减少组的图像数据1531a-1531c。
对于2x2池化,减少组的图像数据从在先组减少4倍。
[0086] 重复先前的卷积到池化程序。减少组的图像数据1531a-1531c然后使用第二组滤波器1540利用卷积被处理。类似地,每一个叠置的子区域1535被处理。可以在第二池化操作1540之前进行另一个激活。卷积到池化程序被重复若干层并且最终连接到完全连接(FC)层
1560。在图像分类中,预定义类别的相应可能性可以在FC层1560中计算。
[0087] 该重复的卷积到池化程序使用已知的数据集或数据库进行训练。对于图像分类,数据集包含预定的类别。可以在使用之前调谐和获得具体组的滤波器、激活和池化以用于对图像数据进行分类,例如,滤波器类型的特定组合、滤波器的数目、滤波器的顺序、池化类型、和/或何时执行激活。在一种实施方式中,卷积神经网络是基于视觉几何图形组(VGG16)架构神经网,其包含13个卷积层和三个完全连接的网络层。
[0088] 经训练的卷积神经网络模型利用图16中示出的示例组的操作1600来实现。在动作1602处,模型首先通过基于标记数据集的图像分类训练卷积神经网络模型来获得卷积神经网络,所述标记数据集包含足够大数目的输入数据(例如,图像数据、经转换的声音数据、光学性质重组(OCR)数据等等)。例如,对于每一个类别存在至少4,000个数据。换言之,标记数据集中的每一个数据与待分类的类别关联。卷积神经网络模型包括多个有序滤波器组(例如,每一个滤波器组对应于卷积神经网络模型中的卷积层)。多个有序滤波器组中的每一个滤波器包含标准3x3滤波器内核(即,浮点数格式的九个系数(例如,图17中的标准3x3滤波器内核1710))。九个系数中的每一个可以是任意负的或正的实数(即,具有分数的数)。初始卷积神经网络模型可以从许多不同的框架获得,包括但不限于Mxnet、caffe、tensorflow等等。
[0089] 然后,在动作1604处,通过基于一组内核转换方案将多个有序滤波器组中的当前被处理的滤波器组的相应的标准3×3滤波器内核1710转换为对应的二值3×3滤波器内核1720来修改卷积神经网络模型。在一种实施方式中,对应的二值3x3滤波器内核1720中的九个系数C(i,j)中的每一个被赋值“A”,其等于标准3x3滤波器内核1710中绝对系数值的平均值乘以对应系数的符号,示出在以下公式中:
[0090]
[0091] 以多个有序滤波器组中限定的顺序一次一个地转换滤波器组。在某些情况下,可选地组合两个连续的滤波器组,使得卷积神经网络模型的训练更高效。
[0092] 接着,在动作1606处,经修改的卷积神经网络模型被再训练直到满足或实现期望的收敛性标准。存在许多众所周知的收敛性标准,包括但不限于完成预定数目的再训练操作、由于内核转换造成的准确性损失的收敛等等。在一种实施方式中,所有滤波器组,包括在先再训练操作中已经转换的,可以被改变或更改用于精调。在另一个实施方式中,已经转换的滤波器组在当前被处理的滤波器组的再训练操作期间被冻结或未被更改。
[0093] 过程1600移动至判定1608,确定是否存在其他未转换的滤波器组。如果“是”,那么过程1600移动回到重复动作1604-1606直到所有的滤波器组已经被转换。此后,判定1608变成“否”。在动作1610处,所有滤波器组中的二值3x3滤波器内核的系数从浮点数格式转变成定点数格式,以适应基于CNN的集成电路中所需要的数据结构。此外,定点数在基于CNN的集成电路中被实施为可再配置电路。在一种实施方式中,滤波器系数使用12位定点数格式被实施。在另一实施方式中,滤波器系数使用具有12位尾数和2位指数的专门的浮点格式被实施。在又一实施方式中,激活中的图像数据被实施为具有5位尾数和4位指数。
[0094] 图18是示出用于将数据从每像素8位[0-255]转换成每像素5位[0-31]的示例数据转换方案的示意图。例如,位0-7变成0,位8-15变成1,等等。
[0095] 如图16的过程1600中所描述的,卷积神经网络模型被训练用于基于CNN的集成电路。整组经训练的系数或权重被预配置到基于CNN的集成电路作为用于具体数据格式(例如,图像数据、声音谱、指纹、掌纹、光学性质识别(OCR)等等)的特征提取器。一般地,在每一层中存在具有许多滤波器的许多卷积层。在一种实施方式中,VGG16模型包含13个卷积层。在基于软件的图像分类任务中,用于卷积层的计算通常占计算的大部分(例如,90%)。利用专用硬件诸如基于CNN的IC 100使该计算大幅度地减少。
[0096] 对于在像言语、面部识别、手势识别等不同领域中的更好的提取特征,不同组的经配置的卷积层系数被提供用于该领域。并且特别组的卷积层作为一般特征提取器被使用于该领域中的具体任务。例如,在面部识别领域中的家庭成员面部识别的具体任务,以及同样在相同的面部识别领域中的企业雇员面部识别的具体任务。并且这两个具体任务可以共享用于面部检测的相同组的卷积层系数。
[0097] 示例人工智能(AI)推理计算设备1900示出在图19中。示例AI计算设备1900包含在其上安装有若干电子部件的印刷电路板(PCB)1920。电子部件包括无线通信接口1902、基于CNN的集成电路(IC)1904(例如,图1A的基于CNN的IC 100)、控制器1906、存储器1908和储存装置1910。无线通信接口1902的示例可以包括但不限于WiFi、蓝牙(R)等等。示例控制器1906可以包括但不限于中央处理单元诸如MIPS、ARM等等。存储器1908的示例可以包括但不限于动态随机存取存储器、静态随机存取存储器等等。储存装置1910的示例可以包括但不限于非易失性存储器等等。
[0098] 基于CNN的IC 1904被配置用于执行深度学习模型中的卷积操作以用于从输入数据中提取出特征。深度学习模型的示例可以包括但不限于VGG16、ResNet、MobileNet等等。无线通信接口模块1902配置成用于从智能客户端设备1930接收深度学习模型的预训练的滤波器系数1941以及输入数据1942,并且用于将分类结果1951发送至智能客户端设备
1930。智能客户端设备1930能够获得输入数据并传输滤波器系数。智能客户端设备的示例可以包括但不限于智能手机、平板电脑等等。深度学习模型还包括激活和池化层。
[0099] 控制器1906被配置用于将深度学习模型的预训练的滤波器系数1941加载到每一个基于CNN的IC 1904中。此外,控制器1906被配置用于针对所接收的输入数据1942在每一个基于CNN的IC上执行深度学习模型。最后,控制器1906被配置用于根据自每一个基于CNN的IC 1904中提取出的特征执行完全连接层(例如,图15的FC层1560),以获得分类结果1951。
[0100] 每一个基于CNN的IC 1904需要具体的数据结构(即,分别为输入数据的顺序和滤波器系数的顺序)。图20A和图20B是示出两个示例数据结构的示意图。
[0101] 现在参考图20A,其示出了在第一示例基于CNN的数字IC中被执行以用于从输入图像数据中提取出特征的卷积操作的顺序。该示例基于CNN的数字IC包含与时钟偏移电路(例如,图14的时钟偏移电路1440)和两个I/O数据总线连接的四个CNN处理引擎。I/O数据总线#I服务于CNN处理引擎1和2,而I/O数据总线#II服务于CNN处理引擎3和4。在时钟偏移电路中的数据访问的方向是引擎#1->引擎#2->引擎#3->引擎#4->引擎#1。在第一实施例中,用于CNN处理引擎#1的上游邻居CNN处理引擎是CNN处理引擎#4。
[0102] 八组图像数据和12个滤波器使用在图20A中的第一个实施例中。八组图像数据被分成两个图像数据群组,其中每一个图像数据群组包含4组图像数据。12个滤波器的滤波器系数被分成三个滤波器群组,每一个滤波器群组包含4组滤波器系数。每一个滤波器群组还分成与两个图像数据群组对应的两个子群组。每一个子群组包含与两个图像数据群组中的对应一个有关的4组滤波器系数的一部分。
[0103] 用于输入图像的每一个块(例如,图11A的输入图像1100的块1111)的卷积操作的顺序开始于图像数据的第一图像数据组(即,Im(1)、Im(2)、Im(3)和Im(4))被加载(加载-1)到相应CNN处理引擎(即,引擎#1-4)。为了基于时钟偏移电路(例如,图14的时钟偏移电路1440)的连接性以循环方式执行卷积操作,加载第一滤波器群组的第一部分的滤波器系数(即,用于与Im(1)-Im(4)有关的滤波器1-4的F(i,j))。第一部分的顺序由对来自上游邻居CNN处理引擎的图像数据的循环访问决定。在四轮卷积操作之后,第二图像数据群组(即,Im(5)、Im(6)、Im(7)和Im(8))被加载(加载-2)。第一滤波器群组的第二部分的滤波器系数(即,用于与Im(5)-Im(8)有关的滤波器1-4的F(i,j))被加载并被使用。在四轮卷积操作之后,用于滤波器1-4的卷积操作结果被输出(输出-1)并被储存到相应CNN处理引擎的第一组存储缓冲器的指定区中。
[0104] 然后,卷积操作继续用于剩余的滤波器组。第一图像数据群组(即,Im(1)-Im(4))被再次加载(加载-3)到相应的CNN处理引擎中。第二滤波器群组的第一部分的滤波器系数(即,用于与Im(1)-Im(4)有关的滤波器5-8的F(i,j))被加载。执行四轮卷积操作。第二图像数据群组(即,Im(5)-Im(8))被加载(加载-4)。第二滤波器群组的第二部分的滤波器系数(即,用于与Im(5)-Im(8)有关的滤波器5-8的F(i,j))被加载用于另外四轮卷积操作。用于滤波器5-8的卷积操作结果然后被输出(输出-2)。该过程再次使用第一和第二部分继续用于第三滤波器群组(即,滤波器9-12)的滤波器系数。并且用于滤波器9-12的卷积操作结果被输出(输出-3)。
[0105] 第二示例基于CNN的数字IC的卷积操作的顺序示出在图20B中。除了时钟偏移电路中的数据访问的方向反转(即,引擎#1->引擎#4->引擎#3->引擎#2->引擎#1)之外,第二示性IC与第一示例IC相同。换言之,用于CNN处理引擎#1的上游邻居CNN处理引擎是CNN处理引擎#2。结果,滤波器系数的顺序是不同的。然而,最终的卷积操作结果是相同的。
[0106] 可以存在形成环路的其他连接方案。与图20A至图20B中示出的两个实施例类似,滤波器系数的对应顺序可以由本领域普通技术人员得出。
[0107] 根据图20A至图20B中示出的实施例明显的是,任意组滤波器系数可以在输出(即,输出-1、输出-2、输出-3)之后被丢弃。结果,滤波器系数可以以先进先出的方式被储存。然而,每一组图像数据必须被保存,因为它们可以被再加载用于下一组滤波器。因为图像数据被储存在RAM(即,第一组存储缓冲器)中,所以再加载操作可以利用众所周知的技术执行。
[0108] 滤波器系数与图像数据之间的卷积操作被表示在以下公式中:
[0109]
[0110] 其中
[0111] F(i,j):与第j个图像数据有关的第i个滤波器的滤波器系数。
[0112] Im(j):第j个图像数据。
[0113] Out(i):第i个卷积操作结果。
[0114] 在图20A至图20B中示出的实施例中,i=1、12,而j=1、8,因此存在12个Out(i)、8个Im(j)以及12x8=96个F(i,j)滤波器系数。对于本领域普通技术人员来说,可以类似地得出不同数目的图像数据、滤波器、CNN处理引擎和I/O数据总线的其他组合。如果图像数据的数目不是CNN处理引擎数目的倍数,那么任何未被填充的部分用零填充。
[0115] 此外,顺序地连接到CNN处理引擎的两个I/O数据总线已经示出在实施例中(即,CNN处理引擎的第一半到第一I/O数据总线,CNN处理引擎的第二半到第二I/O数据总线)。然而,I/O数据总线可以不同地连接到CNN处理引擎,例如,以交换的方式(即,奇数的CNN处理引擎到第一I/O数据总线,其他CNN处理引擎到第二I/O数据总线)。
[0116] 尽管参考本发明的具体实施方式对本发明进行了描述,但是这些实施方式仅是例示性的,并且不约束本发明。对具体公开的示例实施方式的各种修改和改变将建议给本领域技术人员。例如,尽管无线通信接口模块已被示出用于以当前技术为基础,但是任何局部短距离数据传输可以用于实现同者。此外,图像分类作为AI计算设备的应用已被示出和描述,其他类型的AI任务可以用于实现同者。例如,图像检测。总之,本发明的范围不应当约束于本文中公开的具体示例实施方式,并且被容易地建议给本领域普通技术人员的所有修改应当被包括在本申请的精神和权限以及所附权利要求的范围内。