いつもの作業の備忘録

作業を忘れがちな自分のためのブログ

【Ubuntu】Opencv2.4.11をUbuntuにインストールする

CuDNNが入った環境でOpencvをインストールする際のメモ。

1.easydictのインストール

Opencvを使うプログラム(Faster RCNNなど)を動かそうとするとImport Error: No module named easydictというエラーが出るのでpipでインストール

$ pip install easydict

OpenCVが入っていない場合、Import Error: No module named cv2 というエラーが出る。以下の手順でインストール

2.apt-getの更新と必要ライブラリのインストール

まず、ソフトウェアアップデートをかけて、必要なライブラリ郡をインストール

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get -y install libopencv-dev build-essential cmake git libgtk2.0-dev pkg-config python-dev python-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff4-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip

※ここでapt-get upgradeによってUbuntuにログインできなくなっった場合は以下を参照して復帰。
【Ubuntu】ソフトウェアアップデート時のログインエラー対処 - いつもの作業の備忘録

3.OpenCVのインストール

OpenCVのダウンロード。OpenCVのインストール先を$OPENCVとする。

$ cd $OPENCV
$ wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.11/opencv-2.4.11.zip
$ unzip opencv-2.4.11.zip
$ cd opencv-2.4.11/

Cmakeを実行。CUDA_GENERATION=Autoではうまく行かなかったのでKeplerを指定した。利用するGPUによって変える必要がある

$ mkdir build
$ cd build/
$ cmake -D BUILD_EXAMPLES=ON -D CMAKE_BUILD_TYPE=RELEASE -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_1394=OFF -D WITH_IPP=ON -D WITH_TBB=ON -D WITH_V4L=OFF -D PYTHON_EXECUTABLE=/home/daisuke/work/dl_tools/anaconda2/bin/python -D PYTHON_LIBRARY=/home/daisuke/work/dl_tools/anaconda2/lib/libpython2.7.so -D PYTHON_INCLUDE=/home/daisuke/work/dl_tools/anaconda2/include/python2.7 -D PYTHON_PACKAGES_PATH=/home/daisuke/work/dl_tools/anaconda2/lib/python2.7/site-packages -D BUILD_TIFF=ON -D CMAKE_C_COMPILER=/usr/bin/gcc -D CMAKE_CXX_COMPILER=/usr/bin/g++ -D CUDA_GENERATION=Kepler ../

続いてビルド。この作業は1時間ほどかかる。
※CUDA8.0を使う場合、make時にエラーが出る。エラーの対処法を紹介しているブログが見つかったので以下を参考にしていただきたい。
https://rohanrajblogs.blogspot.jp/2016/12/installation-of-opencv-2411-along-with.html

$ make
$ sudo make install

4.パスの設定

以下のコマンドでopencv.confを開き、ファイル(の最後)に以下の行を加える

$ sudo vim /etc/ld.so.conf.d/opencv.conf
#記述内容
/usr/local/lib


共有ライブラリの依存関係を更新

$ sudo ldconfig

パスを設定。bash.bashrcに以下の内容を追記。

$ sudo vim /etc/bash.bashrc 
記述内容
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

bash.bashrcを有効にするためにターミナルを再起動し、pythonを実行。
import cv2がエラーなく終了すればインストール成功

※参考
http://www.icrus.org/horiba/article/2014_11_07_01.php
http://shumilinux.blogspot.jp/2015/08/ubuntu-1404-ltsopencv2411.html
http://stackoverflow.com/questions/28010399/build-opencv-with-cuda-support
https://rohanrajblogs.blogspot.jp/2016/12/installation-of-opencv-2411-along-with.html

【Ubuntu】ソフトウェアアップデート時のログインエラー対処

先日、apt-getでupgradeした後、Ubuntuにログインできなくなったため対処法を記録。

GUIのログイン画面からパスワードを入れてEnterを押すと、再度ログイン画面に戻ってくるという現象です。.Xauthorityを消すなども試してみましたが効果がなく、どうもNvidiaのドライバ周りが怪しいという情報を発見。以下のサイトを参考に復元しました。

Ubuntu14.04にCUDA Toolkit or NVIDIAグラフィックスドライバを入れるとGUI環境でログインできなくなる問題について - 六彩庵

やったこととしては

$ sudo apt-get install bumblebee bumblebee-nvidia primus linux-headers-generic
$ sudo reboot

これだと、再起動時にNvidiaのドライバが動いてなかったので、再度ドライバをインストール。
過去のページを参考にNVIDIA-Linux-x86_64-361.28.runを実行してください。

無事、GUIでログインしてCaffe周りも動くことを確認できました。


※参考
http://www.rokudw.net/archives/66

【Caffe】モデルをダウンロードして利用する

他の人が作成し、アップロードしているモデルを利用する。
今回は手始めにVGG16のネットワークとモデルをダウンロードし、Caltech101のデータをかけてみる

1.ネットワーク定義ファイルのダウンロード

多くの研究結果がModel Zooで公開されており、GitHub Gistでダウンロードできる(Caffe内のダウンロード専用のスクリプトを使う)
まず、Model Zoo(Model Zoo · BVLC/caffe Wiki · GitHub)でVGG16のページを探し、readme.mdのGist IDを確認する
ILSVRC-2014 model (VGG team) with 16 weight layers · GitHub

IDが確認できたらスクリプトを使ってダウンロードする。
※以下、$WORKのフォルダで作業するものとする

$ cd $WORK
$ $CAFFE_HOME/scripts/download_model_from_gist.sh 211839e770f7b538e2d8 .
$ cd 211839e770f7b538e2d8

さらに、readme.mdからモデルファイルの場所を確認し、ダウンロードする

$ wget http://www.robots.ox.ac.uk/~vgg/software/very_deep/caffe/VGG_ILSVRC_16_layers.caffemodel

2.スクリプトの実行

pythonスクリプトを実行して識別にかける。モデルの定義ファイルと学習済みモデルをマニュアルで指定する必要がある。今回、meanファイルは公開されていなかったので、使わなくていいと判断(使わない場合は''とするらしい)

cp $CAFFE_HOME/python/classify.py .
./classify.py --raw_scale 224 --model_def VGG_ILSVRC_16_layers_deploy.prototxt --pretrained_model VGG_ILSVRC_16_layers.caffemodel --mean_file '' $CAFFE_HOME/data/101_ObjectCategories/airplanes/image_0001.jpg result.npy

result.npyが出力されるため、以前(【Caffe】物体認識のサンプルを動かす - いつもの作業の備忘録)作成したshow_result.pyを使って結果を見てみる。

python show_result.py $CAFFE_HOME/data/ilsvrc12/synset_words.txt result.npy

結果は以下のようになり、確かに軍用機がトップに来ている。

#1 | n04552348 warplane, military plane | 87.0%
#2 | n04266014 space shuttle |  2.1%
#3 | n04008634 projectile, missile |  1.7%

※参考
https://github.com/BVLC/caffe/wiki/Model-Zoo
https://gist.github.com/ksimonyan/211839e770f7b538e2d8#file-readme-md