Sei sulla pagina 1di 7


C++ Convolutional Neural Network Library for Raspberry Pi

■ What is a Convolutional Neural Network (CNN)?
– Computer vision algorithm
– Builds on traditional neural networks
– Inspired by biological processes

■ Training
– Supervised learning (Large dataset of inputs (images) and outputs
– Cost function
– Backpropagation and gradient descent
NN vs CNN Structure
What is PiCNN?

■ CNN library for Raspberry Pi

– Single-header, lightweight, fast

■ Written in C++
– Uses only standard libraries
– Fast compilation with no dependencies

■ Enables practical machine learning for single-board computers

– E.g. Computer vision
Why PiCNN?

■ Traditional machine learning frameworks are large, resource-intensive, and tedious

to install
– E.g. TensorFlow, Theano
– Unfeasible to run on single-board computers

■ PiCNN provides a fully-functional, lightweight but powerful alternative

■ Can be incorporated with a single #include statement and only a few extra lines of
Performance and Future Improvements

■ MNIST dataset (handwritten digits from 0 to 9)

– 90% accuracy
– < 2 minutes training time

■ PiCNN in its current state is fully functional

■ Large future improvement:

– Parallel training of clusters of Raspberry Pis across a network

■ PiCNN provides a strong, light-weight alternative to large machine learning frameworks

■ Compilation, implementation, and execution time of PiCNN outperforms most

frameworks available

■ Training accuracy on conventional datasets is on par with other frameworks

■ A large future improvement is to implement parallel training of clusters of Raspberry Pis

running PiCNN