没有合适的资源?快使用搜索试试~ 我知道了~
*SoftwareX 7(2018)156原始软件出版物MIDAS:分布式在线数据流分析的开源框架Andreas Heneliusa,b,*,Jari Torniainena,ca芬兰职业健康研究所,芬兰赫尔辛基b芬兰赫尔辛基阿尔托大学计算机科学系c芬兰库奥皮奥东芬兰大学应用物理系ar t i cl e i nf o文章历史记录:2016年1月11日收到2018年4月12日收到修订版,2018年保留字:数据流在线分析分布式系统机器学习a b st ra ct数据流是普遍存在的,但实现流数据的在线分析往往是不平凡的,因为数据流可以有不同的,特定于域的格式。不管是哪种流,分析任务本质上是相同的:从流中提取特征,例如,使用机器学习和数据挖掘方法。我们提出了模块化集成分布式分析系统(midas)构建分布式在线流处理系统的异构数据。midas框架可以处理原始数据流,提取特征,执行机器学习,并通过HTTP API提供结果,以便与各种应用程序轻松集成Midas对于数据流的类型是不可知的,并且适用于多个域。版权所有©2018作者.由爱思唯尔公司出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)中找到。代码元数据当前代码版本v1.1.0此代码版本使用的代码/存储库的永久链接https://github.com/ElsevierSoftwareX/SOFTX-D-16-00010法律代码许可证MIT(http://opensource.org/licenses/MIT)使用git的代码版本控制系统使用Python 3.4+的软件代码语言、工具和服务编译要求、操作环境依赖性和编译器:操作系统:Linux,Windows,OS X.Python模块:Bottle、PyZMQ、Waitress、PyLSL如果可用,链接到开发人员文档/手册https://github.com/bwrc/midas/wiki问题支持电子邮件andreas. aalto.fi,jari. uef.fi1. 导言及意义物联网(IoT)中的设备存在于各种领域中,例如,在医疗保健[1]或环境和农业应用[2]中。物联网还与人机交互(HCI)相关用于控制用户界面的生物信号)。许多IoT数据流是具有范围从以1Hz采样的一个通道(例如,温度传感器)到以500 Hz采样的16个通道的脑电图(EEG)数据。时间序列必须逐个样本地顺序处理,这与数据的批处理不同,在批处理中,数据项的处理顺序不太重要。无论通讯作者:芬兰赫尔辛基阿尔托大学计算机科学系。电子邮件地址:andreas. aalto.fi(A. Henelius),jari. uef.fi(J.Torniainen)。https://doi.org/10.1016/j.softx.2018.04.004数据流的来源,潜在的重要信息可以从中提取。不同领域的数据流具有不同的属性,但数据处理任务基本相同:从流中提取感兴趣的特征并用于决策。因此,需要用于流信号的在线提取和分析的流处理系统由于一个典型的任务是同时收集来自多个传感器的数据,这意味着一个分布式系统,用于平衡计算负载。当前的流处理系统或者是域特定的(e.g. 、QIVI-CON ( https://www.qivicon.com/ ) 或 EPICS(http://www.aps.anl)。gov/epics/))。这样的系统是单片的,并且被优化用于处理以高速率到达的少量并行数据流2352-7110/©2018作者。由爱思唯尔公司出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)。可在ScienceDirect上获得目录列表SoftwareX期刊主页:www.elsevier.com/locate/softxA. Henelius,J.Torniainen/SoftwareX 7(2018)156157(a) 三层体系结构显示了组件和通信协议。信息从左(传感器)流向右(客户端)。MIDAS包括具有节点和调度器的处理层。(b) 节点内部的主要单元和组件之间使用的通信协议Fig. 1. 迈达斯的建筑。在特定的领域。还存在用于以高速率处理大量传入数据的通用数据处理框架,例如,Twitter数据流,在大规模(例如,Storm(http://storm.apache.org/)、Samza(http://samza.apache.org/)和Spark Streaming(https://spark.apache.org/streaming/))。最后,还有专用的物联网平台(例如,通用电气公司(https://www.predix.com/)、PTC Thingworx(https://www.xml.com) thingworx.com/)和Amazon AWS IoT(https://aws.amazon.com/iot/)或Kaa(https://www.kaaproject.org/))。尽管分布式数据处理系统和物联网系统能力很强,但在许多情况下,它们对于用很少的数据流进行较小规模的分析来说是不必要的复杂,例如,用于原型制作。本文的重点是跨平台的midas(模块化集成分布式分析系统)框架,主要用于处理来自可穿戴设备和物联网传感器的高速时间序列,用于HCI应用。midas框架的哲学是帮助研究人员创建和管理具有多模态信号源的设置,使他们能够专注于系统的信号处理和机器学习方面。关键的设计考虑因素是创建一个灵活的流处理系统,该系统具有分布式架构,用于负载平衡,易于设置,并可扩展到不同类型的硬件,例如笔记本电脑,台式机和单板计算机。呃。midas在设计时考虑了以下设计目标,这些目标对于用于数据流的在线分析的系统是共同的,而不管域如何。该系统是数据不可知的,即,可以分析不同类型的数据该系统是模块化的,由小型的、相互连接的单元组成,使得添加和删除数据流和分析组件变得简单,加快了工作流程。分布式架构确保了计算负载的可扩展性和分散性使用构建在标准协议之上的API提供可访问性,例如,系统的客户端可以使用HTTP。midas是用Python编写的,并且是轻量级的,例如,它可以在几秒钟内安装。Midas并不旨在与特定领域的或专用的高性能流处理系统竞争。midas的目标是成为一个免费的,开源的,轻量级的替代其他框架来创建物联网系统,例如,为原型或研究建立多模态时间序列数据的实时分析管道2. 软件构架处理数据流基本上包括(i)数据输入,(ii)数据处理(特征提取)和(iii)提供数据,158A. Henelius,J.Torniainen/SoftwareX 7(2018)156客户. 在多个实例上卸载这些阶段有利于系统的效率和灵活性。这自然表明系统的高层架构有三层设计(图1(a)):输入层、处理层和客户端层。信息流是从左边的生产者到右边的消费者。midas包括连接生产者和客户端的中间处理层。Midas由节点和调度器组成。节点是数据流的处理单元,包含信号处理、特征提取和机器学习功能。节点将输入数据处理成度量,从一个或多个数据流导出的量。数据流可以连续处理,或者节点可以在客户端请求时产生结果。还支持结果的自动广播。调度器协调客户端和节点之间的通信。2.1. 输入层输入层由传感器和拖缆组成。传感器获取信号并使用通常特定于供应商的协议通过例如蓝牙、USB或TCP/IP。信号在进入midas之前必须从供应商特定的协议中分离出来,以便对数据应用通用的分析方法实验室流层(LSL,https://github.com/sccn/labstreaminglayer)是一种用于传输时间序列的网络化跨平台协议。LSL允许流的时间同步和发现,并且是从传感器到midas的主要数据输入格式。2.2. 处理层2.2.1. 节点节点接收输入数据流并对数据执行高级操作。节点是midas中的主要处理单元,也是具有多个内部单元的最复杂的组件 所有节点共享图1的架构。1(b).节点可以有两种主要类型,这取决于它们的输入:主节点对原始信号进行操作,并从传感器接收其数据。主节点用于预处理信号和从数据流中提取特征。次节点利用来自主节点的经处理的信息,并执行例如,机器学习任务辅助节点可以在内部收集用于分析的数据,例如,从用户界面事件中分离,在这种情况下,它们不依赖于外部数据流。接下来将更详细地描述节点内的单元接收器接收输入数据。对于主节点,数据通常是LSL流,而次节点通过分派器从主节点请求数据。输入信号存储在数据容器中。数据容器保存一定数量的传入和处理数据,允许从过去n秒的时间窗口进行计算。节点可以具有两种类型的数据容器:用于输入原始信号数据的主缓冲区和用于任意细化数据的辅助从主数据缓冲区中的数据计算的度量。这些容器被实现为多通道循环缓冲区,具有可单独配置的参数。代理从客户端接收消息,执行负载平衡,并将传入的请求路由到可用的响应器。允许并发。响应器接收传入的请求并根据消息的类型执行不同的任务消息传送协议在midasAPI(https://github.com/bwrc/midas/wiki/API)中描述。每个节点都有一个UDP信标广播状态信息(IP地址,端口等)。用于启动与调度器的通信。Dispatcher侦听节点信标,并使用消息中的信息自动添加、删除和重新连接节点。分析功能表示节点的功能部分,例如,预处理、特征提取和分类。分析功能是特定于任务的,必须由用户实现。midas背后的关键设计理念是以最小的努力开发分析方法。唯一的要求是,用户必须遵循定义的格式,数据如何传递到分析功能,因此很容易使用midas中现有的分析功能。分析功能有三种操作模式:(i)度量,(ii)过程和(iii)发布。下文将对此进行更详细的说明度量函数由客户端发起的请求-应答模式触发。分析函数接收作为函数参数的输入数据,并返回一个传递回客户端的值。API支持将参数传递给度量函数。处理函数连续运行,通常从主数据缓冲区读取过程函数对于特定变量的连续计算是最佳的,例如,不断地从输入的数据流中提取特征如果计算缓慢,这可能是有用的,在这种情况下,节点可以将最后计算的度量返回给客户端,从而减少等待时间。发布函数类似于使用ZeroMQ(http://zeromq.org/)的流程函数和广播消息这些功能还可以充当如果度量超过设定的阈值。广播是使用广播者-订户模型来实现的midas中的如果对象的心率超过每分钟150次(偶然情况),或者每五秒广播平均心率(连续情况)。客户端可以在没有请求的情况下接收数据,但这需要客户端支持ZeroMQ。节点发布的所有消息都通过调度器路由到客户端。2.2.2. 调度员分布式系统被定义为多台独立计算机的集合,从用户的角度来看,它们看起来像一台计算机[6]。MIDAS遵循客户机-服务器体系结构,其中调度器处理节点和客户机之间的双向消息传递。midas中调度器的作用是简化系统中组件之间的通信模式,例如因此,尽管midas是分布式的,但它对客户端应用程序来说似乎是一个系统,因为客户端和节点之间的所有通信都要经过一个(或多个)调度程序。客户端只需要与调度器通信,这简化了配置过程,因为客户端只需要使用调度器地址进行设置,并且可以忽略整个网络拓扑。多个调度器可以同时使用,而不会出现不一致的问题,因为从客户端到节点和返回的消息多调度器拓扑的额外好处是增强了鲁棒性、负载平衡和针对单点故障的冗余客户端和节点之间的通信通过客户端发起的HTTP上的请求-应答消息传递模式进行节点和调度器之间的通信是使用内部消息传递协议实现的,··A. Henelius,J.Torniainen/SoftwareX 7(2018)156159=-图二、 使用一个(蓝色)和两个(淡紫色)调度器在多客户端midas网络中分配RTT。Tukey式箱形图中的上铰链和下铰链表示分位数1和3,中位数位于中间。须状线表示从相应铰链开始的四分位距的3/2倍内的点的范围异常值用圆圈标记(有关本图例中颜色的解释,请参阅本文的网络版本ZeroMQ的顶部。这些网络通信协议允许分布式架构,其中所有midas组件(节点,客户端和调度程序)可以在不同的计算机上运行2.2.3. 发现系统拓扑和容错midas中的系统拓扑发现是自动的,并且基于节点信标。节点可以在运行时添加和自动发现还增加了可靠性,因为一旦节点变为在线状态,就可以自动恢复与处于离线状态可以将调度器配置为仅与节点的子集通信,这可以用于将节点划分为多个midas网络,每个网络都有自己的调度器。冗余和负载平衡的系统拓扑结构,执行相同任务的节点可以使用midas来构建。然后,客户端可以从产生相同结果的若干节点之一请求度量运行多个调度程序进一步增加了可靠性、冗余性和平衡负载。2.2.4. 数据流的同步和时间精度数据流的同步对于利用不同数据流之间的共享信息进行分析尤其重要。考虑网络相关延迟的一种方式是往返时间(RTT)度量,其描述组件之间的网络延迟和处理请求所需的时间。在LSL协议中,每个样本在源处被加时间戳,并且LSL可以不断地测量拖缆和接收节点之间的RTT。从RTT计算的网络延迟然后可以用于同步来自不同拖缆的数据流。Midas提供了用于确定节点和调度器之间的RTT的方法2.3. 客户端层客户端层使用HTTP API与midas接口,使得从midas网络请求数据变得简单而灵活。请求和响应都是JSON格式。3. 系统性能流处理系统(如midas)的性能通常很难评估,因为性能受网络拓扑、各个组件的配置以及正在处理的数据类型和数量等因素的影响。这些因素都对系统的整体延迟有影响每个请求的延迟可以粗略地归因于在客户端和目标节点之间路由请求和应答的时间,以及节点的处理时间为了评估midas在正常操作条件下的性能,我们研究了一个极端情况,即一个节点接收来自多个客户端的请求:1,5,25,125,250和500。我们限制我们的调查网络延迟的一个使用(i)一名调度员和(ii)两名调度员进行了性能测试节点和调度器分别使用10个响应器每个客户端在200 s的时间段内以100 ms的间隔联系节点。往返时间(RTT)的分布是根据最近100个请求计算的。用于测试的网络由使用有线千兆以太网连接的四台计算机组成(一台用于节点,两台用于调度器,一台用于客户端)。测试设置允许确定网络延迟,这可以被认为是节点的实际计算负载的附加值。结果显示在Fig. 二、当客户端数量为250时,使用单个调度器的中值RTT在500个客户端与一个调度器,RTT和标准差的中位数添加第二个调度程序可以平衡负载,并且RTT中值保持稳定。4. 说明性示例我们展示了midas的典型用法使用系统在线确定的心理工作量。为了简洁起见,这里省略了源代码,但是可以在补充材料库(https://github.com/bwrc/midas-softwarex/)中找到这个和其他示例我们使用具有一个心电图(ECG)通道和两个EEG通道的合成生成数据(https://github.com/bwrc/lsltools)数据来源于T20年代-70年代和t 120 s心理工作负荷的决策规则融合了平均心率和脑搏指数:如果这两个指标都超过设定的水平,则工作负荷为作为决策规则的阈值,我们使用1.5作为脑搏,65作为平均心率。架构如图3(a)所示。信号从传感器流传输到主处理节点。ECG节点从ECG信号中提取平均心率,EEG节点计算脑搏指数。客户端请求平均心率,160A. Henelius,J.Torniainen/SoftwareX 7(2018)156(a) 系统架构。(b) 节点计算的脑搏指数和平均心率。脑力负荷的水平用颜色表示;淡紫色表示图3.第三章。使用迈达斯计算脑力负荷。(有关本图例中颜色的解释,请参阅本文的网络版本从过去5秒的脑搏指数,并输出心理工作负荷等级 结果见图3(b)款。5. 影响midas已经在几个项目中用于将在线信号分析集成到不同的应用中。midas已被用于处理EEG信号1 (有关早于midas的该项目的演示,请参阅[8]),并且是眼动跟踪应用程序中眼动数据的支持输入协议[9]。midas被用来开发一个原型,展示一个基于心理生理指标的信息搜索系统2在HCI的心理生理学方法综述中讨论了midas[10,第3.12节]。该论文的第3.12节由本作者撰写结合第四届共生互动国际研讨会,举办了心理生理信号在线分析的迈达斯教程。32015年,迈达斯在赫尔辛基升级生活节的一个展位上展示。芬兰职业健康研究所参与了芬兰国防军该计划是在可穿戴计算机上使用midas在线监测生理活动我们鼓励midas的用户通过向存储库https://github.com/bwrc/midas-nodes发出pull请求来共享他们的处理节点,这样从事类似研究任务的用户就可以在从这个项目的开放源代码的性质1 https://github.com/brains-on-art/brain-poetry网站。2 https://youtu.be/fYL2LlH5bcU网站。3 https://github.com/bwrc/midas-symbiotic2015网站。6. 结论MIDAS是用于数据流的在线分布式分析的模块化和通用框架,与数据流的类型无关。该系统适用于多个领域,即,Midas具有很高的通用性。这一点,再加上midas的轻量级和模块化特性,允许快速开发分布式应用程序。Midas提供了允许用户集中于实现分析功能的高级抽象,例如,通信模式和数据处理。Midas非常适合于研究用途,例如,在人机交互中确认这项工作得到了由Tekes(赠款40228/13和5159/31/2014)和芬兰科学院(决定313513)资助的知识工作革命项目的支持引用[1] IslamSR,Kwak D,Kabir MH,Hossain M,Kwak K-S. 医疗保健物联网:一项全面调查。IEEE Access2015;3:678-708.[2] 梅奥拉A.为什么物联网,大数据智能农业是农业的未来,Business Insider;2016。http://www.businessinsider.com/internet-of-things-smart-agriculture-2016-10. [2017年5月20日访问]。[3] Schalk G,McFarland DJ,Hinterberger T,Birbaumer N,Wolpaw JR. BCI2000 : 一 种 通 用 脑 机 接 口 ( BCI ) 系 统 。 IEEE Trans BiomedEng2004;51(6):1034-43.[4] Renard Y , Lotte F , Gibert G , Congedo M , Maby E , Delannoy V ,Bertrand O,Lécuyer A. OpenViBE:一个开源软件平台,用于在真实和虚拟环境中设计、测试和使用脑机接口。在线状态:电信运营商虚拟环境。2010;19(1):35-53.[5] KotheCA,Makeig S.BCILAB:一个脑机接口开发平台。J Neural Eng2013;10(5):056014.A. Henelius,J.Torniainen/SoftwareX 7(2018)156161[6] 范斯汀·塔南鲍姆Distributed Systems:Principles and Paradigms(2nd ed.)分布式系统:原理与范式(第2版)普伦蒂斯·霍尔[7] HolmA,Lukander K,Korpela J,Sallinen M,Müller KM.从脑电图中估算大脑负荷。Sci World J2009;9:639-51.[8] Mäki-Reinikka K , Toivanen J , Alafuzoff A , Kotkanen H , Torniainen J.Brain Poetry; 2013.网址https://tuhat.helsinki.fi/portal/en/publications/brains-on-art-brain(c1d0ec58-5a66-4c07-811d-9c74e193f39d).html.[9] 张文辉,张文辉,张文辉. PeyeDF:用于阅读和自我索引研究的眼动追踪应用程序。手稿正在准备中。网址:http://github.com/HIIT/PeyeDF[10] [10]张文辉,张文辉. 心理生理学初级读本:方法指南和以人机交互为重点的广泛评论。Found Trends Hum-Comput Interact2016;9(3 -4):151- 308.
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功