厲害了!用 JS 實現人腦和計算機交互

厲害了!用 JS 實現人腦和計算機交互

在過去的幾年中,我對神經科技產生了濃厚的興趣。這篇文章將分享我在學習神經科技過程中學到的東西,希望能幫助那些想要入門的人!

不過在深入討論這個話題之前,我想先簡單地談談我是如何進入這個領域的。

背景故事

我沒有計算機科學背景(我的專業是廣告和市場營銷),所以我通過 General Assembly 沉浸式編碼訓練營學習編碼技能。

在我尋找第一份工作的同時,我開始研究 JavaScript 和硬件。我參與的第一個項目是藉助 Leap Motion(一種體感控制器)通過手部動作來控制 Sphero 智能球。

厲害了!用 JS 實現人腦和計算機交互


使用 Leap Motion 控制 Sphero

這是我第一次使用 JavaScript 控制瀏覽器之外的東西,我立刻被吸引住了!

從那時起,我花了很多個人時間用於設計交互式項目的原型。每一次我都會嘗試挑戰自己,以便學習到新的東西。

在嘗試了幾種不同的設備之後,我一直在尋找下一個挑戰,於是就有了我的第一個大腦傳感器Neurosky。

大腦傳感器的首次實驗

因為對大腦傳感器開始感興趣,所以我決定先購買一個 Neurosky,因為它比其他產品便宜得多。

厲害了!用 JS 實現人腦和計算機交互

Neurosky 大腦傳感器


我真的不知道自己是否有能力為它開發程序(我才剛剛完成編碼訓練營),所以我不想浪費太多錢。幸運的是,已經有一個現成為 Neurosky 構建的 JavaScript 框架,所以我可以直接用它。我努力使用我的注意力來控制 Sphero 和 Parrot AR 無人機。

我很快意識到,這個大腦傳感器並不是很準確。它只有 3 個傳感器,你可以訪問來自每個傳感器的原始數據,用於構建可視化器,但 3 個傳感器實際上還不足以得出有關大腦中發生的事情的任何結論。

在我研究其他可用的大腦傳感器時,偶然發現了Emotiv Epoc。它提供了更多的功能,所以我決定購買它。

在介紹這款設備的工作原理之前,先讓我們簡單地談談大腦。

大腦是如何運作的?

我絕對不是神經科學方面的專家,所以我的解釋可能是不完整的。如果你想要更好地瞭解大腦傳感器和神經科技,就需要知道一些基本的東西。

大腦由數十億個神經元組成。這些神經元是處理信息的專用細胞,而不是隨機擴散出去的。我們知道,大腦組織的不同部分負責不同的生理功能。

厲害了!用 JS 實現人腦和計算機交互

大腦的不同部分


我們以移動為例。

在大腦中,負責運動和協調的部分包括初級運動皮層和小腦。在協調運動時,這些部位的神經元被觸發,並將軸突發送到脊髓。然後它們觸發會激活肌肉的運動神經元,然後就會做出動作。

厲害了!用 JS 實現人腦和計算機交互

神經元的解剖圖


正如我之前所說的,這是一個非常簡單的解釋,但關鍵在於,這些電子信號可以通過附在頭皮表面上的 EEG(Electroencephalography)設備進行跟蹤。

其他一些系統也可用於跟蹤大腦的活動,但它們通常更具侵入性,非常昂貴,且需要動手術。例如,ECog(Electrocorticography)需要被植入到頭骨內。

希望以上這些解釋對你來說是有用的,我們現在可以花一些時間看看 Emotiv Epoc 是如何跟蹤這些電信號的。

大腦傳感器是如何工作的?

Emotiv 有 3 種不同的設備:

  • Emotiv Insight;
  • Epoc Flex;
  • Emotiv Epoc。

Epoc 在頭部周圍放置了 14 個傳感器(也稱為通道)。

10/20 國際 EEG 系統(左下圖)可以作為參考,它反映了電極位置與大腦下方區域之間的關係。通過綠色和橙色部分,你可以看到 Epoc 上使用了哪些傳感器(右下圖)。

厲害了!用 JS 實現人腦和計算機交互

10/20 國際 EEG 系統與 Emotiv Epoc


正如你所看到的,14 個通道看起來好像很多,但實際上比醫療設備上的傳感器數量要少。不過它們似乎很好地分佈在頭部周圍。

Epoc 的採樣率為 2048,內部下采樣到 128 SPS 或 256 SPS,頻率響應在 0.16 到 43 Hz 之間。

