讨论算法复杂性(内存占用、计算量多少)对计算机软件设计的影响?

本研究的目的是开发一个独立于输入和输出设备的便携式模块化脑机接口 (BCI) 软件平台。我们在一个颈脊髓损伤 (C5 ASIA A) 受试者的案例研究中实施了这个平台。

BCI 可以通过使用大脑信号控制假肢或触发功能性电刺激来恢复瘫痪患者的独立性。尽管多项研究已在实验室和家庭中成功实施了这项技术,但便携性、设备配置和护理人员设置仍然是限制部署到家庭环境的挑战。便携性对于将 BCI 从实验室转移到家庭至关重要。

BCI 平台实施包括一个 Activa PC + S 发生器,两个硬膜下四触点电极植入感觉运动皮层的主要左手手臂区域,一个固定在受试者轮椅后部的小型计算机,一个定制的手机应用程序,以及作为末端执行器的机械手套。为了量化 BCI 在家实施的性能,我们量化了在家中的系统设置时间、长期(14 个月)解码精度、硬件和软件配置文件以及应用程序和小型机之间的蓝牙通信延迟。我们创建了一个运动图像标记信号数据集,以在远程计算机上训练二进制运动图像分类器,供在家中在线使用。

小型机与手机App之间的平均蓝牙数据传输延迟为23±0.014 ms。受试者照顾者的平均准备时间为 5.6 ± 0.83 分钟。获取和解码神经信号并将这些解码信号发送到末端执行器的平均时间分别为 404.1 ms 和 1.02 ms。未经再训练的经过训练的运动图像分类器的 14 个月中位准确率为 87.5 ± 4.71%。

该研究展示了一个家庭 BCI 系统的可行性,受试者可以使用友好的移动用户界面无缝操作,不需要日常校准,也不需要技术人员在家设置。该研究还描述了 BCI 系统的便携性和即插即用多个末端执行器的能力,为最终用户提供了选择末端执行器的灵活性,以完成日常需要的特定电机任务。

瘫痪是一种毁灭性的疾病,仅在美国就影响了大约 540 万人 [ 1 ]。在导致瘫痪的各种原因中,中风是最常见的原因,其次是脊髓损伤 (SCI) 和多发性硬化症 [ 2 ]。对于 SCI,美国的发病率最高,颈椎 SCI 的患病率正在上升 [ 3 ]。瘫痪给个人、他们的家人、照顾者和公共卫生带来了巨大的经济和社会负担,因为重度四肢瘫痪的人在受伤后的第一年的费用可能超过 100 万美元 [ 4]。对于 40% 的中风受试者和大多数 SCI 受试者,功能缺陷通常是永久性的,目前尚无治疗方法。因此,在这些受试者中解决功能改善和恢复运动和独立性的需求仍然是一项关键挑战。

尽管缺乏可用的治疗方法,但皮质内脑机接口 (BCI) 的最新进展已显示出在恢复瘫痪患者的功能到达和抓握方面取得了可喜的成果[ 5-8 ]。BCI 通过身体神经系统以外的方式在大脑和身体之间建立外部联系 [ 9 ]。虽然 BCI 可能针对各种消费者,但这项技术为有感觉运动缺陷的受试者带来了有希望的结果,其中 BCI 可以规避功能丧失 [ 10 ]。

调查侵入性 BCI 的研究工作强调了它们恢复因神经系统疾病和损伤而丧失的功能的潜力。侵入性神经记录使人类受试者能够控制虚拟光标 [ 11-16 ] 、计算机 [ 17、18 ] 、拼写器 [ 19 ] 、虚拟 [ 20-22 ]和机器人假肢[ 6-8、15、23 ] 、外骨骼[ 24 ],以及他们自己通过功能性电刺激 (FES)瘫痪的肢体[ 5、25、26]。这些成就突出了 BCI 的许多显着改进,例如神经控制设备在多个自由度上的能力 [ 8 , 15 , 23 , 24 ]。这些演示通常需要将受试者拴在神经数据采集硬件上,以允许高分辨率数据流 [ 6 - 8 , 12 - 15 , 17 , 20 - 22 , 25 , 26]。然而,将对象连接到数据采集硬件的持续需要限制了对象在其家庭和社区中使用 BCI 的能力,因此无法为对象提供控制或配置他们如何与设备交互的真正方法。因此,使 BCI 在研究环境之外发挥作用的领域取得的进展仍然是一个关键的里程碑 [ 27 , 28 ]。

开发用于实验室外使用的便携式 BCI 或不与大型固定研究设备连接且可以轻松运输到任何地方的 BCI 系统仍然是皮质内 BCI 的一项重大挑战,因为它们必须考虑当前无线技术所施加的限制关于高数据速率无线遥测、超低功耗电子设备以及物理组件在身体内部和表面占据的空间 [ 29 , 30 ]。

动物研究研究通过开发无线皮质内接口 [ 31 ] 和修改设备参数以降低功耗而不显着影响解码器质量 [ 32 ] ,继续帮助解决这些问题。最近,Simeral 及其同事展示了一种用于控制计算机光标的皮质内 BCI 的不受限制的方法——依靠与受试者放置在同一房间的短程射频 (RF) 接收塔来捕获来自无线的高带宽数据传输射频头戴式 [ 33 ]。

