3

OpenCV の opencv_traincascade を使用して Haar Cascade を生成しようとしています。これまでのところ、テスト目的で 87 の明確な陽性サンプルと 39 の陰性サンプルがあります。opencv_createsamples で .vec ファイルを生成しましたが、うまくいきました。opencv_traincascade を実行していると、パラメータをどのように変更しても、いくつかの段階の後に常にスタックします。私の呼び出しは次のようになります。

opencv_traincascade -data /opencvimgs/haarcascades/data/ -vec /opencvimgs/haarcascades/out.vec -bg /opencvimgs/haarcascades/neg.txt -numPos 87 -numNeg 39

minHitRate と maxFalseAlarmRate、numPos と numNeg を増減させてみましたが、成功しませんでした。さらに数ステージ実行される可能性がありますが、その後、無限ループで再びハングアップするようです。どうすればこれを解決できますか?

以下の出力は、プログラムがコンソールに書き込むものです。

opencv_traincascade -data /opencvimgs/haarcascades/data/ -vec 
/opencvimgs/haarcascades/out.vec -bg /opencvimgs/haarcascades/neg.txt -numPos 87 -numNeg 39
PARAMETERS:
cascadeDirName: /opencvimgs/haarcascades/data/
vecFileName: /opencvimgs/haarcascades/out.vec
bgFileName: /opencvimgs/haarcascades/neg.txt
numPos: 87
numNeg: 39
numStages: 20
precalcValBufSize[Mb] : 256
precalcIdxBufSize[Mb] : 256
stageType: BOOST
featureType: HAAR
sampleWidth: 24
sampleHeight: 24
boostType: GAB
minHitRate: 0.995
maxFalseAlarmRate: 0.5
weightTrimRate: 0.95
maxDepth: 1
maxWeakCount: 100
mode: BASIC

===== TRAINING 0-stage =====
<BEGIN
POS count : consumed   87 : 87
NEG count : acceptanceRatio    39 : 1
Precalculation time: 1
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        0|
+----+---------+---------+
END>

===== TRAINING 1-stage =====
<BEGIN
POS count : consumed   87 : 87
NEG count : acceptanceRatio    39 : 0.0697674
Precalculation time: 1
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        0|
+----+---------+---------+
END>

===== TRAINING 2-stage =====
<BEGIN
POS count : consumed   87 : 87
NEG count : acceptanceRatio    39 : 0.00945455
Precalculation time: 1
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        0|
+----+---------+---------+
END>

===== TRAINING 3-stage =====
<BEGIN
POS count : consumed   87 : 87
NEG count : acceptanceRatio    39 : 0.000326907
Precalculation time: 1
+----+---------+---------+
|  N |    HR   |    FA   |
+----+---------+---------+
|   1|        1|        0|
+----+---------+---------+
END>

===== TRAINING 4-stage =====
<BEGIN
POS count : consumed   87 : 87
4

1 に答える 1

2

考えられる答えは、使用しているネガティブ サンプルが少なすぎることです。OpenCV ドキュメントの説明と、Viola と Jones の参考文献を読んでください。彼らは、カスケード分類器を使用して、毎回負のサンプルの一部を排除することで、高精度と低誤警報を実現しています。使用するネガティブ サンプルが少なすぎると、そもそもカスケード分類器の目的が無効になります。実際に使用する場合、このシステムには、顔のある画像よりも顔のない画像の方がはるかに多いことに注意してください。

于 2013-03-25T21:47:25.200 に答える