在过去的几年中,我对神经科技产生了浓厚的兴趣。这篇文章将分享我在学习神经科技过程中学到的东西,希望能帮助那些想要入门的人!

不过在深入讨论这个话题之前,我想先简单地谈谈我是如何进入这个领域的。

背景故事

我没有计算机科学背景(我的专业是广告和市场营销),所以我通过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实现人脑和计算机交互,这个厉害了相关推荐

  1. 厉害了!用 JS 实现人脑和计算机交互

    在过去的几年中,我对神经科技产生了浓厚的兴趣.这篇文章将分享我在学习神经科技过程中学到的东西,希望能帮助那些想要入门的人! 不过在深入讨论这个话题之前,我想先简单地谈谈我是如何进入这个领域的. 背景故 ...

  2. 用JS实现人脑和计算机交互,这个是真的牛!

    使用 Leap Motion 控制 Sphero 这是我第一次使用 JavaScript 控制浏览器之外的东西,我立刻被吸引住了! 从那时起,我花了很多个人时间用于设计交互式项目的原型.每一次我都会尝 ...

  3. 大咖 | 斯坦福教授骆利群:为何人脑比计算机慢1000万倍,却如此高效?

    大数据文摘出品 作者:骆利群 编译:王一丁.Shan Liu.小鱼 AI源于人类大脑的结构,并尝试达到与大脑相当的能力.那么二者的差异究竟在哪里?斯坦福大学神经生物学教授骆利群(Liqun Luo)认 ...

  4. 计算机能思考吗?图1专题6:“人脑是计算机吗?”

    Can Computers Think? The History and Status of the Debate - Map 1 of 7 问题6 Issue Area: Is the brain ...

  5. 计算机与人脑_人脑和计算机相比,谁具有更强的能力?听完科学家的解释恍然大悟...

    人类是地球唯一的智慧生命,是站在地球生物链顶端的生物,也是地球万物的主宰.人类之所以能够成为地球的霸主,不是依靠我们的身体力量,事实上人类的身体相比于很多动物是处于弱势,人类依靠是自己的智慧,而智慧的 ...

  6. 人脑能用计算机算法吗,电脑到人脑,计算机必不可少的4大思维

    计算机在解决数学问题,诊断疾病,下国际象棋等智力运动的方面大大超越了人脑的优势,但是在控制机器人做事情(例如:洗碗,打扫房间,系鞋带--),或者学习5岁大的儿童就能理解的常用语言方面却困难重重. 讽刺 ...

  7. 转载:js和as间的交互

    转载一: 提及AS3与外部脚本的交互,笔者认为可以总结成两种.一是AS3调用外部函数,二是外部脚本调用AS3函数.无外乎就 这两种.在调用函数的同时,我们还可以向函数传递一些参数.这就达到了传递数据的 ...

  8. doo14 视图和js的按钮上面的交互

    doo14 视图和js的按钮上面的交互 自定义按钮上面的属性应用操作 js代码块 odoo.define({var FormController = require('web.FormControll ...

  9. java内嵌chrome浏览器,JS和JAVA如何进行交互

    2019独角兽企业重金招聘Python工程师标准>>> 为了上线之后,客户不用安装chrome (主要还是客户用IE.firefox居多),我们现在开发都是使用chrome ,为了提 ...

最新文章

  1. jQuery 操作 DOM
  2. 深入Atlas系列:Web Sevices Access in Atlas示例(6) - 在客户端隐藏服务器端类型信息...
  3. Python3.5入门到项目实战(104天课程)
  4. 20190216 vagrant up 失败问题
  5. 什么是索引?索引类型有几种,各有什么特点?
  6. 数字系统设计学习之VHDL输入设计
  7. 21-win10下ElasticSearch.6.1.0安装SQL插件
  8. 力扣242.有效的字母异位词(JavaScript)
  9. 深浅拷贝的使用场景分析
  10. require,include,require_once和include_once之间的区别?
  11. php 获取TZ时间格式
  12. c语言 2,有一函数: y= 写一程序,输入x,输出y值.,有一函数 ,编写一段程序,输入x的值,输出相应的y值....
  13. 从阿尔法狗元(AlphaGo Zero)的诞生看终极算法的可能性
  14. javaeye改名之后
  15. lua 遍历删除_lua中table如何安全移除元素
  16. 安装配置管理 之 NVIDIA nForce Linux Drivers 集成声网卡和声卡的安装说明
  17. 程序员如何实现财富自由?
  18. 概率统计笔记之 “数学期望和方差”
  19. EXFAT文件系统DBR的完美恢复
  20. openbsd mysql_在OpenBSD上运行MyDNSNameservers(MySQL / PHP + MyDNS + MyDNSConfig)

热门文章

  1. php打印四行三列表格,php打印数组_php数组实例之表格状打印
  2. php 有 stringbuffer,string,stringbuffer以及stringbuilder的区别
  3. 三层架构项目如何发布_以k8s集群管理为例,大牛教你如何设计优秀项目架构
  4. 在几何画板中如何制作圆柱的侧面展开动画_基本尺规作图过程展示 | 几何画板...
  5. 【总结】百家稷学!重点汇总有三AI(教育)服务过的那些企业与学校
  6. 【通知】3月第三周直播预告,模型精简前沿技术,人脸分析与编辑,图像风格化...
  7. 【杂谈】裸辞一年后,分享一下我的心态
  8. 全球及中国再生锌市场前景分析与竞争策略研究报告2022版
  9. TEA加密算法的C/C++实现
  10. 迅雷的user-agent