本發(fā)明屬于認知神經(jīng)科學領域與信息技術領域的結(jié)合應用,涉及p300speller腦機接口的計算機制,具體是一種基于storm的p300實時分布式計算方法。
背景技術:
腦機接口是一種人機交互新技術,能夠為運動功能缺失而腦功能完好的患者提供輔助生活能力,也能夠拓展正常人的交流能力。p300speller是腦機接口的一種方式,其功能是通過分析用戶的腦電信號,識別出用戶所想要輸出的字符,從而幫助用戶與外界交流。目前p300speller中的一系列處理都是基于串行計算的。當引入一些算法改進性能時,串行計算要求較長的計算時間,不利于腦機接口的及時響應,從而導致性能在另一方面下降。
技術實現(xiàn)要素:
有鑒于此,本發(fā)明的目的是針對p300speller類型的腦機接口提供一種基于storm進行實時分布式計算的方法。該方法以分布式計算系統(tǒng)storm為基礎構建p300speller的并行計算機制,使得較復雜的算法也能實時地處理p300speller的數(shù)據(jù),為引入各類算法改進p300speller腦機接口性能創(chuàng)造了條件。
本發(fā)明采用以下方案實現(xiàn):一種基于storm的p300實時分布式計算方法,具體包括以下步驟:
步驟s1:storm中專門負責采集數(shù)據(jù)的spout實時從前臺接收原始的腦電信號數(shù)據(jù)塊,并整理成p300eeg數(shù)據(jù)段傳給storm中的負責計算的bolt進行并行計算;
步驟s2:bolt負責一系列的信號處理;同一職能的多個bolt并行完成任務后把結(jié)果傳遞給下一個不同職能的多個bolt進行下一步的并行計算;完成p300的分類工作后,選取出含有p300成分的eeg片段,并記錄下其所對應的閃爍行列號;
步驟s3:通過bolt與前臺建立的socket連接,將含有p300成分的eeg數(shù)據(jù)段所對應的行列號傳回給前臺,前臺根據(jù)傳回的行列號確定反饋結(jié)果。
進一步地,步驟s1具體包括以下步驟:
步驟s11:storm中專門負責采集數(shù)據(jù)的spout工作者在初始化時建立與前臺的socket連接,該連接可以使兩端通過流的形式來傳輸數(shù)據(jù);
步驟s12:前臺每次將一個采樣塊大小的數(shù)據(jù)塊通過socket連接傳輸給spout工作者;
步驟s13:spout工作者依據(jù)p300eeg數(shù)據(jù)段的長度,維持一個按先進先出方式管理的數(shù)據(jù)容器;spout工作者每次接收到數(shù)據(jù)塊,先將流數(shù)據(jù)轉(zhuǎn)換成浮點型,再將數(shù)據(jù)塊插入到容器里,然后從容器里取出最新的一段p300eeg數(shù)據(jù)段,轉(zhuǎn)換成(key1,value1)的形式,key1表示相應的閃爍行列號,value1為該p300eeg數(shù)據(jù)段,把(key1,value1)分發(fā)給extractbolt工作者。
進一步地,所述步驟s2中的所述bolt負責的一系列的信號處理包括:
步驟s21:extractbolt工作者在storm啟動時載入所需要的特征提取方法;extractbolt工作者接收spout工作者傳來的數(shù)據(jù),進行特征提??;extractbolt工作者輸出(key2,value2)形式的數(shù)據(jù),其中key2表示相應的閃爍行列號,value2為由value1提取出的特征向量;extractbolt工作者將輸出的(key2,value2)分發(fā)給classifybolt工作者;
步驟s22:classifybolt工作者在storm啟動時載入所需要的分類方法;classifybolt工作者接收extractbolt工作者傳來的數(shù)據(jù),進行分類運算;classifybolt工作者輸出(key3,value3)形式的數(shù)據(jù),其中key3表示相應的閃爍行列號,value3為分類運算的數(shù)值結(jié)果,代表著該數(shù)據(jù)段包含p300成分的可能性;classifybolt工作者將輸出的(key3,value3)傳遞給averagebolt工作者;
步驟s23:averagebolt工作者接收classifybolt工作者傳來的數(shù)據(jù),把具有相同key3值的value3累加起來,并記錄累加次數(shù);當累加次數(shù)達到預設的條件時,針對每個key3值用累加值除以累加次數(shù)得到平均值;averagebolt工作者輸出(key4,value4)形式的數(shù)據(jù),其中key4為閃爍行列號,value4為相應的均值;averagebolt工作者將輸出的(key4,value4)傳遞給summarizebolt工作者。
進一步地,所述步驟s3具體包括以下步驟:
步驟s31:summarizebolt工作者在其初始化時建立與前臺的socket連接,用于將結(jié)果傳回前臺;
步驟s32:summarizebolt工作者接收averagebolt工作者傳來的數(shù)據(jù),依據(jù)key4代表行或列把數(shù)據(jù)分成兩組,分別從兩組中選出value4最大的那條數(shù)據(jù),得到包含p300成分的行號和列號;
步驟s33:summarizebolt工作者將行列號結(jié)果記錄下來,通過socket連接傳回給前臺的應用模塊,該模塊則根據(jù)傳回的行號和列號來確定給用戶的反饋。
較佳的,本發(fā)明改變了p300speller中傳統(tǒng)的串行處理數(shù)據(jù)的計算機制,采用一種并行的計算方式處理數(shù)據(jù),以此加快了計算速度,使得對反饋時間要求高的p300speller來說,可以使用一些精確度高但是時間復雜度的也高的算法。
與現(xiàn)有技術相比,本發(fā)明以分布式計算系統(tǒng)storm為基礎構建p300speller的并行計算機制,使得較復雜的算法也能實時地處理p300speller的數(shù)據(jù),為引入各類算法改進p300speller腦機接口性能創(chuàng)造了條件。
附圖說明
圖1為本發(fā)明實施例的原理示意圖。
圖2為本發(fā)明實施例以bci2000軟件作為前臺實施例的總框架示意圖。
具體實施方式
下面結(jié)合附圖及實施例對本發(fā)明做進一步說明。
本實施例提供一種基于storm的p300實時分布式計算方法,如圖1以及圖2所示,包括以下步驟:
步驟s1:storm中專門負責采集數(shù)據(jù)的spout工作者實時地從bci2000軟件中接收原始的腦電信號數(shù)據(jù)塊,并整理成p300eeg數(shù)據(jù)段傳給storm中的負責計算的bolt工作者進行并行計算;
步驟s2:bolt工作者負責一系列的信號處理;同一職能的多個bolt并行完成任務后把結(jié)果傳遞給下一個不同職能的多個bolt進行下一步的并行計算,并行計算提高數(shù)據(jù)處理的效率;完成p300的分類工作后,選取出含有p300成分的eeg片段,并記錄下其所對應的閃爍行列號;
步驟s3:通過bolt工作者與bci2000軟件建立的socket連接,將含有p300成分的eeg數(shù)據(jù)段所對應的行列號傳回給bci2000,bci2000則將根據(jù)傳回的行列號確定反饋結(jié)果。
在本實施例中,如圖2所示,所述步驟s1具體包括以下步驟:
步驟s11:storm中專門負責采集數(shù)據(jù)的spout工作者在初始化時建立與bci2000的socket連接,該連接可以使兩端通過流的形式來傳輸數(shù)據(jù);
步驟s12:bci2000的signalprocessing模塊中的p3temporalfilter部分,每次將一個采樣塊大小為blocksize的數(shù)據(jù)塊通過socket連接傳輸給spout工作者;
步驟s13:spout工作者依據(jù)p300eeg數(shù)據(jù)段的長度length,維持一個按先進先出方式管理的數(shù)據(jù)容器;spout工作者每次接收到數(shù)據(jù)塊,先將流數(shù)據(jù)轉(zhuǎn)換成浮點型,再將數(shù)據(jù)塊插入到容器里,然后從容器里取出最新的一段p300eeg數(shù)據(jù)段,轉(zhuǎn)換成(key1,value1)的形式,key1表示相應的閃爍行列號,value1為該p300eeg數(shù)據(jù)段,把(key1,value1)分發(fā)給extractbolt工作者。
在本實施例中,如圖2所示,所述步驟s2具體包括以下步驟:
步驟s21:extractbolt工作者在storm啟動時載入所需要的特征提取方法;extractbolt工作者接收spout工作者傳來的數(shù)據(jù),進行特征提?。籩xtractbolt工作者輸出(key2,value2)形式的數(shù)據(jù),其中key2表示相應的閃爍行列號,value2為由value1提取出的特征向量;extractbolt工作者將輸出的(key2,value2)分發(fā)給classifybolt工作者;
步驟s22:classifybolt工作者在storm啟動時載入所需要的分類方法;classifybolt工作者接收extractbolt工作者傳來的數(shù)據(jù),進行分類運算;classifybolt工作者輸出(key3,value3)形式的數(shù)據(jù),其中key3表示相應的閃爍行列號,value3為分類運算的數(shù)值結(jié)果,代表著該數(shù)據(jù)段包含p300成分的可能性;classifybolt工作者將輸出的(key3,value3)傳遞給averagebolt工作者;
步驟s23:averagebolt工作者接收classifybolt工作者傳來的數(shù)據(jù),把具有相同key3值的value3累加起來,并記錄累加次數(shù);當累加次數(shù)達到預設的條件sequence時,針對每個key3值用累加值除以累加次數(shù)得到平均值;averagebolt工作者輸出(key4,value4)形式的數(shù)據(jù),其中key4為閃爍行列號,value4為相應的均值;averagebolt工作者將輸出的(key4,value4)傳遞給summarizebolt工作者;
在本實施例中,如圖2所示,所述步驟s3具體包括以下步驟:
步驟s31:summarizebolt工作者在其初始化時建立與bci2000的socket連接,用于將結(jié)果傳回bci2000;
步驟s32:summarizebolt工作者接收averagebolt工作者傳來的數(shù)據(jù),依據(jù)key4代表行或列把數(shù)據(jù)分成兩組,分別從兩組中選出value4最大的那條數(shù)據(jù),得到包含p300成分的行號和列號;
步驟s33:summarizebolt工作者將行列號結(jié)果記錄下來,通過socket連接傳回給bci2000的application模塊,該模塊則根據(jù)傳回的行號和列號來確定給用戶的反饋。
在本發(fā)明實施例中,對于參數(shù)blocksize,length,sequence可按如下設定:blocksize=40,length=800,sequence=15。
在本發(fā)明實施例中,如圖2所示,對于extractbolt工作者所采用的特征提取方法以小波分析特征提取方法為例,并命名為waveletextractbolt;對于classifybolt工作者所采用的分類算法以svm算法為例,并命名為svmclassifybolt。
較佳的,本實施例改變了p300speller中傳統(tǒng)的串行處理數(shù)據(jù)的計算機制,采用一種并行的計算方式處理數(shù)據(jù),以此加快了計算速度,使得對反饋時間要求高的p300speller來說,可以使用一些精確度高但是時間復雜度的也高的算法。
以上所述僅為本發(fā)明的較佳實施例,凡依本發(fā)明申請專利范圍所做的均等變化與修飾,皆應屬本發(fā)明的涵蓋范圍。