IT shoveler

Caffe를 위한 Ubuntu 16.04 간편 세팅

작성일 작성자 최혁두

우분투를 설치하고 나면 개발 환경을 만들기 위해 이런저런 라이브러리를 빌드하고 설치하는 데만 하루가 간다.

이 글은 그 과정을 조금? 줄여보고자 쓰는 것이다.

Ubuntu 16.04를 설치하고 나서 여러가지를 설치하는데 소스에서 빌드하는 것도 있고 apt install로 간단히 설치하는 것도 있다.

중요한 라이브러리는 소스로 빌드하고 거기에 필요한 잡다한 dependency는 apt install로 설치한다.

나의 우분투 세팅 순서는 다음과 같다.

  1. (NVIDIA GPU 사용 시) NVIDIA 드라이버와 CUDA, CUDNN
  2. Qt 5.2.1
  3. Eigen
  4. Openblas
  5. Protobuf
  6. Opencv
  7. Caffe

이 글에서는 위의 설치 과정에서 필요한 패키지들을 알려주고 빌드 결과로 설치된 라이브러리 파일들을 구글 드라이브 링크로 제공한다.

그러면 소스받아서 빌드 할 필요 없이 apt install로 dependency들을 설치해주고 다운로드 받은 라이브러리 파일들을 사용하기만 하면 된다.

빌드된 파일들은 여기(다운로드)서 받는다. 받으면서 아래 글에 있는 apt install만 다 실행시켜 주면 된다.

소스 출처와 빌드 방법도 있지만 내가 기록할려고 적은 거고 바이너리만 쓸 사람은 무시해도 된다.


모든 것을 시작하기 전에 우분투를 설치했다면 먼저 아래 명령을 실행한다.

sudo apt update

sudo apt upgrade

sudo apt install build-essential git cmake cmake-gui


1. GPU 관련

이런 건 그때그때 공식 홈페이지에서 최신 버전을 받는 것이 좋다.

NVIDIA driver download, cuda download, cudnn download 라고 각각 구글링하면 받을 수 있으므로 링크 따윈 생략한다.

cuda나 cudnn은 NVIDIA 계정이 필요한데 없으면 당장 만드는 것이 좋다.

다운 받았다면 Ctrl+Alt+F1을 눌러 콘솔 화면으로 들어가 로그인을 한다. (Ctrl+Alt+F7을 누르면 GUI화면으로 돌아올 수 있다.)

sudo service lightdm stop

cd Downloads

chmod a+x *

sudo ./NVIDIA~~.run

sudo ./cuda~~.run

# cuda 설치 시 드라이버도 설치할까? 물어보면 No라고 한다.

sudo reboot

# 다시 켜고 부팅해서 cuda 경로 설정

sudo gedit ~/.profile

# 아래 두 줄 붙여넣기

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

# cudnn 압축을 풀고

sudo cp ~/Downloads/cuda/include/cudnn.h /usr/local/cuda/include

