Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save mokemokechicken/2705396 to your computer and use it in GitHub Desktop.
Save mokemokechicken/2705396 to your computer and use it in GitHub Desktop.
Install OpenCV2.4 Into AWS(Amazon Linux AMI 2012.03)

Install OpenCV Into AWS

概要

これは、OpenCV の opencv_traincascade を マルチコアで高速に行うために, AWS EC2を使うための設定メモです。 EC2 の 「Amazon Linux AMI 2012.03」に OpenCV2.4.0 を TBB 付きでInstallします。 使い方のイメージは「HiCPUのEC2インスタンスで学習を実行し、実行結果のXMLをS3にUploadしたらEC2インスタンスをshutdownする」です。

なんか、色々非効率なことをしている部分もあると思いますが、ご了承ください。 ちなみに、このAMIイメージを選んだ理由は特にないです。

2012/5/15

Account Settings

Tokyoリージョンに、上記AMIで起動します。 最初は作成した pem を使って ec2-user という名前でログインできるようです。

ssh -i {{MYCREATED.pem}} {{PUBLICS_DNS_NAME.ap-northeast-1.compute.amazonaws.com}} -l ec2-user

適当にグループとユーザを追加。

sudo groupadd -g 10000 yumemi
sudo useradd -g yumemi -u ***** k_morishita

~k_morishita/.ssh/authorized_keys に自分の公開鍵を追加。 sudo 権限付与、後ほどコマンドから自動でshutdownとかしたいので NOPASSでの実行を許可しておく。

ここから k_morishita として作業

基本的な設定

とりあえず必要そうなものを入れていきます。 screen は長時間コマンドを実行するので必須、zshは我が友

sudo yum update
sudo yum install zsh screen
chsh
sudo yum -y groupinstall "Development Tools"

Install S3FS

S3にUploadするのに便利そうなので s3fs も入れておきます。

S3Fuse: http://takus.me/linux/aws-s3fs-install/

もちろん適当なBucket をs3上に作成しておく。

sudo yum install fuse-devel libcurl-devel libxml2-devel openssl-devel

cd /usr/local/src
sudo chmod 777 .
wget http://s3fs.googlecode.com/files/s3fs-1.61.tar.gz
tar xvzf s3fs-1.61.tar.gz
cd s3fs-1.61
./configure && make && make install

# ref https://aws-portal.amazon.com/gp/aws/securityCredentials
sudo sh -c "echo '[BUCKET NAME]:[ACCEESS KEY]:[SECRET KEY]' > /etc/passwd-s3fs"
sudo chmod 600 /etc/passwd-s3fs

sudo modprobe fuse
sudo mkdir -p /mnt/s3 /tmp/s3
# sudo /usr/local/bin/s3fs [BUCKET NAME] /mnt/s3 -o default_acl=public-read -ouse_cache=/tmp/s3

/etc/fstab に以下を追加

s3fs#[BUCKET NAME] /mnt/s3 fuse allow_other,default_acl=public-read,use_cache=/tmp/s3 0 0

Install OpenCV

http://opencv.itseez.com/doc/tutorials/introduction/linux_install/linux_install.html#linux-installation

準備

Python系

なんとなく pip 経由で numpy を入れる。

sudo yum install python-devel
sudo easy_install pip
sudo pip install numpy

libav* 系

色々面倒なので ffmpeg-devel を入れてしまう

RPMForge の yum リポジトリを追加

cd /usr/local/src
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
sudo rpm -ivh rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm  
# /etc/yum.repos.d/ の rpmforge の enable=1 にして
sudo yum update 

CentOSのリポジトリも設定しておく。そうじゃないと ffmpeg-devel が入らなかった。。

http://fdbklp.blogspot.jp/2012/05/amazon-linux-yum.html

上記URLにもあるように、 /etc/yum.repos.d/ の 「EPEL リポジトリのバージョンが 6」なので、 CentOS 6 のリポジトリを追加していけば良いようである。

sudo vi /etc/yum.repos.d/CentOS-Base.repo
-----------------
[base]
name=CentOS-6 - Base
mirrorlist=http://mirrorlist.centos.org/?release=6&arch=x86_64&repo=os
enabled=0
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
-----------------
sudo yum install --enablerepo=base ffmpeg-devel

Install Stow

ソースからInstallするやつを管理するのに stow を使います。 最近の流行は違うという噂を聞きましたが、なんだったか忘れたのでとりあえずこれで。 まけまけいんすとーるする。

cd /usr/local/src
wget http://ftp.gnu.org/gnu/stow/stow-2.2.0.tar.gz
tar xzf stow-2.2.0.tar.gz
cd stow-2.2.0
./configure
 make
sudo make install

# stow 用のDIR作成
sudo mkdir /usr/local/stow
sudo chmod 777 /usr/local/stow

# root で実行しやすいように symlink を張っておく。なんかいい加減。。
sudo ln -s /usr/local/bin/stow /usr/bin/stow

Instal TBB

ソースからビルドしようとしたけど失敗。結局linuxのバイナリで大丈夫でした。

cd /usr/local/src
wget "http://threadingbuildingblocks.org/uploads/77/185/4.0%20update%204/tbb40_20120408oss_lin.tgz" 
tar xzf tbb40_20120408oss_lin.tgz
cd tbb40_20120408oss
mkdir /usr/local/stow/tbb40
cp -a bin include /usr/local/stow/tbb40
cp -a lib/intel64/cc4.1.0_libc2.4_kernel2.6.16.21 /usr/local/stow/tbb40/lib
cd /usr/local/stow
sudo stow tbb40
# あまりお行儀がよくなさそうだけど、
# /etc/ld.so.conf に /usr/local/lib を追加しておいてから、、
sudo ldconfig

確認

sudo ldconfig -p | grep tbb

で tbb が表示されればおそらくOK

OpenCV本体

libdc1394 は 有効にしない。ffmpeg-devel をInstallすると、自動でlibdc1394が入ってしまう。 最初このライブラリが動かなくてOpenCVが動作しなかった。 /dev/raw1394 が認識されない。 でも、よく考えると不必要なのでOpenCVのビルドの時に明示的にOFFにしておく(WITH_1394=NO) もちろん、 WITH_TBB=ON で。

cd /usr/local/src
wget "http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.0/OpenCV-2.4.0.tar.bz2?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fopencvlibrary%2F&ts=1337058942&use_mirror=jaist"
tar xjf OpenCV-2.4.0.tar.bz2

mkdir opencv
cd opencv
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/stow/opencv-2.4.0 -D WITH_TBB=ON -D WITH_1394=NO ../OpenCV-2.4.0
gmake -j 2
make install
cd /usr/local/stow
sudo stow opencv-2.4.0

Install mergevec

学習用のvecファイルを統合してくれる便利ツール mergevec を入れておく。

http://note.sonots.com/SciSoftware/haartraining/mergevec.cpp.html

opencv2.4から少しDIRが変わっているので、ちょっと注意。

cd /usr/local/src/OpenCV-2.4.0/apps/haartraining
# cp PATH/TO/mergevec.cpp .
wget http://tutorial-haartraining.googlecode.com/svn/trunk/HaarTraining/src/mergevec.cpp
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
g++ -I. `pkg-config --cflags opencv` `pkg-config --libs opencv` -o mergevec mergevec.cpp cvboost.cpp cvcommon.cpp cvsamples.cpp cvhaarclassifier.cpp cvhaartraining.cpp
sudo cp mergevec /usr/local/bin
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment