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

一种基于基底查找表SVM的癫痫信号检测硬件加速电路的制作方法

2023-02-01 23:43:18 来源:中国专利 TAG:

一种基于基底查找表svm的癫痫信号检测硬件加速电路
技术领域
1.本发明涉及图像处理技术领域,尤其涉及一种基于基底查找表svm的癫痫信号检测硬件加速电路。


背景技术:

2.癫痫是一种脑部的慢性障碍综合症,癫痫的发作会给患者带来巨大的痛苦,因此检测癫痫发作,能够及时给患者带来相应的治疗,有利于患者的正常生活。eeg的脑电信号是分析脑部功能的重要工具,也是癫痫检测采用的样本,癫痫检测研究里经常采用的数据集是chb-mit数据集和bonn数据集。
3.癫痫检测的一般流程是:把eeg信号进行预处理,得到癫痫间期和癫痫期的信号,送入分类器学习;一定周期的样本训练结束后,测试样本输入并分类,检测准确率。
4.支持向量机(svm)是一种应用于癫痫信号检测领域的重要技术,然而svm的训练过程复杂,因此计算成本较高;此外分类精度较高的高斯核函数svm,它的指数函数硬件实现困难,在实现过程中难以保持准确度。


技术实现要素:

5.针对现有算法的不足,本发明设计了一种使用高斯核函数支持向量机分类的硬件实现方案,在设计中通过基底查找表法设计高斯核函数中使用的负指数函数部分电路,在癫痫分类数据集中达到了较好的性能。
6.本发明所采用的技术方案是:一种基于基底查找表svm的癫痫信号检测硬件加速电路,包括:控制模块、核函数预处理模块、支持向量系数更新模块、支持向量误差更新模块、测试模块、第一存储器和第二存储器;控制模块通过状态转移发出enable信号,分别使能核函数预处理模块、支持向量系数更新模块、支持向量误差更新模块和测试模块;核函数预处理模块、支持向量系数更新模块、支持向量误差更新模块和测试模块计算完成后向控制模块发出end信号,用于控制模块的状态转移。
7.进一步的,核函数预处理模块对第一存储器读操作、读取支持向量xi和支持向量xj,计算核函数k(xi,xj),并初始化误差值和支持向量系数,并对第一存储器和第二存储器写操作。
8.进一步的,核函数预处理模块由输入的支持向量消耗5个时钟周期得到指数函数值;由于平方是正数,为了节省位宽,从第二个时钟周期开始的数据,没有符号位,由4位整数位和12位小数位组成,并将输出作为指数函数电路的输入。
9.进一步的,指数函数电路由4个16
×
16的rom、3个位宽为16
×
16的乘法器,以及3个位宽截取的模块组成,通过确定基底x的范围和步长,用exp(x)映射得到基底对应的输出y的值,输出y乘2
12
转化为整数后,转化为16进制的数据储存在4个rom;位宽截取的模块保证最后两个相乘的二进制数位宽为16位,32位的二进制乘积截去最低位的12位小数位和最高位的4位整数位,截取16位二进制数。
10.进一步的,核函数预处理模块的电路逻辑控制支持向量的读地址,计算并且储存训练样本i和j之间的核函数,对于xi和xj产生的核函数,储存地址的公式为:
11.k_addr
ij
=(i-1) j*(l-1)-j*(j 1)/2
12.其中,k_addr
ij
是核函数储存地址,i是第一个选择的样本对应标签,j是第二个选择的样本对应标签。
13.进一步的,支持向量更新模块是从支持向量误差更新模块中输入最大、最小误差和对应的标签,对第一存储器、第二存储器进行读操作,对第二存储器进行写操作;通过逻辑运算更新α1和α2并写回第一存储器;将支持向量增加值δα
i1
和δα
i2
作为输出传递给支持向量误差更新模块。
14.进一步的,支持向量误差更新模块输入支持向量增加值δα
i1
和δα
i2
和对应标签i1和i2,对第一存储器、第二存储器进行读操作,对第一存储器进行写操作;更新每一个训练样本支持向量对应的误差其中,为新误差,δα
i1
和δα
i2
为样本i1和样本i2两个样本对应拉格朗日因子的增加量;y
i1
和y
i2
为样本标签,k(x
i1
,xi)和k(x
i2
,xi)为核函数值;更新最大、最小误差和对应的标签并且输出传递给支持向量更新模块,并且把i2的值传递给控制模块。
15.进一步的,支持向量误差更新模块输入δα
i1
、δα
i2
、i1、i2,通过计数器i的循环读出第二存储器和第一存储器对应的地址,更新的误差写入第一存储器地址,每一个误差更新后,判断fi》f
up
和fi《f
low
是否为真,若为真,则替代对应的f
up
和f
low
并更新标签i
up
和i
low