值得注意的是,许多利用脑电图 (EEG) 的研究已经在各种应用中实现了家庭使用 [ 34 – 38 ];然而,基于 EEG 的 BCI 缺乏更多侵入性技术所捕获的空间分辨率 [ 11 ]。此外,对 BCI 控制信号使用非侵入性技术(例如 EEG)会使设置程序(例如,适当的电极放置)复杂化,从而限制了受试者的独立性和 BCI 在家里使用的便利性。

尽管侵入性皮层内微电极阵列具有出色的信号质量,并展示了 BCI 能力的许多显着优势,但随着时间的推移,这些阵列的信号质量会下降,这通常是由于异物对电极柄刺穿电极柄的反应引发的炎症。血脑屏障 [ 39 – 42 ]。这些装置通常是经皮植入物,其中植入物的一部分完全暴露,增加了感染的风险 [ 43 ]。

与皮层内微阵列类似,通过皮层电图 (ECoG) 在大脑表面使用侵入性电极。该方法实现了长期稳定的信号采集[ 44 ],具有更高的空间分辨率和信噪比[ 45 ]。此类应用程序已经成功地控制了具有多个自由度的光标 [11、46]、计算机 [18]、拼写器 [47 ]以及最近的外骨骼[ 24 ]。长期的、完全植入的实施使研究成果能够从实验室转化为家庭 [ 19 , 47]。虽然完全可植入的 BCI 需要进行侵入性脑部手术,但它们有可能将适用的 BCI 技术转移到家庭环境中,通过最大限度地减少护理人员的设置时间并最大限度地减少经皮感染,因为植入设备的任何部分都没有暴露,因为是皮质内微电极阵列的情况。

BCI 的潜在用户及其护理人员表示,便携性、简单的系统配置和最小化的设置时间是 BCI 系统实施的重要组成部分 [ 48 ]。解决这些设计考虑将更好地促进向家庭的过渡。为了实现设计家庭 BCI 系统的这一目标,我们使用安装在受试者轮椅上的小型计算机,无线记录来自植入的 Activa PC + S 设备的 ECoG 数据并执行神经解码。我们的设计包括一种模块化方法,使受试者能够从各种输出设备中进行选择,并允许在未来通过使用几乎即插即用的系统来添加外围设备。

在家中 BCI 系统在一名患有慢性颈椎四肢瘫痪 (C5 ASIA A) 的 22 岁受试者中实施,以恢复手部抓握。该主题是案例研究的一部分,其中一名受试者注册的目的是完全植入神经传感设备,以在实验室中研究脑机接口。该受试者在大约 6 年前的一次机动车事故中受伤,并且可以自主控制他们的二头肌,但不能控制三头肌或其他远端肌肉群。

BCI 的主要组件包括安装在受试者轮椅上的小型计算机、受试者的智能手机、神经信号采集装置和末端执行器。智能手机作为系统的用户界面,而计算机协调信号采集设备和末端执行器之间的数据采集、处理和传输。

输入设备——神经数据采集

用于收集此 BCI 平台 [ 49 ] 神经数据的硬件由三部分组成,两个内部组件和一个外部组件:(1) 两个四触点电极引线(Resume II 引线,美敦力)植入颅内硬膜下表面大脑的感觉运动手区域,(2) Activa PC + S (Medtronic, USA) 发生器植入左锁骨下方,用于记录和传输接触电极感应到的信号,以及 (3) 外部 Nexus-D遥测接收器(美国美敦力)在其天线放置在植入的 Activa PC + S 发生器附近时收集发射信号(图 1)。八个植入电极配置为双极配置,从而产生四个通道的 ECoG 数据。在此配置中,Activa PC + S 仅允许两个时间序列和两个功率采样通道。通道 1 和 3 提供以 200 Hz 采样的实时 ECoG 输出,通道 2 和 4 提供以 5 Hz 采样的 4-36 Hz 之间的平均功率输出。这些频率设置是根据用于检测与事件相关的失步的初始实验室测量结果选择的 [ 49]。来自这些通道的数据以 Nexus 遥测仪收集的数据包的形式传输,并通过 USB 串行连接传送到计算机进行进一步处理。该装置及其检测运动意图的能力,在受试者被植入该装置几个月后,在实验室环境中进行了严格测试,然后再进行家庭部署 [ 49 ]。

图2:系统总览。使用放置在感觉运动皮层表面的两条四触点硬膜下带记录电皮质 (ECoG) 信号。ECoG 信号通过皮下植入物传输到外部接收器,外部接收器将其传送到小型计算机进行处理。解码器将信号分类为运动图像命令,然后通过蓝牙发送以启动机械手套.

输出设备——末端执行器

使用机械手套(Neomano,Neofect,South Korea)启动手抓握。所有输入设备(神经数据采集)和输出设备(末端执行器)通过串口通信与计算机通信,而自定义手机应用程序(App)和小型机通过蓝牙低功耗(BLE)协议通信。

