11

Windows 7でvs2010を使用してソースコード(OpenCV 2.4.0)からopencv_traincascade.exeツールを構築しています。LBP分類子をトレーニングしたいので、次の引数でopencv_traincascade.exeを使用しています。

-data D:\ OpenCV \ Classifiers \ lbpclassifier1 \ temp \ data -vec D:\ OpenCV \ Classifiers \ lbpclassifier1 \ temp \ samples.vec -bg D:\ OpenCV \ Classifiers \ lbpclassifier1 \ temp \negative \ infofile.txt -numPos 40 -numNeg 40 -precalcIdxBufSize 500 -precalcValBufSize 500 -stageType BOOST -featureType LBP -w 24 -h 24

私が受け取るエラーメッセージは次のとおりです。

PARAMETERS:
cascadeDirName: D:\OpenCV\Classifiers\lbpclassifier1\temp\data
vecFileName: D:\OpenCV\Classifiers\lbpclassifier1\temp\samples.vec
bgFileName: D:\OpenCV\Classifiers\lbpclassifier1\temp\negative\infofile.txt
numPos: 2
numNeg: 40
numStages: 20
precalcValBufSize[Mb] : 500
precalcIdxBufSize[Mb] : 500
stageType: BOOST
featureType: LBP
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   2 : 2
Train dataset for temp stage can not be filled. Branch training terminated.

この質問は以前に尋ねられました:opencv_trainカスケードの使用中のエラー 、そして解決策はそこで提案されました。この場合、正のサンプルと負のサンプルの数を等しくしても役に立ちません。

エラーはこのバグに関連している可能性があると思いました:http://code.opencv.org/issues/1834 そこで、そのページからimagestorage.cppの最新リリースをダウンロードし、opencv_traincascadesツールを再構築しました。また、.vecファイルのサンプルの総数は45です。このコメントで示唆されているように、.vecファイルのサンプルが不足しないように、numPos引数を2に変更しました。.vecファイルのサンプル数は45です。

どんな助けでも大歓迎です。ありがとう。

4

10 に答える 10

13

まず、私にとっても、エラーはbgファイルにありました。Opencv2.4.10.1を使用しています。

コマンドでbgファイルへの絶対パスを指定すると(投稿の作成者など)、エラーが発生しました。作者は、完全なネガティブイメージパスを理解する上で、本当に、本当にくだらない仕事をしたようです。簡単な回避策の1つは、.infoファイルのディレクトリにCDを挿入することです(-bg infofile.txtに注意してください) 。

cd D:\OpenCV\Classifiers\lbpclassifier1\temp\negative
train_cascade -data D:\OpenCV\Classifiers\lbpclassifier1\temp\data -vec D:\OpenCV\Classifiers\lbpclassifier1\temp\samples.vec -bg infofile.txt -numPos 40 -numNeg 40 -precalcIdxBufSize 500 -precalcValBufSize 500 -stageType BOOST -featureType LBP -w 24 -h 24
于 2015-03-28T19:05:52.460 に答える
8

また、OpenCVオブジェクト検出ツールの使用方法も学んでいます。

bgファイル(この場合は「D:\ OpenCV \ Classifiers \ lbpclassifier1 \ temp \negative \ infofile.txt」)の形式が間違っているか、ファイルが存在しないエントリが含まれていると、opencv_traincascadeでエラーが発生することに気付きました。

それが役に立てば幸い。

于 2012-08-30T03:01:28.393 に答える
4

この質問を締めくくりたいと思います。これにつまずいた人にも。私はその古いことを知っています。トレインカスケードをデバッグしたところ、ある時点で次の行が見つかりました。

src = imread( imgFilenames[last++], CV_LOAD_IMAGE_GRAYSCALE );

nullマットを返します。この行は背景画像を読み取る必要があります。