16.进一步的,测试模块输入支持向量xj,从第一存储器中读出存储的支持向量系数αi、标签yi和支持向量xi,计算循环读出第一存储器里的αi、yi、xi,xi与xj做核函数运算乘系数,并且根据标签yi用两路选择器判断正负性,之后累加,直到第一存储器的所有地址都完成搜索,然后减去偏移值并判断最高位符号,确定样本的分类。
17.本发明的有益效果:
18.1、本发明电路设计实现以低资源消耗较少时钟周期的高精度癫痫检测;
19.2、实现癫痫检测svm分类器的硬件加速,由5个模块和2个ram存储器组成,并且把基于查找表设计负指数函数电路应用于计算svm分类的高斯核函数,使得计算消耗的时钟周期和资源都比较少,同时满足癫痫检测所需要的精度。
附图说明
20.图1是本发明的基于基底查找表svm的癫痫信号检测硬件加速电路逻辑图;
21.图2是本发明的核函数计算电路和指数函数电路的结构图;
22.图3是本发明的核函数预处理模块的结构图;
23.图4是本发明的五个模块状态转移图;
24.图5是本发明的测试模块的结构图;
25.图6是本发明的癫痫检测的准确率结果图。
具体实施方式
26.下面结合附图和实施例对本发明作进一步说明,此图为简化的示意图,仅以示意方式说明本发明的基本结构,因此其仅显示与本发明有关的构成。
27.实施例中采用bonn数据集的癫痫发作期(e)和癫痫间期(d)两个数据集,每256个连续的点加窗处理组成一个样本,任意选取d集和e集里各64个样本作为训练集;数据集对于一个训练样本经过四层离散小波变换滤波处理,每一层滤波提取平均值和标准差两个特征值,得到8个特征值;
28.如图1所示,一种基于基底查找表svm的癫痫信号检测硬件加速电路,包括控制模块、核函数预处理模块、支持向量系数更新模块、支持向量误差更新模块、测试模块、ram1存储器和ram2存储器;控制模块通过状态转移发出enable信号,分别使能核函数预处理模块、支持向量系数更新模块、支持向量误差更新模块和测试模块;核函数预处理模块、支持向量系数更新模块、支持向量误差更新模块和测试模块计算完成后向控制模块发出end信号,用于控制模块的状态转移;
29.核函数预处理模块对ram1存储器读操作、读取xi和xj,计算核函数k(xi,xj),并初始化误差值和支持向量系数,并对ram1和ram2写操作;
30.支持向量更新模块是从支持向量误差更新模块中输入最大、最小误差和对应的标签,对ram1存储器、ram2存储器进行读操作,对ram2存储器进行写操作;通过逻辑运算更新α1和α2并写回ram1存储器;将支持向量增加值δα
i1
和δα
i2
作为输出传递给支持向量误差更新模块;
31.支持向量误差更新模块输入支持向量增加值δα
i1
和δα
i2
和对应标签i1和i2,对ram1存储器、ram2存储器进行读操作,对ram1存储器进行写操作;更新每一个训练样本支持向量对应的误差向量对应的误差其中,为新误差,δα
i1
和δα
i2
为样本i1和样本i2两个样本对应拉格朗日因子的增加量;y
i1
和y
i2
为样本标签,k(x
i1
,xi)和k(x
i2
,xi)为核函数值;更新最大、最小误差和对应的标签并且输出传递给支持向量更新模块,并且把i2的值传递给控制模块;
32.测试模块读ram1存储器,输入测试样本的8个支持向量,计算核函数,再循环累加,作为模块的输出。
33.ram1存储器保存每个支持向量对应的误差fi、支持向量系数αi、8个支持向量x
i1
~x
i8
、以及支持向量对应的原标签yi,ram2存储器保存训练各向量之间的核函数,两个ram存储器通过使能信号、地址和数据总线,与核函数预处理模块、支持向量系数更新模块、支持向量误差更新模块和测试模块之间交互;
34.数据位宽为16bit,其中1bit符号位,3bit整数位,12bit小数位;初始化误差fi和支持向量系数αi,将fi和αi连同训练样本的支持向量xi和对应的标签yi储存在ram1存储器中,在ram1存储器中,fi、αi的存储空间的大小分别为16bit
×
128,标记yi的存储空间大小128bit,由于每个样本的支持向量由8个特征组成,因此xi的存储空间大小为8
×
16bit
×
128,相加得到ram1存储空间的总容量为18kbit。
35.如图3是核函数预处理模块的结构图,核函数预处理模块中,电路逻辑控制支持向量的读地址,计算并且储存训练样本i和j之间的核函数,对于xi和xj产生的核函数,储存地
址的公式为:
36.k_addr
ij
=(i-1) j*(l-1)-j*(j 1)/2
37.其中,k_addr
ij
是核函数储存地址,i是第一个选择的样本对应标签,j是第二个选择的样本对应标签;等到训练样本的所有核函数值都完成计算后,输出end信号。
38.在ram1存储器中读取xi和xj,计算k(xi,xj)时,addr_i从1开始,addr_j从(addr_i 1)依次递增,当addr_j增大到最后一个样本的地址128时,addr_i增加1,addr_j再次从(addr_i 1)递增到128,如此依次循环;在整个过程中,存储核函数的ram2存储器的写使能信号始终为1,读出addr_i和addr_j的支持向量后,首先计算两个支持向量的距离,再进入基底查找表法计算的指数函数电路中,得到的核函数值存入k_addr
ij
=(i-1) j*127-j*(j 1)/2的地址中,ram2存储器的容量为16
×
128
×
127/2(bit),也就是127kbit。
39.支持向量系数更新模块中,输入的是支持向量误差更新模块计算得到的最大误差f
up
和最小误差f
low
以及对应的标签i
up
和i
low
、计数器生成i2,从ram1存储器中读取f
i2
,通过加法器和比较器,判断f
up-f
i2
《f
i2-f
low
,结果为真则选择i
up
为i1,否则选择i
low
为i1;然后读取ram2存储器,利用公式更新支持向量系数取ram2存储器,利用公式更新支持向量系数将更新后的系数写入ram1存储器,同时输出δα
i1
、δα
i2
、i1、i2,系数更新完成以后,支持向量系数变化值δα
i1
和δα
i2
输入到支持向量误差更新模块,计数器i2的值和end信号作为输出传递给控制模块。
40.支持向量误差更新模块中,输入δα
i1
、δα
i2
、i1、i2,通过计数器i的循环读出ram2存储器和ram1存储器对应的地址,更新的误差写入ram1存储器地址,每一个误差更新后,判断fi》f
up
和fi《f
low
是否为真,若为真,则替代对应的f
up
和f
low
并更新标签i
up
和i
low