我们在家中使用 BCI 平台收集数据来训练连续运动图像分类器。受试者使用移动应用程序启动数据收集会话。为了收集与运动意图相关的 ECoG 数据,文本提示被发送到受试者的手机上,显示“MOVE”或“REST”,并指示受试者在 MOVE 状态下考虑快速打开和关闭他们的手(图 3d)。提示以 6-10 秒的间隔随机来回交替(对应于 15-25 个数据包,或 PC + S 收集的通道 1 和 3 的 个时间序列数据样本)。这个交替过程持续了 5 分钟,每个数据收集会话总共收集了 750 个数据包(或每个时间通道 60,000 个数据样本)。这些 5 分钟试验中的 33 次用于训练解码器(总计 165 分钟的训练数据),之后使用 17 次开环试验和 12 次闭环试验来验证和测试解码器。闭环试验是在数据收集过程中解码值主动控制假肢手套的试验,而在开环试验中,假肢手套没有被触发。

图2:移动应用程序概述。该应用程序用作受试者与计算机上运行的 BCI 软件交互的 GUI。a主屏幕显示当前选择的正在使用的输入和输出设备。右上角的蓝点标记了系统的状态。b输入设备选择屏幕,允许主体从更多设备中进行选择。c允许受试者调整给定设备的参数(例如解码器阈值、末端执行器电机速度等)的设置页面。这些设置由计算机端的软件类的应用程序编程接口 (API) 定义,并通过蓝牙传送以进行动态显示。d向受试者提示评估准确性或对设备解码器应用校准的数据收集会话。

Activa PC + S 提供了四个数据采样通道。通道 1 和 3 提供 200 HZ 的实时数据,通道 2 和 4 提供以 5 Hz 采样的 4-36 Hz 之间的平均功率。数字 2a、b 描绘了通过 1 Hz 高通有限脉冲响应滤波器并标有信号采样时出现的提示后的 300 秒代表性试验的 200 秒。然后为每个数据包的每个时间通道计算功率谱密度,为每个时间序列通道生成 321 个光谱特征。然后将从通道 2 和 4 收集的 4-36 Hz 之间的平均功率值与来自时间通道的频谱估计的这些功率值分组,为每个标记有提示的特征向量创建总共 644 个特征。收集时间。平均频谱密度显示了每个运动想象状态中 β 波段(12-25 Hz)的差异(图 2 c,f),并且随着时间的推移也可以观察到这一点(图 2 d、e)。这些特征向量用于训练分类器,该分类器首先通过线性判别分析、2 状态隐马尔可夫模型传递特征,然后进行逻辑回归以将状态概率映射到运动图像命令(更多详细信息,请参见 [ 49 ])。

)。D , E数据的平均窗口 (6.4 s, N = 2051) 的时频频谱图,显示从 REST 状态多次转换期间过滤、平均和归一化数据中 1-100 Hz 之间频带功率的变化 (由时间序列的前半部分表示)到 MOVE 状态。

除了数据收集,日常使用设备只需打开电脑并使用应用程序选择合适的输入和输出设备即可。重要的是,因为我们没有使用任何刺激,所以在家使用的安全问题是最小的。

图形用户界面移动应用程序

我们将使用 NativeScript 开发的定制手机应用程序 (App) 部署到受试者的智能手机上,允许受试者通过 BLE 控制 BCI 系统。该应用程序提供了一个图形用户界面 (GUI),显示 BCI 的当前状态,允许受试者选择可用的输入和输出设备,以及更改每个设备的首选项和设置(图  3)。手机应用程序不参与任何数据采集或处理。

该应用程序显示了可以选择进行控制的可用输入和输出设备。如果这些设备分别与小型计算机连接或断开连接,则会从应用程序中添加或删除这些设备。连接后,设备会提供设备特定的设置,这些设置可以使用应用程序进行设置(图 3)。将新设备纳入系统不需要更新应用程序,因为它将动态显示计算机可以访问的内容。

神经信号运动图像编码可能因受试者而异,因此,机器学习算法必须经常重新训练或重新校准,以从数据中解码受试者的预期运动。我们设计了软件应用程序编程接口 (API) 来关联解码器训练协议和输入设备。通过这种方式,受试者可以使用该应用程序为 Activa PC + S 生成的信号训练解码器。可用时,该设备的设置菜单中会显示一个校准按钮(图 3C)。选择后,应用程序的校准模式被激活,允许受试者评估与给定输入设备相关的解码器的准确性。在校准模式下,应用程序从计算机接收文本以显示患者同时记录数据并适当地标记数据,以通过监督学习模型测试或重新训练解码器。

计算机应用程序是用 Python [ 50 – 54 ] 编写的,由两个子进程组成:一个用于管理输入和输出设备之间的通信,另一个用于管理与应用程序的 BLE 通信(图 4)。这些子进程使用异步事件循环来控制执行可能中断的点,并在这两个进程之间切换,以最大限度地减少设备通信之间可能发生的处理延迟。主应用程序迭代地从选定的输入设备收集解码或分类的神经信号,并将返回的命令发送到选定的输出设备。同时,蓝牙进程等待来自 App 的读取、写入和通知请求。

