サーチ…


備考

Caffeは、畳み込みニューラルネットワーク(CNN)の実験と使用を容易にするために、C ++で書かれたライブラリです。 Caffeは、Berkeley Vision and Learning Center(BVLC)によって開発されました。

Caffeは実際には「高速フィーチャ抽出のための畳み込みアーキテクチャ」を指す略語です。この頭字語は、ライブラリの重要な範囲をカプセル化します。ライブラリの形式のCaffeは、CNNの効率的なトレーニングとテストの実行に使用できる一般的なプログラミングフレームワーク/アーキテクチャを提供します。 「効率性」は、Caffeの主要な特徴であり、Caffeの主要な設計目標である。

Caffeは、 BSD 2 Clauseライセンスで公開されているオープンソースライブラリです。

CaffeはGitHubで管理されています

Caffeは次の目的に使用できます:

  • 効率的に複数のCNNアーキテクチャ、特に指向性非循環グラフ(DAG)として表現できるアーキテクチャをトレーニングしてテストします。
  • トレーニングとテストには、複数のGPU(最大4個)を使用します。すべてのGPUが同じタイプであることが推奨されます。それ以外の場合、パフォーマンスはシステム内の最も遅いGPUの制限によって制限されます。たとえば、TitanXとGTX 980の場合、パフォーマンスは後者によって制限されます。複数のアーキテクチャを混在させることはできません(例:Kepler and Fermi 3)

Caffeは効率的なオブジェクト指向プログラミング(OOP)の原則に従って書かれています。

caffeの導入を開始するのに適した出発点は、Caffeがその基本的な目的をどのように処理するかを俯瞰することです。

バージョン

バージョン発売日
1.0 2017-04-19

インストールとセットアップ

Ubuntu

以下に、Ubuntu 14.04 x64または14.10 x64で、Caffe、pycaffe、およびその依存関係をインストールするための詳細な手順を示します。

次のスクリプトを実行します。たとえば、 "bash compile_caffe_ubuntu_14.sh"(新しいUbuntuでは30〜60分)です。

# 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

最後に、 "source〜/ .bash_profile"を手動で実行するか、新しいシェルを起動して 'python import caffe'を実行する必要があります。

Caffeでマルチスレッドを有効にする

Caffeは複数のコアで実行できます。 1つの方法は、デフォルトのATLASではなくOpenBLASを使用するCaffeを使用したマルチスレッドを可能にすることです。これを行うには、次の3つの手順に従います。

  1. sudo apt-get install -y libopenblas-dev
  2. Caffeをコンパイルする前にMakefile.config編集し、 BLAS := atlasBLAS := open
  3. Caffeをコンパイルした後、 export OPENBLAS_NUM_THREADS=4を実行すると、Caffeは4つのコアを使用します。

Caffeの整理損失(減量)

ソルバーファイルでは、 weight_decayおよびregularization_typeオプションを使用してグローバル正則化損失を設定できます。

多くの場合、異なる層に対して異なる重量減衰率が必要です。これは、ネットワーク定義ファイル内の各レイヤーのdecay_multオプションを設定することによって行うことができます。ここで、 decay_multはグローバルな重量減衰レートの乗数であるため、1つのレイヤーに適用される実際の重量減衰レートはdecay_mult*weight_decayです。

たとえば、次の例では、ソルバーファイルのオプションに関係なく、重量減衰がない畳み込みレイヤーを定義しています。

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

詳細については、 このスレッドを参照してください。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow