导航菜单

500美元玩转马斯克钟爱的脑机接口!OpenBCI完整实测教程来啦

2天前的新智慧我想分享

新智慧报告

编辑:元子

[新智慧指南]埃隆马斯克(Elon Musk)和神经网络(Neuralink)希望建立可以充当大脑第三层的脑机接口,从而使人类与人工智能形成共生关系,从而通过意识与外界进行交流。本文教您如何使用Keras和OpenBCI建立与Google进行交流的大脑接口。

您可能已经知道,马斯克(Musk)投资了一家公司,并创建了人机界面。但是您知道它们是如何实现的吗?

英特尔软件工程师,加州大学戴维斯分校的计算机科学专业和生物学顾问,技术和人工智能爱好者Jag Singh撰写了指南。让我们看看它是如何工作的!

该项目建立了神经系统与外部AI代理之间的直接联系,并利用了次声定位。该代理可以是您可以从API获得的任何代理,包括Google Assistant,Siri,Alexa,Watson等。

所需的主要硬件工具是OpenBCI Ganglion板,该板活动且价格便宜。除电路板外,还需要电极和电线。当然,您也可以直接购买OpenBCI入门套件。

调试

本教程是在Linux机器上完成的。确保Python版本为最新版本(3.4+),然后可以克隆:

从CD到pyOpenBCI,然后

然后cd到pyOpenBCI/Examples,将在print_raw_example.py

更改为

接下来打开板子电源。

在您的计算机上,cd到pyOpenBCI/Examples目录,然后键入以下命令:

一起工作。

记录信号

上一步将获得原始输入数据流。该数据需要转换为LSL流。

修改pyOpenBCI/Examples/lsl_example.py,代码如下

然后修改lsl-record.py:

您可以调整termBank(第64行)以在各种情况下尝试各种单词组合。您还可以在每个会话之前调整默认持续时间(第12行)。

接下来,让我们捡起它!

将电极贴在头上,找到一个安静的地方,打开计算机上的两个端子1和2,首先在1和2中输入以下命令:

在1号航站楼:

在2号航站楼:

然后,您可以以指定的持续时间开始录制会话。系统提示您在术语库中使用随机单词,每2秒冥想一个单词。

如果长时间的录制会使您感到不舒服或打do睡,请尝试录制几次。您还可以设计和实现更灵活的设置,并在发现干扰时选择按钮以删除当前间隔和先前间隔。

另一个解决方案是进行多个小型会话并在最后合并数据,以及过度干扰已删除的会话。不可避免会产生一些噪音,您不必太挑剔,因为随着样本数量的增加,模型将变得更具弹性。

为了获得最佳结果,单词库中的每个单词应至少包含1000个高质量样本。

处理信号

一旦有了足够的数据,就可以为机器学习做准备。根据需要合并和预处理数据,使其具有以下格式:

该单词是从1到NumIntervals的索引,它是SessionDuration/2与会话总数的总和。

该术语对应于每个间隔显示的单词

[A,B,C,D]是EEG频道

对于每个单词,术语组合对应于大约800行数据

使用numpy将CSV文件导入python。所有数据都应加载到脚本中的NumLines x 6 ndarray中。

第一步是对数据进行滤波,以除去我们感兴趣的频率之外的噪声。信息性EEG频率对应于以下频带:

过滤4 Hz至100 Hz之间的频率似乎是合理的,但是由于60 Hz是电网的频率(可能因国家而异),因此会失败,因为电网频率必定是重要的噪声源。为了获得最佳结果,我们应该在4Hz到50Hz之间进行滤波。

我们可以使用Scipy的Butterworth滤波器来选择我们要保留的频率范围。使用以下代码定义过滤器:

然后,生成一个timestamp列(当我们合并多个数据集并使原始时间戳无效时),并对每个通道应用一个过滤器:

过滤后,使用以下代码将数据重组为具有IntervalLength x ChannelCount x IntervalCount维的三维ndarrray数组。

我们使用上面的代码将时间序列数据有效地转换为图像数据。这听起来可能有些奇怪,但是您可以将每2秒的间隔视为一幅图像,每个像素对应于在特定(channelNumber,lineNumber)坐标处获得的信号值。

换句话说,我们有一堆IntervalCount图像,每个图像都是IntervalLength x CannelCount。

