PIAsimoV is a free, open-source project made by a small group of students as part of their course at the french engineering school INSA Centre-Val-de-Loire.
This project was intended to show how a RaspBerry PI performs with deep-learning without any GPU. One is warned not to expect fluidity and performances, for the PI3 still has limited hardware performance.
PIAsimoV IS CURRENTLY NO LONGER ACTIVE. WE DO NOT GUARENTEE ANY ANSWERS TO ANY QUESTIONS OR REQUESTS
We greatly thanks these projects which ressources and documentation were very useful for our work :
- BVLC/Caffenet framework for deep-learning
- Darknet/YOLO CNN project
- OpenCV - Open source Computer Vision
And of course some publications among others that were useful to understand Deep-learning and CNN
- Yann LeCun works on Deep-learning
- Quick yet intuitive introduction to CNN
- Introduction to CNN through Caffe
- !!!!!!!!W.I.P NEED A NAME!!!!!!!!!!!!!!
One can find here the hardware used for this project :
- RaspBerry PI 3 model B
- Kuman Screen 3.5" for RaspBerry PI
- USB or WI-FI camera
Although one does not need a GUI, it is recommended to install the latest version of RaspBian with the GUI extension to output the prediction on screen.
The following projects are not required but they are interesting to use in order to produce benchmarkings and comparisons. One should note that they both support / are supported by OpenCV
- [Optional] Caffenet framework - Official guide
- [Optional] Darknet/YOLO - Official guide
In order to use a pre-trained CNN through OpenCV, one needs to download the dataset provided by Caffenet. Note that each caffemodel needs from 300 MB up to 520 MB of free space.
Use the following commands in the root directory projet_ia/
:
wget http://dl.caffe.berkeleyvision.org/bvlc_alexnet.caffemodel -P models/bvlc_alexnet/
wget http://dl.caffe.berkeleyvision.org/bvlc_googlenet.caffemodel -P models/bvlc_googlenet/
wget http://dl.caffe.berkeleyvision.org/bvlc_reference_caffenet.caffemodel -P models/bvlc_caffenet/
For further informations about the models, please refer to the Caffenet repository.
PIAsimov's repository comes with the pre-existing synset_words.txt and prototxt in the models/
folder.
All prototxt files were modified to adopt the former input_parameter layer style for OpenCV 3.1 still uses it.
The code is already written and can be found in the src/cam
folder. You must however change one line in each code.
At line 20, replace PLEASE_FILL_ME
by your camera's address (IP or URL)
#define CAMERA_TO_USE PLEASE_FILL_ME
A simple Makefile was written to compile and execute the code. Here is a list of the usable options :
alexnet
: compile the code as alexnet at root project and indicates that it should use the alexnet CNN ;usb
: compile the code as usb_alexnet at root project and indicates that it should use the alexnet CNN ;googlenet
: compile the code as googlenet at root project and indicates that it should use the googlenet CNN ;caffenet
: compile the code as caffenet at root project and indicates that it should use the caffenet CNN ;minim
: compile the code as minimale at root project. This binary is only here to test whether the USB cam is working or not ;clean
: remove all existing binaries in the folder.
A WI-FI camera must be connected in order to ensure the code execute correctly. If usb_alexnet is used, then a simple USB camera can be used.
Finally, just use the wanted binary to execute the code. Warnings during execution are expected but do not worry as long as no errors shows up everything should work fine.