資料介紹
描述
介紹
大約 1% 的人對(duì)他們的下一次癲癇發(fā)作感到焦慮。抗驚厥藥物對(duì)至少 20% 的患者沒有幫助,而且大劑量服用還會(huì)帶來副作用。這種恐懼妨礙了執(zhí)行日常任務(wù),例如駕駛汽車或游泳。存在可以檢測(cè)癲癇發(fā)作的設(shè)備,但我們的目標(biāo)是構(gòu)建一種可穿戴 EEG 設(shè)備,可以預(yù)測(cè)癲癇發(fā)作即將發(fā)生,以便護(hù)理人員和/或用戶可以暫停他們正在做的事情并采取適當(dāng)?shù)?/font>預(yù)防措施.
五年前,一場(chǎng)Kaggle 競(jìng)賽提出了開發(fā)機(jī)器學(xué)習(xí)算法以幫助預(yù)測(cè)癲癇發(fā)作事件的挑戰(zhàn)。向參賽者提供了 106 GB 的訓(xùn)練數(shù)據(jù) in.mat 文件。每個(gè)訓(xùn)練樣本代表 10 分鐘的原始顱內(nèi)腦電圖讀數(shù)。對(duì)于 5 只狗,數(shù)據(jù)包括以 400 Hz 采樣的 16 個(gè)通道讀數(shù)。對(duì)于 2 名人類患者,在 24 個(gè)通道上以 5000 Hz 的頻率對(duì)數(shù)據(jù)進(jìn)行采樣。
這是從一個(gè)頻道采樣的一小段:
醫(yī)學(xué)研究支持 4 個(gè)不同階段的概念,對(duì)應(yīng)于:癲癇發(fā)作事件之間、之前、期間和之后。出于此預(yù)測(cè)任務(wù)的目的,主要挑戰(zhàn)是開發(fā)二元分類器來區(qū)分所謂的發(fā)作間期(事件之間)和發(fā)作前(事件之前)狀態(tài)。
大多數(shù)參賽者根據(jù) FFT 或通道之間的時(shí)間相關(guān)性設(shè)計(jì)經(jīng)過實(shí)驗(yàn)室測(cè)試的功能,同時(shí)考慮到類似同期比賽的結(jié)果。
不受嵌入式硬件計(jì)算可行性的現(xiàn)實(shí)限制的約束,獲勝模型涉及使用各種機(jī)器學(xué)習(xí)算法訓(xùn)練的復(fù)雜集成。比賽于 2014 年結(jié)束,比 Tensorflow 等框架可用于深度學(xué)習(xí)實(shí)驗(yàn)早了將近一年。
自比賽以來,將卷積神經(jīng)網(wǎng)絡(luò) (CNN) 應(yīng)用于頻譜圖一直是語音和信號(hào)處理任務(wù)的一種流行方法。這借鑒了計(jì)算機(jī)視覺的成功經(jīng)驗(yàn),通過重新定義問題來識(shí)別信號(hào)時(shí)頻表示中稱為共振峰的視覺特征。
除了通過傅里葉變換實(shí)現(xiàn)正則化的好處之外,F(xiàn)FT 算法速度非常快,可以在資源有限的硬件上執(zhí)行。
CNN 也變得越來越小,因此我們將這兩種強(qiáng)大的算法結(jié)合起來,在嵌入式硬件上實(shí)時(shí)運(yùn)行推理,通過識(shí)別發(fā)作前狀態(tài)來預(yù)測(cè)癲癇發(fā)作。
訓(xùn)練我們的神經(jīng)網(wǎng)絡(luò)
我們從一些簡(jiǎn)化的假設(shè)開始。
由于資源限制,我們不想將 10 分鐘的 16/24 通道 EEG 記錄讀入內(nèi)存。相反,我們會(huì)將樣本分成 200 個(gè) 3 秒的片段。隱含地,我們假設(shè)每個(gè)人都同樣很好地代表了我們希望在區(qū)分該片段是否先于癲癇發(fā)作事件時(shí)學(xué)習(xí)的簽名。
此外,我們假設(shè)每個(gè)通道都獨(dú)立代表這些簽名。這允許我們以忽略通道之間的協(xié)方差為代價(jià)來擴(kuò)展數(shù)據(jù)集。首先,我們嘗試在標(biāo)準(zhǔn) FFT 下可視化頻譜圖:
通過試驗(yàn)不同的參數(shù)選擇和 FFT 變體,我們選擇了短時(shí)傅里葉變換 ( STFT )。
為了避免重新計(jì)算這些變換,我們將圖像輸出到文件。這是在對(duì)頻率表示中的表面視覺可辨模式應(yīng)用附加轉(zhuǎn)換和歸一化之后的示例。我們將圖像大小調(diào)整為 128x128 以加載更多圖像并更快地訓(xùn)練。
要了解有關(guān)我們數(shù)據(jù)處理的更多信息,請(qǐng)參閱我們的博客文章。
為了快速探索 CNN 將帶來一些有用的東西這一想法,我們使用非常簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)架構(gòu)和Keras順序 API 設(shè)置了一個(gè)基線。我們的 vanilla CNN 包括 5x5 卷積過濾器,然后是一個(gè) 3x3 卷積層,然后通過具有 ReLU 激活的完全連接層進(jìn)行展平和漏斗,以及用于額外正則化的 dropout。
def build_network():
model = Sequential()
model.add(Conv2D(32, (5, 5), input_shape=(128, 128, 1)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))
model.add(Flatten())
model.add(Dense(2048))
model.add(Activation('relu'))
model.add(Dropout(.5))
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(.5))
model.add(Dense(256))
model.add(Activation('relu'))
model.add(Dropout(.5))
model.add(Dense(1))
model.add(Activation('sigmoid'))
adam = Adam(lr=0.0001, beta_1=0.9, beta_2=0.999, epsilon=1e-8)
model.compile(optimizer=adam, loss='binary_crossentropy', metrics=['accuracy'])
return model
由于極端的類別不平衡,我們對(duì)發(fā)作前的例子進(jìn)行了上采樣。
調(diào)用fit 方法,我們?cè)谑褂脦浊€(gè)樣本的訓(xùn)練輸出中看到了學(xué)習(xí)的跡象。為了擴(kuò)大訓(xùn)練規(guī)模,我們切換到fit_generator方法來迭代我們收集的近 1000 萬張圖像。
我們發(fā)現(xiàn)我們的模型是欠擬合的,正如訓(xùn)練和驗(yàn)證性能相似的損失平穩(wěn)所證明的那樣:
Epoch 4/100
128/128 [==============================] - 525s 4s/step - loss: 0.6798 - acc: 0.5515 - val_loss: 0.6768 - val_acc: 0.5682
Epoch 5/100
128/128 [==============================] - 509s 4s/step - loss: 0.6769 - acc: 0.5668 - val_loss: 0.6775 - val_acc: 0.5579
Epoch 6/100
128/128 [==============================] - 532s 4s/step - loss: 0.6761 - acc: 0.5624 - val_loss: 0.6732 - val_acc: 0.5728
Epoch 7/100
128/128 [==============================] - 504s 4s/step - loss: 0.6748 - acc: 0.5714 - val_loss: 0.6706 - val_acc: 0.5803
Epoch 8/100
128/128 [==============================] - 505s 4s/step - loss: 0.6737 - acc: 0.5686 - val_loss: 0.6696 - val_acc: 0.5791
Epoch 9/100
128/128 [==============================] - 504s 4s/step - loss: 0.6733 - acc: 0.5665 - val_loss: 0.6685 - val_acc: 0.5808
Epoch 10/100
128/128 [==============================] - 504s 4s/step - loss: 0.6674 - acc: 0.5834 - val_loss: 0.6670 - val_acc: 0.5852
Epoch 11/100
128/128 [==============================] - 504s 4s/step - loss: 0.6676 - acc: 0.5782 - val_loss: 0.6669 - val_acc: 0.5863
Epoch 12/100
128/128 [==============================] - 503s 4s/step - loss: 0.6667 - acc: 0.5803 - val_loss: 0.6655 - val_acc: 0.5884
....
Epoch 99/100
128/128 [==============================] - 502s 4s/step - loss: 0.6242 - acc: 0.6316 - val_loss: 0.6317 - val_acc:
0.6271
Epoch 100/100
128/128 [==============================] - 521s 4s/step - loss: 0.6253 - acc: 0.6318 - val_loss: 0.6266 - val_acc:
0.6321
盡管如此,我們可以開始圍繞我們的簡(jiǎn)化假設(shè)確定一些細(xì)節(jié),并探索更復(fù)雜的模型。
接下來,我們嘗試通過使用TF-Slim在 ImageNet 上預(yù)訓(xùn)練的 inception_v3 架構(gòu)訓(xùn)練模型來進(jìn)行遷移學(xué)習(xí)。
inception_v3 架構(gòu)比我們上面的簡(jiǎn)單架構(gòu)具有更高的學(xué)習(xí)數(shù)據(jù)模式的能力。通過微調(diào),許多圖像特征將適合我們的任務(wù),即使圖像集非常不同。
經(jīng)過一段時(shí)間的訓(xùn)練后,我們的模型在近 100 萬張頻譜圖圖像的平衡子集上達(dá)到了72% 的驗(yàn)證準(zhǔn)確率。一旦我們?cè)?pi 上快速運(yùn)行,我們堅(jiān)信會(huì)投入時(shí)間和精力在更多數(shù)據(jù)上訓(xùn)練和評(píng)估這樣的模型。
此外,我們可能會(huì)嘗試無監(jiān)督預(yù)訓(xùn)練,因?yàn)橐话肟捎玫?Kaggle 數(shù)據(jù)由測(cè)試樣本組成。
更新:使用更新的 api、不同的模型架構(gòu)和略有不同的預(yù)處理,我們?cè)?/font>這個(gè)jupyter notebook中達(dá)到了更高的驗(yàn)證準(zhǔn)確性。
黑客腦電圖設(shè)備
我們嘗試了 Muse 耳機(jī),因?yàn)?/font>Adafruit 教程將其描述為直接破解。不幸的是,制造商無法繼續(xù)支持這一點(diǎn),并且引用的庫似乎已失效。
我們還找到了更實(shí)惠的Force Trainer 。但是,固件會(huì)執(zhí)行 FFT 并返回功率譜中不同波段內(nèi)的值。相反,我們需要原始 EEG 信號(hào),就像我們用來開發(fā)機(jī)器學(xué)習(xí)模型進(jìn)行分析的那樣。
最后,我們選擇了NeuroSky MindWave Mobile設(shè)備。價(jià)格介于上述兩個(gè)選項(xiàng)之間,同時(shí)支持收集原始 EEG 信號(hào),該產(chǎn)品看起來很有前途。我們使用這個(gè)repo從耳機(jī)中讀取原始 EEG 值。
import bluetooth
from mindwavemobile.MindwaveDataPoints import RawDataPoint
from mindwavemobile.MindwaveDataPointReader import MindwaveDataPointReader
import textwrap
if __name__ == '__main__':
mindwaveDataPointReader = MindwaveDataPointReader()
mindwaveDataPointReader.start()
try:
if (mindwaveDataPointReader.isConnected()):
while True:
dataPoint = mindwaveDataPointReader.readNextDataPoint()
if (dataPoint.__class__ is RawDataPoint): #Only want the raw vals
print(dataPoint) #printing as a test
else:
print((textwrap.dedent("""\
Exiting because the program could not connect
to the Mindwave Mobile device.""").replace("\n", " ")))
except KeyboardInterrupt:
sys.exit()
這款耳機(jī)將通過藍(lán)牙將數(shù)據(jù)傳輸?shù)轿覀兊?a target='_blank' class='arckwlink_none'>樹莓派。然后 pi 將像我們的訓(xùn)練樣本一樣格式化數(shù)據(jù)并對(duì)其進(jìn)行推理以預(yù)測(cè)癲癇發(fā)作。
運(yùn)行推理
在渲染圖像之前,我們?cè)谠O(shè)備上應(yīng)用我們的信號(hào)處理管道。
最后,如果檢測(cè)到與即將發(fā)生的癲癇發(fā)作事件相對(duì)應(yīng)的特征,我們會(huì)對(duì)頻譜圖進(jìn)行推理,以向用戶發(fā)出警報(bào)(通過我們?cè)椭械膲弘姺澍Q器)。
為了減少誤報(bào),我們需要開發(fā)一個(gè)后處理工作流程,這樣用戶就不會(huì)被模型錯(cuò)誤弄得筋疲力盡。一個(gè)簡(jiǎn)單的想法是僅在某個(gè)時(shí)間窗口內(nèi)的陽性計(jì)數(shù)超過憑經(jīng)驗(yàn)確定的閾值后才發(fā)出警報(bào)。
使用設(shè)備,我們可以執(zhí)行數(shù)據(jù)收集,這將有助于改進(jìn)我們的模型。為了進(jìn)一步降低成本,可以考慮構(gòu)建一個(gè) EEG 電路,或許可以使用更少的電極。
未來,我們計(jì)劃將該模型應(yīng)用于更小的低功耗設(shè)備,如Blue Pill ,它可以使用紐扣電池運(yùn)行。
最后的想法
通過輕松訪問廉價(jià)硬件等資源以及開源機(jī)器學(xué)習(xí)算法和數(shù)據(jù),參與醫(yī)療設(shè)備技術(shù)的概念化和開發(fā)是一個(gè)激動(dòng)人心的時(shí)刻。
我們希望激勵(lì)其他人將改變未來生活的技術(shù)產(chǎn)品化。
在這里查看我們關(guān)于這個(gè)項(xiàng)目的回購協(xié)議!
- 可穿戴設(shè)備的電針活動(dòng)應(yīng)用簡(jiǎn)介
- 用于便攜可穿戴設(shè)備的RX8130CE
- 2023可穿戴設(shè)備行業(yè)技術(shù)與市場(chǎng)分析 22次下載
- 深度分析可穿戴設(shè)備:當(dāng)今最火的科技
- 可穿戴設(shè)備開源分享
- 支持Twitch的簡(jiǎn)單可穿戴設(shè)備
- SWED癲癇癥智能可穿戴設(shè)備開源分享
- 如何設(shè)計(jì)更加小巧、續(xù)航能力更強(qiáng)的可穿戴設(shè)備
- 可穿戴設(shè)備的設(shè)計(jì)方向與規(guī)范資料下載
- 可穿戴設(shè)備的電源方案探討資料下載
- 可穿戴設(shè)備中的電源管理技術(shù)資料下載
- ADI:可穿戴設(shè)備,醫(yī)院之外的健康衛(wèi)士 1次下載
- 基于無線模塊的可穿戴設(shè)備的應(yīng)用方案 3次下載
- 使用無線模塊構(gòu)建可穿戴設(shè)備 9次下載
- 移動(dòng)與可穿戴設(shè)備的解決方案 25次下載
- 醫(yī)療可穿戴設(shè)備的設(shè)計(jì)需求和解決方案 3408次閱讀
- 可穿戴設(shè)備應(yīng)用程序的實(shí)現(xiàn) 965次閱讀
- 可穿戴設(shè)備:滿足卓越電源管理的需求 897次閱讀
- 可穿戴設(shè)備發(fā)展歷程!醫(yī)療可穿戴設(shè)備和傳感器生態(tài)系統(tǒng)正在快速成長(zhǎng)! 6647次閱讀
- 淺析Dialog可穿戴設(shè)備解決方案 4932次閱讀
- 如何設(shè)計(jì)一種可穿戴設(shè)備待機(jī)延長(zhǎng)的方案 889次閱讀
- 可穿戴用戶的增長(zhǎng)主要來自智能手表 以健康和健身追蹤器為主要功能 5538次閱讀
- 關(guān)于可穿戴設(shè)備市場(chǎng)的調(diào)研報(bào)告 3111次閱讀
- MEMS六軸傳感器的可穿戴設(shè)備電路設(shè)計(jì)—電路精選(37) 4012次閱讀
- 可穿戴設(shè)備氧傳感器電路解析—電路精選(35) 4664次閱讀
- 醫(yī)療可穿戴設(shè)備:如何打開慢性病困惑的“黑箱” 1195次閱讀
- 醫(yī)療可穿戴設(shè)備的6大領(lǐng)頭羊,都是誰? 956次閱讀
- 可穿戴設(shè)備電源設(shè)計(jì)關(guān)鍵點(diǎn)解析 1764次閱讀
- 簡(jiǎn)單有效的可穿戴設(shè)備ESD靜電防護(hù)原則 3076次閱讀
- 為什么可穿戴設(shè)備如此流行? 1131次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多