另外,使用CNN可以跳过傅立叶变换,因为在时间序列数据上的卷积在数学上等效于对变换后的数据进行滤波。

现在,我们准备开始构建CNN。由于我们只有1个颜色尺寸,因此可以将1D CNN与IntervalLength和ChannelCount输入尺寸一起使用。您可以尝试使用不同的超参数和体系结构。我决定使用一个卷积层,两个完全连接的层和两个合并的层。

现在,我们有了一个模型,该模型应该能够将EEG数据的间隔与单词库中的特定单词相匹配。

让我们看看它有多好。将模型应用于测试数据,并将预测结果与实际结果进行比较。

在不影响准确性的情况下增加术语库大小的一种可能方法是创建带有多词查询的分层“术语树”。然后,您可以在树上执行深度优先搜索-仅将每个单词层与同一子树的同一层中的其他单词进行比较-以找到最佳匹配。

使用Google搜索

现在,我们有了使用BCI查询Google所需的所有部分。定义特定子glotter和查询之间的映射并进行适当的调用:

要根据需要执行实时查询,请修改lsl_record.py脚本并将其作为模块导入。然后,您可以调用它来读取LSL流,以响应用户输入,持续2秒。

好的,现在您可以直接使用Google搜索,无需输入声音或打字!

结论

对于三个或四个单词的术语库,您不能做很多事情(除非前面提到的术语树的实现)。

通过所有这些步骤搜索到最近的加油站比通常的Google搜索要复杂一些。但是,重要的是要考虑该技术的进一步发展可能在何处产生。

我们可以想象到该设备的改进版本和引人注目的版本,与MIT团队已经拥有的用于导航,Web查询,文本消息,智能家居管理或许多例行任务的版本没有太大区别。

当结合具有能够根据上下文进行解释的不断改进的AI助手的功能时,可能性就进一步扩展了。

基于EEG的BCI的应用只是全球公司和大学实验室进行的尖端研究最终可能实施的一小部分。

心灵感应通信,超智能,超常感,模拟体验,人类意识数字化和人工智能融合都值得考虑。

如果实现了这些可能性,它们不仅将重新定义我们与技术的关系:还将重新定义人类的意义。

收款报告投诉

新智慧报告

编辑:元子

[新智慧指南]埃隆马斯克(Elon Musk)和神经网络(Neuralink)希望建立可以充当大脑第三层的脑机接口,从而使人类与人工智能形成共生关系,从而通过意识与外界进行交流。本文教您如何使用Keras和OpenBCI建立与Google进行交流的大脑接口。

您可能已经知道,马斯克(Musk)投资了一家公司,并创建了人机界面。但是您知道它们是如何实现的吗?

英特尔软件工程师,加州大学戴维斯分校的计算机科学专业和生物学顾问,技术和人工智能爱好者Jag Singh撰写了指南。让我们看看它是如何工作的!

该项目建立了神经系统与外部AI代理之间的直接联系,并利用了次声定位。该代理可以是您可以从API获得的任何代理,包括Google Assistant,Siri,Alexa,Watson等。

所需的主要硬件工具是OpenBCI Ganglion板,该板活动且价格便宜。除电路板外,还需要电极和电线。当然,您也可以直接购买OpenBCI入门套件。

调试

本教程是在Linux机器上完成的。确保Python版本为最新版本(3.4+),然后可以克隆:

从CD到pyOpenBCI,然后

然后cd到pyOpenBCI/Examples,将在print_raw_example.py

更改为

接下来打开板子电源。

在您的计算机上,cd到pyOpenBCI/Examples目录,然后键入以下命令:

一起工作。

记录信号

上一步将获得原始输入数据流。该数据需要转换为LSL流。

修改pyOpenBCI/Examples/lsl_example.py,代码如下

然后修改lsl-record.py:

您可以调整termBank(第64行)以在各种情况下尝试各种单词组合。您还可以在每个会话之前调整默认持续时间(第12行)。

接下来,让我们捡起它!

将电极贴在头上,找到一个安静的地方,打开计算机上的两个端子1和2,首先在1和2中输入以下命令:

在1号航站楼:

在2号航站楼:

然后,您可以以指定的持续时间开始录制会话。系统提示您在术语库中使用随机单词,每2秒冥想一个单词。

