EC2에 OpenCV, Tensorflow 설치

2016-08-14 00:00:00
aws opencv tensorflow

Ubuntu 14.04.3 LTS (EC2 Free Tier) 환경에 설치하였습니다.

Python을 이용한 Image Processing & Deep Learning 환경을 구성하는 것이 목적입니다.

이 포스트는 Pyimagesearch 홈페이지를 기반으로 작성하였습니다.


라이브러리 설치

Python 버전은 Tensorflow의 Python 버전과 맞추기 위해 기본적으로 설치된 2.7.6 버전으로 진행합니다.

그렇기에 따로 virtualenv 환경을 만들지 않습니다.

패키지 업데이트

먼저 EC2에 Putty로 접속 한 뒤 기존 패키지를 업데이트하고 업그레이드 합니다.

sudo apt-get update
sudo apt-get upgrade

개발도구 설치

sudo apt-get install build-essential cmake git pkg-config

이미지 로드 라이브러리

jpeg, tiff, png 파일 등을 로드할 수 있는 라이브러리를 설치합니다.

sudo apt-get install libjpeg8-dev libtiff4-dev libjasper-dev

GTK 설치

EC2 내의 이미지를 X window로 볼 수 있고, OpenCV의 highgui 모듈을 위해서 설치하는 라이브러리 입니다.

sudo apt-get install libgtk2.0-dev

비디오 프로세싱 라이브러리

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

Compiler

sudo apt-get install libatlas-base-dev gcc gfortran g++

Python 개발도구

sudo apt-get install python-dev

Pip 최신 버전 설치

pip install 시에 sudo 명령어에 -H 옵션을 하는 이유는
EC2의 $HOME 디렉터리가 /home/ubuntu이기 때문에 발생하는 permission issue를 방지하기 위한 것입니다.
sudo apt-get install python-pip
이 명령어로 설치한 pip 버전은 1.x 버전이기 때문에 아래와 같이 8.1.2 버전을 설치합니다.
wget https://bootstrap.pypa.io/get-pip.py
sudo -H python get-pip.py

SSL 보안 에러 방지

stackoverflow 참조

sudo apt-get install libffi-dev libssl-dev
sudo -H pip install pyopenssl ndg-httpsclient pyasn1

Numpy install

sudo -H pip install numpy

Matplotlib install

sudo -H pip install matplotlib을 하지 않고 다음과 같은 방법으로 설치합니다.

matplotlib을 설치했을 경우에 스크린으로 출력되지 않는 문제를 해결한 pyimagesearch 홈페이지 내용을 기반으로 작성하였습니다.

# 추가 패키지 설치
sudo apt-get install tcl-dev tk-dev python-tk

# TkAgg 문제 해결
git clone https://github.com/matplotlib/matplotlib.git
cd matplotlib
sudo -H python setup.py install

# 느리게 로드되는 현상 해결
rm -rf ~/.cache

OpenCV 설치

Git project clone, checkout

cd
git clone https://github.com/Itseez/opencv.git
cd opencv
git checkout 3.0.0
cd
git clone https://github.com/Itseez/opencv_contrib.git
cd opencv_contrib
git checkout 3.0.0

Setup build

cd ~/opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
  -D CMAKE_INSTALL_PREFIX=/usr/local \
  -D INSTALL_C_EXAMPLES=ON \
  -D INSTALL_PYTHON_EXAMPLES=ON \
  -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
  -D BUILD_EXAMPLES=ON ..
2016년 3월에 3.1.0 버전으로 업데이트 하였습니다. checkout시 버전을 바꿀 수 있으며 이때 -D INSTALL_C_EXAMPLES 옵션을 OFF로 바꾸어야 합니다.(Bug)

이제 컴파일 할 준비가 끝났습니다.

Compile

make -j4

약 10 ~ 15분 소요됩니다.

끝났으면 에러가 없는지 확인합니다.

sudo make install
sudo ldconfig

Tensorflow 설치

OpenCV와 같은 Python 버전 2.7.6을 사용합니다.

그러므로 같은 프로젝트로서 Pip installation을 진행합니다.

# EC2 Free Tier는 GPU를 지원하지 않습니다.
export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0rc0-cp27-none-linux_x86_64.whl

# sudo apt-get install python-pip python-dev
sudo -H pip install --upgrade $TF_BINARY_URL

위 작업까지 진행하시면 Tensorflow 설치가 완료됩니다.

이렇게 OpenCV, Tensorflow 설치가 완료되었습니다. 잘 설치되었는지 확인합니다.

# python으로 확인
>>> import numpy
>>> import matplotlib
>>> import tensorflow
>>> import cv2
>>> cv2.__version__
'3.0.0'
>>>

에러 메시지가 뜨지 않으면 설치가 정상적으로 된 것입니다.

Additional pip package

본인에게 필요하지 않은 라이브러리가 포함되어 있을 수 있습니다.

seaborn 패키지는 matplotlib을 기반으로 하며
아나콘다 패키지를 사용하실 경우 matplotlib와 pandas는 이미 설치 되어 있습니다.
EC2에서는 Virtual Memory Exhausted 에러가 일어날 수 있습니다.
이때 pip 옵션인 --no-cache-dir를 적용할 수 있습니다.
pip 6.x 버전 이상만 가능한 옵션입니다.
sudo -H pip install scipy
sudo -H pip install panda
sudo -H pip install seaborn
seaborn 패키지는 matplotlib 기반 때문이어서 그런지는 모르겠지만
.cache에 matplotlib 디렉터리가 자동으로 생겨 느리게 로드되는 경고가 발생합니다.(해결안됨)