sudo cp ~/Downloads/cuda/lib64/* /usr/local/cuda/lib64


2. Qt 5.2.1

기본적인 C++ GUI 등과 관련된 라이브러리와 QtCreator라는 IDE를 포함한다. OpenCV 빌드 시 Qt 라이브러리 경로 설정이 필요하다.

이것도 qt 5.2.1 이라고 구글링하면 다운로드 할 수 있는 아카이브가 맨 위에 뜬다. 리눅스 버전을 받아 설치하면 된다.

Qt 최신 버전이 아닌 5.2.1을 쓰는 이유는 IDE인 QtCreator에서 자동완성 기능이 빠르기 때문이다.

이후 버전을 써보면 라이브러리를 많이 인클루드 했을 때 자동완성 기능이 현저하게 느려지는 것을 볼 수 있다.

암튼 다운 받으면 GUI 인스톨러 이므로 설치는 쉽다.

나는 설치경로를 $HOME/Libarary/Qt5.2.1로 지정했다.

a. dependency 설치

sudo apt install libgl1-mesa-dev libgstreamer-plugins-base0.10-dev


3. Eigen 3.3.1

C++ 수학 라이브러리이며 OpenCV에 3rd party로도 들어간다.

Caffe에는 필요 없지만 기본적인 matrix, vector 연산이나 eigen decomposition, SVD 등을 할 때 필요하다.

간단하게 libeigen3-dev 를 설치해도 되지만 내가 버전을 관리하기 위해 다운 받아서 설치한다.

Header only 라이브러리라 빌드 할 것도 없다. 이건 dependency도 없고 빌드 된 파일만 받으면 된다.


4. Openblas

Caffe를 위한 수학 라이브러리, openblas를 쓰면 Caffe를 CPU only로 사용 시 atlas보다 좀 더 빠르고 core 수 조절이 가능하다.

libopenblas-dev 를 설치해도 되지만 직접 빌드하면 core 수 조절이 된다.(링크 참조)

a. dependency 설치

sudo apt install gfortran

b. 원본 소스

https://github.com/xianyi/OpenBLAS

c. 빌드 방법

make -j4 FC=gfortran
make PREFIX=/path/to/install install


5. Protobuf

Caffe에서 .prototxt를 읽게 해주는 필수 라이브러리이다.

Caffe 홈페이지의 설치가이드에는 libprotobuf-dev 를 설치하라고 되어있지만

FastRCNN 빌드할 때 이것 땜에 한참 삽질한 적이 있어서 직접 빌드한다. (링크 참조)

a. dependency 설치

sudo apt install autoconf automake libtool curl make g++ unzip

b. 원본 소스

https://github.com/google/protobuf

c. 빌드 방법

./autogen.sh

./configure --prefix=/path/to/install --disable-shared CPPFLAGS="-fPIC"
make -j4
make -j4 check
make install


6. OpenCV

opencv는 옵션이 무지막지하게 많다. 이전 글을 쓴 경험을 살려 최대한 필요한 가능성이 있는 옵션은 다 선택해서 빌드했다.

openni2, python2,3와 opencv_contrib까지 포함해서 빌드했다.

a. dependency 설치

sudo apt install
libjpeg-dev libpng-dev libtiff-dev libjasper-dev libgtk-3-dev
libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
python-dev python-numpy python3-dev python3-numpy
libopenni2-dev

b. 원본 소스

https://github.com/opencv/opencv, https://github.com/opencv/opencv_contrib

굳이 opencv 공식 홈페이지에서 소스를 받지 않고 github에서 받는 이유는

master 버전이 python2,3 바인딩을 둘 다 한번에 빌드할 수 있고 NVIDIA Pascal 아키텍쳐도 옵션으로 주기 때문이다.


7. Caffe

이 세팅의 최종 목적지에 왔다.

a. dependency 설치

sudo apt install libleveldb-dev libsnappy-dev libhdf5-dev
sudo apt install --no-install-recommends libboost-all-dev
sudo apt install libgflags-dev libgoogle-glog-dev liblmdb-dev

Caffe 홈페이지의 설치 가이드 중 위에서 설치한 protobuf 같은 것은 뺐다.

boost 처럼 큰 라이브러리를 /usr에 설치하는 것이 좀 맘에 걸리긴 하지만 지금까지는 boost를 중요하게 쓰지 않아서 버전 문제가 없었다.

b. 원본 소스

https://github.com/BVLC/caffe

자 이제 모든 준비가 끝났다. 여기(다운로드)서 빌드 된 파일을 받아 압축만 풀면 된다.

나는 아래와 같이 $HOME/Library/LibsInstalled 에 설치했다.

(아까 Qt 설치 경로나 빌드 된 라이브러리나 경로를 바꿔도 라이브러리들이 잘 동작하는지 확인해보진 않았다. 다른 컴퓨터에서 확인 후 업데이트 하겠다.)




맨위로
통합 검색어 입력폼