图4:应用程序控制流。a主应用程序由守护程序脚本(或后台运行进程)初始化,以确保程序在计算机开启时始终运行。计算机应用程序异步运行多个协程,以允许输入和输出设备之间几乎不间断的数据流以及蓝牙通信。b主应用程序进程迭代地调用管理输入和输出设备的类。这些设备管理器类包含用于获取设备输入和向输出设备发送命令的公共方法。这些设备类通过串行端口通信与其对应的硬件进行通信。重要的是,可能存在一系列设备供受试者使用。这些可以通过应用程序通过

电机 BCI 的简单描述是一个输入设备(或其中许多),它提供神经数据,将其转换为有意义的输出,并将该输出发送到输出设备(或其中许多)。因为我们假设 BCI 中的所有设备都必须与计算机通信,所以我们的目标是创建一个 API 来提供一个框架,用于合并 BCI 系统使用的物理可用硬件设备。这是通过编写一个抽象设备类来概括定义物理设备和 BCI 软件之间的基本交互和接口所需的方法和属性来完成的(图  4)。更具体地说,通过继承抽象设备类的方法和属性,可以很容易地定义用于初始化使BCI系统与硬件通信的串行通信端口的方法。通过将这些设备类文件保存到相对于应用程序路径的文件夹中,该软件能够使用通用设备类加载这些设备,而无需将任何特定于设备的详细信息直接硬编码到软件中。例如,为 Nexus-D 遥测仪编码的 Nexus 类继承了这个抽象设备类,允许 BCI 系统自动识别设备并开始与 Activa PC + S 收集的数据进行交互和监控。应用程序,API 还提供声明设备属性的选项(如果有),主体可以调整。通过创建设备设置对象,设备类可以定义如何以及在何种程度上可以更改每个属性。这些设备设置对象继承了用于将这些设置转换为渲染命令的方法,这些命令将由应用程序发送并显示以供最终用户交互。这些设备设置将允许受试者或护理人员潜在地改变给定设备的速度、延迟或其他以用户为中心的偏好。

总之,该设计为受试者提供了动态硬件选择(例如,机械矫形器、FES 等)和调整设备设置(例如,矫形器的速度或时间延迟等)的能力,以实现更多定制控制。在我们的实现中,用于从 Activa PC + S 捕获数据的 Nexus 遥测仪通过继承通用设备类进行封装,以创建到硬件的编程接口。信号解码器的特性和方法(图 4 b) 与 Nexus 遥测仪相关的,例如解码器阈值和解码器校准,作为 Nexus 类中的设备设置提供。由于解码器执行二进制分类,因此使用阈值来区分解码信号是 MOVE 或 REST 的输出移动概率。

我们设计了使用BLE与App进行通信的软件,并创建了一个跨平台的蓝牙库,使计算机能够通过蓝牙外围角色支持(即蓝牙主机设备)发布服务。计算机和手机之间传输的数据,包括设备设置、设备状态和校准,利用三个蓝牙通用属性 (GATT) 特性进行数据传输。但是,GATT 特性的最小传输单元为 512 字节,要传输的设备设置信息的大小可能会超过此限制。为了避免这种情况,我们在 BLE 上开发了一个附加层,以启用数据流,使用数据队列通过单个 BLE GATT 特性迭代传输数据。仅当最终用户使用应用程序进行更改时才需要蓝牙通信。蓝牙库是使用事件驱动的回调和异步过程调用设计的。这种设计允许 Python 应用程序专注于从输入设备收集数据,并将该数据传送到输出设备,仅在调用时遵循蓝牙通信过程。通过使用蓝牙,BCI 系统可以在家庭以外的社区中使用,因为蓝牙通信独立于

BCI在使用过程中,所有数据都记录在小型机硬盘上的文件中。该软件将数据文件保存到一个目录中,该目录自动同步大学加密的符合 HIPAA 标准的云存储,假设机载计算机具有活动的互联网连接,几乎可以即时访问传入的数据。为了确保计算机能够连接互联网,我们在将设备安装到对象的轮椅上之前,将对象的家庭 WiFi 的服务集标识符 (SSID)、安全配置文件和密码保存到计算机上。这种配置允许计算机连接到对象的家庭 WiFi,以便在对象到家后进行数据同步。

系统设计的目标是为受试者提供配备完全植入式神经感觉装置的功能性脑机接口供家庭使用。我们通过在小型计算机(m90n Nano,Lenovo,China;Windows 10 Pro;Intel i3 2.10 GHz,8 GB RAM)上安装设计的软件将系统部署到家中,并将计算机与锂电池(50,000 mAh 电源银行,克里斯多尼亚,中国)在一个定制的 3D 打印案例中。通过使用穿过印在箱子外部的孔的带子将这个箱子连接到受试者的轮椅后面。滑动门被放置在机箱的两侧,以便于访问电池和小型计算机上的充电端口和电源按钮。在小型机上安装 BCI 软件后, 4一个)。我们使用版本控制系统在线存储了我们软件的代码。这允许我们的守护程序脚本从版本控制系统中提取,以确保代码是最新的。这种设置允许我们使用 git 提交日期和时间戳作为条件,我们可以根据这些条件以编程方式选择和分析在不同软件条件下收集的数据(例如,在解码器更新或初始错误修复之前和之后)。

