caffeのビルドでハマるとき

自分用メモです.

fedora22でCaffeのビルド時に,cblas関連のリンカエラーが出る場合.

CaffeのデフォルトのBLASライブラリはAtlasですが,何故かうまくいかないので,OpenBLASを使うように変更する.
やり方は,cmakeの時にBLASをAtlasからOpenに切り替える.

Matlabきらい

Matlabとの戦い.特に最近使っているのが Piotr’s matlab toolbox.人物検出をやるには必須のライブラリっぽい.
というのも,Piotr DollarさんはPietro Perona先生と人物検出のサーベイや検出手法の論文を書いている人.今はFacebook のAI Researchにいる…のかな?人物検出の精度評価のデファクトスタンダードと言えるプログラムを作って公開しています.それが前述の pietor’s matlab toolbox


 
最近研究室による遅くまで残ってることが多い….今日も戸締まりして帰りました.
 

10ヶ月ぶりの更新

ずっと放置してたけど
久しぶりに再開してみよう.


新しい職場では定期的にテニスの会がある.
というわけで,
ラケット買いました


MatlabのmatファイルをC/C++から読み書きするライブラリのmatioというものを教えてもらい,ちょっといじってみた.
近いうちにブログにまとめたい.
 

Pythonでbool値の引数をargparse

引数にTrue/Falseの値を渡してargparseでパースして使いたい.
ということでメモ.
ぐぐったらこういうやり方が出てきた.

def parse():
    parser = argparse.ArgumentParser(description='Argparseのテスト')
    parser.add_argument('--version', action='version', version='%(prog)s 1.0')
    parser.add_argument('--force', dest='force', action='store_true')
    parser.add_argument('--no-force', dest='force', action='store_false')
    parser.set_defaults(force=False)
    params = parser.parse_args()
    return vars(params)

この –force/–no-force の指定で force の値が True/False になる.デフォルトはFalse.
ただ,これだと

python hoge.py --force --no-force

みたいに両方指定することも可能なのでまずい.
そこで,mutually_exclusive_groupを使って,

def parse():
    parser = argparse.ArgumentParser(description='Argparseのテスト')
    parser.add_argument('--version', action='version', version='%(prog)s 1.0')
    group = parser.add_mutually_exclusive_group()
    group.add_argument('--force', action='store_true')
    group.add_argument('--no-force', action='store_false')
    parser.set_defaults(force=False)
    params = parser.parse_args()
    return vars(params)

とすることで,両方指定した時にエラーを出すことが出来る.

OpenCV 3.0.0-alphaで特徴点検出 c++11

前回SURFを無事有効化できたので,特徴点検出をしてみた.
c++11のコードを貼っておく.

#include <opencv2/opencv.hpp>
int main(){
        cv::VideoCapture cam(0);
        // 特徴量を選ぶ
        auto featureDetector = cv::FeatureDetector::create(SURF);
        //auto featureDetector = cv::FeatureDetector::create(ORB);
        //auto featureDetector = cv::FeatureDetector::create(BRISK);
        //auto featureDetector = cv::FeatureDetector::create(SIFT);
        std::cout << featureDetector->name() << std::endl;
//      auto descriptorExtractor = cv::DescriptorExtractor::create(SURF);
        while(true){
                cv::Mat img;
                cv::Mat gimg;
                cv::Mat result;
                std::vector<cv::KeyPoint> keypoints;
                std::vector<float> descriptors;
                cam >> img;
                if(img.empty()) break;
                // グレースケール化
                cv::cvtColor(img, gimg, cv::COLOR_BGR2GRAY);
                // 特徴点検出
                featureDetector->detect(gimg, keypoints, cv::Mat());
//              // 特徴量を抽出
//              descriptorExtractor->compute(gimg, keypoints, descriptors);
                // 特徴点の描画
                cv::drawKeypoints(img, keypoints, result);
                char key = cv::waitKey(1);
                cv::imshow(img, img);
                cv::imshow(gimg, gimg);
                cv::imshow(keypoints, result);
                if(key == 'q') break;
        }
        return 0;
}

コンパイルするときは,

g++ -std=c++11 -o detect sample.cpp `pkg-config --cflags --libs opencv`

OpenCV 3.0.0-alphaでSIFT/SURFを使う

OpenCV 3.0を入れて,SIFTを使おうと思ったところ見当たらなかったのでメモ.
そもそも SIFT が入っている nonfree.hpp が見当たらなかった.
opencvのgitのログを見ると,31df47b 2014-08-11 の時点で,nonfreeとfeatures2dの一部がopencv_contrib/xfeatures2dへ移動したと書いてある.
なので,別途 opencv_contrib を落としてきて opencv と一緒にビルドしてインストールする必要がある.
ビルド時にCMAKEにopencv_contrib内のmodulesのパスを渡す.
手順は以下のとおり.

git clone https://github.com/Itseez/opencv.git
git clone https://github.com/Itseez/opencv_contrib.git
mkdir opencvbuild
cd opencvbuild
cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ../opencv/
make
sudo make install

これでOKなはず. cmake-gui を使う場合は, OPENCV_EXTRA_MODULES_PATH を一覧から探して,Valueに opencv_contrib/modules へのパスを書く.
が,手元の環境では cudalegacy がコンパイルできないっぽい.
ひとまず BUILD_opencv_cudalegacy のチェックを外してコンパイル.
さらに,xfeatures2Dの test, perf_test がコンパイルエラーになるので,
BUILD_PERF_TESTS と BUILD_TESTS もチェックを外した.
環境は,gcc4.8,CUDA6.0です.
ちなみに,これでインストールすると,
これまでのOpenCVで nonfree/nonfree.hpp だったものは,
opencv2/xfeatures2d/nonfree.hpp になります.
なので,これまで

#include <opencv2/nonfree/nonfree.hpp>

と書いていたものは,

#include <opencv2/xfeatures2d/nonfree.hpp>

に書き換えることでコンパイルが通ります.

名古屋!

大学の休業日を利用して名古屋に行ってきました.

今回の名古屋グルメはこれ.

ひつまぶし.
あとメジャーどころで残すはきしめんぐらいかな…?