Sök…


Anmärkningar

Caffe är ett bibliotek skriven i C ++, för att underlätta experiment med och användning av Convolutional Neural Networks (CNN). Caffe har utvecklats av Berkeley Vision and Learning Center (BVLC).

Caffe är faktiskt en förkortning som refererar till "Convolutional Architectures for Fast Feature Extraction". Den här akronymen omsluter en viktig räckvidd för biblioteket. Caffe i form av ett bibliotek erbjuder en generell programmeringsram / arkitektur som kan användas för att utföra effektiv utbildning och testning av CNN. "Effektivitet" är ett viktigt kännetecken för caffe, och står som ett huvuddesignmål för Caffe.

Caffe är ett bibliotek med öppen källkod som släpps under licensen BSD 2 Clause.

Caffe upprätthålls på GitHub

Caffe kan användas för att:

  • Träna och testa flera CNN-arkitekturer effektivt, särskilt alla arkitekturer som kan representeras som en riktad acyklisk graf (DAG).
  • Använd flera GPU: er (upp till 4) för utbildning och testning. Det rekommenderas att alla GPU: er ska vara av samma typ. Annars är prestandan begränsad av gränserna för den långsammaste GPU i systemet. Till exempel, i fallet med TitanX och GTX 980, kommer prestandan att begränsas av den senare. Blandning av flera arkitekturer stöds inte, t.ex. Kepler och Fermi 3 .

Caffe har skrivits efter effektiva OOP-principer (Object Oriented Programming).

En bra utgångspunkt för att inleda en introduktion till caffe är att få en fågelperspektiv över hur caffe fungerar genom sina grundläggande objekt.

versioner

Version Utgivningsdatum
1,0 2017/04/19

Installation och installation

Ubuntu

Nedan följer detaljerade instruktioner för att installera Caffe, pycaffe och dess beroenden på Ubuntu 14.04 x64 eller 14.10 x64.

Kör följande skript, t.ex. "bash compile_caffe_ubuntu_14.sh" (~ 30 till 60 minuter på en ny 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

I slutet måste du köra "source ~ / .bash_profile" manuellt eller starta ett nytt skal för att kunna göra "python import caffe".

Aktivera multithreading med Caffe

Caffe kan köras på flera kärnor. Ett sätt är att göra det möjligt för multithreading med Caffe att använda OpenBLAS istället för standard ATLAS. För att göra det kan du följa dessa tre steg:

  1. sudo apt-get install -y libopenblas-dev
  2. Innan du sammanställer Caffe, redigera Makefile.config , ersätt BLAS := atlas med BLAS := open
  3. Efter att ha sammanställt Caffe, kör export OPENBLAS_NUM_THREADS=4 kommer Caffe att använda 4 kärnor.

Regleringsförlust (viktnedgång) i Caffe

I lösningsfilen kan vi ställa in en global förlustförlust med weight_decay och regularization_type .

I många fall vill vi ha olika viktförfallshastigheter för olika lager. Detta kan göras genom att ställa decay_mult alternativet decay_mult för varje lager i nätverksdefinitionsfilen, där decay_mult är multiplikatorn för den globala viktminskningsfrekvensen, så den faktiska viktnedbrytningshastigheten som används för ett lager är decay_mult*weight_decay .

Exempelvis definierar följande ett konvolutionslager med INGEN viktförfall oavsett alternativ i lösningsfilen.

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

Se den här tråden för mer information.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow