OpenCV ライブラリのマルチコア サポートがあるかどうか疑問に思っていました。Haar カスケードを試していますが、4 つのコアを持つ Raspberry 2 ではかなり遅いですが、アプリケーションは現在 1 つのコアでしか実行されていません。
何か案は?
OpenCV ライブラリのマルチコア サポートがあるかどうか疑問に思っていました。Haar カスケードを試していますが、4 つのコアを持つ Raspberry 2 ではかなり遅いですが、アプリケーションは現在 1 つのコアでしか実行されていません。
何か案は?
CascadedDetect
マルチコアをサポートしています。
WITH_TBB
or (またはOpenCV でWITH_OPENMP
サポートされているその他のスレッド フレームワーク) フラグをオンにして OpenCV を再コンパイルし、有効にします。
CascadeClassifier
のクラスを簡単に見てみましたが、組み込みの OpenCV マルチスレッド機能であるmodules\objdetect\src\cascadedetect.cpp
を使用してかなりの量の実装が行われているようです。parallel_for_
ただし、走行距離は異なる場合があります。OpenCV サポート フォーラムのこのスレッドが示唆しているように、少なくともトレーニング フェーズでは、多くの連続したコードがあるようです。
したがって、OpenCV を OpenMP (セットアップが最も簡単な場合があります)、TBB、または同様のものでコンパイルできる場合は、問題ありません。
それが役立つことを願っています!
最近、HAAR および LBP カスケード分類器を実装したSimd Libraryを見つけました。OpenCV の標準 HAAR および LBP カスケードを使用できます。この実装には、SSE4.1、AVX2、および NEON(ARM) を使用した SIMD 最適化があります。
Raspberry 2 については確認していませんが、Raspberry 3 については確認しました (元の OpenCV 実装よりも ~2 倍速く動作します)。