APP下载

基于轻量卷积神经网络的步态识别系统

2022-09-24张晓明

中北大学学报(自然科学版) 2022年5期
关键词:轻量识别率步态

钱 兴,张晓明,2

(1.中北大学 仪器与电子学院,山西 太原 030051;2.中北大学 仪器科学与动态测试教育部重点实验室,山西 太原 030051)

0 引 言

步态识别作为第二代生物特征识别技术的代表之一,促进了楼宇内导航、行人识别、医疗康复等领域的发展,具有重要意义[1].步态识别的关键在于对步态特征信号的提取.传统步态特征信号的提取主要依靠人工提取,但人工提取存在一定的局限性和不确定性,且容易遗漏与步态相关的特征信息.因此,寻找合适的步态特征信号的提取方法很有必要[2-4].

近年来,随着卷积神经网络(Convolutional neural networks,CNN)在步态特征信号的提取中展现出明显的优势而备受关注.GoogLeNet和AlexNet-like等模型相继被提出,在提高步态特征信号提取能力和效率[5-7]的同时,也提高了步态识别率.吴军等[8]利用手机的传感器数据通过CNN算法进行人体步态识别取得了一定成果,然而,识别率低于90%.陈法权等[9]采用多个惯性传感器进行基于CNN的步态识别,识别率达到了91.5%,但模型数据权重值大,且并未在硬件上实现对步态的实时识别.罗成[10]通过改进的卷积神经网络,达到了97%的识别率,但模型结构复杂,不利于进行下位机移植.随着卷积神经网络模型的不断发展,虽然识别率提高,但CNN模型变得更加复杂.卷积层的增多使得计算量增大,占用下位机内存增多,导致模型在进行下位机移植时延时过多,实时性差.在进行步态识别模型搭建的同时,同样需要关注对模型参数进行压缩的方法.Song Han等[11]通过剪枝、权值共享和数据压缩对经典的卷积神经网络模型进行压缩和优化,将AlexNet模型压缩了35倍,VGG模型压缩了49倍.然而,此方法只进行了理论验证并未进行硬件上的实验,仅具有理论参考意义.杜振国[12]提出了基于混合参数剪枝的模型压缩算法,在精度不损失的情况下在LeNet-5模型上达到2.64倍的参数压缩效果,在AlexNet-like 模型上达到10.96 倍的参数压缩效果,有效减少了模型中的参数量和运算量,但未进行下位机实现,缺少数据支撑.因此,需要设计一种构造简单、卷积层数少的CNN步态识别模型,并选择适当方法进行模型压缩.

针对上述问题,本文首先搭建了一种基于轻量CNN步态的识别模型.通过减少卷积层和缩小模型结构,减少模型移植时对内存空间的占用,同时保证模型对步态的识别能力.其次,采用权值聚类和哈夫曼编码的方法来对模型中卷积层和全连接层的权重参数进行压缩,通过对权重的压缩来解决模型移植后实时性差的问题.同时,通过实测数据集进行了学习和验证.

1 轻量CNN步态识别模型的搭建

1.1 步态数据的获取

对步态信息的采集传感器主要考虑两个方面.一方面,传感器需要能够采集不同步态信息的数字特征,一般需要多传感器进行步态信息采集;另一方面,采集步态的数据量不宜过多,采集到的数据量过多将导致步态识别系统的计算量增大,同时实时性变差.

不同步态信息最直观地反映在腿部的运动状态上,腿部运动状态最主要的是通过加速度信号和关节弯曲角度信号进行描述.不同的步速、路况会有不同的加速度,该信息直观可靠、物理意义明确.弯曲度信号可以反映人体腿部膝关节弯曲角度参数,具有良好的步态周期分割能力,能够弥补加速度信息在步态周期划分上的缺点.加速度和弯曲度信息的组合可以较好采集不同步态的特征信息且数据量相对较少.因此,选取了三轴加速度传感器与弯曲度传感器进行人体步态信息的采集[13].

将步态识别系统传感器放置在实验测试人员的膝盖位置,使得三轴加速度传感器的z轴与地面垂直,弯曲度传感器贴合在膝盖骨的位置,共输出4种信号,包括x轴、y轴、z轴和弯曲角度,采样频率为100 Hz.

1.2 LeNet-5模型

LeNet-5模型[14]被誉为早期卷积神经网络中最有代表性的实验系统之一,具有结构简单、特征提取率高的特点.此网络模型主要由卷积层、池化层和全连接层构成.输入矩阵经过卷积层和池化层的计算转变为带有相应特征的矩阵,并通过全连接层展开,根据所需分类的类别进行判定.卷积层最核心的部分为卷积核,具有局部性,可对输入矩阵进行局部特征提取.LeNet-5模型共有6层,3个卷积层、2个池化层和1个全连接层,卷积层采用的都是5×5大小的卷积核.LeNet-5模型结构如图1 所示.

图1 LeNet-5模型结构Fig.1 LeNet-5 model structure

1.3 轻量CNN步态识别模型的构建

步态识别系统主要通过卷积神经网络原理进行步态识别,其核心为卷积层和池化层的数据计算.卷积层主要是对步态数据进行步态特征值提取,每一层的计算为

(1)

(2)

式中:Mn为第l层输出;Mn-1为第l层输入;N(i,j)为对应特征值的大小;Wn为当前层卷积核;f(x,y)为卷积核的大小;x,y代表卷积核行列数;s代表卷积的步长;p代表填充层数;N(i,j)代表Mn的大小.

池化层主要进行特征选择和信息过滤,每一层的计算为

Zl=MaxP(Zl-1),

(3)

式中:MaxP表示池化层进行最大池化操作.

步态识别系统模型借鉴LeNet-5的结构,在轻量CNN步态识别模型中引入Leaky ReLU函数对卷积层提取到的特征值进行线性映射,解决卷积计算对非线性无法很好拟合和卷积输出数据小于零时神经元被抑制的问题[15].当CNN模型的结构变得更复杂时,对数据集数量的要求就更高,否则会出现过拟合的现象,影响最终的识别率.针对本文采集到的数据集,可适当进行网络层数的缩减和修改.轻量CNN步态识别模型如图2 所示.

图2 轻量CNN模型Fig.2 Lightweight CNN model

输入为每秒100×4的数据矩阵,其中100为1 s内采集到的每个种类的信号数量,4列分别为x轴、y轴、z轴和弯曲角度的数值.本文使用3×1 和5×1 的小卷积核代替LeNet-5模型中 5×5 的卷积核.因为输入矩阵为100×4,通过 3×1 和5×1的小卷积核可以将每个信号种类的步态特征信息进行分别提取,同时,减少使用 5×5 的卷积核时对输入矩阵进行补零操作.3×1和5×1的小卷积核与两个5×5的卷积核相比,减少了卷积核的数量,节省大量的计算资源.

卷积层输出的数据存在小于零的特征值,通过Leaky ReLU函数将减少小于零的特征值被抑制的问题.对于后面训练网络加快收敛有较好的效果,对于测试集的分类准确率也有所提高.

池化层选择最大池化,三轴加速度传感器和弯曲度传感器采集到的数字矩阵具有4种不同信号的数量,需要进行局部特征的提取,而平均池化有利于提取全局特征,并不适合步态信息的提取.因此,选择最大池化有利于提高步态识别率.

2 模型压缩及系统实现

2.1 权重聚类

为了解决步态识别系统延时过高的问题和减少计算量,达到提高系统实时性的目的,使用权重聚类和哈夫曼编码实现对模型的压缩.

首先,对设计好的轻量CNN步态识别模型进行权重聚类.权重聚类主要是进行模型参数的权值聚类,即通过统计权值在不同区间的数量,将数量多的权值区间通过聚类算法进行聚类,并将原权值替换为区间内最优值,然后,整体进行权重的微调,达到不改变模型识别率的目的.轻量CNN步态识别模型数量较多的权值区间如图3 所示.

图3 权值区间统计Fig.3 Weight interval statistics

在区间[-0.011 420 67,0.006 579 33]内的权值数量最多,其他权重依次散布在各个区间,将前5个权值数量最多的区间采用 K-Mean算法[16]来对权值进行聚类,使得划分在同一类别中的所有权重共享该类的聚类质心.K-Mean算法首先进行K值的确定,然后根据不同区间的初始质心完成对数据的分割,最后通过迭代选出各个区间内的最优权重.

