なるたるなるなる

メモと日記代わり(私用)

py-faster-RCNN

研究で使うと思ったのに使わなかったものにRegion-CNNがある。
インストールは caffe と同じ。ubuntu14.04 に nvidiaグラボがあればインストールは難しくないが今回はMacOSX に CPU のみでインスールする。
opencvは2.4.12、openblas はhomebrewでインストール。
まだopencv3でcaffeをビルドしたことがなく、インストールの時だけ2系にして入れてる。

git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git
cd $FRCN_ROOT/lib/nms
cython cpu_nms.pyx 
gcc -shared -o cpu_nms.so cpu_nms.c -lboost_python `pkg-config python --libs`

Makefile は適宜設定

cd $FRCN_ROOT
cp Makefile.config.example Makefile.config
make -j4

残念。cudaが要求されてビルドエラーするので、cmake で Makefile を生成する。

-- ******************* Caffe Configuration Summary *******************
-- General:
--   Version           :   1.0.0-rc3
--   Git               :   0dcd397-dirty
--   System            :   Darwin
--   C++ compiler      :   /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
--   Release CXX flags :   -O3 -DNDEBUG -fPIC -Wall -Wno-sign-compare -Wno-uninitialized
--   Debug CXX flags   :   -g -fPIC -Wall -Wno-sign-compare -Wno-uninitialized
--   Build type        :   Release
-- 
--   BUILD_SHARED_LIBS :   ON
--   BUILD_python      :   ON
--   BUILD_matlab      :   OFF
--   BUILD_docs        :   ON
--   CPU_ONLY          :   ON
--   USE_OPENCV        :   ON
--   USE_LEVELDB       :   ON
--   USE_LMDB          :   ON
--   ALLOW_LMDB_NOLOCK :   OFF
-- 
-- Dependencies:
--   BLAS              :   Yes (vecLib)
--   Boost             :   Yes (ver. 1.59)
--   glog              :   Yes
--   gflags            :   Yes
--   protobuf          :   Yes (ver. 2.6.1)
--   lmdb              :   Yes (ver. 0.9.14)
--   LevelDB           :   Yes (ver. 1.18)
--   Snappy            :   Yes (ver. 1.1.3)
--   OpenCV            :   Yes (ver. 2.4.12)
--   CUDA              :   No
-- 
-- Python:
--   Interpreter       :   /Volumes/Macintosh_HD2/usr/bin/python2.7 (ver. 2.7.11)
--   Libraries         :   /usr/lib/libpython2.7.dylib (ver 2.7.10)
--   NumPy             :   /Volumes/Macintosh_HD2/usr/lib/python2.7/site-packages/numpy/core/include (ver 1.10.4)
-- 

python のライブラリがOSXのものになっているので、CMakeCache.txtの404行目、PYTHON_LIBRARYを書き換え再度cmake。
とにかくMacの場合homebrewを使うのでpythonのライブラリも/usr/local/以下に合わせる。
pkg-config python --libs で場所がわかる。

-- Python:
--   Interpreter       :   /Volumes/Macintosh_HD2/usr/bin/python2.7 (ver. 2.7.11)
--   Libraries         :   /Volumes/Macintosh_HD2/usr/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib (ver 2.7.10)
--   NumPy             :   /Volumes/Macintosh_HD2/usr/lib/python2.7/site-packages/numpy/core/include (ver 1.10.4)
-- 

再度make && make pycaffe。
pythonのパスとダイナミックリンクの設定。

export PYTHONPATH=$FRCN_ROOT/lib
export LD_RUN_PATH=$FRCN_ROOT/caffe-fast-rcnn/lib:$LD_RUN_PATH

GPUは要らないので、lib/fast_rcnn/nms_wrapper.py を書き換え

from fast_rcnn.config import cfg
#from nms.gpu_nms import gpu_nms
from nms.cpu_nms import cpu_nms

def nms(dets, thresh, force_cpu=False):
    """Dispatch to either CPU or GPU NMS implementations."""

    if dets.shape[0] == 0:
        return []
    """
    if cfg.USE_GPU_NMS and not force_cpu:
        return gpu_nms(dets, thresh, device_id=cfg.GPU_ID)
    else:
        return cpu_nms(dets, thresh)
    """
    return cpu_nms(dets, thresh)

デモの実行

cd $FRCN_ROOT
./data/scripts/fetch_faster_rcnn_models.sh
./tools/demo.py --cpu

ずらっと10枚のデモ画像が並ぶはず。

f:id:narusawa-a:20160412015046j:plain

計算機サーバー

研究室のサーバーには多段sshで入らなければならず大変。

hiyoko@server> xhost
access control enabled, only authorized clients can connect

の具合でいつもご機嫌よければいいけど

xhost:  unable to open display "localhost:11"

でイラつく。ホームに

#!/usr/bin/tcsh

set i=9
while ($i != 30)
    @ i = $i + 1
    setenv DISPLAY localhost:${i}
    xhost >& /dev/null  && echo "setenv DISPLAY $DISPLAY"
end

でディスプレイ番号を探してるけど、俄かに

X connection to localhost:10.0 broken (explicit kill or server shutdown).

となると手がつけられない。
ログアウト。ログアウト。ログアウト。ログイン。ログイン。ログイン。。。。
タイムアウトなのかな。コーヒーブレイクも許されない。caffeを使うのに。

やるよ。やればいいんだろ!?

院生はブログを開設して情報を発信する義務があるらしく此度めでたく開設することになった。研究室に配属されたのは昨年のことで研究自体は半年しかしていない。卒業研究では数多くの問題にぶち当たるので半年の間にネットの情報にはお世話になった。この間に自分でも気づきがあり情報を寄与したいと考えていたので少しずつ還元していきたいと思う。