LoginSignup
0
5

More than 5 years have passed since last update.

OpenCV で opencv_traincascade.exe を使って学習させてみた時にハマったのでメモ

Last updated at Posted at 2016-07-25

概要

OpenCVで画像を検出させるためのカスケードファイルを自分で作ろうと思いOpenCVに同梱されているopencv_traincascade.exeを使って検出器を作ろうとしたときにハマったことについてメモ。

環境

Windows OpenCV
OpenCV ver 2.4.13

今回のハマり部分

Windows のコマンドプロンプトから、opencv\build\x64\vc12\bin\に移動してopencv_traincascade.exeを実行する。下記のようなコマンドを実行した。

opencv_traincascade.exe -data ./cas/test -vec ./vec/test.vec -bg ./neg/nglist.txt -numPos 50 -numNeg 20

すると以下のようなエラーメッセージが出た。

cascadeDirName: cas/test
vecFileName: vec/test.vec
bgFileName: neg/nglist.txt
numPos: 50
numNeg: 20
numStages: 20
precalcValBufSize[Mb] : 1024
precalcIdxBufSize[Mb] : 1024
stageType: BOOST
featureType: HAAR
sampleWidth: 24
sampleHeight: 24
boostType: GAB
minHitRate: 0.995
maxFalseAlarmRate: 0.5
weightTrimRate: 0.95
maxDepth: 1
maxWeakCount: 100

===== TRAINING 0-stage =====
<BEGIN
POS count : consumed   50 : 50
Train dataset for temp stage can not be filled. Branch training terminated.
Cascade classifier can't be trained. Check the used training parameters.

エラーメッセージ
Train dataset for temp stage can not filled. Branch training terminated.
Cascade Classifier can't be trained. check the used training parameters

ググって色々と調べてみたが私の場合はあまり参考にならなかった。
いちおう参考までに調べたエラーの結果は以下の通り。

などだったが、私の場合はどちらも当てはまらなかった。

解決

結局、調べてわからなかったので、初心に返ってインストールのところから読み直してなんとなくわかった。

OpenCVをインストールする際に、C:\ 以下のフォルダーを選んでおけばよかっただけだった。

>私の場合、デスクトップで展開してました。

※インストールする際、管理者権限で実行しないと、C:\ 以下に「opencv」のフォルダーが見当たらなくなるので要注意。

追記

これで難なくopencv_traincascade.exeを起動させ無事に先ほどのエラーもなく実行することはできたが、新たなエラーメッセージが出た。

===== TRAINING 0-stage =====
<BEGIN
POS count : consumed   50 : 50
NEG count : acceptanceRatio    20 : 1
Precalculation time: 3
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        1|
+----+---------+---------+
|   2|        1|        1|
+----+---------+---------+
|   3|        1|        1|
+----+---------+---------+
|   4|        1|        1|
+----+---------+---------+
|   5|        1|        1|
+----+---------+---------+
|   6|   0.9955|    0.391|
+----+---------+---------+
END>
Parameters can not be written, because file cas/test/params.xml can not be opened.

エラーメッセージ
Parameters can not be written, because file cas/test/params.xml can not be opened.

このメッセージは、「cas/test/フォルダーに書き込む権限がありません」という意味なので、

①casフォルダーを右クリック
②プロパティからセキュリティーを選択
③「追加」からeveryoneを追加して権限を付与

以上でエラーメッセージが出ることなく進めることができた。

検出器を作成するにあたり参考にさせていただいた記事

http://www.pro-s.co.jp/engineerblog/opencv/post_6202.html
https://github.com/opencv/opencv/blob/master/apps/traincascade/cascadeclassifier.cpp
http://qiita.com/shu223/items/ffd2202eaf92d342f83d

0
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
5