Commencer avec le café
Installation et configuration
Ubuntu
Vous trouverez ci-dessous des instructions détaillées pour installer Caffe, pycaffe ainsi que ses dépendances, sur Ubuntu 14.04 x64 ou 14.10 x64.
Exécutez le script suivant, par ex. “bash compile_caffe_ubuntu_14.sh” (~30 à 60 minutes sur un nouvel Ubuntu).
# This script installs Caffe and pycaffe.
# CPU only, multi-threaded Caffe.
# Usage:
# 0. Set up here how many cores you want to use during the installation:
# By default Caffe will use all these cores.
NUMBER_OF_CORES=4
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev
sudo apt-get install -y libopencv-dev libhdf5-serial-dev
sudo apt-get install -y --no-install-recommends libboost-all-dev
sudo apt-get install -y libatlas-base-dev
sudo apt-get install -y python-dev
sudo apt-get install -y python-pip git
# For Ubuntu 14.04
sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler
# Install LMDB
git clone https://github.com/LMDB/lmdb.git
cd lmdb/libraries/liblmdb
sudo make
sudo make install
# More pre-requisites
sudo apt-get install -y cmake unzip doxygen
sudo apt-get install -y protobuf-compiler
sudo apt-get install -y libffi-dev python-pip python-dev build-essential
sudo pip install lmdb
sudo pip install numpy
sudo apt-get install -y python-numpy
sudo apt-get install -y gfortran # required by scipy
sudo pip install scipy # required by scikit-image
sudo apt-get install -y python-scipy # in case pip failed
sudo apt-get install -y python-nose
sudo pip install scikit-image # to fix https://github.com/BVLC/caffe/issues/50
# Get caffe (http://caffe.berkeleyvision.org/installation.html#compilation)
cd
mkdir caffe
cd caffe
wget https://github.com/BVLC/caffe/archive/master.zip
unzip -o master.zip
cd caffe-master
# Prepare Python binding (pycaffe)
cd python
for req in $(cat requirements.txt); do sudo pip install $req; done
# to be able to call "import caffe" from Python after reboot:
echo "export PYTHONPATH=$(pwd):$PYTHONPATH " >> ~/.bash_profile
source ~/.bash_profile # Update shell
cd ..
# Compile caffe and pycaffe
cp Makefile.config.example Makefile.config
sed -i '8s/.*/CPU_ONLY := 1/' Makefile.config # Line 8: CPU only
sudo apt-get install -y libopenblas-dev
sed -i '33s/.*/BLAS := open/' Makefile.config # Line 33: to use OpenBLAS
# Note that if one day the Makefile.config changes and these line numbers may change
echo "export OPENBLAS_NUM_THREADS=($NUMBER_OF_CORES)" >> ~/.bash_profile
mkdir build
cd build
cmake ..
cd ..
make all -j$NUMBER_OF_CORES # 4 is the number of parallel threads for compilation: typically equal to number of physical cores
make pycaffe -j$NUMBER_OF_CORES
make test
make runtest
#make matcaffe
make distribute
# Afew few more dependencies for pycaffe
sudo pip install pydot
sudo apt-get install -y graphviz
sudo pip install scikit-learn
À la fin, vous devez exécuter “source ~/.bash_profile” manuellement ou démarrer un nouveau shell pour pouvoir faire “python import caffe”.
Activer le multithreading avec Caffe
Caffe peut fonctionner sur plusieurs cœurs. Une façon consiste à activer le multithreading avec Caffe pour utiliser OpenBLAS au lieu de l’ATLAS par défaut. Pour ce faire, vous pouvez suivre ces trois étapes :
sudo apt-get install -y libopenblas-dev
- Avant de compiler Caffe, éditez
Makefile.config
, remplacezBLAS := atlas
parBLAS := ouvert
- Après avoir compilé Caffe, l’exécution de
export OPENBLAS_NUM_THREADS=4
forcera Caffe à utiliser 4 cœurs.
Perte de régularisation (perte de poids) à Caffe
Dans le fichier [solver][1], nous pouvons définir une perte de régularisation globale à l’aide des options weight_decay
et regularization_type
.
Dans de nombreux cas, nous voulons des taux de décomposition de poids différents pour différentes couches. Cela peut être fait en définissant l’option decay_mult
pour chaque couche dans le fichier de définition de réseau, où decay_mult
est le multiplicateur du taux de décroissance du poids global, de sorte que le taux de décroissance du poids réel appliqué pour une couche est decay_mult * weight_decay
.
Par exemple, ce qui suit définit une couche convolutive sans déclin de poids quelles que soient les options du fichier de solveur.
layer {
name: "Convolution1"
type: "Convolution"
bottom: "data"
top: "Convolution1"
param {
decay_mult: 0
}
convolution_param {
num_output: 32
pad: 0
kernel_size: 3
stride: 1
weight_filler {
type: "xavier"
}
}
}
Voir [ce fil] [2] pour plus d’informations.
[1] : http://caffe.berkeleyvision.org/tutorial/solver.html [2] : http://stackoverflow.com/q/32177764/1714410