由于权重聚类主要是将训练好的卷积层和全连接层的权重参数进行划区间选优,得到的最优权重将对区间内所有权重进行替换,并通过权重微调保证步态识别模型的精度.图4 为前5个权值数量最多的区间进行聚类后选取的权重值.

图4 聚类后的权重值Fig.4 Weight value after clustering

2.2 哈夫曼编码

哈夫曼编码(Huffman coding)是可变字长编码(Variable word length coding)的一种,适用于无损耗数据压缩.哈夫曼编码对权值的压缩过程主要是先对要压缩的权值数据进行统计,计算出权值数据出现的概率,再根据权值数据出现的概率不同将哈夫曼编码中唯一的码字与之对应,并将所有码字组成哈夫曼码表[17].哈夫曼编码对权值压缩的过程中通过压缩时所组成的哈夫曼码表的对应关系,实现权值数据的还原.根据哈夫曼编码的原理可知,进行哈夫曼编码的数据重复越多,熵越低,就越能用短的码值来表示更多的数字,编码的效率就越高,压缩的效果就越好.权重聚类将步态识别模型的卷积层和全连接层权重数量最多的前5个区间进行权值替换,将区间内的值全部替换为此区间的最优权重.经过权重聚类后的轻量CNN步态识别模型权值参数的分布较为集中,用哈夫曼编码可以减少部分的信息冗余,减少计算量.

对卷积层1、卷积层2和全连接层数据压缩前后的参数大小变化进行统计,统计结果如表1 所示.

表1 参数变化测试Tab.1 Parameter change test

表1 中,Q表示权值共享,H表示哈夫曼编码.从表1 中可以看到卷积层1、卷积层2、全连接层的大小分别为1 KB、1 KB、693 KB,总共为 703 KB.经过权值共享和哈夫曼编码压缩后总大小为595.56 KB,模型缩小了15.28%.

2.3 系统设计与实现

STM32F4系列单片机具有体积小、计算速度快、可外接SRAM的特点,适合作为步态识别系统的硬件核心.采用的单片机型号为STM32F407ZGT6,该型号的单片机外扩1 MB的SRAM和1 MB的Flash,适合进行步态识别模型的移植.通过深度学习工具箱将训练好的轻量CNN步态识别模型进行压缩,使用C语言对压缩后的模型进行代码编写.人体步态识别系统,主要由MPU6050三轴加速度传感器、Flex弯曲度传感器、STM32F407ZGT6和上位机组成.通过传感器采集到人体步态数据传输到STM32F407ZGT6单片机中,然后进行当前步态识别,最后将识别结果传输到上位机进行显示.人体步态识别系统结构图和系统实物图分别如图5、图6 所示.

图5 系统结构图Fig.5 System structure diagram

图6 系统实物图Fig.6 Physical diagram of the system

STM32单片机实现步态识别算法的流程如图7 所示.

图7 STM32实现CNN流程图Fig.7 Flow chart of STM32 implementation CNN

通过对压缩后的模型进行编写,生成的模型总大小为653.35 KB,使用STM32 Cube AI工具分析网络模型[18]是否可运行,此模型占用Flash资源643.25 KB,占用RAM资源316.94 KB,可以在STM32F407ZGT6单片机上运行.

3 实验结果分析

3.1 实验环境

为了验证设计好的步态识别系统,本文的45名实验测试人员(男25人,女20人)均为身体健康的成年人,无任何影响走路状态的疾病.其中,20名青年志愿者的年龄介于19周岁~29周岁,男女各10人,身高在155 cm~183 cm 之间,体重在45 kg~82 kg之间;20名中年志愿者的年龄介于37周岁~53周岁,男女各10人,身高在152 cm~179 cm 之间,体重在48 kg~85 kg之间;5名老年志愿者年龄介于60周岁~67周岁,3名男性,2名女性,身高在150 cm~175 cm 之间,体重在43 kg~75 kg之间.实验使用的传感器的采样频率为100 Hz,正常人走路每分钟大约100步~120步,故一个步态周期大约为1 s,所以选定每秒即100×4个数据为一个周期进行数据处理.实验采集到每种步态有60 000个数据,共300 000个数据.