Activa PC + S 具有 200 Hz 的采样率,并具有以 2.5 Hz (400 ms) 的速率覆盖的板载内存存储。通过设备固件对 Activa PC + S 的 API 调用会阻止程序执行,直到数据可用。重要的是,如果两次后续调用 API 以收集数据的时间间隔 > 400 ms,则在两次 API 调用之间的时间内皮质内电极采样的数据将丢失,因为 Activa PC + S 已经在存储数据在发出第二次调用之前的下一个 400 毫秒块。因此,收集数据的调用之间的显着延迟可能会导致数据丢失。这对于解码器训练的数据收集尤为重要,其中传入的数据必须被同步标记。因为数据标记依赖于通过 BLE 发送的消息,我们需要确保向对象显示运动指令的时间与正在收集的数据在时间上匹配。因此,只有在通过 BLE 向应用程序发送指令的时间小于 400 毫秒时,数据才能可靠地与呈现给受试者的屏幕指令标签匹配,以最大限度地减少覆盖数据的机会以及受试者的反应时间。通过在模拟重新校准会话期间记录时间戳,计算机发送提示的时间戳与应用程序上显示相同提示的时间戳之间的差异表明平均延迟到屏幕为 23 毫秒(图 1)。只有当通过 BLE 向 App 发送指令的时间小于 400 毫秒时,数据才能可靠地与呈现给受试者的屏幕指令标签匹配,以最大限度地减少覆盖数据的机会以及受试者的反应时间。通过在模拟重新校准会话期间记录时间戳,计算机发送提示的时间戳与应用程序上显示相同提示的时间戳之间的差异表明平均延迟到屏幕为 23 毫秒(图 1)。只有当通过 BLE 向 App 发送指令的时间小于 400 毫秒时,数据才能可靠地与呈现给受试者的屏幕指令标签匹配,以最大限度地减少覆盖数据的机会以及受试者的反应时间。通过在模拟重新校准会话期间记录时间戳,计算机发送提示的时间戳与应用程序上显示相同提示的时间戳之间的差异表明平均延迟到屏幕为 23 毫秒(图 1)。5),表明蓝牙通信没有增加会影响数据收集的时间延迟。我们还发现在传输过程中没有丢掉蓝牙数据包。

图5:蓝牙低功耗通信基准。在数据收集会话期间观察到的时间延迟 (n = 750)。蓝牙传输时延测量为App上显示提示改变的时间与计算机系统上提示改变启动BLE(提示显示通知特性)的时间之差。

系统应用程序分析使用 cProfile Python 模块测量,并使用 SnakeViz 可视化(图6) 来描述由 BCI 系统中的进程引起的延迟。BCI 软件是在受试者在家设置后初始化的。在系统使用 5 分钟时收集分析。主应用程序循环由两个主要功能组成:(1)从所选输入设备读取解码命令(图6左)和(2)将命令发送到选定的输出设备(图 6右)。系统分析显示,将输入信号处理为电机指令命令的时间约为 400 毫秒(图 6左),之后只用了 1 毫秒将该命令发送到末端执行器以进行手抓握(图 6 右)。这个主循环的第一部分:将输入信号处理成运动指令,由两个子过程组成:(1) 从 Activa PC + S (~ 393 ms) 接收神经通道数据,以及 (2) 解码信号转换成电机指令(10.23 ms)。然后,将该命令发送到

图 6:系统分析。代表处理传入数据(左)和将解码输出发送到手套(右)所花费的时间比例的旭日图。每个旭日形图的中心代表获取解码的神经信号(左)或向手套发送命令(右)的过程。围绕中心点的每条弧线代表一个子流程,需要执行以处理传入数据(左)或发送数据(右)。弧的长度表示子流程完成所花费的时间相对于依赖它完成的子流程的比例。虽然有许多子流程,但与 BCI 软件相关的那些都被突出显示。其余子流程是系统特定流程,例如输入-输出操作。

运动图像分类器的准确度指标在训练后的第二年继续测量,无需重新校准(图 7)。解码器精度定义为正确分类的数据窗口的数量,在 79 次试验中保持稳定,中值精度为 87.53%(图  7; 灰色虚线)。

图 7:解码器分类。与 Nexus 遥测输入设备相关的解码器的分类性能。第 0 个月表示对训练数据的评估,随后的月份表示自训练以来的月数。黑色虚线表示全球中位数 87.53%。

几乎不需要对护理人员进行培训来学习使用我们的 BCI 实施为受试者设置设备。设置只需要打开系统,将遥测天线适当地放置在对象上,并将任何末端执行器设备安装到对象的肢体上。从这一点开始,受试者能够在没有帮助的情况下使用应用程序配置、校准和控制 BCI 系统。为了量化这一点,我们测量了从护士开始设置系统到受试者对机械手套进行神经控制之间的平均时间量(图 8)。平均而言,设置此实现的时间为 5.58 分钟,其中大部分时间(2.34 分钟)用于在 App 和小型机之间建立蓝牙连接并配置系统以及戴上 Neomano 手套(2.18 分钟)。

图 8 :系统设置时间。受试者的主要照顾者设置系统所用的时间。连续几天每天重复测量一次。A显示设置系统的总时间,而B显示不同设置步骤的时间,总和为总经过时间。不包括校准时间,因为在日常设置期间不需要校准时间。

