基于物联网传感器的人体行为识别系统设计
2021-09-09张旭照马东林
朱 伟 张旭照 马东林 李 澄
中邮建技术有限公司
0 引言
传统的人体行为动作识别主要是采用能够进行录像或者照相的设备,采集人的视频和照片,利用图像处理的方法进行动作识别。随着技术手段的不断发展,人体行为识别已不再局限于计算机视觉领域,而是扩展到了其他技术领域中。比如,利用惯性传感器进行识别,或者利用WiFi、手机等常见的无线设备,采集信号强度(Received Signal Strength Indicator,RSSI)数据,进而进行人体行为识别。这些方法各有优缺点。传统方法研究比较成熟,如基于视频或图像的时间差分法和背景减除法的人体行为动作识别,已经能做到非常高的识别精确度。但是录像设备并不能随处普及,所以有使用空间范围的限制。新兴的方法如基于信道状态信息(Channel State Information,CSI)的行为识别方法,虽精确度还不及传统方法,但是所使用的设备简单、成本低廉。而基于传感器的行为识别方法,利用手机等设备里自带的传感器就可以进行识别,较为方便。因此,在不同环境下,可以选择不同的识别方法。
本文提出的系统设计基于RSSI的人体动作识别,具有较广的应用前景。当前的人居环境中存在大量无线设备,可采集到足够的数据,这可以解决行为识别需要专用设备的问题。模型具有良好的可迁移前景。
1 ZigBee背景介绍
1.1 ZigBee协议简介
ZigBee,也称紫蜂,是一种低速短距离传输的无线网上协议,底层是采用IEEE 802.15.4标准规范的媒体访问层与物理层,是TI公司推出的一款短距离、低速率无线通信协议。ZigBee、蓝牙和IEEE 802.11b都是工作在2.4GHz频段上的无线协议。但是,这三者又有各自的不同点。由于当前的物联网技术快速发展,蓝牙和802.11b并不能满足所有的应用场景,ZigBee被推出来主要是用来满足对可靠性和低功耗等有强烈要求的应用场景。
现代计算机网络架构中,一般采用分层的理念设计网络结构,不同的层负责不同的功能,数据只能在相邻的层之间流动。每一层负责接收相邻层数据,处理完成后,封装打包给相邻的另外一层,例如国际标准化组织提出的开放式通信系统互联参考模型(Open System Interconnection,OSI),ZigBee参考了此模型,并且结合无线网络的特点,采用分层结构实现ZigBee协议。
ZigBee CC2530是用于2.4-GHz IEEE 802.15.4、ZigBee和RF4CE应用的一个真正的片上系统(SoC)解决方案,它能够以非常低的总材料成本建立强大的网络节点。
1.2 ZigBee CC2530的组网结构
ZigBee CC2530在一个网络中有三种设备:协调器、路由器和终端节点。根据ZigBee的协议栈,无线网络支持三种网络结构,分别是星型拓扑结构、树形拓扑结构和网状拓扑结构。这三种结构的统一特点就是整个网络中只能存在一个协调器,可以存在多个路由器和终端节点。但是终端节点互相之间不能通信,只能通过他们的父节点进行通信。网状结构是最灵活的结构,在需要的情况下,路由器之间也可以进行通信。而星型结构则最不可靠,如果协调器失灵,那么整个无线网络都不能通信。
1.3 卷积神经网络
为建立从RSSI数据识别出不同人体动作的模型,本系统设计采用了当前具有潜在应用价值的卷积神经网络。
卷积神经网络是一种特殊的深层神经网络模型。它不同于以往的神经网络模型,原因是在一些隐藏层上,它的神经元的连接是非全连接的,即有一部分是断开的,而且还会出现在某些层中,同一层的某些神经元的权值是共享的。这种结构是更进一步仿造生物大脑的神经结构,在大量的神经元连接的情况下降低了运算量,降低模型的复杂程度,减少权值的数量。在很多的分类和回归实验中取得了非常好的实验结果。
卷积神经网络通常由输入层、卷积层、池化层、全连接层、输出层等层级叠加组成。
输入层:卷积神经网络本身对输入层的输入数据并没有太大限制,只是,输入不同结构的数据就需要改变一些参数。一维向量或者二维矩阵的形式可以作为输入进入一维卷积神经网络。二维卷积神经网络输入层的输入可以是二维矩阵或者三维矩阵。
卷积层:卷积层主要用来对输入层输入的数据进行特征提取。这一层一般包含卷积核、卷积层参数和激励函数。卷积层参数包括三个量,分别是卷积核大小、步长和填充。常见的激励函数有Sigmoid函数、双曲正切函数、ReLU函数等。
池化层:池化层经常是用来缩减模型的大小,提高计算速度。池化层将单个点的值替换成为池化区域的特征图统计量。经过池化计算后,输出的特征矩阵可以防止过拟合。
全连接层:在这一层,每个神经元都会和前一层产生全连接,通过这一层之后,将会用到所有的局部特征,把之前的局部特征通过权值矩阵再一次合成为一张矩阵,这样就得到了一个输出结果。所以,全连接层会起到分类器的作用。
2 系统设计、实验及数据处理
2.1 设计原理
在开放环境中,无线信号受到物体遮挡等因素的影响,会产生反射、折射、吸收等现象。这些现象对无线信号的影响之一是信号强度的变化。信号强度的变化携带了信号链路上的物体遮挡信息,通过测量可以获知被遮挡的无线链路。因此,设想通过研究多条无线信号被遮挡而产生的信号强度上的衰落来进行人体行为识别研究。设想在一个空间里,有n个ZigBee CC2530终端,终端之间能够两两互相通信,那么在这个空间里就形成了n×(n-1)/2条无线链路。被测试者在这个多条链路组成的空间里做出不同的行为动作,会遮挡不同的无线链路,理论上我们根据被遮挡的链路的不同,能够分辨出不同的行为动作。
2.2 实验场景及工作流程
2.2.1 实验场景
在实际实验中,采用一个立体空间结构,如图1所示。
图1 实验场景示意图
实验采用八个节点组成的空间结构,同时需要确定器件的相对布置距离等等。因此,根据人的平均身高以及所需要测量的动作的变化范围和幅度,将此实验设计为双层1.1米和1.3米的高度,即低一层四个节点距离地面1.1米,高一层节点距离地面1.3米。每两个节点安装于同一个支架,共使用4个支架。事先测量好每个支架上两个高度不同的节点的位置,进行安装固定。
在这个双层结构中,从上一层以逆时针编号为1—4号,下一层以逆时针编号为5—8号。上下层依次对应。同一支架节点与同列另一支架节点相距3.6米,构成一个正方形区域,图2是实验俯视平面图。
图2 实验场地平面图
实验时,被测试者站在距离实验区域边缘1.8米的地方,此点为整个区域的中心点,可以最大限度使各条无线链路能够通过不同行为动作的被测试者。为了在建立模型时不同动作下采集的数据可以形成差异化对比,在这个无线链路区域里,首先测5分钟无人情况的信号强度情况并采集数据,然后依次测量抱头、鞠躬、平伸、平推、直立这5个动作时无线链路的信号强度数据,每个动作分别测量5分钟。
2.2.2 无线网络的工作流程
在本实验中,采用ZigBee CC2530的广播方式进行组网。即每个终端节点都可以发送数据,被网络中其他所有节点接收到信息,其他节点负责测量建立的无线链路的RSSI值,并且记录。具体方法如下:使用8个终端节点按照确定好的距离布置,当网络启动之后,由网络中一个节点发出信息,网络中其他7个节点收到此节点广播的信息并与之建立连接,从交换的报文中读取无线链路的RSSI值,记录在内部存储中,并在本节点发送信息时,把RSSI值写入对应节点的数据报文中。每个节点采用不同的发射延时,保证节点发送信息不冲突。当节点的发射延时到期,便向网络广播一条记录本节点ID号和接收到的各条链路的RSSI值的数据报文,经过一段时间的循环之后,每条节点发送的信息,都包括自己与其他7个终端节点的RSSI值。协调器即汇聚节点,在网络中同样接收每个节点广播的信息,并且把信息传送给电脑,实现数据的收集。
除了所有终端节点在网络中广播信息,并且负责测量自己对其他所有节点的RSSI值之外,还有一个汇聚节点处于网络中。汇聚节点不参与信息的广播以及节点RSSI值的测量,它只负责把所有终端节点的每条信息接收并且通过串口传送给电脑。图3是无线传感器物联网络中终端节点的工作流程。
图3 终端节点工作流程图
根据实验流程,被测试者在限定空间里做出五个不同的动作,每个动作分别维持一段时间不作变化,不同动作对不同的终端节点之间产生的无线链路产生遮挡。被遮挡链路的RSSI数据会相应减小。协调器接收这些数据,并且汇聚转发到电脑上,数据最终形成适合训练卷积神经网络的数据集。
2.3 数据处理
2.3.1 数据拼接
由硬件平台发送过来未经整理的数据是乱序的,并且存在部分错误,需要进行数据的清洗和拼接,以适合神经网络训练。根据模型的需要,把这个数据整理成多个8×8大小的矩阵,每个矩阵中行号和列号都是节点的ID值。尽管硬件中每个终端节点发送数据为不定时,但是整个接收包里,8个节点的数据存在时间顺序。所以每次按时间序列滚动依次抽取1-8号节点的对应数据,组成一个完整的8×8数据矩阵。
拼接矩阵过后,可以得到一个三维矩阵数据集,数据集中的单层矩阵大小为8×8,记录了当前节点和其他七个节点之间的信号强度数据。三维矩阵的层数代表了形成的8×8信号强度矩阵的个数。每个矩阵的基本形式如图4所示。
图4 单个信号强度矩阵
2.3.2 数据预处理
由于在之前的八顶点立方体结构中,被测试者处于几个体对角线信号链路和顶面、地面的面对角线信号链路上,立方体的边和四个侧面上的信号链路并不会被人体行为动作遮挡,根据卷积神经网络的降噪要求,将这些不影响输出结果的无线链路对应的RSSI值剔除置零,减小其对卷积神经网络模型的噪声输出。
2.4 神经网络模型的建立
实验所采集的RSSI数据是以单个节点对应网络中其他节点的信号强度的形式存在,在经过处理之后形成了8个节点之间的互相记录RSSI的二维矩阵,类似于阶梯化的灰度图像的记录形式,所以本实验仿照图像处理采用卷积神经网络来进行人体行为动作分类。在把用RSSI二维矩阵数据堆叠成的三维矩阵的数据集输入到神经网络之前,对矩阵进行标签编码,用以在输出中形成多分类结果。实验中采用one-hot编码,例如平伸动作记作动作1,那么RSSI矩阵对应的其one-hot编码形式应该为[1,0,0,0,0,0],即动作标签对应的数字在这个编码的行向量中对应下标的元素值为1。
然后根据神经网络模型的一般结构,设置其中各层的参数,添加需要的层,连接起前后各层,建立神经网络模型,其步骤和结构如下:(1)添加输入层;(2)添加一个Dense全连接层,连接全部输入的相关数据;(3)添加一个Activation激活层,此激活层使用ReLU作为激活函数;(4)添加一个Dropout遗忘层,此层遗忘概率为0.2;(5)添加一个Dense全连接层,定义神经元数量;(6)添加一个Activation激活层,激活函数使用ReLU;(7)添加一个Dropout遗忘层,此层遗忘概率为0.2;(8)添加一个Dense分类层,使用softmax作为激活函数。
模型建立之后,把数据集输入模型,一共有1770组信号强度矩阵。选取其中的1540组矩阵作为训练集,230组矩阵作为测试集,分别进行神经网络的训练和验证。
3 训练结果及系统性能分析
1540组训练集全部打乱顺序输入。打乱重排可以降低原本数据的规律性,提高结果的准确度,防止过拟合。另外230组测试集矩阵同样也全部打乱,用来验证模型的准确率。在此神经网络中每次前向过程和反向过程时处理的训练样本数为128。共训练1500次,输出结果如图5所示。
图5 模型的准确率和损失函数
如图(a)和图(b)中,train acc是训练集的准确率,为上升曲线,train loss是训练集的损失值,为下降曲线。val acc是验证集的准确率,为上升曲线,val loss是验证集的损失率,为下降曲线。训练超过1000次以后,模型的准确率上升速度变慢,并且损失降低也开始变慢。训练集和测试集的准确度最终在70.21%左右。这代表这个神经网络模型对五个不同的行为动作和一个无人状态识别率在70.21%左右。
4 结束语
本实验在参考国内外文献的基础上,根据他人利用WiFi、红外等传感器设计的网络,确定了本实验中的立体八顶点空间结构,最大限度保证了有足够多的无线链路通过在区域内的人体,从而提高不同行为动作的区分度。其次利用ZigBee CC2530搭建一个RSSI数据采集物联网络。最后是建立一个卷积神经网络模型进行分类。通过多次测试调整了卷积神经网络各层的参数,最终使此模型对人体行为动作的识别准确率达到70.21%左右。获得了较为良好的效果。
本实验采集的是RSSI数据,而现实里的无线终端都可以测量其RSSI数据,只要周围有安装足够的终端设备,那么就能低成本获得大量RSSI数据用于行为识别。另外,由于现实中的各类无线设备大概率采用不同通信协议,所以可以联合使用多种不同通信协议的无线设备采集数据,并且使用更复杂的深度学习算法来提高结果的准确性。