TinyML-note
TinyML-note
PS:感谢管爷的资料支持
什么是TinyML?
TinyML 指的是在 mW 功率的微处理器上,实现机器学习的方法、工具和技术。它连接了物联网设备,边缘计算和机器学习。
我认为所谓TinyML就是在Tiny的处理器上进行ML(Maching learning)的开发,在实际应用中就是在 Arduino 和超低功耗微控制器上运行 ML 。
可行性讨论:基于机器学习的流程
软件方面,TinyML与一般的机器学习并无根本性不同,只是它所解决的问题的规模较小,基于一两个传感器(比如音频,加速度)提供数据输入,基于有限的存储和计算能力给出结果。
需要关注部分选题是否超出了所用低功耗芯片的性能限制,比如视频特征实时识别等较高负载场景(也许可以通过进一步优化和简化来实现基本的功能,摒弃复杂的细节)
TinyML的简单事例——“唤醒词”
智能手机是最典型的 TinyML 例子。手机一直处于主动聆听“唤醒词”的状态,例如 Android 智能手机的“你好,谷歌”,以及 iPhone 的“你好,Siri”。如果通过智能手机的 CPU(主流 iPhone 的 CPU 已达 1.85 GHz)运行语音唤醒服务,那么电池电量会在短短几个小时内耗尽。这样的电量消耗是不可接受的,而语音唤醒服务大多数人每天最多使用几次。
为了解决这个问题,开发人员创建了可以用小型电池(例如 CR2032 纽扣电池)供电的专用低功耗硬件。即使 CPU 未运行(通常表现为屏幕并未点亮),集成电路也能保持活跃状态。
这样的集成电路消耗功率仅为 1mW,如果使用标准的 CR2032 电池,可供电长达一年。
一方面唤醒词服务是现在Maching Learning的重要部分,另一方面硬件由于低功耗可以实现超长续航,两者巧妙结合就形成了经典的TinyML模型。
TinyML目前的主要使用领域(未来使用领域)
实际上,TinyML 为产品粉丝和企业提供了大量令人兴奋的应用,用于实现更智能的 IoT 设备。在当前数据变得越来越重要的情况下,将机器学习资源分发到远端内存受限设备的能力,为农业、天气预报或地震等数据密集行业提供了巨大机遇。
毫无疑问,赋予边缘设备执行数据驱动处理的能力,将为工业过程中的计算范式带来转变。举个例子,如果能够监测农作物并检测到诸如土壤湿度、特定气体(例如苹果成熟时会释放出乙烷)等特征或特定的大气条件(例如大风、低温或高湿度等),将极大地促进作物的生长,提高作物的产量。
另一个例子是,在智能门铃中可安装摄像机,使用面部识别确定到场的来访者。这将实现安防功能,甚至可以在有人到场时将门铃摄像头输出到屋内电视屏幕,以便主人了解门口的访客情况。
目前,TinyML 主要的两个重点应用领域是:
- 关键字发现 。大多数人已经非常熟悉此应用,例如“你好,Siri”和“你好,Google”等关键字,通常也称为“热词”或“唤醒词”。设备会连续监听来自麦克风的音频输入,训练实现仅响应与所学关键字匹配的特定声音序列。这些设备比自动语音识别(automatic speech recognition,ASR)更简单,使用更少的资源。Google 智能手机等设备还使用了级联架构 实现扬声器的验证,以确保安全性。
- 视觉唤醒词 。视觉唤醒词使用图像类似替代唤醒词的功能,通过对图像做二分类表示存在与否。例如,设计一个智能照明系统,在检测到人的存在时启动,并在人离开时关闭。同样,野生动物摄影师可以使用视觉唤醒功能在特定的动物出现时启动拍摄,安防摄像机可以在检测到人活动时启动拍摄。
TinyML的优势
1.从上面对TinyML的介绍不难看出,TinyML凭借着在arduino或低功耗硬件上开发的条件,所以可以实现凭借着体积较小的电源设备实现超长续航,非常适合“监测”类型的服务。
2.从其他的一些现成的TinyML的应用事例分析得出,TinyML还有着可以将用户信息存储在微处理器而非与服务器或者其他外部设备相连,这样一方面保持了TinyML低延迟的优势,而且也不会造成用户的信息泄露。
3.TinyML的很多应用都离不开是在无人机等设备上应用的,而正是因为TinyML构造比较简单,重量比较轻的缘故。当然电路简单成本低也是它的一大优势,这个优势有利于将TinyML的设备投入大规模使用。
综上,我认为TinyML的优势在于续航能力强
、信息安全性
(隐私保护)高,信息传递低延迟
、重量较轻
、成本低
几个方面。
Maching Learning的大概流程
1. 确定目标
机器学习的最大优势?
不需要给出具体算法(专家系统),便可解决复杂的问题。
为什么要把机器学习应用到MCU(Microcontroller)?
MCU正在植入到越来越多的边缘设备中(智能家居),这些设备有时需要应对一些复杂的问题(语音,视频等等的智能化需求)。
如果不依靠机器学习,需要依靠中心侧的算力计算结果,然后把数据通过网络、蓝牙传输到边缘设备的MCU,得到计算结果(延迟高,需占用中心算力)。
如果应用TinyML,在这些边缘设备MCU中存储的机器学习模型直接计算,得到结果。(低延迟实时计算,节省云端算力)
TinyML在物联网(基于MCU)应用已经很广泛。重点关注还有哪些场景还没有覆盖到。平台
基于TensorFlow-lite。见参考资料[7]
选题
技术创新难,前人的项目所用到的技术覆盖范围很广。
可以选择从应用创新下手。利用已有技术,应用到新的使用场景。解决痛点。
基于加速度传感器:
手势识别(已有开源项目)=> 手语输入(应用场景扩展)、握笔姿势检测
无绳跳绳(已有开源项目)=> 无实物呼啦圈/踢毽子/羽毛球/…(各类体感游戏,健身环大冒险的低成本实现)硬件
芯片(ESP32 / Arduino Nano )
其他传感器(摄像头)
其他硬件(LCD屏幕/LED)
供电方式(电池/USB)
有无数据传输需求(蓝牙/WIFI)2. 收集数据集
目前TinyML的应用绝大多数为监督学习,需收集数据集。
(能否应用于非监督学习?比如聚类等算法。一个技术创新的点)
数据集的收集难易影响项目的可行性,数据集的收集质量影响模型训练的质量。
对于一个确定的选题,是否有开源的数据集?
如果有,是否与我们的需求兼容?如果不兼容,能否通过修改来符合?
如果没有,能否制作出可靠的数据集?(比如上例中的手势识别,需要手动录入数据)3. 设计模型架构
需要学习机器学习基础知识,了解不同模型的优势,了解不同模型所擅长解决的问题。
全连接神经网络,卷积神经网络,循环神经网络等。
需要学习TensorFlow等机器学习库,会模型搭建与调参。4. 训练模型:注意一下过拟合和欠拟合所产生的各种问题
- 生成小型 TensorFlow 模型,该模型适合您的目标设备并包含支持的操作 。
- 限制
适用于微控制器的 TensorFlow Lite 专为满足微控制器开发的特定限制条件而设计。如果您使用的是更强大的设备(例如 Raspberry Pi 等嵌入式 Linux 设备),那么标准 TensorFlow Lite 框架可能更易于集成。
应考虑以下限制:- 支持的 TensorFlow 操作有限
- 支持的设备有限
- 需要手动管理内存的低阶 C++ API
- 不支持设备端训练**(需要在电脑上进行模型训练,然后转换并烧录到MCU设备)**
5. 转换模型
基本流程
- 生成小型 TensorFlow 模型,该模型适合您的目标设备并包含支持的操作 。
- **第一步转换:**使用 TensorFlow Lite 转换器 转换为 TensorFlow Lite 模型。(一种优化的 FlatBuffer 格式,由
.tflite
文件扩展名标识)- **第二步转换:**使用标准工具 转换为 C 语言字节数组,以将其存储在设备上的只读程序内存中。(以
char
数组形式包含 TensorFlow Lite 模型的 C 源文件)转化评估
在尝试转换模型之前评估模型是一个重要步骤。在评估时,您想要确定模型的内容是否与 TensorFlow Lite 格式兼容。您还应该根据模型使用的数据大小、硬件处理要求以及模型的整体大小和复杂性来确定您的模型是否适合在移动和边缘设备上使用。
对于许多型号,转换器应该开箱即用。但是,TensorFlow Lite 内置运算符库支持 TensorFlow 核心运算符的子集,这意味着某些模型在转换为 TensorFlow Lite 之前可能需要额外的步骤。此外,出于性能原因,TensorFlow Lite 支持的某些操作限制了使用要求。请参阅 运算符兼容性 指南以确定您的模型是否需要重构以进行转换。
Key Point:
大多数模型可以直接转换为 TensorFlow Lite 格式。某些模型可能需要重构或使用高级转换技术才能使它们兼容。第一步转换
输入模型格式
您可以将转换器与以下输入模型格式一起使用:
- SavedModel (推荐):作为一组文件保存在磁盘上的 TensorFlow 模型。
- Keras 模型 :使用高级 Keras API 创建的模型。
- Keras H5 格式 :Keras API 支持的 SavedModel 格式的轻量级替代方案。
- 从具体函数构建 的模型:使用低级 TensorFlow API 创建的模型。
您可以将 Keras 和具体函数模型都保存为 SavedModel 并使用推荐的路径进行转换。
**注意:**为避免推理过程中出现错误,请在导出为 SavedModel 格式时包含签名。TensorFlow 转换器支持将 TensorFlow 模型的输入/输出规范转换为 TensorFlow Lite 模型。请参阅有关添加签名 的主题。
如果您有 Jax 模型,则可以使用TFLiteConverter.experimental_from_jax
API 将其转换为 TensorFlow Lite 格式。请注意,此 API 在实验模式下可能会发生变化。转换工作流
装换工作流
可以使用下面的其中一个选项来转换模型:
- Python API (推荐):这允许您将转换集成到开发流水线中,应用优化,添加元数据,以及许多其他简化转换过程的任务。
- 命令行 :这仅支持基础模型转换。
训练后量化
训练后量化是一种转换技术,它可以在改善 CPU 和硬件加速器延迟的同时缩减模型大小,且几乎不会降低模型准确率。使用 TensorFlow Lite 转换器 将已训练的浮点 TensorFlow 模型转换为 TensorFlow Lite 格式后,可以对该模型进行量化。
第二步转换
许多微控制器平台没有本地文件系统的支持。从程序中使用一个模型最简单的方式是将其以一个 C 数组的形式包含并编译进你的程序。
以下的 unix 命令会生成一个以char
数组形式包含 TensorFlow Lite 模型的 C 源文件:
1 >xxd -i converted_model.tflite > model_data.cc其输出类似如下:
1
2
3
4
5 >unsigned char converted_model_tflite[] = {
0x18, 0x00, 0x00, 0x00, 0x54, 0x46, 0x4c, 0x33, 0x00, 0x00, 0x0e, 0x00,
// <Lines omitted>
};
>unsigned int converted_model_tflite_len = 18200;一旦你已经生成了此文件,你可以将它包含入你的程序。在嵌入式平台上,将数组声明改变为
const
类型以获得更好的内存效率是重要的。
有关如何在程序中包含并使用模型的示例,请参阅 Hello World 示例中的model.cc
。6. 运行推断
平台:Arduino / Platform IO / …
7. 评估并排除故障
若要在微控制器上部署并运行 TensorFlow 模型,必须执行以下步骤:
- 训练模型:
- 生成小型 TensorFlow 模型,该模型适合您的目标设备并包含支持的操作 。
- 使用 TensorFlow Lite 转换器 转换为 TensorFlow Lite 模型。
- 使用标准工具 转换为 C 语言字节数组,以将其存储在设备上的只读程序内存中。
- 使用 C++ 库 在设备上进行推断并处理结果。
参考代码见资料[1]
TinyML的开发环境
适用于微控制器的 TensorFlow Lite 用 C++ 11 编写而成,需要使用 32 位平台。针对基于 Arm Cortex-M 系列 架构的众多处理器,它已经过了广泛的测试,并已移植到其他架构(包括 ESP32 )。该框架可作为 Arduino 库提供。它还可以为 Mbed 等开发环境生成项目。它是开源的,可以包含在任何 C++ 11 项目中。
支持的开发板包括:
- Arduino Nano 33 BLE Sense
- SparkFun Edge
- STM32F746 Discovery kit
- Adafruit EdgeBadge
- Adafruit TensorFlow Lite for Microcontrollers Kit
- Adafruit Circuit Playground Bluefruit
- Espressif ESP32-DevKitC
- Espressif ESP-EYE
- Wio Terminal:ATSAMD51
- Himax WE-I Plus EVB Endpoint AI 开发板
- Synopsys DesignWare ARC EM 软件开发平台
- Sony Spresense
推荐使用Arduino Nano 33 BLE和STM32F746G开发板
探索事例
每个示例应用都位于 GitHub 上,并有一个
README.md
文件说明了如何将应用部署到受支持的平台。部分示例还有使用特定平台的端到端教程,如下所示:
- Hello World
- 演示了使用适用于微控制器的 TensorFlow Lite 的最基础知识- Micro speech
- 使用麦克风捕获音频,以检测“yes”和“no”这两个词- Magic wand
- 捕获加速度计数据,以对三种不同的身体姿势进行分类- Person detection - 使用图像传感器捕获相机数据,以检测是否有人
这部分实例用于拓宽思路,如果想要看更多实例,见下方参考资料[4](需要vpn)
一些功能限制
在设计一个面向微控制器的模型时,考虑模型的规模、工作负载,以及用到的运算是非常重要的。
模型规模
一个模型必须在二进制和运行时方面都足够小,以使其可以和你程序的其他部分一起符合你目标设备的内存限制。
为了创建一个更小的模型,你可以在你的结构里使用更少和更小的层。然而,小规模的模型更易面临欠拟合问题。这意味着对于许多问题,尝试并使用符合内存限制的尽可能大规模的模型是有意义的。但是,使用更大规模的模型也会导致处理器工作负载的增加。
注:在一个 Cortex M3 上,面向微控制器的 TensorFlow Lite 的核心运行时占 16 KB。
工作负载
工作负载受到模型规模与复杂度的影响。大规模、复杂的模型可能会导致更高的占空比,即导致你所用设备处理器的工作时间增长、空闲时间缩短。视你的应用,这种情况所带来的电力消耗与热量输出的增加可能会成为一个问题。
运算支持
面向微控制器的 TensorFlow Lite 目前仅支持有限的部分 TensorFlow 运算,这影响了可以运行的模型结构。我们正致力于在参考实现和针对特定结构的优化方面扩展运算支持。
可以在
all_ops_resolver.cc
文件中查看支持的运算。
总结而言,Tensorflow模型对于TinyML的限制主要一方面来自于硬件本身的存储空间较小,所以只能适用于一些对存储能力要求较低的应用开发。另一方面模型的限制来自于支持的运算
,由于开源的代码的限制,我们只能在这些函数的基础上进行增量开发。
competition想法总结
tinyML Vision Challenge结果的分类总结:
1.检测类:
使用超低功率热视觉进行入侵者检测 - Hackster.io
Arduino Nano 33 BLE Sense 上的白血病检测 - Hackster.io
2.识别类:
使用Tiny Arduino H7的智能人脸识别系统 - Hackster.io
一些TinyML实践的想法
非触屏输入设备
非触屏输入设备
本项目的第一版本正常效果是
隔空书写
字母、数字,发送至计算机,输出对应字母、数字。
我们当时的想法是用加速度传感器的方向变化完成字母和数字的判断,最终在屏幕上完成书写,最终也达到了预期效果。
在之前和老师交流时,老师告诉我这个项目可以用姿态识别技术和机器学习技术进行改进,我觉得这就十分符合TinyML的特点——单片机和ML相结合,因此诞生了开发第二版的这个想法。对于第二版,经过小组讨论,大概思路如下:
可以将传感器+视觉
的方式来进行协同,由于手势识别,单独的传感器、或者单独的视觉方式,可能都不太准确,但如果能够引入传感器+视觉的方式,通过融合的形式来进行,一般准确度要显著提升,所以我们可以将用于输出的显示屏同样智能化。
简单思路可以理解为是将TinyML:Machine Learning with TensorFlow Lite on Arduino and Ultra-Low-Power Microcontroller的示例magic_wand和person_detection两个项目的有机结合,具体源代码可以参考Arduino_Tensorflow的github项目。tflite-micro/tensorflow/lite/micro/examples at main · tensorflow/tflite-micro · GitHub
具体有关模型参考即使用卷积模型实现视觉并通过对加速度数据进行处理实现手势识别。
实际探索后的一些收获
这部分是一些关于本项目的关键技术的一些可以参考的项目:
首先是视觉识别方面,可以参考下文参考示例2 ,该项目是通过写字母或数字过程中关于屏幕的距离问题来进行优化,并且该项目的项目介绍者展示该项目最终取得了很好的效果。
之后是加速度数据处理的例子,这方面在远程书写的例子还是比较多的,如下方参考示例1 ,这个就是很常见的arduino实现书写字母的例子了,可能还参考了tensorflow的库。
更多例子可以参考下方的参考示例部分。
应用前景
在科技不断发展的现代化社会,人机交互技术受到人们的广泛关注,而手势识别作为新型人机交互技术更受到研究者们的青睐,本文研究的是手势识别技术中的一种:手写识别。手写识别为人们提供了一种更为方便的交流方式,但是对于视力模糊的老人和手部神经综合性疾病的患者来说,在智能手机或智能手表等小屏幕上无论是打字还是手写都是困难的,所以本文将目光转向非接触式空中手写识别的研究。
除此之外,我通过大家对于这个项目的想法及应用场景的简单调研,排在第一位的答案是——好玩。当然,这个答案或许也不失为一种思路,随着当前大家生活水平的提高,享受资料消费的比例逐渐增高,我们可以将这个远程书写的项目首先作为一个体验性的项目,也可以作为叫小孩子认识数字、字母等的一种有趣的方式(后续如果可以加上汉字)。
[1].对于智能手表,儿童手表这类产品,现在微信已经十分常见了,但由于屏幕较小,打字操作较为不便,所以可以通过远程书写来实现微信书写等需求。
[2].对于视力模糊的老人和手部神经综合性疾病的患者来说,在智能手机或智能手表等小屏幕上无论是打字还是手写都是困难的,所以远程书写同样适用。
[3].充分发挥项目的趣味性,我们可以将这个远程书写的项目首先作为一个体验性的项目,也可以作为叫小孩子认识数字、字母等的一种有趣的方式。
项目的一些困难
但这个项目拓展性不太好,一方面加速度传感器有着方向易突变的性质,另一方面这个方法由于符号的相似性,增加符号时会带来识别几何倍数的增长,当时主要应用了滤波算法解决了易突变这个问题,但第二个问题依然很难解决。
优势方面,这个项目最后的视觉效果真的很好,但另一方面,这个项目并没有发挥出TinyML低延迟之类的传统优势,甚至我觉得如果要实现远程输入一定是要用到wifi传递信号的,这会使延迟大大增加,而且技术难度和是否可行没有评估。(这也是本项目在除去视觉处理的简化版本,即通过wifi传递的小屏幕),当前暂未找到有关两种方向(视觉+加速度)综合的开源项目。简化版本有利有弊,一方面在简化后可以更好的便携,当然准确率也会随之下降。
在实际实施方面,当前器材问题尚未解决,暂定思路需求为arduino nano 33 ble sense开发的(该开发板支持蓝牙、麦克风、加速度传感器及LED等单片机常见设备),摄像头。(材料这部分确实不了解)
还有一些让我比较担心的细节,当前上面那个开发板的1MB,但我暂时没有相关经验来确定是否这个想法在实现后会超出预期容量等问题,还有会不会出现训练好的tensorflow模型不能转化为tensorflow-lite这类问题。
一些改进想法
1.继续改进设备,提高容错率,尝试采用新技术完成部分字母的识别输出。
2.增加无线模块,增加使用距离。(第一版是有数据线的)
3.更精确的滤波+积分求轨迹。
4.姿态识别和机器学习的应用,进一步提高准确率,完成更多内容的识别输出。
5.小型化,轻量化,更加便捷,使使用者不用再被数据线束缚真正做到随用随写。资料查找
知网无,所以创新性还是可以的(当然也可能是我的查找能力比较差)
实例图片
想法优化启发
【1】.我们可以将用于输出的显示屏同样智能化。
如用于控制 RGB 灯的 TinyML 关键字检测 - Hackster.io
基于Wi-Fi与视频相结合的低成本高精度跨目标手势识别系统 - 中国知网 (buaa.edu.cn)
【2】.此外,还有些技术优化的思路
如手写数字识别下的联邦学习优化算法研究 - 中国知网 (buaa.edu.cn) ,但这个是利用ML做的是手写字的识别,还是有区别,但不知道能不能借鉴。
其次我们可以将思路扩大到手势识别方面,从我们手指输入的各种字符数字其实可以理解为各种指令,如果显示器可以对这种行为做出对应的反应也是可以的。
如:
手势识别在会议控制中的应用研究 - 中国知网 (buaa.edu.cn) (控制PPT的各种行为)
基于STM32单片机的智能手势识别手套的设计与应用 - 中国知网 (buaa.edu.cn) (音乐播放器)
应用场景参考资料
基于佩戴式输入设备的手语识别方法 - 中国知网 (cnki.net) (其实手语表达本质上也是一种手势)
基于深度图像的空中手写识别技术 - 中国知网 (buaa.edu.cn)
非接触式空中手写系统研究 - 中国知网 (buaa.edu.cn) (故事来源论文)
参考示例
[1].空中书写 TinyML 字母识别 - Hackster.io
[2].使用Wio终端和边缘脉冲进行手写识别 - Hackster.io
[3].Tiny ML Air Writing Recognition with Nicla Sense ME - Hackster.io
基于TinyML和视觉传感器的手语翻译器
背景说明
在第一次答辩后,我们的第一个方案即前面的非触屏输入设备因适用范围的局限而建议更新观点,因此我们将书写文字识别进一步拓展为了手势识别,并将手语翻译器作为我们第二阶段的主体思路。
参考实现demo
相比于字符书写,手语识别需要更多的传感器,且手语表达过程本身也复杂了许多,因此,我选择了几个较为简单的手势来说明原理即可。
当前市场上没有手语翻译器这类产品,只有少数实验室在进行相关实验,甚至将视觉与加速度相结合利用机器学习训练的思路连论文都没有,具有一定的创新性。下面为参考实现的数据集:
你
好
能
帮助
再见
谢谢
对不起
在优势方面,目前研究的大多采用了以肌电信号为主要载体的手语分析(而且不知道有没有实物),肌电信号传感器本身价格十分昂贵(1200起步),成本很高,而且准确率也并没有很突出,而我们采用的视觉与加速度传感器本身则成本很低。
数据集
好像没用,还是要自己采集,因为只有视觉信息。
CSL
**● 发布方:**中国科学技术大学
● 发布时间:2015
**● 简介:**中国手语数据集(CSL)是由中国科学技术大学自2015年起利用Kinect采集的中国手语数据集,包含25K标记的视频实例,共有超过100个时长的视频,50个操作者拍摄,每个操作者重复5次,包含RGB、深度以及骨架关节点数据,分为孤立词和连续语句,其中单词有500类,每类含250个样例, 包含21个骨架关节点坐标序列;句子有100个,共 有5000个视频,每一个句子平均包含4~8个单词。
每一个视频实例都由专业的中国手语老师进行标注。
CSL数据集参数
CSL中国手语数据样例
● 下载地址:
http://home.ustc.edu.cn/~pjh/openresources/cslr-dataset-2015/index.html
● 论文地址:
Isolated SLR:
http://home.ustc.edu.cn/~pjh/publications/ICME2016Chinese/paper.pdf
Continuous SLR:
https://ieeexplore.ieee.org/doc
参考文献
基于多传感器融合与TinyML的大车盲区预警
基于多传感器融合与TinyML的大车盲区预警
当行人、自行车、小轿车位于大车驾驶员的视觉盲区时,驾驶员无法看到,构成事故隐患。
分析大车盲区问题几种解决方案的优劣:
家用车的智能化路线:集成视觉识别、激光雷达、毫米波雷达,实现路况建模、自动驾驶等。
现状:大车(货车、半挂车、大巴车等)更新换代慢,升级成本高,很难走家用车的智能化路线。
希望对当下不具备智能的大车增加一些小的设备,做有限的、低成本的改造。
方案二:盲区行车记录仪
行车记录仪:简单的摄像头+无分析处理的视频回传
只有视频,没有智能识别行人并提醒,需要驾驶员注视屏幕,易分散注意力,效果差
方案三:现有的AI辅助设备
需要AI来辅助,在检测到行人或车辆靠近时,自动告警
市面上现有的AI辅助设备:体积大,成本高,模块化程度低
方案四:基于多传感器融合与TinyML的大车盲区预警
发挥TinyML优势:
体积小:模块化程度高,可分别安装在多个视野盲区
低成本:易于推广应用
低延迟:交通事故发生在转瞬之间,及时预警很重要
多传感器融合:
除了视觉识别外,加入
音频识别(识别鸣笛、自行车铃声、行人说话声等)
超声波雷达(测算盲区内物体距离)
优点:
综合分析多个传感器的数据给出预警结果,更加准确,也能根据距离远近等给出分级的预警
单一传感器若出现失灵、误判等,则其他传感器也能及时提供预警,提高安全系数
智能化提醒
除了将视频识别呈现在屏幕外,在检测到行人或车辆靠近时,自动告警(音频+灯效)
剩下的是一些idea
一些idea
为迎合北京航空航天大学图书馆占座半小时公约,添加人脸识别并结合数据库达成对占座人员的监视,并自动在数据库中进行记录,然后指示灯的作用是提醒其他同学该座位已经达到占座条件,可以使用(长续航)。
具体流程大概为在每个位置上配置机器(成本低),然后在人员离开位置且桌子上仍有东西的情况下进行工作,前期识别工作依靠TinyML,后期计时工作依靠其他硬件,最后在达到半小时后通过前期的身份识别结果上传数据库。
这个想法我觉得还可以,但可能难度有点大哈哈哈(加上还没学数据库,但还是可以完善的嘛)。资料
知网无,类似有一个:
2.篮球发球机
说明
现在市场上的自动发球机都是计时的,导致可能由于某些意外导致多个球同时发出等意外,所以我想要通过“唤醒词识别”或者“手势识别”来进行完善,只有在识别特定关键词后才会发出球。
这个想法其实本质也就是设计一个识别的小部件,只需要连接到篮球机的开关处可能就可以了趴。资料查找
知网无
和上面宿舍灯差不多,只用了一个”唤醒词技术“,拓展性差,但想法较新颖,且好像没有人做过。
3.预警提醒装置
说明
随着社会老龄化的加剧,由于各种原因,选择独居的老年人也越来越多。而老年人有较多的基础疾病,如心脑血管疾病等,且骨质疏松,容易不小心发生骨折。
通过低功率、长续航的tinyML可穿戴设备,监测老年人独自在家时的安全状况。通过被监测者的体态特征,来判断老年人在家是否处在安全的状态。若出现异常情况,即使报警,第一时间将危险情况反馈给子女;(进一步)根据可能的异常体态状况,将危险分类分级。资料查询
知网无,外网资料如下:
Edge-AI-Framework-for-Healthcare-Applications.pdf (researchgate.net)
A review on TinyML: State-of-the-art and prospects - ScienceDirect (buaa.edu.cn)
在医疗康复方面主要想法如下:
①一些疾病的手术,术后可能还需要在家进行较长时间的康复运动。通过在特定部位穿戴上有tinyML的传感器,进行康复运动的指导,更科学的居家康复训练。
②对于一些疾病,或者在术后回家休养期间,患者的日常运动,需要加以注意。(如:对脊椎、腰椎的一些疾病,平时的运动动作,需要一定程度上的加以注意和限制,避免造成进一步拉伤、损伤)通过在特定敏感部位穿戴上有tinyML的传感器,通过姿态的分析、加速度变化采集、相对运动,来检测患者的动作行为。若预测很有可能将会发生异常动作时,tinyML及时作出判断和预警,通过语音等方式,提醒人们,避免脆弱敏感部位因平时动作没有察觉而受到进一步拉伤损害。
在Arduino上使用TinyML进行咳嗽检测 - Hackster.io
4.吸附式自动擦黑板机器人
说明
顾名思义,这个项目就是利用了“唤醒词识别”技术和“图像识别”技术,可以在听到关键词“擦黑板”(类似)之后开始工作,利用图像识别技术跟踪白色的位置并完成擦黑板的任务。
资料查找
吸附式自动擦黑板机器人的设计与应用 - 中国知网 (buaa.edu.cn)
这篇文章是使用STM32(嵌入式单片机)为基础的,然后正文是采用固定的“S"型轨迹移动,并配合使用者可以用红外遥控器手动操作(重点:没有使用ML,但这个想法存在所有可能并不会创新性很强,当然ML主要用途也没有很了解,除了唤醒词)。
摘要如下:
为了更加环保、高效地清扫黑板上的字迹,保障老师和学生的身体健康,设计一种吸附式自动擦黑板机器人,该机器以 STM32 为核心,多种传感器协同工作,使得机器具有清扫、吸附、移动等功能,可以自动或手动清扫黑板上的字迹,清扫完成后返回固定起始位置。实际运行结果表明,该机器可以正常运行,并且高效地完成对黑板字迹的清扫,同时收集粉尘。
5.声音遥控宿舍灯
说明
主要用于宿舍熄灯工作,通过”唤醒词识别“开始工作,然后关灯就比较简单了,这个发挥了TinyML长续航能力的优势,但创新性不足。
资料查找
基于Arduino的无线遥控灯设计 - 中国知网 (buaa.edu.cn)
只找到一个类似的(只是途径类似),主要内容是红外遥控的无线灯具,这个想法主要是可以拓展的方面较少,创新性我觉得也不是很足(不知道为什么居然找不到资料),实现起来应该算比较简单的吧(只用了唤醒词技术)
6.基于Arduino和RFID的门禁系统
说明
RFID是Radio Frequency Identification的缩写,是一种无接触自动识别技术,利用射频信号及其空间耦合传输特性,实现对静止的或移动中的待识别物品的自动识别 。
具体细节见: Arduino简易RFID门禁
而TinyML主要可以通过人脸识别为解除门禁加入新的元素,但可能稍微有点鸡肋~资料查找
这个资料就很多了,在此不列举了,毕竟RFID技术最大应用就是门禁,如果想不到什么比较创新的ML用法,基本可以抛弃了。
参考资料
下方列出资料并非参考文献,而是一些可以访问的TinyML的知识及相关模型
参考资料
[2].TinyML:下一轮人工智能革命
[3].2022 ACM/IEEE TinyML Design Contest
[4].Eyes on Edge: tinyML Vision Challenge! - Hackster.io
[5].Eyes on Edge: tinyML Vision Challenge! projects - Hackster.io
[6].TinyML 机器学习简介
[8].Train a Simple TensorFlow Lite for Microcontrollers model
[12].mushroomcloud-cc/tinyml-workshop (github.com)
[13].让单片机都能部署神经网络,这个神器是什么?_哔哩哔哩_bilibili
[14].TinyML推荐课程
【Coursera 吴恩达】2022 Machine Learning Specialization
视频
课程资料(来自视频简介)
课程官网【北京大学】TensorFlow2.0
视频
课程资料(来自视频简介)
提取码:mocm
[15].Build Your Own Object Detection System with Machine Learning - YouTube
[16].Edge Impulse
[17].302 Edge Impulse Projects & Tutorials for Beginners and Up - Hackster.io
[18].Build Your Own Object Detection System with Machine Learning - YouTube
[19].Adding sight to your sensors - Edge Impulse Documentation
[20].
[21].使用 Esp32 和 TinyML 进行手势分类 - Hackster.io
[22].
Neuton-tinyML/nicla_digits (github.com)
TinyML 课程 #1 使用光传感器进行手势识别 - Hackster.io
基于穿戴式传感器的空中手写识别算法研究 - 中国知网 (buaa.edu.cn)
[23].用于控制 RGB 灯的 TinyML 关键字检测 - Hackster.io
[24].Tensorflow_lite hello_world示例运行在Arduino/Devkit_jack@london的博客-CSDN博客_tensorflow-lite stm32f4
[25].如何开始在 Arduino 上使用机器学习 — TensorFlow 博客
[26].Arduino Editor
[27].Supplemental material – TinyML Book
(持续更新ing)
- Title: TinyML-note
- Author: Charles
- Created at : 2022-12-31 21:05:07
- Updated at : 2023-07-27 16:46:48
- Link: https://charles2530.github.io/2022/12/31/tinyml-note/
- License: This work is licensed under CC BY-NC-SA 4.0.