web-dev-qa-db-ja.com

OpenCV detectMultiScale()パラメーターの推奨値

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() )
55
torayeff

これらのパラメーターの中で、次の4つにさらに注意を払う必要があります。

  • scaleFactor–各画像スケールで画像サイズをどれだけ縮小するかを指定するパラメーター。

    基本的に、スケールピラミッドの作成にはスケール係数が使用されます。詳細な説明は here にあります。つまり、 here で説明したように、モデルはトレーニング中に定義された固定サイズを持ち、xmlで表示されます。これは、このサイズの顔が存在する場合、画像で検出されることを意味します。ただし、入力画像のサイズを変更することで、大きな顔を小さな顔にサイズ変更して、アルゴリズムで検出できるようにすることができます。

    1.05は、これに適した値です。つまり、サイズ変更に小さなステップを使用します。つまり、サイズを5%縮小し、サイズが検出用のモデルと一致する可能性を高めます。見つかりました。これは、アルゴリズムがより徹底的であるため、アルゴリズムの動作が遅くなることも意味します。検出を高速化するために最大1.4に増やすことができますが、一部の顔が完全に失われるリスクがあります。

  • minNeighbors–各候補長方形を保持するために必要な近傍の数を指定するパラメーター。

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

  • minSize–可能な最小オブジェクトサイズ。それより小さいオブジェクトは無視されます。

    このパラメータは、検出するサイズを決定します。あなたが決める!通常、[30, 30]は、顔検出の良い出発点です。

  • maxSize–可能な最大オブジェクトサイズ。これより大きいオブジェクトは無視されます。

    このパラメーターは、検出するサイズの大きさを決定します。繰り返しますが、あなたはそれを決定します! 通常、手動で設定する必要はありません。デフォルト値では、顔のサイズの上限なしで検出することを想定しています。

130
herohuyongtao