這意味著它將從連續信號中獲得每秒 2048 個採樣,其中響應頻率從 0.16Hz 變化到 43Hz。

如果我們看一下不同類型的腦電波,可以看到它們的工作頻率介於 0.5Hz 和 100Hz 之間。

厲害了!用 JS 實現人腦和計算機交互

腦電波的類型


為什麼這個很重要?因為根據想要構建的應用程序類型,我們可能只想關注在特定頻率的腦電波。例如,如果我們想要構建一個冥想應用程序,我們可能只想關注 4-8Hz 之間的θ波。

現在我們知道了設備的工作原理,接下來讓我們來看看它可以跟蹤哪些東西。

Emotiv 的功能

Emotiv 的軟件不是開源的,因此你無法訪問每個傳感器的原始數據,但你可以訪問:

  • 加速計和陀螺儀;
  • 性能指標(興奮程度、參與度、放鬆程度、興趣、壓力和注意力);
  • 面部表情(眨眼、眨眼、驚訝、皺眉、微笑、緊繃、大笑、假笑);
  • 意識指令(推、拉、抬、下、左、右、向左旋轉、向右旋轉、順時針旋轉、逆時針旋轉、反向旋轉、消失)。

只有意識命令需要用戶進行專門的培訓。要訓​​練這些“想法”,需要下載他們的軟件。

在完成一些培訓後,相關的文件將被保存在本地或雲端。

如果你想要自己開發程序,可以使用他們的Cortex API和社區 SDK(在 3.5 版本之後已停止維護)。

或者如果你想使用 JavaScript,可以使用我曾經使用過的框架Epoc.js。

Epoc.js

Epoc.js 是一個可以使用 JavaScript 與 Emotiv Epoc 和 Insight 進行交互的框架。你可以訪問上述的那些功能(加速計 / 陀螺儀數據、性能指標、面部表情和意識命令),並可以與模擬器進行交互。

你只需要幾行代碼:

厲害了!用 JS 實現人腦和計算機交互


在上面的示例代碼中,我們先是導入和初始化必要的 Node 模塊。然後,我們調用 connectToLiveData 方法,並將訓練後保存的用戶文件傳給它。我們得到一個回調,其中有一個事件對象,我們可以通過它跟蹤不同的屬性。例如,如果我們想要跟蹤用戶是否在眨眼,我們可以使用 event.blink。

每個返回的屬性要麼是 0(未激活),要麼是 1(已激活)。

可以在存儲庫的README 文件中找到可用屬性的完整列表。

這個框架是使用 Emotiv C++ SDK、Node.js 和 3 個 Node 模塊(Node-gyp、Bindings 和 Nan)開發的。

這是創建 Node 插件的老方法,如果你有興趣瞭解更多信息,建議你看一下N-API。

接下來,讓我們開始創建一些原型。

原型

1. 腦鍵盤

厲害了!用 JS 實現人腦和計算機交互


使用眼球運動控制鍵盤

我使用 Emotiv Epoc 構建的第一個演示是腦鍵盤,目標是看看我是否可以構建一個界面,讓人們使用面部表情進行交流。

眼睛向右或向左看,可以突出顯示鍵盤右邊或左邊的字母,眨眼表示選擇字母,並在輸入字段中顯示選定的字母。

這是一個非常簡單的原型!

2. WebVR

我的第二個原型涉及到意識命令。我想看看是否可以只通過思想來導覽 3D 空間。

厲害了!用 JS 實現人腦和計算機交互


大腦與計算機 Web 接口

在這個原型中,我使用 Three.js 創建了基本的 3D 場景,並使用 epoc.js 跟蹤意識命令,以及通過 Web 套接字將它們從服務器發送到前端。

3. 物聯網

我的第三個原型是使用 JavaScript 控制硬件。這是我幾年來一直在研究的東西,所以能夠構建一個可以通過想法來控制一隻 Parrot 迷你無人機的項目讓我感到非常興奮!

厲害了!用 JS 實現人腦和計算機交互


這些原型都很小,主要是為了驗證一些想法,並瞭解這種技術的可能性和侷限性,所以讓我們首先談談侷限性。

侷限性

儘管這項技術看起來很令人興奮,但仍然存在很多限制。

訓練

事實上,每個用戶都必須通過培訓來記錄腦電波,並將其與特定命令相匹配,這給大多數人的使用造成了障礙。除非應用程序能夠解決人們真正的需求並且設備的準確性特別好,否則我不認為人們願意花時間訓練大腦傳感器。

