Machine Learning for Embedded Software Engineers
CEC Archives | CEC Semester Fifteen 2019 | Machine Learning for Embedded Software Engineers
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.
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.
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.
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.
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 Beningo is an embedded software consultant who currently works with clients in more than a dozen countries to dramatically transform their businesses by improving product quality, cost and time to market. He has published more than 300 articles on embedded software development techniques, has published several books, is a sought-after speaker and technical trainer and holds three degrees which include a Masters of Engineering from the University of Michigan.
 
								