我们的设计旨在让 BCI 在家庭内外都能发挥作用,并让受试者控制设备选择、数据收集以及系统设置和偏好,同时最大限度地减少对护理人员辅助设置的需求。尽管该系统是在具有植入神经接口的 SCI 受试者中实施的,但应用程序可以扩展到其他形式的瘫痪,或者可以使用 BCI 的任何地方,例如与 EEG 耳机或皮质内尖峰信号一起使用。

在我们的设计中,该应用程序用作 GUI。然而,其他实现使用智能手机进行信号处理——使用手机作为系统的唯一处理单元[ 55-58 ] ——而不是使用板载小型计算机。其他人则使用智能手机来推动与家用电器的通信 [ 35 , 36]。在这里,NativeScript 的使用将手机应用程序的开发限制为蓝牙低功耗协议,这限制了我们系统的高带宽数据流的能力,而蓝牙经典射频通信 (RFCOMM) 原本可以实现原始信号传输。然而,正如 Campbell 等人所报道的,使用经典 RFCOMM 的替代解决方案可能会很快耗尽手机的电池电量。[ 56 ]。然而,如果系统在未来的迭代中完全移动到手机上,则需要考虑 RFCOMM 的实施以实现连续和可靠的数据收集和流式传输。此外,迁移到手机使用需要加强安全措施。作为 [ 59] 指出,此类系统的广泛和值得信赖的使用将需要小心以确保系统的完整性和安全性。

作为重要说明,我们的受试者能够使用二头肌可用的残余运动来导航应用程序的使用。然而,该应用程序非常简单,可以让护理人员在需要时配置或更改系统设置,并且不会将我们的系统应用限制在具有独特残余运动的受试者身上。

为了在实验室之外更实际地使用 BCI,系统可移植性是一个重要组成部分 [ 27 ]。一种提高便携性的方法是使用更小的计算设备,这些设备在个人平板电脑、手机和小型计算机中变得更容易获得。之前的几项研究已经将平板电脑和手机等便携式设备用于命令 [ 35 ] 和信号处理 [ 55 , 57 , 58 ]、主体交互 [ 38 ] 以及作为末端执行器本身 [ 56 ]]。在我们的设计中,我们使用了一台小型计算机和受试者的智能手机,这使我们能够让受试者控制 BCI,同时确保 BCI 软件可以独立于手机继续运行。此外,就成本而言,这些组件已经是可以轻松购买的消费级产品。手机和电动矫形器使用的短程蓝牙通信允许对系统进行持续控制,这允许受试者在家外继续使用 BCI。由于电动矫形器通过无线蓝牙无线电与系统通信,WiFi 仅用于上传离线分析所需的数据,BCI 系统本身的使用独立于互联网连接运行。

用于研究开发的模块化 BCI 设计有助于提高科学的可重复性,并减少了开发新的 BCI 软件和配置所需的时间。已经开发了几种软件工具、包和管道来帮助完成这项工作[ 60-64 ]。此类应用已在实验室和家庭中成功使用其中一些系统 [ 65 ]。除了这些工具之外,其他研究还显示了各种成功的输出控制,包括光标控制、拼写器、家用电器控制、外骨骼、假肢和FES [ 6-8、11-24、47]。我们的设计侧重于最终用户交互,同时使软件能够跨操作系统和处理器架构进行扩展。虽然我们在测试设备时只使用了电动矫形器,但我们确保系统可以是模块化的,包括在运行时动态更改输入和输出设备。这种模块化是使用对象的移动设备的另一个目的。它允许受试者交换末端执行器设备、启动培训课程并调整可用的系统设置。

当提供设备类时,输入设备(例如,EEG 系统)具有即插即用功能。实现一个设备类需要某种机制来将数字化数据从设备采样到计算机;例如,通过串行端口、套接字或设备提供的 API。可以使用或定制我们工作中的解码器,将输入信号转换、分类或回归为有意义的值。设备类必须继承设备基类并定义一个 get_input 方法,然后(1)收集先前确定的数据,(2)将该数据解码为有意义的值,然后(3)返回该值。最后,串行端口、套接字或 API 属性可以定义在平台将用于在启动期间自动检测设备的类上。有了这些,可以将新设备添加到平台中,

主题与家庭 BCI 平台的交互

总之,BCI 平台及其实施不仅使患有颈椎 SCI 的受试者能够在家中恢复手握并交换模块化组件,而且还使受试者能够单独控制每个设备和整个 BCI 系统的设置和偏好. 更具体地说,这些设置包括用于更改电动矫形器的响应时间和重新启动 BCI 应用程序的选项。研究人员的帮助或运送到实验室变得不必要,因为该应用程序允许受试者按照他们的时间表启动数据收集会话。

我们在家中使用的系统的部署最大限度地减少了对复杂穿脱程序的需求。在几个会话中,我们测量了从开始到受试者可以控制手套的平均设置时间,大约为 5 分钟。这完全在接受调查的潜在用户 [ 48 ]之前推荐的 10-20 分钟的设置时间范围内。这种简化的很大一部分可能是使用完全植入的设备的结果。这种设置避免了使用可能需要电线连接、凝胶应用、准确放置和配置 EEG 帽的EEG帽 [ 66、67 ]。相比之下,最近的一项研究能够在几个会话中实现 8 个看护人-受试者对的平均设置时间为 20 分钟 [ 68]。通常,设置时间取决于 BCI 系统的每个组件的设置时间。非侵入性技术的持续发展将有助于降低这些设置时间和配置复杂性。虽然,用户评估没有系统地评估,但主题确实评论说:“它易于使用和控制,只是有时需要一点时间通过蓝牙连接”。

