web-dev-qa-db-ja.com

dlibとopencvのどちらを使用するか

私は現在OpenCV APIをPythonとそのすべてで学んでいます。私はまともな進歩を遂げています。それの一部はPythonまだ試したことのないC++何か本番品質を行うつもりなら、いつかOpenCVのC++バインディングに慣れる必要があることに気づきました。

つい最近、OpenCVのすべてのことを行うと主張しているdlibに出会いました。 C++で記述されており、Python APIも提供します(驚き)。独自の実装経験に基づいて、dlibを保証できますか?

18
ultrasounder

私はOpenCVとdlibの両方を顔検出と顔認識に幅広く使用してきましたが、dlibはOpenCV Haarベースの顔検出器と比較して非常に正確です。 (OpenCVには、ディープラーニングベースの顔検出器と顔認識モデルを取得するDNNモジュールが含まれていることに注意してください。)

OpenCV-DNNとDlibを顔検出/認識で比較している最中です。完了したら結果を投稿します。

Dlibには多くの便利な機能がありますが、私は他のCVタスクにはOpenCVを好みます。

編集:約束どおり、OpenCVとDlibの顔検出方法の詳細な比較を行いました。

これが私の結論です:

一般的なケース

ほとんどのアプリケーションでは、事前に画像内の顔のサイズがわかりません。したがって、OpenCV – DNNメソッドを使用することをお勧めします。これは、小さなサイズの顔でも、非常に高速で非常に正確であるためです。また、さまざまな角度で顔を検出します。ほとんどの場合、OpenCV-DNNを使用することをお勧めします

中規模から大規模の画像サイズ

Dlib HoGはCPUで最も高速な方法です。ただし、小さいサイズの顔(<70x70)は検出されません。したがって、アプリケーションが非常に小さなサイズの顔(たとえば、自撮りアプリ)を処理しないことがわかっている場合は、HoGベースの顔検出器がより良いオプションです。また、GPUを使用できる場合は、MMOD顔検出器がGPUで非常に高速であり、さまざまな角度で検出できるため、最適なオプションです。

詳しくは このブログ をご覧ください。

22
Vikas Gupta