Machine learning allows us to teach computers to make predictions and decisions based on data and learn from experiences. In recent years, incredible optimizations have been made to machine learning algorithms, software frameworks, and embedded hardware. Thanks to this, running deep neural networks and other complex machine learning algorithms is possible on low-power devices like microcontrollers.
This course will give you a broad overview of how machine learning works, how to train neural networks, and how to deploy those networks to microcontrollers. You do not need any prior machine learning knowledge to take this course. Familiarity with Arduino and microcontrollers is advised to understand some topics as well as to tackle the projects. Some math (reading plots, arithmetic, algebra) is also required for quizzes and projects.
We will cover the concepts and vocabulary necessary to understand the fundamentals of machine learning as well as provide demonstrations and projects to give you hands-on experience.
Introduction to Machine Learning
In this module, we will introduce the concept of machine learning, how it can be used to solve problems, and its limitations. We will also cover how machine learning on embedded systems, such as single board computers and microcontrollers, can be effectively used to solve problems and create new types of computer interfaces. Then, we will introduce the Edge Impulse tool and collect motion data for a "magic wand" demo. Finally, we will examine the various features that can be calculated from this raw motion data, including root mean square (RMS), Fourier transform, and power spectral density (PSD).
Introduction to Neural Networks
In this module, we will look at how neural networks work, how to train them, and how to use them to perform inference in an embedded system. We will continue the previous demo of creating a motion classification system using motion data collected from a smartphone or Arduino board. Finally, we will challenge you with a new motion classification project where you will have the opportunity to implement the concepts learning in this module and the previous module.
Audio classification and Keyword Spotting
In this module, we cover audio classification on embedded systems. Specifically, we will go over the basics of extracting mel-frequency cepstral coefficients (MFCCs) as features from recorded audio, training a convolutional neural network (CNN) and deploying that neural network to a microcontroller. Additionally, we dive into some of the implementation strategies on embedded systems and talk about how machine learning compares to sensor fusion.