takminの書きっぱなし備忘録 @はてなブログ

主にコンピュータビジョンなど技術について、たまに自分自身のことや思いついたことなど

OpenCV

OpenCV 2.0のオブジェクト検出の学習にはMLLのAdaBoostが使用される模様

以前のエントリーで、OpenCVに実装されているオブジェクト検出(cvHaarDetectObjects)の学習には独自に実装したAdaBoostが使われていて、OpenCVに実装されているCvBoostは使っていないという話を書いたけど、どうもOpenCV 2.0からMachine Learning Library…

OpenCV pre1.1ビルド時のエラー

OpenCV pre1.1を以下の手順でビルドし直す。環境: OS: Windows XP IDE: Microsoft Visual C++ 2008 Express Edition 1. OpenCVフォルダ下の"_umake\opencv.vs2005.no_openmp.sln"を開く。(Express EditionではOpenMPは使用できなかったはず) 2. プロジェク…

cvBlobsLibのインストール

OpenCVにはラベリングプログラムが実装されていないので、cvBlobsLibというラベリングを扱うプログラムをインストールしてみた。以下、手順: cvBlobsLibのページにアクセスする。 ここでLatest releaseをダウンロードする。僕はver8.3(Windows版)を使用。…

8月にOpenCV2.0がリリースされるらしい

http://opencv.willowgarage.com/wiki/OpenCV200906個人的に注目しているのは、新しい2D特徴点検出オペレータとHunman Detector。 特徴点オペレータは今までのSURF以外にStar DetectorやらDAISYやら聞いたことのないオペレータが並んでる。っていうかこの中…

画像認識のセミナーを開きます

8月28日(金)に「OpenCVで学ぶ画像認識技術入門」というタイトルでセミナー講師をすることになりました。詳細はこちら http://www.catnet.ne.jp/triceps/sem/090828a.htm受講料高いなあ・・・。 内容は、技術評論社の連載をベースに実習形式で行う予定で…

MLクラスの学習時におけるsample_idx使用時の注意点

OpenCVの機械学習クラス(CvStatModelを継承した、CvSVMやCvDTree、CvBoostなど)は、学習時(train()関数)において、入力データのうちどれを実際に学習に使うかを指定することができる。例えば二分木であれば bool CvDTree::train(const CvMat* _train_data,…

Viola & Johns版AdaBoostの実装 その2

前回の続き。本論に入る前に、ここで解説したAdaBoostのアルゴリズムをもうちょい補足しておきます。 学習データを用意し、それぞれのデータの重みを均等にしておく。 学習データを識別器へ入力し、エラー率を求める。ただし、エラー率には学習データの重み…

Viola & Johns版AdaBoostをOpenCVで実装

OpenCVには、「cvHaarDetectObjects」っていうオブジェクト検出の関数が用意されてます。これを使うと簡単に顔検出を実装できたりします。また、学習をさせることでオリジナルの検出装置を作れたりします。詳しくは http://gihyo.jp/dev/feature/01/opencv …

OpenCVの機械学習におけるvar_idxの使い方

OpenCVの機械学習クラス、例えばCvSVM、CvBoost、CvDTreeなどなどのtrain()関数にはvar_idxなる引数があるけど、これの使い方が、その親クラスであるCvStatModelの説明http://www.opencv.jp/opencv-1.0.0/document/opencvref_ml_introduction.html#decl_CvSt…

OpenCVのCvDTreeの使用にあたっての注意点

OpenCVのMachine Learning関係はマニュアル見てもネットで探しても貧弱な情報しかないので、とりあえず自分が発見したことをさらしていく。CvDTreeクラスは二分木を作ってくれるクラスで、CART(Classification and Regression Trees)モデルと言われている…

OpenCVのCvStatModelのdeleteに失敗

表題の通り。例えば以下のようなコードを書いたとする。 - 例1: CvStatModel *hoge = new CvStatModel(); delete hoge;例2: CvStatModel *hoge = new CvStatModel[10]; delete[] hoge; - と非常に簡単なコードで間違いようがないわけですが、なぜかdeleteの…

OpenCVのAdaBoostのソース読解中

どうもViola & Johnsで使っているAdaBoostとOpenCVのCvBoostクラスは若干使われ方が違うっぽい。VJでは1特徴が1弱識別器だけど、CvBoostでは全ての特徴を元に弱識別器が構成されているみたい。(CvBoostTreeという決定木) あとVJでは、1サイクル毎に全ての弱…

OpenCVのObject DetectionのAdaBoostは独自のものを使ってるっぽい

"apps/HaarTraining/src/cvboost.cpp"ってのがOpenCVのパッケージの中にあって、ここでObject Detection用に独自のAdaBoostを実装しているっぽい。 つまり、OpenCVで準備されているCvBoostクラスは使っていない模様。 ソースの中見てみたら、Discrete AdaBoo…