Skip to content

Caffe:Install

Caffe 설치방법을 정리한다.

CUDA Version

참고로 Ubuntu 14.04 설치시 사용한 CUDA버전은 아래와 같다.

  • CUDA 7.5: cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb
  • cuDNN v4 (cuda7.0): cudnn-7.0-linux-x64-v4.0-prod.tgz

How to install

Caffe 설치를 위해 필요한 라이브러리를 아래와 같이 설치한다.

RHEL

$ sudo yum install -y openblas-devel
##If use Atlas:
##sudo yum install -y atlas-devel
$ sudo yum install -y protobuf-devel gflags-devel
##Not found:
##sudo yum install -y glog-devel
$ sudo yum install -y hdf5-devel leveldb-devel snappy-devel lmdb-devel

Mac OSX

brew install -vd snappy leveldb gflags glog szip lmdb
# need the homebrew science source for OpenCV and hdf5
brew tap homebrew/science
brew install hdf5 opencv

Ubuntu

## General dependencies:
$ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler

## Boost Library:
$ sudo apt-get install --no-install-recommends libboost-all-dev

## BLAS ATLAS Library:
$ sudo apt-get install libatlas-base-dev
## or BLAS OpenBLAS Library:
$ sudo apt-get install libopenblas-dev

## Python:
$ sudo apt-get install python-dev

## Remaining dependencies, 14.04:
$ sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev

CUDA의 cuDNN을 사용하는 컴파일 방법은 아래와 같다.

$ cmake -DUSE_CUDNN=1 -G "Unix Makefiles"

(CPU만 사용할 경우 CPU_ONLY=1옵션을 추가하면 된다.)

cuDNN을 사용할 경우 중요한 점은 cudnn.hlibcudnn.so파일 등을 CUDA의 include, lib64 디렉터리에 함께 포함해야 한다.

참고로 CentOS6에서 컴파일에 성공한 명령은 아래와 같다.

$ cmake -DPYTHON_LIBRARY=/home/your/local/lib/libpython2.7.so -DPYTHON_INCLUDE_DIR=/home/your/local/include/python2.7 -DCMAKE_CXX_COMPILER=g++ -DCMAKE_CXX_FLAGS=-static-libstdc++ -DBLAS=Open -DUSE_CUDNN=1 -G "Unix Makefiles"

(glog의 경우 yum에 존재하지 않아, 직접 설치하였다)

Windows

Windows/MinGW용으로 변환할 경우 코드를 수정해야 하는 부분은 signal_handler.cpp가 첫 번째 이다. signal_handler.cpp 파일을 확인해 보자.

Python caffe

numpy와 boost.python이 필요하며, 그 밖의 종속성은 아래와 같이 설치할 수 있다.

## in the caffe/python directory.
$ for req in $(cat requirements.txt); do pip install $req; done

컴파일은 아래의 명령어로 진행할 수 있다. 1

$ make pycaffe

Use the virtualenv

덧붙여, virtualenv를 사용할 경우 아래와 같이 Python경로를 지정해야 한다.

$ cmake -DBLAS=Open \
      -DCPU_ONLY=ON \
      -DCMAKE_BUILD_TYPE=Debug \
      -DBUILD_SHARED_LIBS=ON \
      -DCMAKE_INSTALL_PREFIX=/usr/local \
      -DPYTHON_LIBRARY=/Users/your/.pyenv/versions/your-pyenv-2.7.11/lib/python2.7/config/libpython2.7.a \
      -DPYTHON_INCLUDE_DIR=/Users/your/.pyenv/versions/your-pyenv-2.7.11/include/python2.7 \
      .

python 3.5 and pyenv

Then compile the Caffe and run the tests

$ make -j 4 all
$ make -j 4 runtest

Results:

$ build/tools/caffe time –model=models/bvlc_alexnet/deploy.prototxt –gpu=0

Remaining dependencies, recent OS

$ sudo yum install gflags-devel glog-devel lmdb-devel

Remaining dependencies, if not found

## glog
$ wget https://google-glog.googlecode.com/files/glog-0.3.3.tar.gz
$ tar zxvf glog-0.3.3.tar.gz
$ cd glog-0.3.3
$ ./configure
$ make && make install

## gflags
$ wget https://github.com/schuhschuh/gflags/archive/master.zip
$ unzip master.zip
$ cd gflags-master
$ mkdir build && cd build
$ export CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1
$ make && make install

## lmdb
$ git clone https://github.com/LMDB/lmdb
$ cd lmdb/libraries/liblmdb
$ make && make install

Dockerfile version

Ubuntu Dockerfile에 설치한 Caffe는 아래와 같다.

FROM ubuntu:14.04
MAINTAINER your <[email protected]>

RUN apt-get update -y
RUN apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
RUN apt-get install -y --no-install-recommends libboost-all-dev
RUN apt-get install -y libatlas-base-dev libopenblas-dev
RUN apt-get install -y python-dev
RUN apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev
RUN apt-get install -y git cmake

RUN git clone https://github.com/BVLC/caffe.git
WORKDIR /caffe

RUN cmake -DCMAKE_CXX_FLAGS=-static-libstdc++ -DBLAS=Open -G "Unix Makefiles"
RUN make
RUN make install

CMD ["/bin/bash"]

Troubleshooting

Not found vecLib

MacOSX에서는 BLAS라이브러리를 vecLib로 강제 지정되어 있다.

다른 라이브러리를 사용하기 위하여 cmake/Dependencies.cmake파일에 있는 BLAS 선택 코드의 if (NOT APPLE)조건을 약간 수정해야 한다.

See also

Favorite site

References


  1. 덧붙이자면 Matlab은 make matcaffe을 사용하면 된다.