Préparation du système
Avant de cmopiler Caffe, il est nécessaire d'installer l'ensemble des bibliothèques système requises. Sous Ubuntu ou Debian, exécutez les commandes suivantes :
sudo apt-get update
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev
sudo apt-get install -y libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install -y --no-install-recommends libboost-all-dev
sudo apt-get install -y libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev
Téléchargement du code source
Récupérez la dernière version stable depuis le dépôt officiel :
git clone https://github.com/BVLC/caffe.git
cd caffe
Configuration de la comiplation
Créez le fichier de configuration à partir du modèle fourni :
cp Makefile.config.example Makefile.config
Éditez Makefile.config pour activer le mode processeur uniquement. Décommentez la ligne suivante :
CPU_ONLY := 1
Résolution des problèmes de chemins HDF5
Lors de la première tentative de compilation, une erreur concernant l'en-tête HDF5 peut survenir. Identifiez l'emplacement des fichiers :
sudo find /usr -name "hdf5.h"
Typiquement, les fichiers se trouvent sous /usr/include/hdf5/serial/ et les bibliothèques sous /usr/lib/x86_64-linux-gnu/hdf5/serial/. Modifiez Makefile.config pour ajouter ces chemins :
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/include/hdf5/serial /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/lib/x86_64-linux-gnu/hdf5/serial /usr/local/lib /usr/lib
Si une erreur liée à Atlas apparaît (cannot find -lcblas ou -latlas), vérifiez l'installation :
sudo apt-get install libatlas-base-dev
Compilation de Caffe
Lancez la compilation avec les commandes suivantes :
make all -j$(nproc)
make test -j$(nproc)
make runtest
Configuration de l'interface Python
Installez pip et le compilateur Fortran nécessaire pour certaines dépendances scientifiques :
sudo apt-get install python-pip gfortran
Installez les dépendances Python listées dans le fichier requirements :
cd python
cat requirements.txt | xargs -n1 pip install
cd ..
En cas d'erreur concernant les en-têtes NumPy :
sudo apt-get install python-numpy
Compilez l'interface Python :
make pycaffe -j$(nproc)
Configuration de l'environnement Python
Ajoutez temporairement Caffe au chemin Python :
import sys
chemin_caffe = "/chemin/vers/votre/caffe"
sys.path.insert(0, chemin_caffe + "/python")
Pour une configuration permanente, créez un fichier dans le répertoire des packages Python :
cd /usr/lib/python2.7/dist-packages
sudo sh -c 'echo "/chemin/vers/caffe/python" > caffe.pth'
Si l'importation échoue avec No module named skimage.io :
sudo apt-get install python-skimage
En cas d'erreur avec protobuf :
sudo apt-get install python-protobuf
Vérification avec le jeu de données MNIST
Téléchargez et préparez les données :
./data/mnist/get_mnist.sh
./examples/mnist/create_mnist.sh
Modifiez la configuration du solveur pour utiliser le processeur. Dans ./examples/mnist/lenet_solver.prototxt, remplacez :
solver_mode: GPU
par :
solver_mode: CPU
Lancez l'entraînement :
time ./examples/mnist/train_lenet.sh
Le modèle entraîné sera sauvegardé sous :
./examples/mnist/lenet_iter_10000.caffemodel