caffe Samouczek
Pierwsze kroki z caffe
Szukaj…
Uwagi
Caffe to biblioteka napisana w C ++, aby ułatwić eksperymentowanie z wykorzystaniem sieci neuronowych konwergentnych (CNN). Caffe został opracowany przez Berkeley Vision and Learning Centre (BVLC).
Caffe to skrót od „Convolutional Architectures for Fast Extraction Feature”. Akronim ten obejmuje ważny zakres biblioteki. Caffe w formie biblioteki oferuje ogólne ramy programistyczne / architekturę, których można użyć do wydajnego szkolenia i testowania CNN. „Wydajność” jest główną cechą charakterystyczną caffe i stanowi główny cel projektu Caffe.
Caffe to biblioteka typu open source wydana na licencji BSD 2 Clause.
Caffe jest utrzymywane na GitHub
Caffe można wykorzystać do:
- Wydajnie trenuj i testuj wiele architektur CNN, w szczególności każdą architekturę, którą można przedstawić jako ukierunkowany wykres acykliczny (DAG).
- Wykorzystaj wiele procesorów graficznych (do 4) do szkolenia i testowania. Zaleca się, aby wszystkie procesory graficzne były tego samego typu. W przeciwnym razie wydajność jest ograniczona limitami najwolniejszego procesora graficznego w systemie. Na przykład w przypadku TitanX i GTX 980 wydajność będzie ograniczona przez ten ostatni. Mieszanie wielu architektur nie jest obsługiwane, np. Kepler i Fermi 3 .
Caffe zostało napisane zgodnie z zasadami efektywnego programowania obiektowego (OOP).
Dobrym punktem wyjścia do wprowadzenia do caffe jest uzyskanie widoku z lotu ptaka na to, jak działa caffe poprzez jego podstawowe obiekty.
Wersje
| Wersja | Data wydania |
|---|---|
| 1.0 | 19.04.2017 |
Instalacja i konfiguracja
Ubuntu
Poniżej znajdują się szczegółowe instrukcje instalacji Caffe, pycaffe oraz jego zależności na Ubuntu 14.04 x64 lub 14.10 x64.
Wykonaj następujący skrypt, np. „Bash compile_caffe_ubuntu_14.sh” (~ 30 do 60 minut na nowym 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
Na koniec musisz ręcznie uruchomić „source ~ / .bash_profile” ręcznie lub uruchomić nową powłokę, aby móc wykonać „caffe import python”.
Włącz wielowątkowość w Caffe
Caffe może działać na wielu rdzeniach. Jednym ze sposobów jest włączenie wielowątkowości w Caffe, aby używać OpenBLAS zamiast domyślnego ATLAS. Aby to zrobić, możesz wykonać następujące trzy kroki:
-
sudo apt-get install -y libopenblas-dev - Przed skompilowaniem Caffe edytuj
Makefile.config, zamieńBLAS := atlasnaBLAS := open - Po skompilowaniu Caffe uruchomienie
export OPENBLAS_NUM_THREADS=4spowoduje, że Caffe będzie używać 4 rdzeni.
Utrata regularyzacji (spadek masy ciała) w Caffe
W pliku solvera możemy ustawić globalną stratę regularyzacji za pomocą opcji weight_decay i regularization_type .
W wielu przypadkach chcemy różnych szybkości zaniku masy dla różnych warstw. Można to zrobić, ustawiając opcję decay_mult dla każdej warstwy w pliku definicji sieci, gdzie decay_mult to mnożnik globalnej szybkości zaniku masy, więc rzeczywista szybkość zaniku masy zastosowana dla jednej warstwy to decay_mult*weight_decay .
Na przykład poniżej zdefiniowano warstwę splotową bez zaniku masy bez względu na opcje w pliku solvera.
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"
}
}
}
Zobacz ten wątek, aby uzyskać więcej informacji.