TinyML实践-1:What & Why TinyML?

2020-12-07 16:02:03 浏览数 (1)

机器/深度学习已经如火如荼,各种炫目的效果呈现不穷,笔者也复现一些如stackoverflow assistence、头像动漫化等,但大都需要强大算力,“终端(手机) 云服务器”是基本结构。去年关注到Google TFLite Micro(TFLM)及技术,可以将Tensorflow 模型部署到嵌入式的端末设备(比如arm cortex M4 64M)。恰好手头有一个农业物联网项目,利用嵌入式设备识别牲畜的活动状态,应用了这一个技术。这段时间项目间隙,记录下开发过程的一些心得体会。

What is Tiny Machine Learning(TinyML)?

以下引文来自edx公开课 "HarvardX - Fundamentals of TinyML"

Tiny machine learning (TinyML) is a fast-growing field of machine learning technologies and applications including algorithms, hardware, and software capable of performing on-device sensor data analytics(vision, audio, IMU, biomedical, et.) at extremely low power, typically in the mW range and below, and hence enabling a variaety of always-on use-cases and targeting battery-operated devices.

Tiny机器学习(TinyML)是一个快速发展的机器学习技术和应用领域,包括能够以极低的功耗执行设备上传感器数据分析(视觉,音频,IMU,生物医学等)的算法,硬件和软件。 ,通常在mW范围内及以下,因此可以实现各种始终在线的用例,并以电池供电的设备为目标。

引用《TinyML》一书作者阐述TinyML概念:如果能以低于1毫瓦的功耗成本运行神经网络模型,那么将使得许多全新的应用成为可能。”1毫瓦“似乎是一个有点随意的数字,如果把它转换为具体的术语,这意味着一个使用纽扣电池的设备可以具有一年的使用寿命,这就产生一种产品——它足够小,可以适应任何环境,并且能够在无需人工干预的情况下运行相当长时间。

微型机器学习(tinyML)是机器学习和嵌入式物联网(IoT)设备的交叉点。该领域是一门新兴的工程学科,有可能使许多行业发生革命。

Why TinyML?

1) 机器学习正在加速从运动到端末(endpoint device)移动

物联网的传统理念是将数据从本地设备发送到云端进行处理。一些人对这个概念提出了一些担忧:隐私、延迟、存储和能源效率等等。

Energy Efficiency。传输数据(通过有线或无线)是非常耗能的,大约比机载计算(特别是乘法累加单元)要高一个数量级。开发能够自己进行数据处理的物联网系统是最节能的方法。人工智能的先驱们已经讨论了一段时间的“以数据为中心”的计算(相对于云模型的“以计算为中心”),现在开始看到它的结果。

Privacy。传输数据有可能侵犯隐私。这样的数据可能被恶意的参与者截获,并且当存储在一个单一的位置(如云)时,其安全性就会降低。通过将数据主要保存在设备上并尽量减少通信,这提高了安全性和隐私性。

现实有IOT大量众多数据没有被利用,由于产生数据量大,并且传输这些原始数据需要耗费大量的电能

Storage。对于许多物联网设备来说,他们获取的数据毫无价值。想象一下,一个保安摄像头24小时记录着一栋大楼的入口。在一天的大部分时间里,摄像机的镜头是没有用处的,因为什么都没有发生。通过拥有一个只在必要时激活的更智能的系统,就需要更低的存储容量,并且传输到云端所需的数据量也减少了。

Lattency。对于标准物联网设备,如Amazon Alexa,这些设备将数据传输到云端进行处理,然后根据算法的输出返回响应。从这个意义上说,这个设备只是一个通往云模型的便捷门户,就像你和亚马逊服务器之间的信鸽。这个设备相当愚蠢,完全依赖互联网的速度来产生结果。如果你的网速很慢,亚马逊Alexa也会变慢。对于具有机载自动语音识别功能的智能物联网设备,由于减少了(如果不是没有)对外部通信的依赖性,因此延迟降低了。

no_good_data_left_behid.pngno_good_data_left_behid.png

2)端末设备在身边无处不在

MCU尺寸越来越来

mcu_size.pngmcu_size.png

MCU的性能越来越强大并且越来越便宜

mcu_price.pngmcu_price.png

MCU的低功耗方面的发展

mcu_pwr.pngmcu_pwr.png

3) MCUs赋能TinyML

mcu_enable_tinyml.pngmcu_enable_tinyml.png

如何学习TinyML并实践

推荐《TinyML: Machine Learning with TensorFlow Lite on Arduino and Ultra-Low-Power Microcontrollers》这本书,有中文版。该书从背景、理论阐述TinyML,并且”show me the code”,从四个具体例子:Hello World、唤醒词检测、行人检测、魔杖进行讲述。

需要的硬件

如《TinyML》所述,有四个硬件开发板就好:

  • SparkFun Edge
  • Arduino Nano 33 BLE Sense
  • STM32F746G Discovery kit
tinyml_hardware.pngtinyml_hardware.png

个人推荐Arduino Nano 33 BLE Sense开发板,因为nrf52840是很成熟的具有蓝牙的低功耗平台,产品经过市场检验。话说回来,对于经历过TinyML实践者来说,只要基于ARM CortxM3 M4(也可以不是,但是需要tfml直接的cpu架构)的mcu都可以,不过这都是后话。

需要的软件

基于Tensorflow lite for microcontroller框架,位于tensorflow源码中;

ide推荐vs code;

参考&资源

  • Tiny Machine Learning (TinyML) https://courses.edx.org/dashboard/programs/f7868191-7d7f-4292-b117-64549f1f483a/
  • TinyML: Machine Learning with TensorFlow Lite on Arduino and Ultra-Low-Power Microcontrollers

0 人点赞