尽管我们的实现仅使用 4 个 ECoG 通道,与许多 EEG 通道相比,可能会限制系统的功能输出,但此实现的目的是尽量减少在家使用的设置时间和复杂性,同时仍向受试者提供一些功能. 尽管如此,即使是完全植入的系统也可能需要需要插入系统的有线设置[ 6-8、19、47 ]。

然而,在我们的实施中,打开固定在轮椅后面的电池就足以启动系统。从这里开始,将遥测天线与皮下发射器对齐,从而实现神经控制。值得注意的是,由于使用了诸如 Activa PC + S 之类的植入设备,因此易于设置是该 BCI 平台的实施问题,而不是使用该平台的要求。该平台可以使用 EEG 耳机实现。对于此处介绍的实施,完全植入的 Activa PC + S 用于改进家庭设置和整个系统的使用。

Python 作为开发语言可能不会导致完全与操作系统无关的平台。这种限制主要是语言用于与操作系统和硬件交互的方法的结果。另一种解决方案可能是利用已经可用的软件,例如 BCI2000 [ 60 ]。但是,使用 Python 等解释性语言进行开发无需在远程系统更新期间进行编译。

此处介绍的实现中的主题能够使用他们自己的剩余二头肌功能使用 App GUI。这通常会限制 GUI 对能力较差的受试者的使用。然而,App GUI 仍然为护理人员提供了方便的系统访问。此外,计划未来的迭代以启用语音激活和/或凝视控制,以更好地控制具有不同残疾的受试者以及对手和手臂的控制。

使用 Activa PC + S 和 Nexus 遥测仪并不是完全无线的。Nexus 遥测仪和 Activa PC + S 之间的数据样本收集需要将外部天线放置在植入式发生器附近。然而,植入式发生器的较新实施(Medtronic Percept、St. Jude、Boston Scientific、Clinatec 等)正在将无线功能构建到他们的发生器中。此外,用于深部脑刺激的 Activa PC + S 可以使用长达 5 年,但在不使用刺激的情况下使用的设备的电池寿命尚不清楚。可以感应充电的植入物 [ 69 ] 并以无线方式传输其信号 [ 70 ]] 将提供更强大的系统,进一步减少系统维护和护理人员协助,同时最大限度地提高便携性。

像许多侵入性研究一样,我们对侵入性设备的实施仅限于一个主题,因此难以概括。幸运的是,使用与事件相关的去同步作为执行运动图像二元分类的方法已经很成熟 [ 68 , 71 – 74 ],并且一些研究已经在家中使用它 [ 34 , 68 , 75 , 76 ]。虽然,我们将此 BCI 系统用于颈椎 SCI 的受试者,但它提供了有关如何改进软件和应用程序以便更容易融入其他 BCI

未来采用 BCI 相关技术需要确保 BCI 系统便携、设置直观且易于配置 [ 48]。这种模块化的 BCI 软件设计为在消费类计算机平台和移动电话设备上实施 BCI 系统提供了一个轻量级平台。BCI 平台可以轻松添加输入和输出设备,受试者可以使用移动图形用户界面轻松切换。BCI 模块化软件平台设计的实施证明了将 BCI 系统过渡到更便携的设备以供家庭使用的可行性越来越高。随着越来越多的辅助和康复设备变得可用,模块化平台可能会为 BCI 用户提供更多功能。此类系统的开发将使 BCI 的辅助和康复能力更容易为受益于它们的受试者所接受。家庭环境中的 BCI 系统为提高瘫痪受试者的独立性提供了良机。未来的工作将集中在扩展输入和输出设备之间的定制映射,以允许同时使用多个设备。

数据结构是计算机科学与技术专业非常重要的一门核心基础课,计算机科学各个领域以及各种应用软件都要使用相关的数据结构和算法。

本篇的主要目的不是提供关于数据结构和算法的定理及证明。本书采用的模式是利用不同的复杂度改善问题的解决(对于每个问题,你将发现多个具有不同复杂度及降低复杂度的解法)。基本上,这一思路就是列举某个问题的所有可能性。通过这种方式,即使你遇到一个新问题,它也能够向你指明如何思考该问题所有可能的结果。对于正在准备面试、参加选拔性考试以及校园面试的读者很有帮助。

祝君在2022年金九银十中帮助你找到一份心仪的工作!

本篇关于数据结构与算法所讲到的所有问题,面试相关以及文档文末可查看免费获取方式!

任何调用自身的函数称为递归。用递归方法求解问题,要点在于递归函数调用自身去解决一个规模比原始问题小-些的问题。这个过程称为递归步骤。递归步骤会导致更多的递归调用。因此,保证递归过程能够终止是很重要的。每次函数都会用比原问题规模更小的问题来调用自身。问题是随着规模不断变小必须能最终收敛到基本情形。

