Caffe에서 R-CNN을 사용하려면 rbgirshick/py-faster-rcnn을 이용해야 한다.
그러나 1년전에 올라온 커밋 이후로 갱신되지 않았기에 수많은 삽질 끝에 설치를 완료할 수 있었다.
다시 이 고생을 하지 않기 위해 이 글을 올린다.
Ubuntu 16.04(64bit), CUDA 8.0, cuDNN 5.1은 설치 과정은 링크된 글을 통해 설치하면된다.
참고로 Caffe 최신버전과 py-faster-rcnn을 merge하여 사용하기 때문에 기존에 설치된 Caffe가 있다면 Ubuntu를 재설치 하길 권장한다.
Caffe General dependencies
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y build-essential cmake git pkg-config
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install -y libatlas-base-dev
sudo apt-get install -y --no-install-recommends libboost-all-dev
sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev
# (Python general)
sudo apt-get install -y python-pip
# (Python 2.7 development files)
sudo apt-get install -y python-dev
sudo apt-get install -y python-numpy python-scipy
# Make sure to clone with --recursive
cd ~
git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git
cd ~/py-faster-rcnn/caffe-fast-rcnn
git remote add -f caffe https://github.com/BVLC/caffe.git
git merge -X theirs caffe/master
# 이렇게 하면 nano에디터가 켜지면서 정보를 입력해 달라고 하는데 그냥 Ctrl + X를 눌러서 종료해주면 된다.
gedit include/caffe/layers/python_layer.hpp
# Remove
self_.attr("phase") = static_cast<int>(this->phase_);
cd ~/py-faster-rcnn/caffe-faster-rcnn/python
for req in $(cat requirements.txt); do sudo -H pip install $req --upgrade; done
OpenCV Install
이후 Caffe를 build하기 전에 OpenCV를 설치해야한다. git master branch로 3.2.0-dev를 설치한다.
# Build tools:
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
cd ~
git clone https://github.com/opencv/opencv.git
cd opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D WITH_CUDA=ON \
-D WITH_CUBLAS=1 \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=ON ..
make -j8
sudo make -j8 install
sudo ldconfig
# Check Install
$ python
>>> import cv2
>>> cv2.__version__
'3.2.0-dev'
py-faster-rcnn Install
이제 py-faster-rcnn을 설치할 차례이다.
cd ~/py-faster-rcnn/lib
make -j8
cd ~/py-faster-rcnn/caffe-faster-rcnn
cp Makefile.config.example Makefile.config
gedit Makefile.config
# 설정 변경
USE_CUDNN := 1
OPENCV_VERSION := 3
CUDA_DIR := /usr/local/cuda 를
CUDA_DIR := /usr/local/cuda-8.0 로 변경해주고
PYTHON_INCLUDE := /usr/include/python2.7 \
/usr/lib/python2.7/dist-packages/numpy/core/include \
/usr/local/lib/python2.7/dist-packages/numpy/core/include
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
WITH_PYTHON_LAYER := 1
USE_PKG_CONFIG := 1
Makefile도 다음과 같이 수정해준다.
cd ~/py-faster-rcnn/caffe-faster-rcnn
gedit Makefile
NVCCFLAGS += -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
이 내용을 찾아서
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
이렇게 변경 해주면 된다.
이제 build를 해준다.
mkdir build
cd build
cmake ..
make -j8 all
make -j8 pycaffe
make -j8 install
# Caffe Path setting
gedit ~/.bashrc
export CAFFE_ROOT=~/py-faster-rcnn/caffe-fast-rcnn
export PYTHONPATH=~/py-faster-rcnn/caffe-fast-rcnn/python:$PYTHONPATH
source ~/.bashrc
# Check Install
$ python
>>> import caffe
>>> caffe.__version__
sudo -H pip install easydict
sudo apt-get install python-gi-cairo python-tk
mkdir ~/py-faster-rcnn/data/faster_rcnn_models
sh ~/py-faster-rcnn/data/scripts/fetch_faster_rcnn_models.sh
python ~/py-faster-rcnn/tools/demo.py
demo.py가 정상적으로 실행되면 설치가 완료된다.