Ricerca…


Osservazioni

Caffe è una libreria scritta in C ++, per facilitare la sperimentazione e l'uso delle Reti Neurali Convolutali (CNN). Caffe è stato sviluppato da Berkeley Vision and Learning Center (BVLC).

Caffe è in realtà un'abbreviazione che si riferisce a "Convolutional Architectures for Fast Feature Extraction". Questo acronimo racchiude un ambito importante della libreria. Il Caffe sotto forma di biblioteca offre un quadro generale di programmazione / architettura che può essere utilizzato per eseguire un addestramento e un test efficienti delle CNN. "Efficienza" è un segno distintivo del caffè e si pone come obiettivo principale del design di Caffe.

Caffe è una libreria open source rilasciata con la licenza BSD 2 Clause.

Il caffè viene mantenuto su GitHub

Il caffè può essere usato per:

  • Formare e testare efficientemente più architetture CNN, in particolare qualsiasi architettura che possa essere rappresentata come un grafico aciclico diretto (DAG).
  • Utilizza più GPU (fino a 4) per addestramento e test. Si raccomanda che tutte le GPU debbano essere dello stesso tipo. Altrimenti, le prestazioni sono limitate dai limiti della GPU più lenta nel sistema. Ad esempio, nel caso di TitanX e GTX 980, la performance sarà limitata da quest'ultimo. La miscelazione di più architetture non è supportata, ad esempio Kepler e Fermi 3 .

Caffe è stato scritto seguendo i principi dell'OOP (Object Oriented Programming).

Un buon punto di partenza per iniziare un'introduzione al caffe è avere una visione a volo d'uccello di come il caffe funziona attraverso i suoi oggetti fondamentali.

Versioni

Versione Data di rilascio
1.0 2017/04/19

Installazione e configurazione

Ubuntu

Di seguito sono riportate le istruzioni dettagliate per installare Caffe, pycaffe e le sue dipendenze, su Ubuntu 14.04 x64 o 14.10 x64.

Esegui il seguente script, ad esempio "bash compile_caffe_ubuntu_14.sh" (~ 30 a 60 minuti su una nuova 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

Alla fine, è necessario eseguire "source ~ / .bash_profile" manualmente o avviare una nuova shell per poter eseguire "python import caffe".

Abilita il multithreading con Caffe

Caffe può funzionare su più core. Un modo è quello di abilitare il multithreading con Caffe per usare OpenBLAS invece del default ATLAS. Per fare ciò, è possibile seguire questi tre passaggi:

  1. sudo apt-get install -y libopenblas-dev
  2. Prima di compilare Caffe, modifica Makefile.config , sostituisci BLAS := atlas con BLAS := open
  3. Dopo aver compilato Caffe, l'esecuzione export OPENBLAS_NUM_THREADS=4 indurrà Caffe a utilizzare 4 core.

Perdita di regolarizzazione (decadimento del peso) in Caffe

Nel file del risolutore , possiamo impostare una perdita di regolarizzazione globale usando le opzioni weight_decay e regularization_type .

In molti casi desideriamo diverse percentuali di decadimento del peso per diversi strati. Ciò può essere fatto impostando l'opzione decay_mult per ogni livello nel file di definizione della rete, dove decay_mult è il moltiplicatore sulla velocità di decadimento del peso globale, quindi la decadenza del peso reale applicata per un livello è decay_mult*weight_decay .

Ad esempio, il seguente definisce uno strato convoluzionale senza decadimento del peso, indipendentemente dalle opzioni nel file del risolutore.

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"
    }
  }
}

Vedi questa discussione per maggiori informazioni.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow