Улучшить производительность анализа плотного оптического потока (легко)? - PullRequest
2 голосов
/ 01 сентября 2011

Я написал программу, которая использует OpenCV cvCalcOpticalFlowLK. Он хорошо работает на входе веб-камеры с низким разрешением, но мне нужно запустить его в потоке Full HD с другими значительными вычислениями после анализа оптического потока для каждого кадра. Обработка 5-минутного видео, уменьшенного до 1440x810, заняла 4 часа :( Большую часть времени проводят в cvCalcOpticalFlowLK.

Я исследовал повышение скорости за счет добавления более сырого процессора, но даже если я получу 8-ядерный зверь, и ускорение является теоретическим идеалом (скажем, 8x, поскольку я в основном использую только одну из моих 2,9 ГГц) ядра), я бы только получил 4FPS. Я хотел бы достичь 30FPS.

Похоже, что дальнейшие исследования указывают на реализацию этого на GPU с CUDA, OpenCL или GLSL (?). Я нашел несколько проверенных реализаций (например, http://nghiaho.com/?page_id=189),, и многие статьи говорят, что в основном «это отличное приложение для графического процессора, мы сделали это, это было здорово, и нет, мы не будем делиться нашими код ". Само собой разумеется, я не получил ни одного из них для запуска.

Кто-нибудь знает о реализации на базе графического процессора, которая будет работать на Mac с картой NVIDIA? Есть ли ресурсы, которые могут помочь мне в написании своих собственных? Существуют ли другие плотные алгоритмы OF, которые могли бы работать лучше?

Спасибо!

1 Ответ

1 голос
/ 01 сентября 2011

А как насчет Байесовского оптического потока OpenVidia ? Также в документе Плотный и точный параллельный оптический поток в реальном времени с использованием CUDA говорится, что их работа находится в свободном доступе в зоне CUDA. Я не смог найти его там сразу, но, может быть, вы найдете или можете написать авторам?

...