延遲

在使用意識命令構建原型時,我發現,在我開始產生想法的那一刻與在程序中看到反饋的那一刻之間會有一點延遲。

我認為這是因為後臺使用的機器學習算法在實時接收來自設備的數據後,需要採用一段時間才能根據之前訓練過的思想對當前思想進行分類。

這確實會影響你可以使用傳感器構建的應用程序的類型。例如,構建冥想應用程序就沒有問題,因為延遲不會對用戶體驗產生太大影響。但是,如果你想構建一個可以使用想法控制的輪椅,那麼延遲就會帶來非常嚴重的影響。

侵入性與非侵入性

EEG 設備非常棒,因為你不需要動手術,你只需要戴上設備,在傳感器上塗一些凝膠就可以了!不過,因為是非侵入性的,所以傳感器跟蹤的是穿過顱骨的電子信號,導致了這種方法效率較低。

時間解析度非常好,因為採樣率非常快,但空間解析度不是很高。EEG 設備只能跟蹤頭皮表面周圍的大腦活動,跟蹤不到發生在大腦中的更深層次的活動。

社會接受度

腦袋上套著一個大腦傳感器看起來並不美觀。只要設備看起來是那個樣子,我認為消費者不會喜歡戴它們。隨著技術的進步,我們可能可以開發出可隱藏在帽子等配飾中的設備。但還有另外一個問題,在戴了幾分鐘後,大腦傳感器會讓人感到不適。

因為 EEG 設備是非侵入性的,傳感器必須在頭皮上施加一點壓力才能更好地跟蹤電子信號。你可以想象,這個輕微的壓力起初是可以忍受的,但隨著時間的推移慢慢變得讓人不那麼舒服。此外,因為需要在傳感器上塗上一些凝膠,這是人們使用它們的另一個障礙。

不過,儘管現在的 EEG 傳感器可用性不那麼高,也無法吸引大多數人,但未來仍然存在一些有趣的可能性。

未來可能性

考慮當前狀態下的技術以及未來的發展,我們可以想到一些不同的應用。

無障礙

我希望大腦傳感器可以幫助患有某種殘疾的人可以更獨立,過上更好的生活。

在我構建第一個腦鍵盤原型時,我就有了這個想法。我知道原型不完整,但我真的很想知道一般的消費者設備是否可以幫到人們。並非每個人都可以訪問複雜的醫療系統,我很高興看到人們可以在線購買的設備可以給他們帶來幫助!

專注力

專注力目前已經成為某些大腦傳感器(例如Muse)的焦點應用。

冥想可能很困難,因為很難知道你做得對不對。大腦傳感器可以直接反饋人們的表現,甚至為他們提供改進指導。

預防

如果我們可以像使用手機一樣使用大腦傳感器,我們可能可以構建一些應用程序,用於跟蹤某些生理功能會在什麼時候出現異常。例如,如果我們能夠開發檢測算法來預防中風、焦慮症或癲癇,那就太棒了。

效率

大腦傳感器可以幫助進行冥想,也可以跟蹤一天當中你最關注的時間段。如果我們經常佩戴傳感器,它最終會告訴我們應該在什麼時候完成哪些任務。你甚至可以安排好日程,讓你的時間用得更有效率。

藝術

我喜歡技術和藝術之間的交集,以此來探索無法在工作完成的事情。我真的認為用大腦傳感器構建創造性的東西不應該被低估,在獲得更“有用”的應用之前,我們可以探索技術的不同可能性和侷限性。

與其他傳感器組合

我最近在想,我們不應該將大腦傳感器作為一個獨立的東西來看待。大腦只能通過身體的其他部位感知世界,所以如果沒有眼睛就看不到任何東西,沒有耳朵就聽不到任何聲音……所以,如果我們想要了解腦電波,我們應該跟蹤其他生物功能。

所以,我們最終會得到如下所示的設備:

厲害了!用 JS 實現人腦和計算機交互


我們可以肯定的是,沒有人會每天戴這些設備……

接下來

幾個禮拜前,我買了一個新的腦傳感器,OpenBCI。我接下來想研究原始數據和機器學習,所以我認為這個設備非常有用,因為它是完全開源的!

因為時間的關係,我還沒用它構建任何東西,不過這裡有一些設備和界面的預覽。

厲害了!用 JS 實現人腦和計算機交互


相關資源

如果你想嘗試一些工具或瞭解更多信息,請參考以下鏈接!

框架

  • 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


分享到:


相關文章: