面向脑电信号处理的低功耗计算架构的制作方法

文档序号:16137009发布日期:2018-12-01 01:07阅读:169来源:国知局

本发明涉及混合神经网络加速器架构领域,具体是一种面向脑电信号处理的低功耗计算架构。

背景技术

脑电信号是人体重要的生理信号,是脑神经细胞生理活动在大脑皮层的总体反应。脑电信号中包含了大量的生理信息,在医学方面有多种用途,常用于诊断癫痫,睡眠障碍等。

人类对于脑电信号的研究与利用从未停止,对于脑电的认识逐渐变得深入。用脑电信号去控制机器,需要脑机接口去实现两者的连接。在现阶段工程应用中,脑机接口(brain-computerinterface,bci)实现脑电生理信号的提取与数字化,使得人类通过对脑电信号有限的处理提取和分类达到某种控制目的。脑机接口的重要性在于利用生物信息,可以设想这样一个场景,在未来家庭中,当你想打开电视机,不需按遥控器,不需说话,只需要轻轻思考一下,用脑电波去实现控制,这极大的方便了人类的生活。作为开源脑电图(eeg)平台,openbci提供了一套完整的脑电采集与开发软硬件平台,这也极大地方便研究人员利用现有资源去进行进一步研究。

近些年,人工神经网络的发展迅速,这使得原本处于设想阶段的场景得以实现。将脑电信号与神经网络进行结合,是很有意义的。利用人工神经网络与脑机接口,人类可以用“意念”去控制物体。然而,脑电信号噪声高,信噪比低,如果仅用单一脑电信号信号进行识别、运算与控制,这会很容易受到外界干扰,精度无法保证,容错性较低。因此,通过构建多模态方式可以提高脑电信号识别的准确性,利用多种不同模态信号去识别、运算与控制,脑电运算结果的可靠性会很高,这样的设计也更人性化,智能化。

神经网络的种类很多,卷积神经网络(convolutionalneutralnetwork)与递归神经网络(recurrentneutralnetwork)是现阶段应用比较广泛的人工神经网络模型。其中,卷积神经网络对图像信号敏感,并具有高度适应性,在诸如模式识别,机器视觉领域得到了广泛的应用。递归神经网络对时间序列化信号敏感,此网络结构具有一定的“记忆能力“,通过其递归特性,实现了对上下文的“记忆”,在文本识别等领域得到了广泛的应用。脑电信号作为一种时间序列化信号,适合用rnn进行计算。

目前,卷积神经网络与递归神经网络的实现主要采用软件实现方案,基于通用处理器计算,效率低,能耗高。然而,卷积计算具有并行性,递归计算内部具有独立性等特点。因此,用fpga设计一款专用多模态神经网络处理器,使得cnn与rnn两种模型工作与同一种处理器架构上,其中,rnn负责脑电信号的运算,cnn负责人眼图片信号的运算。fpga(field-programmablegatearray)包含一系列可编程逻辑模块,其具有配置灵活、资源丰富、易于开发等优点。但是,对于采用fpga实现卷积神经网络与递归神经网络是一项具有挑战性的任务,因为其内部计算涉及大量的二维、三维卷积运算、递归计算、非线性函数计算并包含大量数据的读取与写入。



技术实现要素:
本发明的目的是提供一种面向脑电信号处理的低功耗计算架构,以实现基于fpga构建的多模神经网络处理器架构。

为了达到上述目的,本发明所采用的技术方案为:

面向脑电信号处理的低功耗计算架构,其特征在于:包括在fpga处理器中构建的卷积计算模块、迭代计算模块和全连接+模块,其中卷积计算模块有两层,卷积计算模块的每一层分别利用卷积进行并行计算;迭代计算模块有一层,迭代计算模块在每次迭代过程中利用门间进行并行计算;全连接模块位于卷积模块后与迭代模块后,其内部由乘法器与加法器构成,分别对卷积与迭代计算模块输出的数据与权重进行乘法运算并对乘积累加;双路合并模块实现卷积子路与迭代子路的数据合并。

