Artificial intelligence has long been a tool for developers working in high-performance computing and cloud-based systems. AI has transformed the way that networks are monitored, email is scanned and even the way we interact with our phones and devices. While AI and machine learning have always felt like a distant tool that lived outside real-time embedded systems, machine learning is coming to microcontroller-based systems and, in fact, is already here! In this course, we will examine machine learning from an embedded software developers’ point of view, not just to understand machine learning principles and how they apply to us, but also how to get machine learning up and running on an embedded device.
Registration and Playback located here (May require login to access)
April 22 – Day 1 – Introduction to Machine Learning
To a traditional embedded software developer, machine learning is something that exists far from our resource-constrained devices, but times are quickly changing. In this session, we will examine how machine learning fits into an embedded system and explore how it can be used. We will examine what a neural network is, what the different network types are, and a few basic neuron types and how they can result in an intelligent system.
April 23 – Day 2 – Machine Learning Architectures for Embedded Systems
Machine learning networks can require quite a few resources to train and execute. So how can this be done in an embedded environment? In this session, we will explore several system architectures that developers can use to achieve machine learning at the edge. We will also discuss why machine learning is being pushed from the cloud to the edge, and will examine software resources that are available on the Arm Cortex-M, such as CMSIS-NN.
April 24 – Day 3 – Machine Learning Applications: Vision and Speech
While there is a lot of hype around machine learning and AI, there are two main use cases right now that will find their way into embedded systems. In this session, attendees will learn about the different applications in the embedded space where machine learning can be applied, including vision and speech. We will examine the tools and techniques available to developers in order to apply these use cases.
April 25 – Day 4 – Machine Vision with OpenMV
In this session, we will dig deep into machine learning with the OpenMV camera module which is based on the Arm Cortex-M7. We will examine how to set up the module and use its APIs to create a basic application that can perform simple object recognition. Attendees will walk away with an understanding of real-world machine learning in a resource-constrained environment and what it costs to use such features.
April 26 – Day 5 – Near Real-time Machine Learning Using Coral
Real-time machine learning network execution is not quite yet a reality in the embedded space, but it is coming close with the Google Coral module. In this session, we will explore the Google Coral module and see how it stacks up against more embedded solutions and understand how it fits in the embedded developer’s toolbox. We will then review what we have learned this week and discuss additional techniques and tools that attendees can research that will help them become more familiar with machine learning.
Jacob’s General Embedded System Resources
- Sign-Up for the Embedded Bytes Newsletter here
- Embedded Software Design Techniques – An API Standard for MCU’s here
- Technology Primer – TrustZone here
- Developing Reusable Firmware – A Practical Guide to API’s, HAL’s and Drivers here
- Doxygen C Templates Download can be here
- DesignNews Blog Articles can be found here
- Jacob’s YouTube Channel – here
Machine Learning General Resources
- Neural Network Introduction Videos
- Neural Network Free Online Book w/ Python Examples
- Deep Learning by Ian Goodfellow, Yoshua Bengio, and Aaron Courville