Sei sulla pagina 1di 7

PI CNN

C++ Convolutional Neural Network Library for Raspberry Pi


Introduction
■ 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
(labels))
– 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
code
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
Conclusions

■ 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