所述的面向脑电信号处理的低功耗计算架构,其特征在于:所述的卷积计算模块中第一层分为数据输入控制模块、权重输入控制模块、n*n计算单元cu、rescale模块、relu激活模块、数据输出控制模块、整体控制模块,其中:

n*n计算单元cu内部为包含n2个并行乘法器与n2路加法器的n*n计算单元,对应卷积窗口大小为n*n,其中n为大于或等于1的整数,通过n2个并行乘法器与n2路加法器实现对n2个数据与n2个权重进行乘加运算;

数据输入控制模块、权重输入控制模块同时对应向n*n计算单元cu输入n2个数据与n2个权重;

relu激活模块是对cu计算结果进行激活,具体为大于0的输入保持不变,小于0的输入激活为0;

rescale模块重新调整n*n计算单元cu运算后输出的数据的大小;

输出控制模块产生输出使能信号,驱动缓存写入;

整体控制模块为控制状态机,实现上述各个模块的时序控制。

所述的面向脑电信号处理的低功耗计算架构,其特征在于:所述的卷积计算模块中第一层分为数据输入控制模块、权重输入控制模块、m*m计算单元cu、accumulate累加模块、rescale模块、relu激活模块、数据输出控制模块、整体控制模块,其中:

m*m计算单元cu内部为包含m2个并行乘法器与m2路加法器的m*m计算单元,对应卷积窗口大小为m*m,其中m为大于或等于1的整数,通过m2个并行乘法器与m2路加法器实现对m2个数据与m2个权重进行乘加运算;

数据输入控制模块、权重输入控制模块同时对应向m*m计算单元cu输入m2个数据与m2个权重;

relu激活模块是对cu计算结果进行激活,具体为大于0的输入保持不变,小于0的输入激活为0;

accumulate累加模块累加m*m计算单元cu的输出数据;

rescale模块重新调整accumulate累加模块输出的数据大小;

输出控制模块产生输出使能信号,驱动缓存写入;

整体控制模块为控制状态机,实现上述各模块的时序控制。

迭代计算模块分为数据输入控制模块、状态输入控制模块、权重输入控制模块、ingate门单元模块、forgetgate门单元模块、outgate门单元模块、ggate门单元模块、add模块、rescale模块、sigmoid激活模块、tanh激活模块、计算状态out_state模块、计算数据out_hpre模块、数据输出控制模块、整体控制模块,其中:

数据输入控制模块,状态输入控制模块与权重输入控制模块负责输入数据流、状态流、权重流的读取地址的计算,该地址输入到对应缓存中,从而得到门单元的输入;

ingate门单元模块、forgetgate门单元模块、outgate门单元模块、ggate门单元模块与add模块对数据流、状态流与权重流进行乘加运算,rescale模块调整各个门单元模块运算数据的大小;

sigmoid激活模块与tanh激活模块实现神经网络的硬件激活运算,即对输入数据进行线性运算,得到输出数据;

计算状态out_state模块、计算数据out_hpre模块分别对各个门单元模块的数据与状态进一步乘加并激活,从而得到整个模块的输出;

输出控制模块产生输出使能信号,驱动缓存写入;

整体控制模块为控制状态机,实现上述各个模块的时序控制。

全连接计算模块分为数据输入控制模块、权重输入控制模块、全连接计算单元、数据输出控制模块、整体控制模块,其中:

数据输入控制模块与权重输入控制模块负责输入数据、权重的读取地址的计算,该地址输入到对应缓存中,从而得到全连接计算单元的输入;

全连接计算单元其内部由乘法器与加法器构成,分别对数据与权重进行乘法运算并对乘积累加。

输出控制模块产生输出使能信号,驱动缓存写入;

整体控制模块为控制状态机,实现上述各个模块的时序控制。

