Why Machine Learning Is Important to Embedded
Machine learning is opening up new features and applications that will forever change how users expect their systems to behave.
Machine learning for embedded systems has been gaining a lot of momentum over the past several years. For embedded developers, machine learning was something that data scientists were concerned with and something that lived up on the cloud, far from the resource-constrained microcontrollers that embedded developers work with on a daily basis.
What seems like almost overnight, however, machine learning is suddenly finding its way to microcontroller and edge devices. To some developers, this may seem baffling or at least intriguing. But why is machine learning so important to embedded developers now? Let’s explore a few possibilities.
First, machine learning can help embedded devices solve problems that would traditionally be very hard for developers to code. For example, imagine that we want to write some code that can take an image that is just 28 x 28 pixels and detect what digit was written in a range from 0 to 9. For a developer that is hand-coding the solution this is an extremely complex problem to solve since writing a digit will never result in an identical image. The hand-writer may start in a different place, write the digit on an angle, or any other number of variations. However, machine learning turns this tough coding problem into a trivial issue whose solution can be written in a few hundred lines of code or less, depending on the programming language that is used.
Next, machine learning can help developers implement an embedded system that performs tasks that are easy for a human to do, but traditionally difficult and expensive for a computer. For example, object detection and recognition are easy for humans along with speech recognition, but again very hard for a computer. Using machine learning, we can create systems like the digital assistants we are all familiar with to recognize keywords to wake the system or detect objects that are of interest on an assembly line or in the path of a rover or drone. With machine learning, these obstacles are not just easy to overcome; they can be solved with hardware that costs well under $100 using microcontrollers.
Finally, machine learning can allow developers to easily scale the way that their system behaves as the device is placed into new situations or provided with new data. For example, in a traditional embedded system, if the device suddenly needs a new behavior based on the inputs that are provided to it, the developers now need to go in and modify the code to add in the new behavior. If the device instead was using machine learning, there would not necessarily be a need to change any of the system code. Instead, the machine-learning model, inference, may just need to be retrained with the additional desired behaviors. This is far easier than hand coding updates to the software.
Machine learning offers the opportunity to provide embedded software developers with new tools and technologies that have the potential to ease development costs and off-load some of the programming workload. Machine learning is also opening up new potential applications and features that will forever change how users expect their systems to behave. While machine learning is just finding its way to the embedded space, it’s coming faster than many may realize. Now is the time to start getting up to speed on the technologies involved and how they can be applied.