链表是一种用于存储数据集合的数据结构。

栈是一种用于存储数据的简单数据结构(与链表类似)。数据入栈的次序是栈的关键。可以把自助餐厅中的一-堆盘子看作-一个栈的例子。当盘子洗干净后,它们会添加到栈的顶端。当需要盘子时,也是从栈的顶端拿取。所以第一个放人栈中的盘子最后才能被拿取。

队列是一种用于存储数据的数据结构(与链表和栈类似)。数据到达的次序是队列的关键。在日常生活中队列是指从序列的开始按照顺序排列等待服务的一队人或物。

树是一种类似于链表的数据结构,不过链表的结点是以线性方式简单地指向其后继结点,而树的一个结点可以指向许多个结点。树是一种典型的非线性结构。树结构是表达具有层次特性的图结构的一种方法。对于树ADT(抽象数据类型),元素的顺序不是考虑的重点。如果需要用到元素的顺序信息,那么可以使用链表、栈、队列等线性数据结构。

在有些情况下,可能需要找到元素集合中的最小或最大的元素。可以利用优先队列ADT来完成该操作。优先队列ADT是一-种数据结构,它支持插入(Insert)和删除最小值(DeleteMin)操作(返回并删除最小元素)或删除最大值(DeleteMax)操作(返回并删除最大元素)。

这些操作等价于队列的EnQueue和DnQueue操作。区别在于,对于优先队列,元素进入队列的顺序可能与其被操作的顺序不同。作业调度是优先队列的一一个应用实例,它根据优先级高低而不是先到先服务的方式来进行调度。

在现实世界中,许多问题是由对象以及它们之间的联系所描述的。例如,在航空地图中,我们可能对这样的问题感兴趣:“从海 德拉巴去纽约,哪种方式最快?”或者“哪种方式价格最便宜?”为了回答这些问题,需要关于对象(城镇)之间的联系(飞行路线)信息。图就是用来解决这类问题的数据结构。

排序是按照某种顺序(升序或降序)排列序列元素的一种算法。排序的输出是输入的排列或重新排序。

在计算机科学中,查找(或称为搜索)就是从一个项目的集合中寻找某个具有特定属性的项目的过程。项目可以是存储在数据库中的记录、数组中的简单数据元素、文件中的文本、树中的结点、图中的顶点和边,或者其他搜索空间的元素。

十一、选择算法( 中位数 )

选择算法是在某个列表中寻找第k个最小/最大数字(也称为第k个顺序统计量)的算法法。这包括查找最小值、最大值和中位数。对于查找第k个顺序统计量,有多种不同的复杂的解决方案,本章将列举所有这些可能的解决方案。

符号表是关联值和键值的一种数据结构

散列是一种用以实现信息存储和快速检索的技术。它常用于执行优化搜索和符号表的实现。

前面的章节针对不同的问题介绍了各种算法。在求解一个新问题时,通常的思路是寻找当前问题与已解决问题之间的相似之处,从而轻松找到新问题的求解方法。

首先通过对一个简单理论的讨论,初步理解贪婪的思想。以下棋为例,每一步都有决策都需要考虑对后续棋局的影响。而在网球(或排球)比赛中,选手的行为仅取决于当前的状况,选择当下最为正确的动作,而不关心后续的影响。这说明在某些情况下选择当下最佳行为的决策,可以得到一个最优解(贪婪),但并非所有情况都如此,贪婪策略适用于上述第二类问题。

对于第17章列举的许多问题,贪婪策略不能提供最优解。而其中的某些问题可通过分治(Divid and Conquer, D&.C)法来轻松求解。分治法是一种重要的基于递归的算法设计技术,分治算法递归地将问题分解为两个或多个同类型的子问题,直至这些子问题简.单到能够直接求解,然后再将这些子问题的解合成为原始问题的解。

在前面的各章中,描述了不同问题求解的复杂度。某些算法随着问题规模的增加其复杂度的增长速率较低,而另一些则有比较高的增长速率。对于具有较低增长率的问题,称为简单问题(或易求解问题);对于具有较高复杂度的问题,称为难问题(或难求解的问题)。该分类是基于求解某个问题时算法的运行时间(或者占用内存)决定的。

  1. 所有代码用Java实现。

  2. 数据结构难点启发思考。

  3. 为每个问题列举可能的解决办法。

  4. 基于不同复杂度提供多种巧妙的解决方法。

  5. 覆盖所有竞争性考试的主题。

  6. 囊括数据结构和算法的面试问题。

  7. 可作为大学本科生或硕士研究生课程的预习教材。

  8. 可为IT顶尖公司(微软、谷歌、亚马逊、雅虎、甲骨文、脸谱、苹果等)的求职者提供指导。

需要资料的小伙伴点这里:即可获取

声明:本文内容由脉脉用户自发贡献,部分内容可能整编自互联网,版权归原作者所有,脉脉不拥有其著作权,亦不承担相应法律责任。如果您发现有涉嫌抄袭的内容,请发邮件至,一经查实,将立刻删除涉嫌侵权内容。

我要回帖

更多关于 算法多样化和算法优化的关系 的文章

 

随机推荐