卷积模块子路与迭代模块子路需要进行双路合并操作,之后再进行类似前文的全连接操作,其中数据输入控制模块对于读取数据地址的计算需要经过一个读取地址裁决器,这样可以实现一路地址信号对于不同缓存块的寻址。

本发明分为卷积计算模块、迭代计算模块、全连接模块与双路合并模块。卷积计算模块共有两层结构,在每一层计算中利用卷积计算的并行性实现了计算效率的提升;迭代计算模块共有一层结构,在每一次迭代过程中,利用门间并行实现计算效率的提高;在全连接层的实现中,主要采用串行乘累加操作。本发明架构整体功耗与各自模块功耗为在75m的频率下,运算速率为0.042gmac/s,相比通用cpu可实现10.757倍的加速,功耗为通用cpu的31.67%。

本发明根据cnn与rnn的特点,构建多模态处理系统,即利用脑电信号与其他信号共同作为系统的输入,共同进行识别、运算与控制,这可以提高脑电信号识别的准确性,结果的可靠性会更高。

附图说明

图1是本发明卷积计算模块第一层结构图。

图2是本发明卷积计算模块第二层结构图。

图3是本发明迭代计算模块结构图。

图4是本发明全连接计算模块结构图。

图5是本发明双路合并模块结构图。

具体实施方式

下面结合附图和实施例对本发明进一步说明。

卷积计算模块第一层基本结构如图1所示,主要分为数据输入控制模块,权重输入控制模块,3*3计算单元cu,rescale模块,relu激活模块,数据输出控制模块与整体控制模块。3*3计算单元cu内部为3*3计算单元,对应卷积窗口大小为3*3,9个并行乘法器与9路加法器可以实现对9个数据与权重进行乘加运算。数据输入与权重输入控制模块负责同时向3*3计算单元cu输入9个数据与权重。rescale模块负责将3*3计算单元cu输出的32bits数据重新调整为16bits。数据输出控制模块负责产生输出使能信号,从而将输出数据写入层间缓存。整体控制模块为控制状态机,实现时序控制。

示例中,输入为单通道12*9特征图,卷积窗口大小为3*3,输出为32通道10*7特征图。首先,9路数据与权重同时导入3*3计算单元cu,3*3计算单元cu实现乘加操作后,经过rescale模块与relu激活后,在输出控制模块控制下写入缓存,实现输出一个像素点的操作。在完成第一个像素点运算后,数据读取地址步进1,权重读取地址不变,重复上述过程。当完成单通道特征图的扫描,即数据读取地址由0变为70,第一通道输出完成,像素大小为10*7。当完成一个通道输出后,权重读取地址步进9,切换到下一输出通道所需权重,数据仍为单通道12*9特征图,重复上述过程,开始第二个通道输出像素点的计算。当32通道输出计算完成时,共计算出2240个像素点,完成卷积网络第一层的计算。

卷积计算模块第二层基本结构如图2所示,主要分为数据输入控制模块,权重输入控制模块,2*2计算单元cu,accumulate累加模块,rescale模块,relu激活模块,数据输出控制模块与整体控制模块。2*2计算单元cu内部为2*2计算单元,对应卷积窗口大小为2*2,4个并行乘法器与4路加法器可以实现对4个数据与权重进行乘加运算。数据输入与权重输入控制模块负责同时向2*2计算单元cu输入4个数据与权重。accumulate累加模块负责累加2*2计算单元cu输出。rescale模块负责将累加单元输出的32bits数据重新调整为16bits。数据输出控制模块负责产生输出使能信号,从而将输出数据写入层间缓存。整体控制模块为控制状态机,实现时序控制。

