この問題は、2012 年 6 月に OpenCV DevZone サイトでユーティリティの作成者によって回答されました。
マリアを引用するには:
問題は、vec ファイルのサンプル数が、コマンド ライン -numPos 979 で渡したものとまったく同じであることです。トレーニング アプリケーションは、vec ファイルのすべてのサンプルを使用して 0 段階をトレーニングし、次の新しいポジティブ サンプルを取得できません。 vec-fileが終わったので、ステージトレーニング。traincascade のバグは、このような場合に assert() があったことですが、ユーザーにエラー メッセージを表示して例外をスローする必要があります。r8913 で修正されました。-numPose は、各ステージのトレーニングに使用されるサンプル カウントです。一部の既に使用されているサンプルは、前の各ステージでフィルタリングできます (つまり、バックグラウンドとして認識されます) が、各ステージで (1 - minHitRate) * numPose を超えることはできません。そのため、vec ファイルには >= (numPose + (numStages-1) * (1 - minHitRate) * numPose) + S が含まれている必要があります。ここで、S は vec ファイルからのサンプル数であり、すぐにバックグラウンドとして認識できます。
それは私のために働いた。私も同じ問題を抱えていました。HAAR トレーニングに関する有名なチュートリアルに従っていましたが、-npos 7000 -nneg 2973 を使用して新しいトレーニング ユーティリティを試してみたかったのです。
だから私は次の計算をしました:
vec ファイルには >= (numPos + (numStages-1) * (1 - minHitRate) * numPos) + S を含める必要があります
7000 >= (数値 + (20-1) * (1 - 0.999) * 数値) + 2973
(7000 - 2973)/(1 + 19*0.001) >= 数値
数値 <= 4027/1.019
数値 <= 3951 ~~ 3950
と使用:
-npos 3950 -nneg 2973
できます。また、他の人も numPos を減らすことに成功していることに気付きました: here