基于DeepConvLSTM的传感器信号分类

欢迎Follow我的GitHub,关注我的简书

随机智能手机的普及,在日常生活中,大多数人在做任何事情的时候,都会随身携带手机。如果开启手机中的传感器,当用户运动时,就可以采集大量的用户信息,根据这些信息,就可以判断当前用户的运动模式,如行走、上楼梯、下楼梯、坐、站立、躺下等等。基于这些运动模式,设计不同的场景,为健身类或运动类应用(APP)增加一些有趣功能。

在智能手机中,常见的位置信息传感器就是加速度传感器(Accelerometer)陀螺仪(Gyroscope)

  • 加速度传感器:用于测量手机移动速度的变化和位置的变化;
  • 陀螺仪:用于测试手机移动方向的变化和旋转速度的变化;
传感器

本文主要根据手机的传感器数据,训练深度学习模型,用于预测用户的运动模式。

技术方案:

本文源码:https://github.com/SpikeKing/MachineLearningDemos/tree/master/motion_detector


数据

本例的数据来源于UCI(即UC Irvine,加州大学欧文分校)。数据由年龄在19-48岁之间的30位志愿者,智能手机固定于他们的腰部,执行六项动作,即行走、上楼梯、下楼梯、坐、站立、躺下,同时在手机中存储传感器(加速度传感器和陀螺仪)的三维(XYZ轴)数据。传感器的频率被设置为50HZ(即每秒50次记录)。对于所输出传感器的维度数据,进行噪声过滤(Noise Filter),以2.56秒的固定窗口滑动,同时窗口之间包含50%的重叠,即每个窗口的数据维度是128(2.56*50)维,根据不同的运动类别,将数据进行标注。传感器含有三类:身体(Body)的加速度传感器、整体(Total)的加速度传感器、陀螺仪。

以下是根据数据绘制的运动曲线,站立(红色)、坐(绿色)、躺下(橙色)的振幅较小,而行走(蓝色)、上楼梯(紫色)、下楼梯(黑色)的振幅较大。

运动曲线

以下是在行走(Walking)中,三类传感器的三个轴,共9维数据的运动曲线:

传感器 - 行走

以下是在坐(Sitting)中的运动曲线:

传感器 - 坐

通过观察可知,不同运动模式的传感器数据曲线拥有一定的差异性,但是有些运动模式的差异性并不明显,如行走、上楼梯、下楼梯之间;相同运动模式的传感器数据曲线也各不相同。

在数据源中,70%的数据作为训练数据,30%的数据作为测试数据,生成训练数据的志愿者与生成测试数据的不同,以保证数据的严谨性,符合在实际应用中预测未知用户动作的准则。

UCI数据源


模型

模型是基于深度学习的DeepConvLSTM算法,算法融合了卷积(Convolution)和LSTM操作,既可以学习样本的空间属性,也可以学习时间属性。在卷积操作中,通过将信号与卷积核相乘,过滤波形信号,保留高层信息。在LSTM操作中,通过记忆或遗忘前序信息,发现信号之间的时序关系。

DeepConvLSTM算法的框架,如下:

DeepConvLSTM

将每类传感器(身体加速度、整体加速度、陀螺仪)的3个坐标轴(XYZ)数据,合并成一个数据矩阵,即(128, 3)维,作为输入数据,每类传感器均创建1个DeepConvLSTM模型,共3个模型。通过3次卷积操作和3次LSTM操作,将数据抽象为128维的LSTM输出向量。

在CNN的卷积单元中,通过卷积(1x1卷积核)、BN、MaxPooling(2维chihua)、Dropout的组合操作,连续3组,最后一组执行Dropout。通过MaxPooling的降维操作(2^3=8),将128维的数据转为为16维的高层特征。

CNN

在RNN的时序单元中,通过LSTM操作,隐含层神经元数设置为128个,连续三次,将16维的卷积特征转换为128维的时序特征,再执行Dropout操作。

LSTM

最后,将3个传感器的3个模型输出,合并(Merge)为一个输入,即128*3=384,再执行Dropout、全连接(Dense)、BN等操作,最后使用Softmax激活函数,输出6个类别的概率。

Merged

选择概率较大的类别,作为最终预测的运动模式。


效果

在第48层中,即Concatenate层,将3个传感器的LSTM输出合并(Merge)成1个输入,不同类别的特征,效果也不同,如:

Merged Layer

训练参数:

epochs = 100
batch_size = 256
kernel_size = 3
pool_size = 2
dropout_rate = 0.15
n_classes = 6

最终效果,在测试集中,准确率约为95%左右:

loss: 0.0131 - acc: 0.9962 - val_loss: 0.1332 - val_acc: 0.9535
val_f1:  0.953794 — val_precision:  0.958533 — val_recall  0.949101

如果继续调整参数,还可以提升准确率。

通过深度学习算法训练的用户动作识别模型,可以应用于移动端进行场景检测,包含行走、上楼梯、下楼梯、坐、站立、躺下等六种动作。同时,95%的准确率已经满足大多数产品的需求。

By C. L. Wang @ 美图云

参考:Merge versus mergevisualizationDeepConvLSTM
multiclass one-hot

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342