CentOSにCaffeをインストール

僕の場合、RedHatが前提の業務用アプリの検証をするため、Caffeを検証するのはRedHat互換のCentOSのサーバーであることが都合よい。
そこでCaffeをCentOSにインストールしてみた。
結論から言うと、CentOS7へのインストールはとても苦労するができる。
苦労したくない人はUbuntu14.04以降にインストールをお勧めする。

#CentOS 6.6にCaffeをインストールした
結局インストール出来なかった。
さんざん苦労した挙句、Caffeのmake runtestを実行した時エラーが出る。

glogのエラーなのでglogを最新バージョンにしようとするがそのインストールに失敗する。どうにもならなかった。

#CentOS 7.0にCaffeをインストールした
[Caffeインストールドキュメント](http://caffe.berkeleyvision.org/installation.html)が難解なので、とても苦労したが何とかインストール出来た。
以下にその方法を書こうと思う。

##必須ライブラリのインストール
[Caffeインストールドキュメント](http://caffe.berkeleyvision.org/installation.html)から辿れる[CentOS用Caffeインストールドキュメント](http://caffe.berkeleyvision.org/install_yum.html)によるとはじめに依存ライブラリをインストールするように指示しているが、リポジトリを追加しないとライブラリが見つからない。

以下のコマンドでリボジトリをインストールする。

```
# sudo yum install epel-release
```

その後インストールドキュメントに従って、

```
# sudo yum install protobuf-devel leveldb-devel snappy-devel opencv-devel boost-devel hdf5-devel
# sudo yum install gflags-devel glog-devel lmdb-devel
```
と行う。

##BLASなどのインストール
Caffeインストールドキュメントが分かりにくく、何をインストールするかいまいちピンと来ないが、インストールドキュメントとCentOS用インストールドキュメントを見ていくと
・GPUを使うならば 「CUDA」を
・BLASは「ATLAS」「MKL」「OpenBLAS」のどれかを
インストールするらしい。

私はGPUは使わないので「CUDA」はインストールしていない。BLASは「ATLAS」をインストールしている。

【コマンド例】

```
# sudo yum install atlas*
```


##Caffe本体
Caffeインストールドキュメントに、Caffe本体のインストール方法が書いてない。方法はいくつかあるらしいが私はzipをダウンロードしてunzipで展開。

【ダウンロードURL】
https://github.com/BVLC/caffe/archive/master.zip

##Pythonのインストール
Caffeインストールドキュメントによると、PythonはANACONDAがおすすめらしいので、[https://www.continuum.io/downloads](https://www.continuum.io/downloads)よりダウンロードしてインストールする。

上記リンクに行き、「Download for Linux」タブをクリック、Python2.7 Versionの64bit　または　32bit　のシステムに合った版をダウンロード。

```
# bash Anaconda2-4.2.0-Linux-x86_64.sh 
```
でインストーラーを起動させる。

その後、必須ライブラリをインストールしていく。必須ライブラリのインストールは、まず必須ライブラリのための依存ライブラリをインストールし、その後必須ライブラリをインストールする。
必須ライブラリのインストールコマンドを実行させるために

- python-pip

が必要、さらに必須ライブラリのインストール時に依存ライブラリがないとエラーを起こすので、以下の依存ライブラリを予めインストールする。

- gcc 
- gcc-c++ 
- gcc-gfortran
- libgfortran
- libpng-devel
- freetype-devel
- libjpeg-devel
- zlib-devel

【コマンド】

```
# sudo yum install gcc gcc-c++ gcc-gfortran libgfortran libpng-devel freetype-devel libjpeg-devel zlib-devel python-devel python-pip

```

続いて、PythonでCaffeを動かす上での必須ライブラリ群をインストールする。
ここはcaffeのインストールドキュメント通り

```
# cd ~/caffe/python/
# for req in $(cat requirements.txt); do sudo pip install $req; done
```

上記で　~/caffe　というのは、caffe本体を展開したディレクトリなので、違う名前のディレクトリに展開した場合は注意が必要。
私は、caffe-masterというディレクトリ配下に展開したのでてこずった。

最後にパスを通す。これは実際にcaffeを起動させるユーザーで以下のコマンドを実行する。

```
$ export PYTHONPATH=[caffe本体展開ディレクトリ]/python:$PYTHONPATH
```

次回ログイン時に自動実行されるように、.bashrc　にも上記コマンドを記述しておく。

##makefile.config作成

caffe本体を展開したディレクトリ配下にある　makefile.config.example をmakefile.config　という名前にコピーにして以下のように編集する。

GPUを使わないなら、

```
#CPU_ONLY := 1
```
を以下のようにアンコメントする。

```
CPU_ONLY := 1
```

CUDAを使わないなら、以下の文字から始まる行を、

```
CUDA_DIR.....
CUDA_ARCH.....
```
以下のようにコメントアウトする。

```
#CUDA_DIR.....
#CUDA_ARCH.....
```
BLASのインクルードファイルとライブラリのパス指定がディフォルトではコメントアウトされているので、アンコメントして、実際のパスを調べて記載する。以下はatlasをディフォルトでインストールした場合。（Ubuntuの場合このパス指定が必要ない。）

```
BLAS_INCLUDE := /usr/include/atlas
BLAS_LIB := /usr/lib64/atlas
```


##make
このままmakeを行うと、atlas関連のライブラリがないというエラーが出るので、以下のコマンドで、libtatlas.so　を　libcblas.so　と読み替えする。

```
# cd /usr/lib64/atlas && ln -s libtatlas.so libcblas.so
```

caffeを動かすユーザでログイン。caffe本体を展開したディレクトリに移動して、caffeのmekeを行っていく。

```
$ make all
$ make test
$ make runtest
```

続いて、pycaffeのmake

```
$ make pycaffe
$ python
>>> import caffe
```

これで完了。

#ubuntuでもインストールしてみた
ubuntu14.04でもインストールしたが、その時は本当に楽にインストール出来た。

- リポジトリの登録の必要なし。
- makefile.configの編集が「#CPU_ONLY := 1」のアンコメントのみでよし。
- lnコマンド実行の必要なし。
- インストールドキュメントの指示以外で追加でインストールする依存ライブラリは、「python-dev python-pip python-numpy python-skimage gfortran」のみ。

CentOSだと苦労するというイメージを持った。