このバグは、traincascade.cppをデバッグとしてビルドし、opencvのリリースライブラリとdllを使用している場合に発生します。(逆の方法も同様に機能しないはずです。

于 2013-06-04T11:25:49.657 に答える
3

私はエラーを与えるこの同様の問題を抱えていました:

POS count : consumed   50 : 50
Train dataset for temp stage can not be filled. Branch training terminated.

問題は、私のbg.txtが次の行に\rを使用してWindowsシステムで生成されたことです。Ubuntuでopencv_traincascadeを使おうとすると、ファイルリストの文字列に「\ r」が読み込まれるため、 (xeedが述べたように)CvCascadeImageReader::NegReader::nextImg()その行src = imread(imgFilenames[last++], 0);は機能しませんでした。

私の修正はstr.erase(std::remove(str.begin(), str.end(), '\r'), str.end());imgFilenames.push_back(dirname + str);に追加することでしたimagestorage.cpp

誰かがまだ苦労しているなら、これが役立つことを願っています。

于 2015-01-16T14:28:46.470 に答える
3

opencv_traincascade現在のフォルダ内のネガティブフォルダの画像を読み込もうとしています。したがって、画像フォルダに転送opencv_traincascade.exeする必要があります。negative/

例えば:

- opencv_traincascade.exe -data C:\Users\home\Documents\Face_Detection\HaarTrain\cascades -vec C:\Users\home\Documents\Face_Detection\HaarTrain\vector\vector.vec -bg bg.txt -numPos 130 -numNeg 500 -numStages 10 -precalcValBufSize 1024 -precalcIdxBufSize 1024
于 2018-07-17T12:40:20.387 に答える
1

私はまったく同じ問題を抱えていました。私にとっての問題は、ファイルにBOMを書き込むPowerShellを使用してnegatives.txtファイルを作成したことでした。BOMは、ファイルを読み取ろうとするとopencv_traincascadeプログラムを起動し、画像を検出しません。Notepad ++を使用してファイルをUTF-8に変換したところ、問題が修正されました。

于 2016-01-11T05:33:11.550 に答える
1

この問題は何度か発生しました.vecが、ポジティブイメージに指定された間違ったサイズでファイルを生成したことが原因で発生しました。

たとえば、100×100ピクセルの700枚のポジ画像があり、.vecそれらを使用して正常に生成できました。したがって、私のテキストファイルは次のようになります。

/filepath/directory/image1.jpg 1 0 0 100 100
/filepath/directory/image2.jpg 1 0 0 100 100
…

しかし、カスケードHAARファイルをトレーニングしようとすると、画像が大きすぎました。そこで、それらのサイズを50×50に変更し.vec、縮小した画像を使用して(コマンドラインで新しいサイズを指定して)再作成しました。

おそらく正常に作成されました.vecが、トレーニングしようとするとエラーが発生します。正しいサイズでテキストファイルを再作成し、.vecファイルを再作成して、再度トレーニングを試みると、エラーは解消されました。私が抱えていたもう1つの問題は、ネガファイルに不正なパスやその他の問題などのエラーが含まれている場合です。他のすべてのコメントには、-bgファイルの何が問題になっているのかを理解するための良い提案があります。お役に立てれば。

于 2019-02-07T17:12:56.683 に答える
0

CentOS Linuxリリース7.4.1708(コア)

 opencv_traincascade -data haarcascadeHAAR 
-vec samples.vec -bg Bad.dat -numPos 1500 -numNeg 3000 
-numStages 35 -minHitRate 0.95 -maxFalseAlarmRate 0.5 
-mode ALL -w 20 -h 20 
-precalcValBufSize 2048 -precalcIdxBufSize 4096

システムの戻り応答:一時ステージのトレインデータセットを入力できません。ブランチトレーニングは終了しました。カスケード分類器はトレーニングできません。使用したトレーニングパラメータを確認してください。

この問題は、OpenCV2.4.6および3.1.0で発生しました。次の解決策(私の場合)-WindowsホストでファイルBad.datを作成し、UNIXでこのファイルをコピーすると、b-slashをslash(Viの場合は:%s / \ //)に切り替えますが、同じ結果が得られます。EOLをWin(CR LF)からNix(LF)に変更すると、traincascadeが正常に起動しました。

 $ file Bad.dat
Bad.dat: ASCII text, with CRLF line terminators

$ dos2unix Bad.dat
dos2unix: converting file Bad.dat to Unix format ...

$ file Bad.dat
Bad.dat: ASCII text

プロセスはうまく機能します理由-Bad.dat(-bg param内のファイル)を確認してください

于 2018-04-21T20:20:59.990 に答える
0

私(ubuntu16)に関しては、ファイルパスの問題です。以下は私のファイル構造です。

xy@xy:~/face_sample/face_csdn$ ll
total 7144
drwx------ 5 xy xy    4096 Jun  6 17:58 ./
drwxrwxr-x 3 xy xy    4096 Jun  5 19:03 ../
drwx------ 2 xy xy  376832 Jun  6 17:50 negdata/
drwx------ 2 xy xy  516096 Jun  6 17:11 posdata/
-rw-rw-r-- 1 xy xy 6408012 Jun  6 17:15 pos.vec
drwxrwxr-x 2 xy xy    4096 Jun  6 17:54 xml/

posdatapathpos.txt(画像絶対パス)を含む私のポジティブ画像ディレクトリです

xy@xy:~/face_sample/face_csdn$ ll -th  posdata/ | head - 5
==> standard input <==
total 75M
drwx------ 5 xy xy 4.0K Jun  6 17:58 ../
drwx------ 2 xy xy 504K Jun  6 17:11 ./
-rw-rw-r-- 1 xy xy 1.1M Jun  6 17:11 pathpos.txt
-rw-rw-r-- 1 xy xy  938 Mar 24  2014 18540.jpg
-rw-rw-r-- 1 xy xy  919 Mar 24  2014 18541.jpg
-rw-rw-r-- 1 xy xy  922 Mar 24  2014 18542.jpg
-rw-rw-r-- 1 xy xy  931 Mar 24  2014 18543.jpg

Aotopathpos.txt私は画像の絶対パスを使用します

xy@xy:~/face_sample/face_csdn$ head -5 posdata/pathpos.txt 

/home/xy/face_sample/face_csdn/posdata/10000.jpg 1 0 0 20 20
/home/xy/face_sample/face_csdn/posdata/10001.jpg 1 0 0 20 20
/home/xy/face_sample/face_csdn/posdata/10002.jpg 1 0 0 20 20
/home/xy/face_sample/face_csdn/posdata/10003.jpg 1 0 0 20 20
/home/xy/face_sample/face_csdn/posdata/10004.jpg 1 0 0 20 20

ここに画像の説明を入力してください

親ディレクトリに戻り、ネガティブtxtファイル(ネガティブイメージパス)を確認します

ここに画像の説明を入力してください

次に電車を持ってください:

ここに画像の説明を入力してください

上記は、opencv_traincascadeを使用してトレーニングする方法を示しています。

私はまた、主に画像パスに関して上記の問題に遭遇します。

于 2018-06-06T10:15:37.933 に答える
0

私も以前にこの問題を抱えています。しかし、パラメータ[maxFalseAlarmRate]を減らした後、0.1未満に設定したように、問題なく動作します。これが助けになることを願っています。

于 2019-08-14T11:05:39.830 に答える