如果长时间的录制会使您感到不舒服或打do睡,请尝试录制几次。您还可以设计和实现更灵活的设置,并在发现干扰时选择按钮以删除当前间隔和先前间隔。

另一个解决方案是进行多个小型会话并在最后合并数据,以及过度干扰已删除的会话。不可避免会产生一些噪音,您不必太挑剔,因为随着样本数量的增加,模型将变得更具弹性。

为了获得最佳结果,单词库中的每个单词应至少包含1000个高质量样本。

处理信号

一旦有了足够的数据,就可以为机器学习做准备。根据需要合并和预处理数据,使其具有以下格式:

该单词是从1到NumIntervals的索引,它是SessionDuration/2与会话总数的总和。

该术语对应于每个间隔显示的单词

[A,B,C,D]是EEG频道

对于每个单词,术语组合对应于大约800行数据

使用numpy将CSV文件导入python。所有数据都应加载到脚本中的NumLines x 6 ndarray中。

第一步是对数据进行滤波,以除去我们感兴趣的频率之外的噪声。信息性EEG频率对应于以下频带:

过滤4 Hz至100 Hz之间的频率似乎是合理的,但是由于60 Hz是电网的频率(可能因国家而异),因此会失败,因为电网频率必定是重要的噪声源。为了获得最佳结果,我们应该在4Hz到50Hz之间进行滤波。

我们可以使用Scipy的Butterworth滤波器来选择我们要保留的频率范围。使用以下代码定义过滤器:

然后,生成一个timestamp列(当我们合并多个数据集并使原始时间戳无效时),并对每个通道应用一个过滤器:

过滤后,使用以下代码将数据重组为具有IntervalLength x ChannelCount x IntervalCount维的三维ndarrray数组。

我们使用上面的代码将时间序列数据有效地转换为图像数据。这听起来有些奇怪,但是您可以将每2秒视为一张图像,每个像素对应于在特定(通道号,行号)坐标处获得的信号值。

换句话说,我们有一堆IntervalCount图像,每个图像都是IntervalLength x CannelCount的大小。

另外,CNN的使用使我们可以跳过傅立叶变换,因为在时间序列数据上的卷积在数学上等同于过滤变换后的数据。

现在,我们准备开始构建CNN。由于只有一种颜色尺寸,因此可以将1D CNN与IntervalLength和ChannelCount的输入尺寸一起使用。您可以尝试不同的超参数和体系结构。我决定使用一个卷积层,两个完全连接的层和两个池化的层。

现在,我们有了一个模型,该模型应该将EEG数据的间隔与词汇表中的特定单词相匹配。

让我们看看它有多好。将该模型应用于测试数据,并将预测结果与实际结果进行比较。

在不影响准确性的情况下增加词汇表大小的一种可能方法是创建带有多词查询的分层“术语树”。然后,您可以在树上执行深度优先搜索-每个单词层仅与同一子树层中的其他单词进行比较-以找到最佳匹配。

使用Google搜索

现在,我们有了使用BCI查询Google所需的所有部分。定义特定子声门和查询之间的映射并进行适当的调用:

要根据需要执行实时查询,请修改lsl_record.py脚本并将其作为模块导入。然后,您可以调用它来读取LSL流,以响应用户输入,持续2秒。

好的,现在您可以直接使用Google搜索,无需输入声音或打字!

结论

对于三个或四个单词的术语库,您不能做很多事情(除非前面提到的术语树的实现)。

通过所有这些步骤搜索到最近的加油站比通常的Google搜索要复杂一些。但是,重要的是要考虑该技术的进一步发展可能在何处产生。

我们可以想象到该设备的改进版本和引人注目的版本,与MIT团队已经拥有的用于导航,Web查询,文本消息,智能家居管理或许多例行任务的版本没有太大区别。

当结合具有能够根据上下文进行解释的不断改进的AI助手的功能时,可能性就进一步扩展了。

基于EEG的BCI的应用只是全球公司和大学实验室进行的尖端研究最终可能实施的一小部分。

心灵感应通信,超智能,超常感,模拟体验,人类意识数字化和人工智能融合都值得考虑。

如果实现了这些可能性,它们不仅将重新定义我们与技术的关系:还将重新定义人类的意义。

建筑设计