Course Review: Intro to Embedded Machine Learning
Machine learning can now happen on low-power devices. Discover edge ML and its applications.
In December 2021 (because I thought what a better way to spend the holidays during a pandemic?), I took Edge Impulse’s course “An Introduction to Embedded Machine Learning” on Coursera.
The course itself is fairly recent, having been launched in 2021, and is in time to respond to the rapidly rising number of applications using edge machine learning.
I worked with a TI MSP430 launchpad kit in 2011 fresh out of university, and it’s truly amazing to see how far things have come just in a few years. In addition to the increase in processing power and memory, over time the devices themselves have become ubiquitous, with innumerable applications. Chances are you will even come across them in Antarctica or in the depths of the Amazon rainforest.
The standard way of approaching such a system is linear. One has a problem to solve (usually to do something, measure something, or communicate something). One then writes code to produce a certain output given a certain input (problem solved!).
But how does one approach a problem which is predictive (say detecting anomalies before they happen to prevent systems from breaking down) rather than deterministic (fixing an issue after it has occurred)?
That’s where machine learning (ML) on embedded systems come in. I suppose it was only a matter of time before AI and ML made their way to edge devices, given how capable these tiny devices have become.
Why I took this course?
I am an Embedded Software Engineer by profession. Edge ML seems to be the logical next step in embedded systems development, and I foresee a future where I will be using Edge ML at work ever more frequently. So I decided to jump at it sooner rather than later.
Personally, I tried my best to avoid the “FOMO” feeling when everyone around me was diving head first into Data Science, AI and ML. My apprehension also came from the fact that I had no formal training and not a lot of experience in the aforementioned fields, save for the few math courses I took years ago but haven’t had much opportunity to use as I grew in my career.
My own anxiety (yes, I struggle with it) also prevented me from even picking up a book on TinyML that I came across months earlier out of the fear that I couldn’t possibly understand such concepts and would embarrass myself by even trying it. Nevertheless I decided to go into the course with an open mind.
The course and the instructors
The course itself is offered by Edge Impulse which is a platform that offers an all in one solution that makes developing Edge ML Applications easy.
The course content consists of both theoretical and the practical parts. The recommended duration is 3 weeks or a total of 17 hours. It took me approximately that long to successfully complete the course, but I spent additional time on the practical parts.
The theoretical part introduces some basics of ML, neural networks and audio classification. The graded quizzes required to pass the course and earn the certificate are based on the concepts discussed in the video tutorials.
Additional readings offer a good supplement for in-depth learners but are not required to pass the course.
The practical part consists of training and deploying ML models using Edge Impulse on an embedded device, in this case an Arduino Nano 33 Sense.
I was lucky to grab this piece of hardware just before the worldwide chip shortage. Although it isn’t required to pass this course, I highly recommend trying the practical exercises to reinforce the learning (pun intended!).
The instructors are Shawn Hymel and Alexander Fred-Ojala (an expert in AI, data science and blockchain technology). Shawn instructs the majority of the course. Owing to his background in engineering and marketing, he is very clear in his delivery of the material: he’s enthusiastic and energetic, making the course very engaging.
Conclusion and follow-up courses
This is where it gets a bit tricky though. The course content is fairly well organised. However at times I did feel the content delivery was rushed and was a lot to take in one go. I had to rewatch some segments and I thought it could have been broken up into even smaller digestible pieces. The suggested 3 weeks maybe can be extended to 4, to have had some time to let the material sink in.
I also don’t think this is a course I would recommend to someone who isn’t experienced in embedded systems because setting up the hardware and development environment, and deploying the models does take some effort. Although the course does a very good job of showing how to do so, it can be overwhelming to a complete beginner.
I haven’t taken the specialisation myself but I think An Introduction to Programming the Internet of Things (IOT) Specialization is a good place to start for absolute beginners.
I am currently following the next course by Shawn titled Computer Vision with Embedded Machine Learning. Maybe I’ll write a review on it in the future.
Dekel
Thanks, it helped me decide!