CascadeClassifier::detectMultiScale()
の推奨パラメーターは何ですか?また、デフォルトのパラメーターを変更する必要がある要因に応じて?
void CascadeClassifier::detectMultiScale(
const Mat& image,
vector<Rect>& objects,
double scaleFactor=1.1,
int minNeighbors=3,
int flags=0,
Size minSize=Size(),
Size maxSize=Size() )
これらのパラメーターの中で、次の4つにさらに注意を払う必要があります。
scaleFactor
–各画像スケールで画像サイズをどれだけ縮小するかを指定するパラメーター。
基本的に、スケールピラミッドの作成にはスケール係数が使用されます。詳細な説明は here にあります。つまり、 here で説明したように、モデルはトレーニング中に定義された固定サイズを持ち、xml
で表示されます。これは、このサイズの顔が存在する場合、画像で検出されることを意味します。ただし、入力画像のサイズを変更することで、大きな顔を小さな顔にサイズ変更して、アルゴリズムで検出できるようにすることができます。
1.05
は、これに適した値です。つまり、サイズ変更に小さなステップを使用します。つまり、サイズを5%縮小し、サイズが検出用のモデルと一致する可能性を高めます。見つかりました。これは、アルゴリズムがより徹底的であるため、アルゴリズムの動作が遅くなることも意味します。検出を高速化するために最大1.4に増やすことができますが、一部の顔が完全に失われるリスクがあります。
minNeighbors
–各候補長方形を保持するために必要な近傍の数を指定するパラメーター。
このパラメーターは、検出された顔の品質に影響します。値が大きいほど検出は少なくなりますが、品質は高くなります。 3~6
は適切な値です。
minSize
–可能な最小オブジェクトサイズ。それより小さいオブジェクトは無視されます。
このパラメータは、検出するサイズを決定します。あなたが決める!通常、[30, 30]
は、顔検出の良い出発点です。
maxSize
–可能な最大オブジェクトサイズ。これより大きいオブジェクトは無視されます。
このパラメーターは、検出するサイズの大きさを決定します。繰り返しますが、あなたはそれを決定します! 通常、手動で設定する必要はありません。デフォルト値では、顔のサイズの上限なしで検出することを想定しています。