GPU版本光流算法

GPU版本光流算法

代碼鏈接:gpu_flow

之前一直使用MATLAB 工具箱(Piotr’s Image & Video Matlab Toolbox)來提取光流,速度奇快,但是效果不是很好。後來用了opencv自帶的TVL1算法,速度奇慢,速度幾秒一幀(i7-7700k)。

在雙流論文裏看到了這個GPU版本的方法,同時大佬也推薦這個。於是就來試試。誰知道坑如此之深(主要還是自己太菜)不小心把系統玩壞了,走了個大彎路。

好了,正式介紹一下。把踩得坑都說一下。

一. 克隆到本地

git clone https://github.com/feichtenhofer/gpu_flow.git


二. 安裝各種依賴項

依賴項

  1. Opencv 2.4 [本人使用opencv2.4.13, 2.4.9編譯過程老失敗]
  2. Qt 5.4
  3. cmake [這裏囉嗦一下,強烈推薦使用cmake-gui]

三. 參數調整

將compute_flow.cpp文件中 vid_path out_path out_path_jpeg 按照個人需求修改,分別對應與要處理視頻所在地址,輸出光流保存地址,輸出圖片保存地址。


四. 安裝

  1. mkdir -p build

  2. cd build

  3. cmake ..

    這裏強烈建議用cmake-gui

  4. make


五. 各種問題以及解決

  1. make時 /usr/bin/ld: cannot find -lopencv_dep_cudart
  2. make時 /usr/lib/x86_64-linux-gnu/libsoxr.so.0: undefined reference to `GOMP_parallel@GOMP_4.0’

網上解決方案:

在cmake時加上-D CUDA_USE_STATIC_CUDA_RUNTIME=OFF

即:

cmake -D CUDA_USE_STATIC_CUDA_RUNTIME=OFF ..

但是第二個問題很難解決。。。

我的解決方案:

使用cmake-gui

在configure之後報錯 去掉勾選的 CUDA_USE_STATIC_CUDA_RUNTIME

再configure一次。然後generate。

期間可能有這個錯誤:

CMake Error at CMakeLists.txt:20 (find_package):

  By not providing "FindQt5Core.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "Qt5Core", but
  CMake did not find one.
  Could not find a package configuration file provided by "Qt5Core" with any
  of the following names:

 Qt5CoreConfig.cmake
 qt5core-config.cmake

一行命令解決:

sudo apt install qtbase5-dev

最後進入build文件夾中make一下。這樣就搞定了。

在執行中可能遇到

./compute_flow: /home/xxx/anaconda3/lib/libgomp.so.1: version `GOMP_4.0' not found (required by /usr/lib/x86_64-linux-gnu/libsoxr.so.0)

升級一下anaconda就好了。(比較慢,耐心等待)

conda update conda
conda update anaconda

六. 執行

按照作者github上的介紹

./compute_flow [option]

速度確實快!!平均每幀~15ms的樣子(320*240的視頻, 1080ti單卡)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章