Artificial intelligence (AI) and machine learning (ML) seem to be in the headlines more and more each year. But for the most part, embedded developers don’t seem to pay too much attention. Sure, AI has some really cool applications. For real-time microcontroller developers, however, AI seems to be a distant tool that belongs in the cloud or on a high-end application processor. As it turns out, there are several reasons why embedded developers need to start paying attention to AI and ML right now.
Reason #1 – The CMSIS-NN Software Library
That’s right! There is already a CMSIS library specifically designed to implement neural networks on embedded devices. The library was released earlier this year and provides developers with the ability to implement neural network functions such as:
- Neural Network Convolution Functions
- Neural Network Activation Functions
- Fully-connected Layer Functions
- Neural Network Pooling Functions
- Softmax Functions
- Neural Network Support Functions
The library functions can be used on any fixed-point processor. In order to really improve the execution efficiency, though, developers can make use of ARM DSP instructions on higher-end Cortex-M4 or Cortex-M7 devices. You can learn a little bit more about CMSIS-NN here.
Reason #2 – The STMicroelectronics NUCLEO-F746ZG
The CMSIS-NN software library can run on a range of Cortex-M devices, but the STMicroelectronics NUCLEO-F746ZG is interesting to single out. It’s the development board that already has examples and benchmarking being performed with it. The NUCLEO-F746ZG is an ARM Cortex-M7 processor that includes DSP instructions, a floating-point hardware processor, and up to 1 MB of on-board Flash. It has everything that an embedded developer needs to run machine learning algorithms quickly and efficiently in a real-time microcontroller.
Reason #3 – Increased Device Intelligence
Using machine learning can add a level of intelligence to an embedded system that would otherwise be time consuming or nearly impossible to implement traditionally. Developers can use a neural network to learn sensor and system behavior and identify when the behavior is decaying or when an upset occurs. Leveraging machine learning can help to decrease costs and implementation effort.
Reason #4 – Improved Architectural Efficiency
In many applications, the use of machine learning in a microcontroller can dramatically affect the system architecture. Take, for example, keyword spotting applications. A developer could architect the system using an application processor that constantly runs, looking for the keyword. An application processor will use far more energy and computing power for a very simple task. Instead, a Cortex-M processor can be used to spot the keyword, which will use far less power than an application processor and can be used to wake up the application processor when the keyword is spotted. This is just a single example in which the use of machine learning can change the way a system is architected.
Reason #5 – The Learning Curve
Learning how to implement machine learning on an embedded device is not just going to be an extension of the skills that developers already use. It’s going to involve not just new techniques, but a new way to think about how to design an embedded system. Developers aren’t going to be able to learn these new concepts and techniques overnight. And trying to learn them during a development cycle, when they are on the critical path, will undoubtedly result in faulty implementations and project delays due to increased complexity. Just look back at the function list in Reason #1. How many of those terms make sense to you right now? Starting to learn about machine learning in piecemeal bites now will help developers hone their skills before they are needed on the battlefield of development.
AI and ML are not tools just for high-end applications or the cloud. The tools exist today for embedded software developers to start leveraging these new techniques and making their systems smarter. The time to start learning these new capabilities isn’t when you need to implement them in a design and are already behind; the time is right now.
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 200 articles on embedded software development techniques, is a sought-after speaker and technical trainer and holds three degrees which include a Masters of Engineering from the University of Michigan. Feel free to contact him at [email protected], at his website www.beningo.com/, and sign-up for his monthly Embedded Bytes Newsletter.
Today's Insights. Tomorrow's Technologies.
ESC returns to Minneapolis, Oct. 31-Nov. 1, 2018, with a fresh, in-depth, two-day educational program designed specifically for the needs of today's embedded systems professionals. With four comprehensive tracks, new technical tutorials, and a host of top engineering talent on stage, you'll get the specialized training you need to create competitive embedded products. Get hands-on in the classroom and speak directly to the engineers and developers who can help you work faster, cheaper, and smarter. Click here to submit your registration inquiry today!