示例中,输入为32通道10*7特征图,卷积窗口大小为2*2,输出为64通道9*6特征图。首先,数据读取起始地址与权重读取起始地址为0,4路数据与权重同时导入2*2计算单元cu,2*2计算单元cu实现乘加操作后,经过accumulate累加模块,然后数据读取地址步进70,切换到输入特征图的第二个通道的左上角四个数据,权重读取地址步进4,切换到第一通道输出中第二输入通道的权重,再经过cu单元并作累加。直到输入32通道特征图的左上角4个像素都计算完,得到输出64通道的第一个通道的第一个像素点计算数据,再经过rescale模块与relu激活,经数据输出控制模块写入缓存。在完成第一个像素点计算后,数据读取起始地址加1,数据切换为输入特征图的第一个通道的下四个数据,权重仍为输出第一个像素点时用到的权重,重复上述计算,直到输出第一通道的54个像素点都计算完。当完成一个通道输出后,输入特征图仍按计算第一通道输出步进,权重继续步进4,因为权重在存储时就是按计算顺序存储的。直到64通道特征图输出完毕。

迭代计算模块基本结构如图3所示,主要分为数据输入控制模块,状态输入控制模块,权重输入控制模块,ingate门单元模块,forgetgate门单元模块,outgate门单元模块,ggate门单元模块,add模块,rescale模块,sigmoid激活模块,tanh激活模块,计算状态out_state模块,计算数据out_hpre模块,数据输出控制模块与整体控制模块。

数据输入控制模块,状态输入控制模块与权重输入控制模块负责读取数据流、状态流、权重流的读取地址的计算。ingate门,forgetgate门,outgate门,ggate门单元模块与add模块负责对数据流、状态流与权重流进行乘加运算,在通过rescale模块转换为16bits数据。sigmoid与tanh激活模块实现激活运算。计算状态与计算数据模块对四个门的数据与状态进一步乘加并激活,从而得到整个模块的输出。数据输出模块负责产生写入使能信号。整体控制模块为控制状态机,实现时序控制。

首先,数据流与权重流起始地址都为0,数据流一次性输入85个,即第一个时刻对应的特征输入,与权重流进行点积,乘加操作85次后,得到每个门单元中第一部分的输出。接着,上一时刻out_hpre数据流一次性输入64个,与权重流进行点积,乘加操作64次后,得到每个门单元中第二部分的输出。接着,两部分输出通过add模块进行相加,之后通过rescale模块转换为16bits数据,四个门同时计算,得到四个门的输出。接着,四个门的输出通过out_state与out_hpre模块,并与上一时刻out_state数据流进行进一步乘加运算,并进行激活运算,从而得到第一时刻64个特征中一个状态与数据的输出。输出控制模块将他们通过分别写入独立片内缓存中。接着,数据流不变,即数据与状态读取的起始地址不变,权重切换到下一特征输出,即两部分权重流起始地址分别加85与64。重复上述过程,得到第一时刻64个特征中第二个状态与数据的输出,写入缓存,直到完成第一时刻64组输出。因为硬件设计中,执行的迭代次数为5,上述得到的第一时刻的64组数据与状态的输出,即将作为第二时刻运算的基础数据。此时,输入数据的起始地址加85,前一时刻数据输出的读取起始地址与前一时刻状态输出的读取起始地址都加64,重复第一时刻运算的基本流程,得到所有第二时刻的64组输出,直至5此迭代完成,并将最后一组输出中的数据输出hpre_out作为整个迭代网络的输出。

全连接模块基本结构如图4所示,主要分为数据输入控制模块,权重输入控制模块,全连接计算单元,数据输出控制模块与整体控制模块。数据输出控制模块负责产生写入使能信号,从未将输出数据写入层间缓存。整体控制模块为控制状态机,实现时序控制。

双路合并模块结构如图5所示,卷积模块子路与迭代模块子路需要进行双路合并操作,之后再进行类似前文的全连接操作,其中数据输入控制模块对于读取数据地址的计算需要经过一个读取地址裁决器,这样可以实现一路地址信号对于不同缓存块的寻址。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1