Embedding development is usually driven by the need to deploy highly optimized and efficient systems. Artificial intelligence is positioned to destabilize an enterprise by initiating new methods to solve complex problems or by threatening the current state of the entire business sector or type of work.
Embedded development is usually driven by the need to deploy highly optimized and efficient systems.
Whether you know what excitement is and how it will be applied to your market, or try to understand how to use the technology, some basic knowledge of artificial intelligence and its potential applications must be part of your strategic planning process.
See also. Embedded analysis enhances application experience and increases adoption rates.
Despite all this, let us remember soberly that artificial intelligence is not a magic that can do anything. It is a tool that can be used by magicians to do a little trick. One area of growing interest is how artificial intelligence can be applied to embedded systems, focusing on how to plan deployment in these more restricted environments.
Definition and basic principles
In order to ensure that we are all on the same page, let us start with some background on different technologies and their computational requirements.
AI is a computer science discipline that studies how computers can be used to mimic human intelligence. Artificial intelligence has existed since the dawn of the twentieth century, when pioneers like Alan Turing saw the possibility that computers could solve problems in a human-like way.
Classic computer programming solves problems by coding algorithms clearly into codes, directing computers to perform logical data processing and calculating an output result. By contrast, Machine Learning (ML) is an artificial intelligence method that seeks to find models in data and effectively learn on the basis of data. There are many ways to achieve this, including pre-marking data (or non-marking), intensive learning to guide algorithm development, extracting features through statistical analysis (or other means) and then classifying the input data according to this trained data set to determine an output with an established confidence.
Deep Learning (Deep Learning, DL) is a subset of the ML that uses a multi-layered neural network to cross-train a model from a large data concentration. Once it is completed, the model will be able to look at new data sets and reason for new data. This approach has recently gained a lot of attention and has been applied to issues such as image processing and voice recognition or financial asset modelling. We believe it will also have a significant impact on key infrastructure and equipment in the future.
Applying ML/DL in embedded systems
Since the creation of accurate models requires a large number of data sets, as well as a large number of computing capabilities required for training models, training is usually conducted in cloudy or high performance computing environments. By contrast, reasoning is usually applied in equipment close to data sources. Distributive or marginal training is a very interesting topic, but it is not the way most ML systems are currently deployed. For the sake of simplicity, we assume that training takes place in clouds, and that reasoning will take place on edges or in equipment.
As we have described, ML and DL are data-centric disciplines. Therefore, creating and training models requires access to large data sets and to the tools and environments that provide a rich environment for data operation. Frameworks and languages are used to simplify the operation of data and to achieve complex mathematical databases and statistical analysis. These are usually linguistic frameworks such as Python, on which the ML framework is built. There are many such frameworks, but some common ones include TensorFlow, Cafe or PyTorch.
ML frameworks can be used for model development and training, as well as for the use of trained model-run reasoning engines on the margins. Thus, a simple deployment option is to deploy a framework, such as TensorFlow, into the equipment. Because these require a rich operational time environment, such as Python, they are best suited to the generic computation load on Linux. Because of the need to run MLs in mobile devices, we see that lightweight reasoning engines (TensorFlow Lite, PyTorch mobile) are beginning to be developed and that they will require fewer resources, but they are not widely used or mature as their functional parents.
Some models can be explained and run without the need for a complete ML framework. For example, OpenCV is a computer visual framework that includes the Deep/Convoluted-Neural-Network (DNN/CNN) library, where models can be read from TensorFlow and others. The OpenCV and DNN libraries can be used in many compact operating environments that do not support a more complex or functional ML framework, so the second deployment option is to deploy a reasoned engine using frameworks such as OpenCV.
ML is highly computing-intensive, and early deployment (e.g. in autonomous vehicles) relies on specialized hardware accelerators, such as GPU, FPGA, or a specialized neural network. As these accelerators become more common in SOCs, we can expect to see an efficient engine to operate the DL model in restricted equipment. When this happens, another deployment option will be to compile a trained model to optimize deployment on the DNN accelerator. Some of these tools already exist and require a modern compiler framework (e.g. LLVM) to target both the front end of the model and the back end of the hardware accelerator.
Significance to embedded development
Embedded development is usually driven by the need to deploy highly optimized and efficient systems. The classic development approach begins with a very restricted hardware and software environment, with only additional functionality as required. This has been a typical area for RTOS applications.
As technology changes rapidly, we see a way to develop from the start of work on complex systems to optimize deployment at a later stage. Like many of the major advances in software, open-source communities are a major driver of the speed and scale of innovation that we see in MLs. Embracing open-source tools and frameworks, often beginning with the development of Linux, is fast becoming the main path of innovation. Therefore, the use of both RTOS and Linux, or the migration of open sources from Linux to RTOS, are important developments that must be supported.
Whether the company has just begun its journey or is prepared to deploy optimized machine learning solutions, it must build a basic technology and a rich development environment in order to be abstractally complex and to achieve an isomeric operating environment.
