電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>癲癇發(fā)作預(yù)測可穿戴設(shè)備的深度學(xué)習(xí)

癲癇發(fā)作預(yù)測可穿戴設(shè)備的深度學(xué)習(xí)

2022-12-12 | zip | 0.43 MB | 次下載 | 免費

資料介紹

描述

介紹

大約 1% 的人對他們的下一次癲癇發(fā)作感到焦慮。抗驚厥藥物對至少 20% 的患者沒有幫助,而且大劑量服用還會帶來副作用。這種恐懼妨礙了執(zhí)行日常任務(wù),例如駕駛汽車或游泳。存在可以檢測癲癇發(fā)作的設(shè)備,但我們的目標(biāo)是構(gòu)建一種可穿戴 EEG 設(shè)備,可以預(yù)測癲癇發(fā)作即將發(fā)生,以便護(hù)理人員和/或用戶可以暫停他們正在做的事情并采取適當(dāng)?shù)?/font>預(yù)防措施.

五年前,一場Kaggle 競賽提出了開發(fā)機(jī)器學(xué)習(xí)算法以幫助預(yù)測癲癇發(fā)作事件的挑戰(zhàn)。向參賽者提供了 106 GB 的訓(xùn)練數(shù)據(jù) in.mat 文件。每個訓(xùn)練樣本代表 10 分鐘的原始顱內(nèi)腦電圖讀數(shù)。對于 5 只狗,數(shù)據(jù)包括以 400 Hz 采樣的 16 個通道讀數(shù)。對于 2 名人類患者,在 24 個通道上以 5000 Hz 的頻率對數(shù)據(jù)進(jìn)行采樣。

這是從一個頻道采樣的一小段:

?
poYBAGOSwoOAZQ5cAAA_avDwfj8082.png
而是看頻率
?

醫(yī)學(xué)研究支持 4 個不同階段的概念,對應(yīng)于:癲癇發(fā)作事件之間、之前、期間和之后。出于此預(yù)測任務(wù)的目的,主要挑戰(zhàn)是開發(fā)二元分類器來區(qū)分所謂的發(fā)作間期(事件之間)和發(fā)作前(事件之前)狀態(tài)。

大多數(shù)參賽者根據(jù) FFT 或通道之間的時間相關(guān)性設(shè)計經(jīng)過實驗室測試的功能,同時考慮到類似同期比賽的結(jié)果。

不受嵌入式硬件計算可行性的現(xiàn)實限制的約束,獲勝模型涉及使用各種機(jī)器學(xué)習(xí)算法訓(xùn)練的復(fù)雜集成。比賽于 2014 年結(jié)束,比 Tensorflow 等框架可用于深度學(xué)習(xí)實驗早了將近一年。

自比賽以來,將卷積神經(jīng)網(wǎng)絡(luò) (CNN) 應(yīng)用于頻譜圖一直是語音和信號處理任務(wù)的一種流行方法。這借鑒了計算機(jī)視覺的成功經(jīng)驗,通過重新定義問題來識別信號時頻表示中稱為共振峰的視覺特征。

除了通過傅里葉變換實現(xiàn)正則化的好處之外,F(xiàn)FT 算法速度非???,可以在資源有限的硬件上執(zhí)行。

CNN 也變得越來越小,因此我們將這兩種強(qiáng)大的算法結(jié)合起來,在嵌入式硬件上實時運行推理,通過識別發(fā)作前狀態(tài)來預(yù)測癲癇發(fā)作。

訓(xùn)練我們的神經(jīng)網(wǎng)絡(luò)

我們從一些簡化的假設(shè)開始。

由于資源限制,我們不想將 10 分鐘的 16/24 通道 EEG 記錄讀入內(nèi)存。相反,我們會將樣本分成 200 個 3 秒的片段。隱含地,我們假設(shè)每個人都同樣很好地代表了我們希望在區(qū)分該片段是否先于癲癇發(fā)作事件時學(xué)習(xí)的簽名。

此外,我們假設(shè)每個通道都獨立代表這些簽名。這允許我們以忽略通道之間的協(xié)方差為代價來擴(kuò)展數(shù)據(jù)集。首先,我們嘗試在標(biāo)準(zhǔn) FFT 下可視化頻譜圖:

?
pYYBAGOSwouAYucEAADZuNE96jk932.png
看起來像噪音
?

通過試驗不同的參數(shù)選擇和 FFT 變體,我們選擇了短時傅里葉變換 ( STFT )。

為了避免重新計算這些變換,我們將圖像輸出到文件。這是在對頻率表示中的表面視覺可辨模式應(yīng)用附加轉(zhuǎn)換和歸一化之后的示例。我們將圖像大小調(diào)整為 128x128 以加載更多圖像并更快地訓(xùn)練。

?
pYYBAGOSwo-AKkjpAAASGLQ8M3o810.png
?
?

