AIfES 2  2.0.0
Main page

Welcome to the official AIfES 2 documentation! This guideline should give you an overview of the functions and the application of AIfES. The recommendations are based on best practices from various sources and our own experiences in the use of neural networks.

Vocabulary and Abbreviations

  • AIfES: Artificial Intelligence for Embedded Systems
  • ANN: Artificial Neural Network
  • FNN: Feedforward Neural Network (used in this documentation for simple multi-layer perceptrons)
  • RNN: Recurrent Neural Network
  • CNN: Convolutional Neural Network
  • Inference: The calculation of an ANN (foreward pass / prediction)
  • Backpropagation: A training algorithm for ANNs that is based on gradient descent

Overview (documentation)

  • Tutorial inference F32: Guides you through the necessary steps to perform an inference with AIfES, based on an example. (Float 32 model)
  • Tutorial training F32: Guides you through the training process with AIfES, based on an example. (Float 32 model)

Overview (functionality)

AIfES 2 is a modular toolbox designed to enable developers to execute and train an ANN on resource constrained edge devices as efficient as possible with as little programming effort as possible. The structure is closely based on python libraries such as keras and pytorch to make it easier to get started with the library.

The AIfES basic module contains currently the following features:

Data types

  • F32 (32 bit floating point values)
  • (under development) Q31 (32 bit quantized fixed point values)
  • (under development) Q7 (8 bit quantized fixed point values)

General

For Inference

Layer:

Layer f32
Dense ailayer_dense_f32_default()
ailayer_dense_f32_cmsis()
Input ailayer_input_f32_default()
ReLU ailayer_relu_f32_default()
Sigmoid ailayer_sigmoid_f32_default()
Softmax ailayer_softmax_f32_default()
Leaky ReLU ailayer_leaky_relu_f32_default()
ELU ailayer_elu_f32_default()
Tanh ailayer_tanh_f32_default()
Softsign ailayer_softsign_f32_default()

Algorithmic:

For Training

Layer:

Layer f32
Dense ailayer_dense_f32_default()
ailayer_dense_f32_cmsis()
Input ailayer_input_f32_default()
ReLU ailayer_relu_f32_default()
Sigmoid ailayer_sigmoid_f32_default()
Softmax ailayer_softmax_f32_default()
Leaky ReLU ailayer_leaky_relu_f32_default()
ELU ailayer_elu_f32_default()
Tanh ailayer_tanh_f32_default()
Softsign ailayer_softsign_f32_default()

Loss:

Loss f32
Mean Squared Error (MSE) ailoss_mse_f32_default()
Crossentropy ailoss_crossentropy_f32_default()

Optimizer:

Optimizer f32
Stochastic Gradient Descent (SGD) aiopti_sgd_f32_default()
Adam aiopti_adam_f32_default()

Algorithmic:

Structure and design concepts of AIfES

AIfES was designed as a flexible and extendable toolbox for running and training or artificial neural networks on microcontrollers. All layers, losses and optimizers are modular and can be optimized for different data types and hardware platforms.

Example structure of a small FNN with one hidden layer in AIfES 2:

Modular structure of AIfES 2 backend: