web-dev-qa-db-ja.com

顔検出におけるHaar CascadesとLBP Cascades

私はOpenCV(オープンソースコンピュータービジョンライブラリ)で顔検出を実験してきましたが、OpenCVにはいくつかの顔があるため、Haarカスケードを使用して顔を検出できることがわかりました。しかし、いくつかのLBPカスケードもあることに気付きました。いくつかの調査を行った結果、LBPはLocal Binary Patternsの略であり、 OpenCV Face Detection Documentation によると、顔検出にも使用できることがわかりました。

私が知りたいのは、どちらが良いですか?どれがより速く実行され、どれがより正確ですか? LBPはより高速に実行されるようですが、それについても100%確信はありません。ありがとう。

52
Bojoeb

LBPは高速ですが(数倍高速)、精度は低くなります。 (Haarより10-20%少ない)。

組み込みシステムで顔を検出する場合は、LBPがすべての計算を整数で行うため、選択肢であると思います。 Haarはフロートを使用しますが、これは組み込み/モバイルのキラーです。

61
Sam

LBPカスケードは、Haarカスケードと同様(またはそれ以上)に実行するようにトレーニングできますが、箱から出してすぐに、Haarカスケードは約3倍遅くなり、データによっては、顔。顔検出が95%以上の精度範囲で動作できることを考えると、この精度の向上は非常に重要です。

[〜#〜] muct [〜#〜] データセットを使用した場合の結果を以下に示します。

グラウンドトゥルースとOpenCVの検出座標の間に少なくとも50%のオーバーラップがある場合、正しい検出が記録されます。

Cascade:haarcascade_frontalface_alt2.xml
Datafile:muct.csv
|---------------------------------------------------|
|   Hits  |  Misses  | False Detects  | Multi-hit   |
|  3635   |   55     |   63           |    5        |
|---------------------------------------------------|
Time:4m2.060s

対:

Cascade:lbpcascade_frontalface.xml
Datafile:muct.csv
|---------------------------------------------------|
|   Hits  |  Misses  | False Detects  | Multi-hit   |
| 3569    |  106     |   77           |    3        |
|---------------------------------------------------|
Time:1m12.511s
24
NoUserException

私の意見では、同じトレーニングデータセットとパラメーターについては、LBPトレーニングには数分かかり、HAARトレーニングには数日かかるため、検出関連のすべてのタスクについてLBPを調べる必要があります。

あなたが尋ねた質問は、検出されているものの種類、検出中に使用されたトレーニング設定とパラメーター、およびカスケードをテストするための基準に応じて異なるパフォーマンスを持ちます。

HAARカスケードとLBPカスケードの両方の精度は、トレーニングに使用されるデータセット(正および負のサンプル)およびトレーニング中に使用されるパラメーターに依存します。

Lienhart et al、2002 によると、顔検出の場合:

  • きみの -numStages-maxDepthおよび-maxWeakCountパラメータは、必要な-minHitRateおよび-maxFalseAlarmRate
  • ツリーベースのトレーニングは切り株ベースよりも正確です。
  • 穏やかなadaboostは、個別の実際のadaboostよりも望ましいですが、
  • トレーニングサンプルの最小サイズは重要ですが、それについての体系的な研究はまだ行われていません。

また、detectMultiScale()で使用されるフラグは、特定のハードウェア構成で速度と精度を大幅に変更します。

カスケードをテストするには、データセットとk-fold cross validation などの方法で解決する必要があります。

13
samkhan13

役に立つかもしれません:

Simd Library があり、HAARおよびLBPカスケード分類子の 実装 があります。 OpenCVの標準のHAARおよびLBPカスケードを使用できます。この実装には、SSE4.1、AVX2、AVX-512、およびNEON(ARM)を使用したSIMD最適化があるため、元のOpenCV実装よりも2〜3倍速く動作します。

10
ErmIg

また、トレーニング段階では、LBPはHaarよりも高速です。 2000 posサンプルと300ネガサンプル、Haarタイプを使用したトレーニングでは、完了まで約5〜6日かかりましたが、LBPでは数時間しかかかりませんでした。

7
Đôn Nguyễn