将步态识别系统传感器放置在实验测试人员的膝盖位置,使得三轴加速度传感器的z轴与地面垂直,弯曲度传感器贴合在膝盖骨的位置.测试场景分别为水平地面的直线行走、上下楼梯、上下坡.将测试好的数据通过串口发送到电脑上,电脑通过串口传输助手保存当前运动数据.

3.2 实时性实验结果分析

在实时性方面,STM32F4单片机将传感器采集到的数据通过基于卷积神经网络的步态识别模型进行步态识别,并将识别结果通过串口发送到计算机上,根据串口助手显示的时间戳判断数据压缩前后的实时性.

为了测试步态识别系统的实际延时,将程序设置为每经过10 ms(采集一次新数据时间)进行当前步态的识别,并传送到PC端进行显示.实验所测的延时包括采集步态数据的时间和进行数据处理的时间,压缩前后下坡时的延时如图8、图9 所示.

图8 压缩前延时Fig.8 Delay before compression

图9 压缩后延时Fig.9 Post compression delay

可以看到进行模型压缩前单片机延时为 700 ms,优化后的延时为375 ms,提升了325 ms,基本上实现了步态识别系统对人体步态实时识别的要求.

3.3 系统步态识别率的实验结果分析

在准确性方面,统计实验人员在不同步态下采集到的识别率情况,通过统计得出各个步态下的识别率和总体识别率.图10 为实验采集的步态数据.

图10 实验采集的步态数据Fig.10 Gait data collected in the experiment

其中,每种步态各有60 000个数据;在走路状态下,有58 392个数据显示为走路状态,有1 608个数据显示为非走路状态;在上楼状态下,有56 016个数据显示为上楼状态,有3 984个数据显示为非上楼状态;在下楼状态下,有56 748个数据显示为下楼状态,有3 252个数据显示为非下楼状态;在上坡状态下,有57 876个数据显示为上坡状态,有2 124个数据显示为非上坡状态;在下坡状态下,有58 338个数据显示为下坡状态,有1 662个数据显示为非下坡状态.表2 为设备在5种步态模式下压缩前后的识别率.

表2 5种步态模式下压缩前后的识别率Tab.2 Recognition rate before and after compression in five gait modes

根据实验测得的数据分析得出,压缩前后不同步态识别率并未发生改变;走路、上楼、下楼、上坡、下坡的识别率分别为 97.32%,93.36%,94.58%,96.46%,97.23%,总体识别率为95.79%.

4 结 论

本文设计了一种基于轻量卷积神经网络的人体步态识别系统.搭建了一个轻量CNN步态识别模型,能够在缩减CNN模型结构的同时保证较高的步态识别率.实验结果表明:轻量CNN步态识别模型的步态识别率达到了95.79%;采用权值聚类和哈夫曼编码的方法对步态模型中的权重进行压缩,减少下位机内存占用量.实验结果表明:压缩后的当前步态识别延时为375 ms,相比于压缩前延时降低了53.57%,且步态识别率不变.为实现楼宇内导航、行人识别提供了硬件基础.

基于轻量卷积神经网络的人体步态识别系统仍有很大的提升空间.现有的步态数据库对于不同年龄段的覆盖不足,需要扩充数据库;在实际应用中人体的步态会受行人自身因素和外部环境因素等的影响,需要提供大规模的步态数据和减少步态干扰;权值聚类和哈夫曼编码对卷积神经网络的权重进行压缩减少了数据延时,但数据的延时仍然不小,今后的重点工作是优化步态识别模型缩小权值.

猜你喜欢

轻量识别率步态
基于步态参数分析的老年跌倒人群步态特征研究
特别策划《步态分析研究综述》
VICTOR轻量设计: 一支超轻球拍可以有多轻?
步态识人
我对轻量型并继竿的看法
档案数字化过程中OCR技术的应用分析
基于PCA与MLP感知器的人脸图像辨识技术
科技文档中数学表达式的结构分析与识别
人工智能现状和发展
外出的最“重量”武器是最“轻量”化妆包