作者:Johannes Wagner, Florian Lingenfelser, Elisabeth André
Affiliation: Lab for Human Centered Computing (HCM), University of Augsburg, Germany
跟着直观而天然的人机交互的突起, 声响, 手势, 模拟(mimics) 等人类行动的主动检测和剖析, 将鄙人一代接口中饰演主要脚色. 本文引见的人类行动剖析(SSI), 是一个时实剖析人类行动的框架. SSI 支撑各类传感器, 过滤器,特征算法. 另外,还支撑机械进修和形式辨认Tools. 鼓舞开发者运用 SSI 的 C++ API 添加新组件, 同时也向前端用户供给 XML 接口, 用于创立文本编辑器用的管道(pipelines). SSI 恪守 GPL 协议, 可以到 openssi.net 收费下载.
人类行动剖析(SSI) 框架供给了及时记载,剖析和认知人类行动的Tools集,诸如手势,模拟(mimic) 点头,和感情对话。让一个基于区块的设计管道(patch-based design pipeline)从主动化组件中获得设置,答应平行,并从多个输出装备中获得同步的传感器数据。特别是,在它的全部产品线(full length)里,还供给了图形接口,协助用户搜集他们本人练习的语料库,来取得个人化的模子,SSI供给了这些机械进修的管道(pipeline)。 除大量的内置组件,SSI还不断鼓舞用户去供给新的功用(函数)来扩大出有效的Tools。 对没有经历的用户,(他们)供给了一个易于运用的XML编辑器用来绘制和运转这些管道(pipelines),其实不需求特别的编程技能。 SSI是用C++写的,而且充沛应用了盘算机系统中的多个CPU。
SSI 特色:
同步多个传感器读出来的数据
通用过滤器和特别算法, 如: 图片处置, 旌旗灯号过滤, 频率剖析和时实统计测定(statistical measurements)
基于事情的旌旗灯号处置, 用于分解和剖析初级此外信息, 如手势, 关键字, 或者用户心情形态
形式辨认和机械进修Tools, 用于离线和在线处置, 如: 各类特点选择算法, 聚类(clustering), 和分类
基于补钉(Patch-base)的管道设计 (C++-API 或者易用的 XML 编辑器) 和经过插件添加新功用
另外, SSI 另有各类盛行传感器和旌旗灯号处置用的类库, 如: e-Health Sensor Shield, IOM biofeedback system (Wild Divine), MicrosoftKinect, TheEyeTribe, Wii Remote Control, ARTKplus, FFMpeg, OpenCV, WEKA, Torch, DSPFilters, Fubi, Praat, OpenSmile, LibSox, 和 EmoVoice. 请到我们网站 下载 SSI.
图 1: SSI 个各类功用提要图.
SSI 是一个时实应用多种传感器作为输出旌旗灯号, 支撑辨认系统开发的开源项目[1]. 因而, 他供给各类过滤器和特别算法处置捕捉到的旌旗灯号. 同时, 也供给各类Tools, 用于完成完好的机械进修管道Task(machine learning pipeline). 首要面临两类用户: 给开发者供给 C++-API, 鼓舞他们开发本人的组件, 同时前端用户可以用现有的组件, 以 XML 格局定义辨认管道(recognition pipelines).
因为社交行动可以经过分歧方法表达, 如: 面部, 声响, 姿态等, 需求多个传感器才干获得一副完好的互动画面. 所以, 要将各类装备的原始旌旗灯号流同步, 而且一致处置, 才干分解有效的信息. 因而, 不管是波形旌旗灯号, 心跳旌旗灯号, 仍是视频图象旌旗灯号, 我们都要一个架构对它们一致处置.
图 2: SSI 支撑的各类传感器的示例图.
传感器的原始旌旗灯号, 需求颠末几个处置进程, 把有效的信息别离出来. 因而, SSI 自带了非常多过滤器, 特别算法, 用来处置各类音频, 视频, 心理旌旗灯号. 把一系列处置模块放在一同, 既能闪开发者疾速搭建庞杂的处置管道, 又不需求过量的关怀完成的细节. 像缓存, 同步这些问题, 由框架主动处置. 因为各类处置模块, 分派在分歧的线程中, 所以每一个处置进程, 都有本人独自设置长度的窗口.
图 3:每一个并行处置的旌旗灯号流都有量身定做长度的窗口.
人与人之间的交换不像机械那末精准, 存在很多差别, 不断定和歧义。所以, 我们需求用几率模子辨认和剖析这些行动。为此, SSI 集成烈?种机械进修管道, 包含: 预处置, 特点提取(feature extraction), 和在线及时分类/联合(fusion)。特征提取的用处是从旌旗灯号中提掏出关键的特点数据 – 只保存分类用到的那部分关键信息. 而分类的用处是将特点向量转换成团圆的形态或延续的数值. 至因而用统计分类法,仍是用静态分类法, 则取决于提掏出来的是单一特点向量, 仍是多个长度纷歧致的特点数据. SSI 框架中包括了这两种办法的例子。
图 4: 支撑统计和静态分类法。
为了处理人与人之间交换存在的歧义, 我们需求将各类渠道提掏出来的信息兼并. SSI 能在分歧层实行信息兼并. 可以在数据层, 如,经过颜色优化纵坚信息. 或在特点层, 将多个渠道提掏出来的特点数据兼并成单一贯量. 也多是决议计划层, 兼并各类辨认器得出的几率. 后几种兼并, 都请求分解的信息能实时出现. 假如是由于暂时的偏向, 而没法做到这一点(如: 呈现在语音指令前面的手势), 那兼并就要在事情层实行. 由信息的种别决议, 他们在哪一层兼并.
图 5: 在特点, 决议计划和事情层的兼并.
本文首要讲 SSI 的 XML 接口, 该接口答应将管道定义为文本文件. 既不请求运用者会编程, 也不需求特定的开发情况, 就可以拆卸一个任何文本编辑器都能用的管道. 不外, SSI 也自带了一个 XML 编辑器, 该编辑器除供给了一些特别的功用外, 还简化了将数据写入管道的步调, 比方: 列出可选项息争释阐明某个选中的组件.
图 6: 在 SSI 的 XML 编辑器中能便利拜访现有的组件 (右边的面板). 另外, 组件的选项能直接拜访和修正(右边的面板).
让我们用一个容易的例子, 阐明下怎么在 SSI 中创立 XML 管道. 假定, 我们要写个顺序, 将声响旌旗灯号转换成频谱(spectrogram). 这是音频处置中最多见的功用之一. 由于, 我们可以经过频率剖析语音中的诸多属性. 下面例子中的管道, 经过麦克风捕获音频旌旗灯号, 然后转换成频谱. 并把原始的旌旗灯号, 和转换过的旌旗灯号显示出来.
<?xml version="1.0" ?><pipeline ssi-v="1"> <register> <load name="ssiaudio.dll"/> <load name="ssisignal.dll"/> <load name="ssigraphic.dll" /> </register> <!-- SENSOR --> <sensor create="ssi_sensor_Audio" option="audio" scale="true"> <provider channel="audio" pin="audio"/> </sensor> <!-- PROCESSING --> <transformer create="ssi_feature_Spectrogram" minfreq="100" maxfreq="5100" nbanks="50"> <input pin="audio" frame="0.01s" delta="0.015s"/> <output pin="spect"/> </transformer> <!-- VISUALIZATION --> <consumer create="ssi_consumer_SignalPainter" name="audio" size="10" type="2"> <input pin="audio" frame="0.02s"/> </consumer> <consumer create="ssi_consumer_SignalPainter" name="spectrogram" size="10" type="1"> <input pin="spect" frame="1"/> </consumer></pipeline>
因为 SSI 支撑插件, 组件都是在运转时, 静态加载的. 所以, 我们把需求加载的 DLL 放在 <register> 标记中. 在本例中, 需求加载3个 DLL 文件, ssiaudio.dll, 包括从音频源读取数据的组件, ssisignal.dll, 包括通用的旌旗灯号处置算法, 和 ssigraphic.dll, 包括各类显示原始旌旗灯号和处置过的旌旗灯号的Tools. 管道剩下的那一部分用来定义, 要创立哪些组件, 和用甚么方法把它们联系关系到一同.
<sensor> 用来定义管道源. 这里的 ssi_sensor_Audio 是组件的称号, 该组件担任音频输出这部分功用. 凡是, 组件都有选项, 答应我们修正组件的行动. 如, 设scale=“true“则让音频传感器,以范畴为[-1..1]的浮点数传回波形旌旗灯号,不然, 我们收到的波形旌旗灯号是整数流. 而设 option=“audio“, 则是要把设置装备摆设存到 audio.option 文件中.
接下来,我们要定义哪个源是我们想监听的.一个传感器最少有一个频道. <provider>用来指定要衔接的频道,这个标记包括两个属性: channel 是频道的标识符, pin 则是个可选的标识符, 前面我们会用来援用旌旗灯号流. SSI 外部有一个缓存, 音频采样数据会不断不时的被写出来. 默许状况下, 缓存会保存最初 10 秒的数据. 所以, 从缓存读取数据的组件能收到一份它需求的采样数据.
本文中的一切译文仅用于进修和交换目标,转载请务必注明文章译者、出处、和本文链接。 2KB翻译任务按照 CC 协议,假如我们的任务有进犯到您的权益,请实时联络我们。2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务