javascript
用JS实现人脑和计算机交互,这个厉害了
在過去的幾年中,我對神經科技產生了濃厚的興趣。這篇文章將分享我在學習神經科技過程中學到的東西,希望能幫助那些想要入門的人!
不過在深入討論這個話題之前,我想先簡單地談談我是如何進入這個領域的。
背景故事
我沒有計算機科學背景(我的專業是廣告和市場營銷),所以我通過General Assembly沉浸式編碼訓練營學習編碼技能。
在我尋找第一份工作的同時,我開始研究JavaScript和硬件。我參與的第一個項目是借助Leap Motion(一種體感控制器)通過手部動作來控制Sphero智能球。
使用Leap Motion控制Sphero這是我第一次使用JavaScript控制瀏覽器之外的東西,我立刻被吸引住了!
從那時起,我花了很多個人時間用于設計交互式項目的原型。每一次我都會嘗試挑戰自己,以便學習到新的東西。
在嘗試了幾種不同的設備之后,我一直在尋找下一個挑戰,于是就有了我的第一個大腦傳感器Neurosky。
大腦傳感器的首次實驗
因為對大腦傳感器開始感興趣,所以我決定先購買一個Neurosky,因為它比其他產品便宜得多。
Neurosky大腦傳感器我真的不知道自己是否有能力為它開發程序(我才剛剛完成編碼訓練營),所以我不想浪費太多錢。幸運的是,已經有一個現成為Neurosky構建的JavaScript框架,所以我可以直接用它。我努力使用我的注意力來控制Sphero和Parrot AR無人機。
我很快意識到,這個大腦傳感器并不是很準確。它只有3個傳感器,你可以訪問來自每個傳感器的原始數據,用于構建可視化器,但3個傳感器實際上還不足以得出有關大腦中發生的事情的任何結論。
在我研究其他可用的大腦傳感器時,偶然發現了Emotiv Epoc。它提供了更多的功能,所以我決定購買它。
在介紹這款設備的工作原理之前,先讓我們簡單地談談大腦。
大腦是如何運作的?
我絕對不是神經科學方面的專家,所以我的解釋可能是不完整的。如果你想要更好地了解大腦傳感器和神經科技,就需要知道一些基本的東西。
大腦由數十億個神經元組成。這些神經元是處理信息的專用細胞,而不是隨機擴散出去的。我們知道,大腦組織的不同部分負責不同的生理功能。
大腦的不同部分我們以移動為例。
在大腦中,負責運動和協調的部分包括初級運動皮層和小腦。在協調運動時,這些部位的神經元被觸發,并將軸突發送到脊髓。然后它們觸發會激活肌肉的運動神經元,然后就會做出動作。
神經元的解剖圖正如我之前所說的,這是一個非常簡單的解釋,但關鍵在于,這些電子信號可以通過附在頭皮表面上的EEG(Electroencephalography)設備進行跟蹤。
其他一些系統也可用于跟蹤大腦的活動,但它們通常更具侵入性,非常昂貴,且需要動手術。例如,ECog(Electrocorticography)需要被植入到頭骨內。
希望以上這些解釋對你來說是有用的,我們現在可以花一些時間看看Emotiv Epoc是如何跟蹤這些電信號的。
大腦傳感器是如何工作的?
Emotiv有3種不同的設備:
Emotiv Insight;
Epoc Flex;
Emotiv Epoc。
Epoc在頭部周圍放置了14個傳感器(也稱為通道)。
10/20國際EEG系統(左下圖)可以作為參考,它反映了電極位置與大腦下方區域之間的關系。通過綠色和橙色部分,你可以看到Epoc上使用了哪些傳感器(右下圖)。
10/20國際EEG系統與Emotiv Epoc正如你所看到的,14個通道看起來好像很多,但實際上比醫療設備上的傳感器數量要少。不過它們似乎很好地分布在頭部周圍。
Epoc的采樣率為2048,內部下采樣到128 SPS或256 SPS,頻率響應在0.16到43 Hz之間。
這意味著它將從連續信號中獲得每秒2048個采樣,其中響應頻率從0.16Hz變化到43Hz。
如果我們看一下不同類型的腦電波,可以看到它們的工作頻率介于0.5Hz和100Hz之間。
腦電波的類型為什么這個很重要?因為根據想要構建的應用程序類型,我們可能只想關注在特定頻率的腦電波。例如,如果我們想要構建一個冥想應用程序,我們可能只想關注4-8Hz之間的θ波。
現在我們知道了設備的工作原理,接下來讓我們來看看它可以跟蹤哪些東西。
Emotiv的功能
Emotiv的軟件不是開源的,因此你無法訪問每個傳感器的原始數據,但你可以訪問:
加速計和陀螺儀;
性能指標(興奮程度、參與度、放松程度、興趣、壓力和注意力);
面部表情(眨眼、眨眼、驚訝、皺眉、微笑、緊繃、大笑、假笑);
意識指令(推、拉、抬、下、左、右、向左旋轉、向右旋轉、順時針旋轉、逆時針旋轉、反向旋轉、消失)。
只有意識命令需要用戶進行專門的培訓。要訓??練這些“想法”,需要下載他們的軟件。
在完成一些培訓后,相關的文件將被保存在本地或云端。
如果你想要自己開發程序,可以使用他們的Cortex API和社區SDK(在3.5版本之后已停止維護)。
或者如果你想使用JavaScript,可以使用我曾經使用過的框架Epoc.js。
Epoc.js
Epoc.js是一個可以使用JavaScript與Emotiv Epoc和Insight進行交互的框架。你可以訪問上述的那些功能(加速計/陀螺儀數據、性能指標、面部表情和意識命令),并可以與模擬器進行交互。
你只需要幾行代碼:
在上面的示例代碼中,我們先是導入和初始化必要的Node模塊。然后,我們調用connectToLiveData方法,并將訓練后保存的用戶文件傳給它。我們得到一個回調,其中有一個事件對象,我們可以通過它跟蹤不同的屬性。例如,如果我們想要跟蹤用戶是否在眨眼,我們可以使用event.blink。
每個返回的屬性要么是0(未激活),要么是1(已激活)。
可以在存儲庫的README文件中找到可用屬性的完整列表。
這個框架是使用Emotiv C++ SDK、Node.js和3個Node模塊(Node-gyp、Bindings和Nan)開發的。
這是創建Node插件的老方法,如果你有興趣了解更多信息,建議你看一下N-API。
接下來,讓我們開始創建一些原型。
原型
1. 腦鍵盤
使用眼球運動控制鍵盤我使用Emotiv Epoc構建的第一個演示是腦鍵盤,目標是看看我是否可以構建一個界面,讓人們使用面部表情進行交流。
眼睛向右或向左看,可以突出顯示鍵盤右邊或左邊的字母,眨眼表示選擇字母,并在輸入字段中顯示選定的字母。
這是一個非常簡單的原型!
2. WebVR
我的第二個原型涉及到意識命令。我想看看是否可以只通過思想來導覽3D空間。
大腦與計算機Web接口在這個原型中,我使用Three.js創建了基本的3D場景,并使用epoc.js跟蹤意識命令,以及通過Web套接字將它們從服務器發送到前端。
3. 物聯網
我的第三個原型是使用JavaScript控制硬件。這是我幾年來一直在研究的東西,所以能夠構建一個可以通過想法來控制一只Parrot迷你無人機的項目讓我感到非常興奮!
這些原型都很小,主要是為了驗證一些想法,并了解這種技術的可能性和局限性,所以讓我們首先談談局限性。
局限性
盡管這項技術看起來很令人興奮,但仍然存在很多限制。
訓練
事實上,每個用戶都必須通過培訓來記錄腦電波,并將其與特定命令相匹配,這給大多數人的使用造成了障礙。除非應用程序能夠解決人們真正的需求并且設備的準確性特別好,否則我不認為人們愿意花時間訓練大腦傳感器。
延遲
在使用意識命令構建原型時,我發現,在我開始產生想法的那一刻與在程序中看到反饋的那一刻之間會有一點延遲。
我認為這是因為后臺使用的機器學習算法在實時接收來自設備的數據后,需要采用一段時間才能根據之前訓練過的思想對當前思想進行分類。
這確實會影響你可以使用傳感器構建的應用程序的類型。例如,構建冥想應用程序就沒有問題,因為延遲不會對用戶體驗產生太大影響。但是,如果你想構建一個可以使用想法控制的輪椅,那么延遲就會帶來非常嚴重的影響。
侵入性與非侵入性
EEG設備非常棒,因為你不需要動手術,你只需要戴上設備,在傳感器上涂一些凝膠就可以了!不過,因為是非侵入性的,所以傳感器跟蹤的是穿過顱骨的電子信號,導致了這種方法效率較低。
時間解析度非常好,因為采樣率非常快,但空間解析度不是很高。EEG設備只能跟蹤頭皮表面周圍的大腦活動,跟蹤不到發生在大腦中的更深層次的活動。
社會接受度
腦袋上套著一個大腦傳感器看起來并不美觀。只要設備看起來是那個樣子,我認為消費者不會喜歡戴它們。隨著技術的進步,我們可能可以開發出可隱藏在帽子等配飾中的設備。但還有另外一個問題,在戴了幾分鐘后,大腦傳感器會讓人感到不適。
因為EEG設備是非侵入性的,傳感器必須在頭皮上施加一點壓力才能更好地跟蹤電子信號。你可以想象,這個輕微的壓力起初是可以忍受的,但隨著時間的推移慢慢變得讓人不那么舒服。此外,因為需要在傳感器上涂上一些凝膠,這是人們使用它們的另一個障礙。
不過,盡管現在的EEG傳感器可用性不那么高,也無法吸引大多數人,但未來仍然存在一些有趣的可能性。
未來可能性
考慮當前狀態下的技術以及未來的發展,我們可以想到一些不同的應用。
無障礙
我希望大腦傳感器可以幫助患有某種殘疾的人可以更獨立,過上更好的生活。
在我構建第一個腦鍵盤原型時,我就有了這個想法。我知道原型不完整,但我真的很想知道一般的消費者設備是否可以幫到人們。并非每個人都可以訪問復雜的醫療系統,我很高興看到人們可以在線購買的設備可以給他們帶來幫助!
專注力
專注力目前已經成為某些大腦傳感器(例如Muse)的焦點應用。
冥想可能很困難,因為很難知道你做得對不對。大腦傳感器可以直接反饋人們的表現,甚至為他們提供改進指導。
預防
如果我們可以像使用手機一樣使用大腦傳感器,我們可能可以構建一些應用程序,用于跟蹤某些生理功能會在什么時候出現異常。例如,如果我們能夠開發檢測算法來預防中風、焦慮癥或癲癇,那就太棒了。
效率
大腦傳感器可以幫助進行冥想,也可以跟蹤一天當中你最關注的時間段。如果我們經常佩戴傳感器,它最終會告訴我們應該在什么時候完成哪些任務。你甚至可以安排好日程,讓你的時間用得更有效率。
藝術
我喜歡技術和藝術之間的交集,以此來探索無法在工作完成的事情。我真的認為用大腦傳感器構建創造性的東西不應該被低估,在獲得更“有用”的應用之前,我們可以探索技術的不同可能性和局限性。
與其他傳感器組合
我最近在想,我們不應該將大腦傳感器作為一個獨立的東西來看待。大腦只能通過身體的其他部位感知世界,所以如果沒有眼睛就看不到任何東西,沒有耳朵就聽不到任何聲音……所以,如果我們想要了解腦電波,我們應該跟蹤其他生物功能。
所以,我們最終會得到如下所示的設備:
我們可以肯定的是,沒有人會每天戴這些設備……
接下來
幾個禮拜前,我買了一個新的腦傳感器,OpenBCI。我接下來想研究原始數據和機器學習,所以我認為這個設備非常有用,因為它是完全開源的!
因為時間的關系,我還沒用它構建任何東西,不過這里有一些設備和界面的預覽。
相關資源
如果你想嘗試一些工具或了解更多信息,請參考以下鏈接!
框架
Epoc.js——用于與Emotiv Epoc進行交互的JavaScript框架。
Brain bits——用于Emotiv頭戴設備的P300在線拼寫機制。
Wits——一個Node.js庫,用于通過Emotiv Epoc EEG設備讀取你的想法。
Brain Monitor——使用Node.js開發的終端應用程序,用于實時監控大腦信號。
Ganglion BLE——OpenBCI提供的用于Ganglion大腦和計算機接口的Web藍牙客戶端。
BCI.js——用JavaScript進行EEG信號處理和機器學習。
其他有用的鏈接
NeurotechX
書籍“Brain-Computer Interfacing”
書籍“Principals of Neural Science
Uri Shaked對神經科學的介紹
Viacheslav Nesterov的“使用腦計算機接口檢測大腦活動狀態”
英文原文:
https://medium.com/@devdevcharlie/experimenting-with-brain-computer-interfaces-in-javascript-8d6cb891fda8
更多內容請關注前端之巔(ID:frontshow)
總結
以上是生活随笔為你收集整理的用JS实现人脑和计算机交互,这个厉害了的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: delphi调用c#写的webservi
- 下一篇: Docker(二)安装及常用命令