41.图4是五个模块的状态转移图,每个模块的状态发出enable信号控制相连的模块的运行,通过end信号使当前模块进入下一个状态,在支持向量误差更新模块状态时,通过判断输入i《128来控制循环次数。
42.图5是测试模块的结构图,输入是经过滤波和特征提取之后的测试样本的支持向量xj,从ram1存储器中读出存储的支持向量系数αi、标签yi和支持向量xi,计算其中,b为偏移值;循环读出ram1存储器里的αi、yi、xi,xi与xj做核函数运算乘系数,并且根据标签用两路选择器判断正负性,之后累加,直到ram1的所有地址都完成搜索,然后减去偏移值并判断最高位符号(0或1),来确定样本的分类;例如ram1存储器地址i从1开始依次增加到128,先计算核函数k(xi,xj),再根据标签yi判断符号,最后与系数相乘,通过计数器计数,等128个地址都完成搜索后,减去偏移值并判断符号,判断输入支持向量xj对应的标签。
43.核函数预处理模块与测试模块需要频繁使用核函数计算,图2(左)是核函数计算的逻辑结构图,由输入的支持向量消耗5个时钟周期得到指数函数值;由于平方是正数,为了节省位宽,从第二个时钟周期开始的数据,没有符号位,由4位整数位和12位小数位组成;核函数采用高斯核函数k(xi,xj)=exp(-||x
i-xj||2/σ2)计算的硬件加速实现,通过仿真得
到,当σ值设为1时准确率最高,计算||x
i-xj||2时,先把对应的支持向量相减,然后做平方运算,并两两相加,得到的结果再使用两两相加的方式,得到的输出作为指数函数电路的输入。
44.基底查找表的方法是把指数按照位数划分为不同的基底,每一个基底可以查找到一个对应的指数函数的值,再把这些基底对应的值相乘来得到指数函数的值;指数函数的基底拆分由以下公式表示:
45.ei=e
ax
*e
by
*e
cz
46.其中,i是输入的二进制数,a、b和c分别表示每一位数对应的基底,以十进制数来说,可以把e
3.68
拆分成e3*e
0.6
*e
0.08
,得到个位、十分位和百分位三个基底,它们的系数分别为3、6和8,分别得到三个基底对应的指数函数值后,再相乘即可以得到e
3.68
的指数函数值。
47.图2(右)基底查找表法计算指数函数电路,由4个16
×
16的rom、3个位宽为16
×
16的乘法器,以及3个位宽截取的模块组成,对于四个基底来说,对应的数据范围分别是0~15
×
16-3
、0~15
×
16-2
、0~15
×
16-1
、0~15,对应的步长分别是16-3
、16-2
、16-1
和1;通过确定基底x的范围和步长,在matlab工具里用exp(x)映射得到基底对应的输出y的值,y乘2
12
转化为整数后,转化为16进制的数据储存在4个rom里;位宽截取的模块保证了最后两个相乘的二进制数位宽为16位,32位的二进制乘积截去最低位的12位小数位和最高位的4位整数位,截取16位二进制数(4位整数位 12位小数位)。
48.本发明提出的基于基底查找表指数函数的癫痫信号检测硬件实现,可以减少svm学习电路的时钟周期,减少指数函数电路消耗的资源,同时保证癫痫检测的高准确率。本发明的电路在vivado平台的xc7a75tfgg484-1上运行,得到指数函数部分的slice lut的消耗仅为49个,远小于传统方案;一次核函数计算消耗的时钟周期仅为7个,小于传统方案里的22个;采用bonn数据集得到的128个样本进行训练后,用512个样本测试,作为一个周期,在四个周期循环结束后,得到癫痫信号检测的准确率约为95.2%,如图6所示使用bonn数据集得到的分类准确率比起软件预测的准确率略低,但是与其他fpga预测得到的准确率相比基本相当。
49.以上述依据本发明的理想实施例为启示,通过上述的说明内容,相关工作人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改。本项发明的技术性范围并不局限于说明书上的内容,必须要根据权利要求范围来确定其技术性范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献