【LSM6DSOX的MLC机器学习理解】--机器学习简介
[复制链接]
本帖最后由 justd0 于 2020-5-2 12:43 编辑
LSM6DSOX机器学习模块是个挺复杂的部分,通过几天的研究,终于弄明白了基本的用法。这篇帖子将简单介绍下LSM6DSOX机器学习模块的特点和基本操作流程。
基本特点
LSM6DSOX的机器学习模块本质上就是通过决策树来实现的,决策树是由一系列可以配置的节点组成的数学工具,采用二叉树结构决策树。
每个节点都由一个”if-then-else“判断条件构成,通过对输入数据和阈值进行评估来获得最后的输出结果。
输入数据可以是加速度计、陀螺仪和外部传感器数据,在定义的时间窗口中计算出的均值、方差、能量、峰值、零点交叉等数据,这些数据在机器学习模块中被称为特征(Feature)。
适用于机器学习的算法是那些可以通过归纳法实现的算法,即可从观测数据中搜索到结果的算法,比如:活动识别、健身活动识别、运动强度检测、震动强度检测、携带位置识别、上下文感知、假阳性排斥等、
LSM6DSOX最多可以同时独立运行8个决策树,决策树保存在传感器寄存器中,并通过专用输出寄存器产生结果,输出数据的速率范围为12.5-104Hz。
核心功能模块
LSM6DSOX机器学习的核心功能模块可以分成三部分:传感器数据模块、计算模块、决策树模块。
1、传感器数据模块
产生于传感器内部的加速度计和陀螺仪的数据,或者外部传感器的数据,通过I2C传入。对于所有传感器数据都会计算出法线和法线平方,也作为输入数据。获取到的数据将被输入到计算模块中。法线和法线平方的公式如下:
需要注意的是,输入数据的速率必须要等于或者高于机器学习模块的输出速率。
输入数据的单位也已经定义:
加速度数据,单位为 g
陀螺仪数据,单位为dps(rad/sec)
2、计算模块
计算模块中包括滤波器和特征两部分。
滤波器对上一模块输入过来的传感器数据做滤波处理,可以用高通、带通、低通IIR1\IIR2滤波器。
特征是在定义的时间窗口中从输入数据或者滤波后的数据计算出的统计参数,比如有均值、方差、能量、峰峰值、零点跨越、零点正向跨越、零点负向跨越、峰值检测、最大最小值等。
3、决策树模块
决策树模块根据计算模块输出的统计参数和通过训练学习得到的阈值,经过if-else条件节点判断出动作类别。
决策树在每一个时间窗口都会产生一个判断结果,判断结果也可通过一个额外(可选)的“元分类器”进行过滤。元分类器通过内部计数器来对决策树数据进行过滤。
决策树值变化时,会有相应的寄存器中断状态位改变,同时也可以将中断路由到外部中断INT1/IN2上。机器学习模块的输出结果可以通过专用寄存器访问得到。
决策树的数量、决策树的大小和决策树结果的数量方面,LSM6DSOX的资源是有限的,其中最多可储存8个不同的决策树,但是所有决策树的条件节点数之和不能超过256(此值受特征、过滤器的综合影响),每个决策树最多有16个结果。
机器学习模块和有限状态机模块可以联合使用,通过CHKDT来实现状态机对机器学习模块输出的获取。
功能实现流程
为实现LSM6DSOX机器学习功能,需要采用有监督学习方法:
- 定义一些要识别的特征类型
- 为每一类特征收集多个数据日志
- 从收集的日志中执行一些数据分析,学习一个能将输入(数据日志)映射到输出(待识别的类)的规则,生成一个专门的决策树
- 有了决策树,就可以通过Unico生成配置,导入到传感器里便可
具体的使用实现流程内容下一个帖子将详细说明。
|