Deep Neural Nets for Micro-controllers

mind machineAt the moment I’m writing an integer-based library to bring neural networks to micro-controllers. This is intended to support the ARM and AVR devices. The idea here is that even though we might think of neural networks as the domain of super computers, for small scale robots we can do a lot of interesting things with smaller neural networks. For example a four layer convolutional neural network with about 18,000 parameters can process a 32×32 video frame at 8 frames per second on the ATmega328, according to code that I implemented last year.

For small networks, there can be some on-line learning, which might be useful to learn control systems with a few inputs and outputs, connecting for example IMU axes or simple sensors to servos or motors, trained with deep reinforcement learning. This is the scenario that I’m experimenting with and trying to enable for small, low power, and cheap interactive robots and toys.

For more complex processing where insufficient RAM is available to store weights, a fixed network can be stored in ROM built from weights that have been trained off line using python code.

2 thoughts on “Deep Neural Nets for Micro-controllers

  1. Could we do more with the ARM and the VideoCore of the Raspberry Pi?
    I understand that the core is open APIs.
    Would love to have a thinking PI.

    • That would be good. I think what is needed is OpenCL on the Raspberry Pi which would enable the GPU to be leveraged for DNN, and as far as I know there is not an OpenCL implementation available. Certain things could be implemented using OpenGL but it’s much harder to really do compute operations that way.

Comments are closed.