Replies: 6 comments
-
While working in this area, I have done an evaluation of MicroPython ecosystem overall with regards to TinyML applications, and related data-processing-intense applications (such as IoT sensors, wearables et.c.). This spans areas such as data processing efficiency, connectivity, data format support, sensor support, et.c. My notes can be found here: https://github.com/emlearn/emlearn-micropython/blob/master/doc/micropython-tinyml-status.md |
Beta Was this translation helpful? Give feedback.
-
The recording for the first talk emlearn-micropython is now available: YouTube: Machine Learning on microcontrollers using MicroPython and emlearn (PyCon DE & PyData Berlin 2024). The slides can be found at https://github.com/jonnor/embeddedml/tree/master/presentations/PyDataBerlin2024 |
Beta Was this translation helpful? Give feedback.
-
An ecosystem improvement was adding support for Numpy .npy/.npz files, via micropython-npyfile. To support the .npz files it was also necessary to have .zip file support, so we ported |
Beta Was this translation helpful? Give feedback.
-
There is now an example / demo project of how to use emlearn to implement a Sound Level Meter / Noise Monitoring device. Including integration with an IoT dashboard service (using https://blynk.io). It processes 16 kHz audio to compute soundlevels and standard acoustical measurements used in noise monitoring. Actually running it on live requires a device with I2S microphone. Code: https://github.com/emlearn/emlearn-micropython/tree/master/examples/soundlevel_iir |
Beta Was this translation helpful? Give feedback.
-
There is now an example of analyzing motion from accelerometer/IMU, to perform Human Activity Recognition type tasks - such as exercise tracking. Code: https://github.com/emlearn/emlearn-micropython/tree/master/examples/har_trees |
Beta Was this translation helpful? Give feedback.
-
A fun little demo application made with emlearn-micropython is now available: Automatic toothbrush timer using accelerometer. Demo video: https://www.youtube.com/shorts/U8TeewQ9t-k |
Beta Was this translation helpful? Give feedback.
-
Hi everyone. Over the last 6 years, I have developed a library for running machine learning models on microcontrollers, called emlearn. This is an upcoming area within embedded devices, sometimes nicknamed "tinyML". There are a huge range of applications, across practically all industries, that are being actively researched and developed. Some of these are by now very common, such as keyword spotting ("Hey Alexa") or sleep quality tracking and activity (on smartwatches) - but there is also a wide range of niche usecases, often in industrial applications.
Around 1 year ago, I started adding MicroPython support, in the form of emlearn-micropython. The goal is that developers can develop applications entirely in (Micro)Python, while having very efficient data processing -thanks to the modules being implemented in performance-optimized C. The project uses the dynamic native module support in MicroPython - so that one can just drop in a couple of .mpy files to utilize them - no need to rebuild or reflash.
The project is now starting to become minimally useful, and contains implementations of several Machine Learning models. Such as: RandomForest/DecisionTree, K-Nearest Neighbors (KNN), Convolutional Neural Network (CNN).
The library also includes some Digital Signal Processing functions, such as Fast Fourier Transform (FFT) and Infinite Impulse Response (IIR) filters. As well as some more general tools for doing efficient operations on
array
. I made these when working on TinyML applications, but they should be useful also for other purposes.I am working now on some example code and demos to make it easy to get started.
The goal of this discussion thread is to be a general place to discuss the project and related things like TinyML with MicroPython. So bring all of your questions and ideas :)
Beta Was this translation helpful? Give feedback.
All reactions