1.本发明涉及一种基于事件的最大池化方法、芯片及电子产品,具体涉及一种在类脑芯片的脉冲神经网络中实现最大池化的方法、芯片及电子产品。
背景技术:
2.卷积神经网络中经常出现卷积、池化(pooling)等操作,而最大池化是最为常见的池化形式。在传统的冯诺依曼计算机架构中比较一组数值大小并筛选出最大值,是极其容易实现的,然而这在基于事件驱动的系统中,却要困难的多。
3.参考图1,其是现有技术中人工神经网络(artificial neural network,ann)最大池化过程的示意图。对于一个4
×
4的特征图矩阵,通过2
×
2的过滤器(也称池化核)以步长为2对其进行扫描,最终获得的输出结果为一个2
×
2的特征图。比如参考图1中特征图矩阵的第一区域101,其中的最大值是9,第二区域102的最大值是2,第三区域103的最大值是6,第四区域104的最大值是3,因此获得输出结果是按照各个区域的相对位置关系而组建的新的特征图矩阵(图1中心的矩阵)。
4.然而事件驱动(event
‑
driven)的脉冲神经网络(spiking neural network,snn)系统中,由于不再是冯诺依曼架构,在这种全新的计算架构中,最大池化操作的实现方式需要被重新考虑和设计。然而目前发明人未发现有基于事件的最大池化方案公开。
技术实现要素:
5.本发明的目的在于针对基于事件驱动的系统首次提出一种最大池化方法、芯片及电子产品,某些实施例还具有高效、精度灵活可调、防止溢出、方便重置等技术效果,其是通过如下方案来实现的:
6.一种基于事件的最大池化方法,该方法包括如下步骤:
7.根据输入事件,决定池化目标,所述池化目标是事件集合;
8.加载该池化目标对应的多个计数值;
9.对所述输入事件对应的计数值进行一次累加计数,获得更新后的输入事件对应的计数值;
10.判断所述更新后的输入事件对应的计数值是否是所述池化目标对应的多个计数值中的最大值,若是则发送该输入事件,若否则丢弃该输入事件。
11.在某类实施例中,在所述对所述输入事件对应的计数值进行一次累加计数之前,判断所述输入事件对应的计数值是否达到阈值,若所述输入事件对应的计数值未达到阈值则执行所述的对所述输入事件对应的计数值进行一次累加计数。
12.在某类实施例中,若所述输入事件对应的计数值已达到阈值则执行:除所述输入事件对应的计数值外,将所述池化目标对应的多个计数值中的其它计数值均设置为零。
13.在某类实施例中,判断所述输入事件对应的计数值是否是所述池化目标对应的多个计数值中的最大值,若是则发送该输入事件,若否则丢弃该输入事件;或,
14.直接发送该输入事件。
15.在某类实施例中,将所述输入事件对应的计数值设置为零;或,
16.发送一个与所述输入事件具有相同事件坐标的新的输入事件,且该输入事件是偏置事件,该偏置事件将所述输入事件对应的计数值设置为零。
17.在某类实施例中,若所述输入事件对应的计数值已达到阈值则执行:将所述池化目标对应的多个计数值中的所有计数值均设置为零。
18.在某类实施例中,执行将所述池化目标对应的多个计数值中的所有计数值均设置为零之后,发送该输入事件。
19.在某类实施例中,在判断所述输入事件对应的计数值是否达到阈值之前,判断所述输入事件的事件类型是否为偏置事件,若否则执行所述的判断所述输入事件对应的计数值是否达到阈值。
20.在某类实施例中,根据所述输入事件的偏置标记判断该输入事件的类型。
21.在某类实施例中,若所述输入事件的事件类型是偏置事件,则执行:将所述池化目标对应的多个计数值均设置为零。
22.在某类实施例中,所述设置为零的操作以及所述对所述输入事件对应的计数值进行一次累加计数,均向存储器中存储更新后的计数值。
23.在某类实施例中,所述的输入事件包括事件坐标和偏置标记。
24.在某类实施例中,在以下情况之一发生时,所述输入事件的偏置标记为真:
25.当计数器达到预定值时,所述计数器被配置为对输入到所述输入事件所在的池化核感受野或卷积核感受野的脉冲计数;
26.当计数器达到预定值时,所述计数器被配置为对输入到脉冲神经网络的脉冲计数;
27.当达到时间基准时。
28.在某类实施例中,设置一个乘法器,根据该乘法器,所述偏置事件可以多次减去一个固定值。
29.一种芯片,该芯片是事件驱动类型芯片,其特征在于:该芯片使用如上所述的任意一种基于事件的最大池化方法。
30.一种电子产品,其特征在于:该电子产品使用所述的芯片来处理信号。
31.有益的技术效果:
32.本发明是首次针对事件驱动系统提出的最大池化方案,具有高效、精度灵活可调、防止溢出、方便重置等技术效果。
33.以上披露的技术方案、技术特征、技术手段,与后续的具体实施方式部分中所描述的技术方案、技术特征、技术手段之间可能不完全相同、一致,或是其细化。但是该部分披露的这些新的技术方案同样属于本发明文件所公开的众多技术方案的一部分,该部分披露的这些新的技术特征、技术手段与后续具体实施方式部分公开的技术特征、技术手段是以相互合理组合的方式,披露更多的技术方案,是具体实施方式部分的有益补充。与此相同,说明书附图中的部分细节内容可能在说明书中未被明确描述,但是如果本领域技术人员基于本发明其它相关文字或附图的描述、本领域的普通技术知识、其它现有技术(如会议、期刊论文等),可以推知其技术含义,那么该部分未明确被文字记载的技术方案、技术特征、技术
手段,同样属于本发明所披露的技术内容,且如上描述的一样可以被用于组合,以获得相应的新的技术方案。本发明任意位置所披露的所有技术特征所组合出的技术方案,用于支撑对技术方案的概括、专利文件的修改、技术方案的披露。
附图说明
34.图1是现有技术中人工神经网络最大池化过程的示意图;
35.图2是事件与计数的映射关系;
36.图3是基于事件的最大池化方法;
37.图4是第一情形下最大池化过程中计数值更新示意图;
38.图5是第二情形下最大池化过程中计数值更新示意图;
39.图6是事件驱动系统中最大池化系统框图。
具体实施方式
40.虽然实施例中给出了一些步骤的编号,且该些编号具有数值上的大小顺序,然而这并不必然意味着步骤执行的绝对先后顺序。本发明的上述编号并不构成执行顺序的暗示。基于本发明构思,后文将以某些具体的某些实施方式来详细描述本发明的构思,该些内容仅仅是发明构思的一部分细化描述,权利要求将旨在基于该些具体实施例而概括出本发明的构思。
41.参考图2,其展示的是事件与计数的映射关系。在事件驱动系统中,事件是依据传感器感受到的事件信号的变化来产生的,比如常见的事件相机——动态视觉传感器(dynamic vision sensor,dvs)。如果传感器接收到的信号不变,就没有事件产生,因此就不会向后级传递事件。常见的事件传输协议是事件地址表示aer(address
‑
event representation)协议。dvs传感器的一个像素如果感受到信号变化,比如光线变暗,就会向后级传递一个事件。
42.这些事件经过各种处理,比如卷积、池化、卷积、池化
……
处理,每一步操作都会得到一个特征图或特征图矩阵,其也被称为事件矩阵20。事件矩阵20中的每个元素代表一个事件,该事件矩阵20可以是首次待池化的矩阵,也可以是经过多次卷积、池化处理后的事件矩阵,本发明的池化方法不限于针对传感器原始采集并经过首次卷积后获得的事件矩阵。比如,事件矩阵20包括一个事件22,这在dvs领域也可以被称为一个像素。举例而言,若池化核的尺寸为2
×
2,如图所示,那么如图所示的该事件22位于池化核的第一个感受野(图中虚线部分)内。虽然图中的感受野是一个连续的区域,但是其中的事件与事件之间也可以存在空隙,形成空洞,这是由池化核所决定的,本发明对池化核的构造形式不做限定。
43.事件矩阵20中的每个事件均被关联一个对应存储单元(比如sram存储器)作为其计数器。如图所示,该存储器21包括若干存储单元,事件矩阵中的每个事件均有一个存储单元作为其计数的计数器。根据事件的属性,比如坐标,可以唯一确定其对应的计数存储器。存储单元记录的数值称为计数字或计数、计数值。
44.参考图3,其展示了基于事件的最大池化方法。对于传感器输出的事件,举例而言,其格式如下{事件坐标}。可选地,该事件坐标可以包括两个数值x和y。优选地,该事件还包括偏置标记is_bias,其被用于重置操作,即在某类实施例中,该事件的格式如下:{事件坐
标,偏置标记}。对于二维信号而言,事件的格式可以具体为{x,y,is_bias},其中x,y代表事件的位置坐标,is_bias是偏置标记,比如通过1表示是该事件是偏置事件,通过0表示该事件不是偏置事件,是正常事件。坐标仅有两位代表传感器是二维传感器,比如视觉信号常常用二维信号表示。当然,本发明中也可以不限于二维传感器信号,可以是一维、三维乃至更多维,这里仅仅是用二维信号作为举例。
45.步骤31:根据输入事件{x,y,is_bias},决定其池化目标。
46.由于事件包括事件坐标,因而基于池化核的构造和事件的坐标,即可确定该事件与周围的其它事件集合构成的池化目标。在某类实施例中,可以通过确定一个集合,其包括了该确定了的池化目标对应的所有事件计数索引count
id
或所有事件的坐标,比如{x
p
,y
p
},或是二者的结合。举例而言,所述事件计数索引count
id
是事件在存储器21中存储单元的索引。任意能唯一确定池化目标对应的所有事件的方式均是可行的,本发明对此不作限定。对于当前输入事件,确定的池化目标事件集合的坐标集合记作{x
p
,y
p
},在存储器21中存储单元的索引记作count
id
。此时可以确定的信息包括:池化目标事件集合的坐标集合{x
p
,y
p
}、该些坐标各自对应的事件计数索引(统一记为count
id
)、输入事件的偏置标记is_bias。
47.参考图2中的事件22,对于2
×
2的池化核,该事件22与其周围的3个像素(图中虚线框内)共同构成了池化目标。比如,该池化目标事件计数索引为{1,2,5,6}。
48.步骤32:从对应的存储单元中为所述池化目标事件集合加载计数字。
49.由于已经或可以获得池化目标事件集合及其事件计数索引count
id
,因此该步骤可以从存储器21中读取池化目标事件集合对应的存储单元集合及其对应的存储的计数字集合。比如通过前述计数索引{1,2,5,6}读取其中存储的计数值(或计数、计数字),该些计数值被统一记为count。
50.步骤33:根据输入事件的偏置标记判断事件类型。
51.如果输入事件{x,y,is_bias}的偏置标记为真,那么输入事件就是偏置事件,这将触发后续描述的计数值归零操作。如果所述偏置标记为假,那么输入事件就是正常事件。
52.可选地,偏置事件可以被如下方式触发生成:
53.(1)、当计数器达到预定值时,所述计数器被配置为对输入到所述输入事件所在的池化核感受野或卷积核感受野的脉冲计数;
54.(2)、当计数器达到预定值时,所述计数器被配置为对输入到脉冲神经网络的脉冲计数;
55.(3)、当达到时间基准(time reference)时。
56.可选地,该步骤33与步骤32的顺序可以置换,即先判断事件类型然后执行步骤32。
57.步骤34:如果输入事件的偏置标记为假,那么:判断当前输入事件的计数值是否达到阈值。
58.虽然此处的描述是所述计数值是否大于或等于某个阈值,但是其与判断所述计数值是否大于该阈值减1实质上是等价的。
59.另外设置该阈值的方案属于优选实施例,其优点包括:通过配置阈值可以在将来需要的时候设置精度。另一方面,这样还能有效阻止溢出。
60.步骤35:如果未达到阈值,那么对输入事件对应的计数值进行一次累加计数,并转步骤37。
61.具体的累加增数,一般为1。当然也可以是其它数值,比如2,本发明对具体的累加增数的数值不做限定。
62.参考图4所示的第一情形下最大池化中计数值更新示意图。若图2中的事件22对应的事件计数索引count
id
为6,那么对存储器21中索引为6的存储单元做一次累加计数,比如之前存储的是数值9,那么累加后更新为10。
63.步骤36:如果达到阈值,那么将池化目标事件集合中其它的事件对应的计数值,全部归零(即置零),并转步骤37。
64.执行该步骤意味着,当前输入事件直接触发阈值,可以直接作为池化结果输出。将池化目标事件集合中的其它事件对应的计数值全部归零,完成一个感受野的池化过程。
65.参考图5,是第二情形下最大池化过程中计数值更新示意图,其展示的是在所述阈值为9的情况下,事件22直接触发阈值,该事件22可以作为该池化步骤的池化结果输出。因此除了索引为6的存储单元外,其它索引为1,2,5的存储单元存储的计数值均被归零。
66.由于其它计数值均归零,因此步骤36转步骤37之后,该输入事件对应的计数值必然最大,因此该种情况下该输入事件也必然作为池化结果。为防止该输入事件对应的计数值一直最大进而导致该事件对应坐标的输入事件也一直作为池化结果,在完成步骤37的判断并发送事件后,需要将该输入事件对应的计数值也归零。该归零方式可以包括:直接将对应的存储单元写入0;或输入一个事件{x,y,is_bias=true},该事件为偏置事件,且与所述输入事件具有相同事件坐标{x,y},将直接触发池化目标事件集合中所有事件对应的计数值归零。本发明此处的归零方案不做限定。
67.该步骤36的一个替代方案是:步骤36’:如果达到阈值,那么将池化目标事件集合中全部事件对应的计数值归零(即置零),发送该输入事件作为池化结果,结束当前池化步骤。
68.可选地,通过设置一个乘法器,根据该乘法器所述偏置事件可以多次减去一个固定值。可选地,通过这种方式实现归零操作。
69.步骤37:判断当前输入事件对应的计数值在池化目标事件集合中事件对应的计数值是否最大。
70.如果当前输入事件对应的计数值最大,那么该事件将作为池化结果输出,发送该事件。如果当前输入事件对应的计数值不是最大,那么该输入事件将不能作为池化结果,丢弃该输入事件。
71.比如,图4中所示例子中,事件22对应的计数值10在目标事件集合中事件对应的计数值已经属于最大,因此其可以作为池化结果输出。
72.步骤38:在步骤33中,若判断输入事件为偏置事件,即如果输入事件的偏置标记为真,那么将所述池化目标事件集合中所有事件对应的计数值归零。
73.该步骤允许对该事件所在的感受野内在存储器21中所对应的全部计数值归零。
74.步骤39:将事件对应的计数值写入存储器的存储单元中。
75.在步骤35、步骤36(以及步骤36’)和步骤38之后,需要保存事件对应的更新后的计数值。举例而言,通过写入sram即可实现该过程,当然存储器的类型此处不做限定。
76.参考图6,其展示的是事件驱动系统中最大池化系统框图,该系统被配置为实施上述的最大池化方法。该系统中从上一级传入的事件被送入第一缓存模块,然后根据第一缓
存模块中输出的事件40{x,y,is_bias}在目标决定模块中决定池化目标,即确定池化目标事件的坐标集合{x
p
,y
p
}以及对应的事件计数索引count
id
,其中x,y是事件40的坐标,is_bias是偏置标志。此外,目标决定模块输出的第一数据流41中还包括读指令和偏置标记is_bias,所述读指令控制读取事件计数索引count
id
对应的计数值。
77.在合并流仲裁(merge stream arbitration)模块中,合并其输入的数据流,比如输入的第一数据流41,以及其它数据流(后文所述的第一类型第三数据流43)。然后在存储器,比如sram中,读取或写入数据。举例而言,如前述的读取事件计数索引count
id
对应的计数值。在第二数据流42中包括的数据有{x
p
,y
p
,count
id
,is_bias,count_words},其中的count_words是计数值(或计数字)。将读取的计数值等数据送入归零与累加模块中,根据前述最大池化方法确定对数据进行归零或累加,并输出第三数据流43。该第三数据流43包括两种类型:类型一、{x
p
,y
p
,count
id
,write,count_words
*
},其中的write是向sram写指令,该类型数据流将被分劈模块分流至第二缓存模块中;以及类型二、{x
p
,y
p
,count
id
,count_words
*
},该类型数据流被送入寻找最大模块;其中的count_words
*
是经过归零与累加模块更新后的count_words。在寻找最大模块中,确定输入事件40是否是最终的池化结果,其输出的第四数据流44包括{x
p
,y
p
,is_max},其中的is_max是判定结果。根据该最终的判定结果,在有条件丢弃模块确定是发送事件40(对应is_max为真,获得池化结果45)还是丢弃事件40(对应is_max为假)。
78.在分劈模块的输出结果中,包含写指令的第一类型第三数据流43,被送入第二缓存模块,该第二缓冲模块中的数据将被送入合并流仲裁模块,作为合并流仲裁模块的另一输入,并用来向sram读/写模块写入数据,比如执行前述步骤39。
79.此外,目标决定模块和第二缓存模块中的数据还可以用来控制事件流动控制模块,以控制第一缓存模块的数据流动。比如当输入系统的事件过多时,这种控制将十分有利于系统流畅运行。
80.此外,本发明还公开一种芯片,该芯片是事件驱动类型芯片,该芯片使用如上所述的任意一种基于事件的最大池化方法。
81.此外,本发明还公开一种电子产品,该电子产品使用所述芯片来处理环境信号。
82.尽管已经参考本发明的具体特征和实施例描述了本发明,但是在不脱离本发明的情况下可以对其进行各种修改和组合。因此,说明书和附图应简单地视为由所附权利要求限定的本发明的一些实施例的说明,并且预期涵盖落入本发明范围内的任何和所有修改、变化、组合或等同物。因此,尽管已经详细描述了本发明及其优点,但是在不脱离由所附权利要求限定的本发明的情况下,可以进行各种改变、替换和变更。此外,本技术的范围不旨在限于说明书中描述的过程、机器、制造、物质组成、装置、方法和步骤的特定实施例。
83.本领域普通技术人员从本发明的公开内容将容易理解,可以根据本发明应用执行与本文描述的相应实施例实质上相同功能或达到实质上相同的结果的当前存在或稍后开发的过程、机器、制造、物质组成、装置、方法或步骤。因此,所附权利要求目的在于在其范围内包括这样的过程、机器、制造、物质组成、装置、方法或步骤。
84.为了实现更好的技术效果或出于某些应用的需求,本领域技术人员可能在本发明的基础之上,对技术方案作出进一步的改进。然而,即便该部分改进/设计具有创造性或/和进步性,只要利用了本发明权利要求所覆盖的技术特征,依据“全面覆盖原则”,该技术方案
同样应落入本发明的保护范围之内。
85.所附的权利要求中所提及的若干技术特征可能存在替代的技术特征,或者对某些技术流程的顺序、物质组织顺序可以重组。本领域普通技术人员知晓本发明后,容易想到该些替换手段,或者改变技术流程的顺序、物质组织顺序,然后采用了基本相同的手段,解决基本相同的技术问题,达到了基本相同的技术效果,因此即便权利要求中明确限定了上述手段或/和顺序,然而该些修饰、改变、替换,均应依据“等同原则”而落入权利要求的保护范围。
86.对于权利要求中有明确的数值限定的,通常情况下,本领域技术人员能够理解,该数值附近的其它合理数值同样能够应用于某具体的实施方式中。这些未脱离本发明构思的通过细节规避的设计方案,同样落入该权利要求的保护范围。
87.结合本文中所公开的实施例中描述的各方法步骤和单元,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明所要求保护的范围。
88.此外,本文示例的执行指令的任何模模块、组件或设备可以包括或以其它方式访问用于存储信息的非暂时性计算机/处理器可读存储介质或介质,诸如,计算机/处理器可读指令、数据结构、程序模块和/或其它数据。任何这种非暂时性计算机/处理器存储介质可以是设备的一部分或者可访问或可连接到设备。本文描述的任何应用或模块可以使用计算机/处理器可读/可执行指令来实现,该指令可以由这种非暂时性计算机/处理器可读存储介质存储或以其它方式保持。
转载请注明原文地址:https://win.8miu.com/read-25558.html