这是2016年的一篇文章,应该算是物联网中情感识别的开山之作。之前参与物联网课题就有了解过,最近又接触情感识别的相关课题,又重新精读了一遍。
文章简述
作者认为现存通过视听技术来判断个人情绪的方法并不合适,因为它只关注了外表,并没有从人的内心感受进行推断。文章提出了一种名为EQ-Radio方法:通过分析从人体反射的射频信号来推断一个人的情绪。这种创新的方法消除了对物理接触或佩戴设备的需求,同时也让情绪识别更加便捷和可靠。
作者提出的方法需要通过心跳信号来对情绪进行预测,而一般情况下呼吸比心跳带来的振动大一个量级,因此分离出所需的心跳信号比较困难;第二,射频信号中的心跳缺乏作为心电信号特征的尖锐峰,这使得很难准确识别心跳边界。第三,节拍间隔的差异(IBI )只有几十毫秒。因此,单个节拍必须在几毫秒内被分割成分段。在没有尖锐特征的情况下,获得这样的准确性尤其困难 识别心跳的开始时间或结束时间。
作者通过算法分别解决了以上问题:
(1)EQ-Radio 的关键技术是一种从射频信号中提取个人心跳及其差异的新算法。 我们的算法首先减轻了呼吸的影响。我们的缓解机制所基于的直觉如下:虽然吸气-呼气过程导致的胸部位移 比心跳引起的微小振动大几个数量级,但呼吸的加速度却小于心跳的加速度。但呼吸加速度却小于心跳加速度。这是因为呼吸通常是缓慢而稳定的 而心跳则涉及肌肉的快速收缩(发生在局部区域)。这是因为呼吸通常是缓慢而稳定的,而心跳则涉及肌肉的快速收缩(在局部时间内发生)。 因此,EQ-Radio 利用射频信号的加速度 以减弱呼吸信号,突出心跳信号。
(2)EQ-Radio 需要将射频反射信号分割成单个心跳信号。心电图信号有一个已知的预期形状,而射频反射中的心跳形状则是未知的,它会随着人的身体和相对于设备的准确姿势而变化。因此,我们在分割信号时不能简单地寻找已知的形状;我们需要在进行分割时学习心跳的形状。我们将该问题表述为一个联合优化问题,即在两个子问题之间进行迭代:第一个子问题是学习给定特定分割的心跳模板,第二个子问题是找到与所学模板相似度最大的分割。我们在两个子问题之间不断迭代,直到找到最佳的心跳模板和与模板相似度最大的最优分割。最后,我们要注意的是,我们的分割方法考虑到了节拍会收缩和扩大,因此节拍长度也会不同。因此,该算法能找到最大化连续节拍间心跳信号形态相似性的节拍分割,同时允许节拍信号的灵活收缩或扩展。
EQ-Radio 的系统架构由三个部分组成:
第一个组件是一个 FMCW 无线电,用于发射射频信号并接收信号反射。无线电利用已有的方法(
心跳提取算法
1 减弱呼吸影响
如前文所述,作者提出的方法是通过加速度来实现对心跳和呼吸信号的区分,根据定义,加速度是位移的二阶导数。因此,我们可以简单地操作射频相位信号的二阶导数。因为我们没有R的解析表达式 F信号,我们必须使用一种数值方法来计算二阶导数。有多种这样的数值方法的性质不同。我们使用以下二阶微分器,因为它对噪声具有鲁棒性:
其中f0’’为特定样本的二阶导数,fi为i个样本外的时间序列的值,h为连续样本之间的时间间隔。
作者提供了一个对比图,可以看出,在RF源信号中,呼吸信号影响显著,但加速度信号中呼吸信号影响微乎其微。
2 心跳信号分割
学习方法如前文所述,作者进行了如下定义:
算法的目标是找到最优的分段 S∗ ,使分段方差最小。表述如下:
进一步改写为优化问题如下:
其中,bmin和bmax是对每个心跳周期长度的约束。此问题试图找到最优的分割 S 和模板(即形态)µ,使分割和模板之间的平方差之和最小。这个优化问题非常困难,因为它涉及到 穷举搜索所有可能的分段具有指数级的复杂性。
为解决此问题,文中给出了如下算法以分割心跳信号:
情绪识别分类方法
二维情绪模型
EQ-Radio 采用二维情绪模型,以情绪和唤醒为轴,该模型是以往文献中最常用的人类情绪分类方法。该模型分为四种基本情绪状态: 悲伤(负面情绪 和负唤醒)、愤怒(负效价和正唤醒 唤醒)、愉悦(正价和负唤醒)和欢乐(正价和负唤醒)、 和喜悦(正价和正唤醒)。
特征提取
EQ-Radio 可从 IBI 序列中提取下表列出的 27 个特征,同时还可采用了呼吸特征。为了解决呼吸的不规则性,EQ-Radio 首先通过低通滤波后的峰值检测来识别每个呼吸周期。 由于过去研究呼吸特征的工作推荐 时域特征,因此 EQ-Radio 提取了下表第一行中的时域特征。
特征选择和情绪分类
如前所述,文献中有许多将 IBI 与情绪相关联的特征。在训练数据量有限的情况下使用所有这些特征可能会因为特征过多而训练不足导致过度拟合。作者认为,选择一组与情绪最相关的特征,不仅能减少训练所需的数据量,还能提高测试数据的分类准确性。EQ-Radio 使用了嵌入式方法进行选择:这种方法允许在训练模型的同时,了解哪些特征最有助于提高模型的准确性。最后,EQ-Radio 使用 SVM进行分类,在训练 SVM 分类器时选择相关特征的子集作为训练单元。