训练报错:
OpenCV エラー: 引数が正しくありません (新しい陽性サンプルを取得できません。最も考えられる理由は、指定された vec ファイル内のサンプル数が不十分であることです。) in get、file /home/opencv-.1.0/apps/traincascade/imagestorage.cpp、行 157 terminate は、「cv::Exception」のインスタンスをスローした後に呼び出されます what(): /home/opencv-3.1.0/apps/traincas cade/imagestorage.cpp:157: エラー: (-5) 新しい陽性サンプルを取得できません。最も考えられる原因は、指定された vec ファイル内のサンプル数が不十分であることです。
関数で取得
放棄 (コアダンプ)
情報を検索したところ、基本的には NumPos 設定が大きすぎると言われました (ただし、numPos を数回調整しようとしましたが、それでもエラーが報告されました)。トレーニング コマンド ステートメントのパラメーターは次のとおりです。
opencv_traincascade -data classifier -vec tables.vec -bg negatives.txt\
-numStages 20 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -numPos 1000\
-numNeg 600 -w 80 -h 40 -mode ALL -precalcValBufSize 1024\
-pre calcIdxBufSize 102 4
この段落は、github プロジェクトのソース コード ステップを直接コピーして貼り付けたものです。データに従って、numPos 1000 を 500 に、numNeg 600 を 300 に変更しましたが、それでもエラーが報告されました。
解決策:
後で、「-w 80 -h 40」がそれぞれポジティブ サンプルの幅と高さを表すことがわかりましたが、よく考えて、ポジティブ サンプル画像はすべて 20×20 であるため、次のようにコマンド パラメーターを「-w 20 -h 20」に設定しようとしました。
perl bin/createsamples.plpositives.txt negatives.txt サンプル 1500\
"opencv_createsamples -bgcolor 0 -bgthresh 0 -maxxangle 1.1\
-maxyangle 1.1 maxzangle 0.5 -maxidev 40 -w 20 -h 20"
opencv_traincascade -data classifier -vec tables.vec -bg negatives.txt \
-numStages 20 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -numPos 500\
-numNeg 300 -w 20 -h 20 -mode ALL -precalcValBufSize 1024\
-precalcIdxBufSize 1024
成功跑通
最新追記:ポジサンプル画像の幅と高さの比率は、上記のwとhの比率と同じである必要があり、必ずしも等しい必要はないという情報を見ました。
https://blog.csdn.net/weixin_39388032/article/details/118175930
opencv_traincascade.exe を実行して
最初の層をトレーニングした後、エラーが発生します。
OpenCV: 終了ハンドラーが呼び出されます! 最後の OpenCV エラーは次のとおりです:
OpenCV(3.4.6) エラー: 引数が正しくありません (> 新しい陽性サンプルを取得できません。
最も考えられる理由は、指定された vec ファイル内のサンプル数が不十分であることです。
1
2
3
この問題は、主に numPos の値が正しく設定されていないことが原因です。彼らは numPos を
陽性サンプルとして解釈しているだけであり、私は常にそう考えてきたため、numPos の値は ve を作成した num 番号とまったく同じになります。 c サンプル。
これは間違いです。numPos の値を制限する公式があります。
vec ファイル番号 >= (numPos + (numStages-1) * (1 – minHitRate) * numPos) + S 1
vec
ファイル番号: vec ファイルを作成するためのポジティブ サンプルの num S: vec ファイルを生成する
ときのネガティブ サンプルの総数を示します。
(S は、背景としてすぐに認識できる vec ファイルからのサンプルの数です)
実際の測定後、いくつかの断言があります:
1. 確かに numPos の問題です;
2. numPos は、設定された num 番号と生成された vec ファイルよりも小さいはずです; 修正する場合は、上記を参照して NumPos の値を減らすことができます 3. 最初のトレーニング層を観察します。最初のトレーニング層の終了後、エラーが報告された後は問題ありません ; ————————————————— https://blog.csdn.net/サザス/記事/
詳細
/
100275777