前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【云+社区年度征文】TinyML实践-3:牛运动姿态识别的落地实现

【云+社区年度征文】TinyML实践-3:牛运动姿态识别的落地实现

原创
作者头像
flavorfan
修改2020-12-11 08:36:23
1.1K0
修改2020-12-11 08:36:23
举报
文章被收录于专栏:范传康的专栏范传康的专栏

概述

TinyML最近几年才提出,TinyML的书去年才见到,中文版今年在国内才买到。TFLite micro技术也就今年左右才成熟。之前所有的依靠动物身上传感器进行姿态识别的,有一说一,应该都是经典的特征抽取,加上随机森林之类的经典算法实现的。实现起来,需要领域专家进行特征抽取,选择特征反复迭代;部署嵌入式由于实现困难有可能返回去修改模型,重新搞一套;解决完一个问题,新问题又得再来一次流程....

TinyML特别Google的TFLite-micro技术框架,强大之处在于用一套系统性框架(工具链+方法论),将模型训练-模型移植应用,PC计算和嵌入式平台无缝链接起来;系统性的解决一类问题,而不是case by case 解决单个问题。

利用TinyML技术解决应用到畜牧业比如牛养殖的姿态识别,笔者应该是国内前几人。预测这种“革命性”技术会对AI下沉实体产业产生重大影响。不涉密的前提下分享一些心得,希望对面临相似问题的开发者有所借鉴。

过程

目标识别状态

0:走 "walking", 

1:躺 "lying", 

2:站立 "standing", 

3:采食 "feed"

数据预处理

image.png
image.png

数据预处理就是将一条采集记录,按状态标签切分为单状态标签的记录,然后从中按预设规则提取等长的子序列构成样本。可以抽象理解成在一条长时序记录,用一个固定长度窗口进行数据截取,取新样本数据时,滑动窗口移动距离(或者说连续窗口的重叠长度)。项目选用初始50%的重叠率,步进64个数据点。

样本数据

image.png
image.png

对比不同运动状态标签的acc_data曲线模式,可以直观的感受不同。这个分类问题可以用CNN模型来处理,也可以用LSTM来处理。

算法模型

模型尝试了CNN和LSTM。实践发现CNN模型执行推断速度更快。

image.png
image.png

训练

Epoch accuracy

image.png
image.png

Epoch loss

image.png
image.png

Epoch 1000得到最后的训练精度是0.95,验证集精度0.87,在test数据集上测试的精度是0.86。

后续探索方向

1)状态标签分布不平衡的处理

2)尝试不同的序列长度(seq=32,64, 128)

3)尝试对输入tensor做优化(float32 -> int16),可以节省写RAM空间

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 过程
    • 目标识别状态
      • 数据预处理
        • 样本数据
          • 算法模型
            • 训练
            • 后续探索方向
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档