要了解有關(guān)我們數(shù)據(jù)處理的更多信息,請參閱我們的博客文章。

為了快速探索 CNN 將帶來一些有用的東西這一想法,我們使用非常簡單的神經(jīng)網(wǎng)絡(luò)架構(gòu)和Keras順序 API 設(shè)置了一個基線。我們的 vanilla CNN 包括 5x5 卷積過濾器,然后是一個 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

由于極端的類別不平衡,我們對發(fā)作前的例子進(jìn)行了上采樣。

調(diào)用fit 方法,我們在使用幾千個樣本的訓(xùn)練輸出中看到了學(xué)習(xí)的跡象。為了擴(kuò)大訓(xùn)練規(guī)模,我們切換到fit_generator方法來迭代我們收集的近 1000 萬張圖像。

我們發(fā)現(xiàn)我們的模型是欠擬合的,正如訓(xù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

盡管如此,我們可以開始圍繞我們的簡化假設(shè)確定一些細(xì)節(jié),并探索更復(fù)雜的模型。

接下來,我們嘗試通過使用TF-Slim在 ImageNet 上預(yù)訓(xùn)練的 inception_v3 架構(gòu)訓(xùn)練模型來進(jìn)行遷移學(xué)習(xí)。

inception_v3 架構(gòu)比我們上面的簡單架構(gòu)具有更高的學(xué)習(xí)數(shù)據(jù)模式的能力。通過微調(diào),許多圖像特征將適合我們的任務(wù),即使圖像集非常不同。

經(jīng)過一段時間的訓(xùn)練后,我們的模型在近 100 萬張頻譜圖圖像的平衡子集上達(dá)到了72% 的驗證準(zhǔn)確率。一旦我們在 pi 上快速運行,我們堅信會投入時間和精力在更多數(shù)據(jù)上訓(xùn)練和評估這樣的模型。

此外,我們可能會嘗試無監(jiān)督預(yù)訓(xùn)練,因為一半可用的 Kaggle 數(shù)據(jù)由測試樣本組成。

更新:使用更新的 api、不同的模型架構(gòu)和略有不同的預(yù)處理,我們在這個jupyter notebook中達(dá)到了更高的驗證準(zhǔn)確性。

黑客腦電圖設(shè)備

我們嘗試了 Muse 耳機(jī),因為Adafruit 教程將其描述為直接破解。不幸的是,制造商無法繼續(xù)支持這一點,并且引用的似乎已失效。

我們還找到了更實惠的Force Trainer 。但是,固件會執(zhí)行 FFT 并返回功率譜中不同波段內(nèi)的值。相反,我們需要原始 EEG 信號,就像我們用來開發(fā)機(jī)器學(xué)習(xí)模型進(jìn)行分析的那樣。

最后,我們選擇了NeuroSky MindWave Mobile設(shè)備。價格介于上述兩個選項之間,同時支持收集原始 EEG 信號,該產(chǎn)品看起來很有前途。我們使用這個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 href='http://www.ttokpm.com/v/tag/481/' target='_blank' class='arckwlink_none'>樹莓派。然后 pi 將像我們的訓(xùn)練樣本一樣格式化數(shù)據(jù)并對其進(jìn)行推理以預(yù)測癲癇發(fā)作。

運行推理

在渲染圖像之前,我們在設(shè)備上應(yīng)用我們的信號處理管道。

最后,如果檢測到與即將發(fā)生的癲癇發(fā)作事件相對應(yīng)的特征,我們會對頻譜圖進(jìn)行推理,以向用戶發(fā)出警報(通過我們原型中的壓電蜂鳴器)。

為了減少誤報,我們需要開發(fā)一個后處理工作流程,這樣用戶就不會被模型錯誤弄得筋疲力盡。一個簡單的想法是僅在某個時間窗口內(nèi)的陽性計數(shù)超過憑經(jīng)驗確定的閾值后才發(fā)出警報。

?
pYYBAGOSwp-ANPUPAATXfgr4c3k551.jpg
第一個原型
?

使用設(shè)備,我們可以執(zhí)行數(shù)據(jù)收集,這將有助于改進(jìn)我們的模型。為了進(jìn)一步降低成本,可以考慮構(gòu)建一個 EEG 電路,或許可以使用更少的電極。

未來,我們計劃將該模型應(yīng)用于更小的低功耗設(shè)備,如Blue Pill ,它可以使用紐扣電池運行。

最后的想法

通過輕松訪問廉價硬件等資源以及開源機(jī)器學(xué)習(xí)算法和數(shù)據(jù),參與醫(yī)療設(shè)備技術(shù)的概念化和開發(fā)是一個激動人心的時刻。

我們希望激勵其他人將改變未來生活的技術(shù)產(chǎn)品化。

在這里查看我們關(guān)于這個項目的回購協(xié)議!


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費