web-dev-qa-db-ja.com

OpenCV detectMultiScale()minNeighborsパラメーター

現在、オブジェクトを検出するためにHaar分類器を使用しています。途中で、minNeighborsパラメーターとは何か、それが何を表しているのか理解できませんでした。実際、検出候補の四角形の隣に何があるのか​​わかりません。誰かが近隣のアイデアを定義できますか?

25
blakeO

Haarカスケード分類器は、スライディングウィンドウアプローチで動作します。カスケードファイルを見ると、通常20 20のような非常に小さな値のサイズパラメータがあります。これは、カスケードが検出できる最小のウィンドウです。したがって、スライディングウィンドウアプローチを適用することにより、ウィンドウのサイズを変更し、それ以上サイズを変更できなくなるまで再度検索するよりも、ウィンドウを画像全体にスライドさせます。そのため、繰り返しごとに、haarのカスケード分類子の真の出力が保存されます。そのため、このウィンドウを画像内でスライドして、サイズを変更してから再度スライドすると、実際に多くの誤検知を検出します。 minNeighborsを指定することで、何を検出したかを確認できます。ここに例があります:

minNeighbors = 0

したがって、スライディングウィンドウのサイズ変更と多くの誤検知のために、多くの顔検出があります。したがって、誤検出を排除し、検出から適切な顔の長方形を取得するために、近傍アプローチが適用されます。それが他の長方形の近くにある場合、それがOKである場合、それをさらに渡すことができるようです。したがって、この数値は、顔の長方形として渡すために必要な近傍の量を決定します。同じ画像で1の場合:

minNeighbors = 1

そのため、この数を増やすことで誤検知をなくすことができますが、注意する必要があります。増やすと、真の陽性も失われる可能性があります。 の場合、完璧な結果:

minNeighbors = 3

72
yutasrobot

OpenCVドキュメント から:

minNeighbors–各候補矩形が保持する必要がある近傍の数を指定するパラメーター。

つまり、このパラメーターは、検出された顔の品質に影響します。値が大きいほど検出は少なくなりますが、品質は高くなります。

このパラメーターの背後にある考え方は、検出器が複数のスケールスタイルで実行され、同時にスライドに沿って実行されることですウィンドウ戦略。このステップの後、単一の顔領域に対しても複数の応答が得られます。このパラメーターは、下限のしきい値を設定するのと同様に、これらの応答をフィルターする傾向があります。つまり、この顔の応答数がminNeighborsよりも大きい場合にのみ有効な顔としてカウントされます。


CascadeClassifier :: detectMultiScale の他のパラメーターを学ぶには、以前に答えた this post をチェックしてください。

9
herohuyongtao