2015-03-09 4 views
5

Мне было интересно, существует ли поддержка многоядерных процессоров для библиотеки OpenCV. Я экспериментирую с каскадом Haar, и это довольно медленно на моей малине 2, которая будет иметь четыре ядра, но мое приложение в настоящее время работает только на одном.Поддержка многоядерных процессоров OpenCV

Любые идеи?

+0

благодарит за ответы! – salocinx

ответ

4

CascadedDetect имеет многоядерную поддержку.

Перекомпилируйте OpenCV с WITH_TBB или WITH_OPENMP (или любой другой фреймворк, поддерживаемый OpenCV), чтобы включить его.

+0

или 'WITH_OPENMP' –

+0

Perfect - спасибо! – salocinx

1

У меня был беглый взгляд на класс CascadeClassifier в modules\objdetect\src\cascadedetect.cpp, и там, кажется, разумное количество осуществления сделано с parallel_for_, встроенный в OpenCV многопоточность объект.

Ваш пробег может отличаться. По крайней мере, на этапе обучения, похоже, много последовательного кода, как и предлагает this thread в форумах поддержки OpenCV.

Итак, если вы можете получить OpenCV для компиляции с помощью OpenMP (может быть, проще всего настроить), TBB или аналогичного, вы должны быть добрым.

Надеюсь, что это поможет!

+0

Отличный - большое спасибо! – salocinx

1

Недавно я нашел Simd Library, у которого есть implementation классификаторов каскадов HAAR и LBP. Он может использовать стандартные каскады HAAR и LBP от OpenCV. Эта реализация имеет оптимизацию SIMD с использованием SSE4.1, AVX2 и NEON (ARM).

Я не проверял его для малины 2, но я проверил его для малины 3 (он работает в ~ 2 раза быстрее, чем оригинальная реализация OpenCV).