What is TinyML?¶
ML as you might have guessed stands for Machine Learning and in most of cases (not always though) nowadays refers to Deep Learning. Tiny in TinyML means that the ML models are optimized to run on very low-power and small footprint devices, such as various MCUs. It is a subset of ML on the Edge or Embedded Machine Learning.
Embedded devices come in all sorts of shapes and sizes, starting from “embedded supercomputer” Nvidia Jetson Xavier AGX to the tiniest of microcontrollers, for example ESP32 or Cortex M0.
Why embedded ML on microcontrollers is put in a special category and even given its own cool name?
Because it comes with it’s own set of advantages and limitations. The attraction of TinyML is in fact that MCUs are ubiquitous, small, consume small amounts of energy and comparatively cheap.
Take ARM Cortex M0+ and the little Seeeduino XIAO board which is built around it – the board is as small as a thumb(20×17.5mm), consumes only 1.33 mAh of power (which means it can work ~112 hours on a 150 mA battery, much more if put in deep sleep) and cost as little as 4.3 USD.
Thanks to recent improvements in model optimization and emergence of frameworks specifically created for running machine learning model inference on microcontrollers, it has became possible to give more intelligence to these tiny devices. We now can deploy neural networks on microcontrollers for audio scene recognition (for example elephant activity or sound of breaking glass), hot-word detection(to activate device with a specific phrase) or even for simple image recognition tasks. The devices with embedded microcontrollers can be used to give new life and meaning to old sensors, such as using an accelerometer installed on a mechanism for anomaly detection and predictive maintenance – or to distinguish various kinds of liqueurs as in this demo!
The possibilities of TinyML are truly huge.
What about limitations? The main limiting factor is RAM/FLASH size of MCUs – no matter how you well optimize, you wouldn’t be able to fit that YOLO9999 into a tiny microcontroller.
Same goes for automatic speech recognition – while simple hot word (or voice command detection) is possible, open domain speech recognition is out of reach of MCUs. For now.
Seeed EDU team has came up with a definitive step-by-step course on how to get started with TinyML using Wio Terminal.
You can download the course in PDF format and course materials by clicking on the links below. Additionally, you can find stand-alone projects published previously on Seeed studio blog and Hackster.io site - both projects in the course and standalone projects make use Arduino IDE for programming the devices and a mix of Edge Impulse and Tensorflow Lite for Microcontrollers for model training and inference.
Main difference between course and standalone projects is that course mainly aims at being used by STEM teachers as foundation for development of their own teaching materials or as ready-to-use lesson material, while standalone projects are for makers and hackers to explore and improve on them.
Edge Impulse is a user-friendly development platform for machine learning on edge devices, providing beginner friendly (yet powerful) web interface and toolkit for whole TinyMl pipeline, from data collection all the way to model deployment.
Tensorflow Lite for Microcontrollers on the other hand, while having steeer learning curve, allows you to implement your own model training and inference pipeline.
TinyML with Wio Terminal course¶
Download course materials:¶
Github repository with course materials:¶
No-code Programming to Get Started with TinyML¶
Designed to introduce beginners to the basics of Embedded Machine Learning with Wio Terminal and Codecraft graphical programming.
Please submit any technical issue into our forum