REC
最近在做OpenCV相關的項目時發現,在跑dnn模型時如果單純只使用cpu幀率會非常低,有時甚至一兩秒才刷一幀的圖像出來,需要使用硬件加速,所以在各大論壇等翻閱使用GPU加速的教程,可惜非常雜,而且并不完整。作者在實際操作中也是踩坑無數,同時借此整理一篇關于OpenCV配置CUDA支持GPU加速的教程,供大家參考。
相關的資料也會整理后,大家可通過后臺私信 OpenCV 獲得本次的所有相關文件源碼以及軟件包。
一、環境準備
查看電腦NVIDIA的CUDA版本號,下載對應版本CUDA Toolkit(當前使用11.1版本)(具體需不需要下載和自己電腦cuda相同版本的還有待查證)
cmake3.17.2(最高只支持到vs2019版)
visual studio 2019
opencv源代碼(當前使用opencv 4.6.0版本)
opencv_contrib(當前使用4.6.0版本)
以上相應下載鏈接及軟件會放在資料里。CUDA精簡安裝教程請關注補充內容
二、使用cmake “make”
1、打開cmake(cmake-gui),第一個源代碼路徑選擇剛剛下載的opencv源代碼路徑,路徑需要選擇到sources 第二個編譯輸出路徑,可在opencv文件夾下創建一個新的文件夾,用于存放編譯輸出的文件,這里創建為newbuild。
之后點configure進行第一次配置,彈出窗口第一個選擇visual studio 16 2019,第二個選擇x64,其余保持默認,點擊finish,等待配置完成后不出意外會有3個錯誤和警告,需要重點關注,這些錯誤會影響到后面的編譯。
我的錯誤為 (1)跟python2.7相關的錯誤,可忽略
(2)FFMPEG的相關文件下載失敗,這里需要自己從自己選擇的編譯輸出路徑中找到 CMakeDownloadLog.txt 打開(我的路徑為H:opencv_pasksopencv ewbuildCMakeDownloadLog.txt),里面提供了FFMPEG相關文件的鏈接地址,下載即可。最后我們統一放入相關文件夾內(所以這里只需先下載下來,暫不用放入任何文件夾內)
(3)這里只是個 warning 不是 error ,可忽略
(當然有的人可能還會有和 ippicv 相關的錯誤,和 ffmpeg 同理,找到對應的文件鏈接下載即可) 2、勾選相應配置 (1)在 search 搜索框里搜索 cuda,勾選 OPENCV_DNN_CUDA 和 WITH_CUDA 兩個選項
(2)搜索 example,勾選 BUILD_EXAMPLES 和 INSTALL_PYTHON_EXAMPLES(這一步可不用)
(3)搜索 non,勾選OPENCV_ENABLE_NONFREE
(4)搜索 mod,OPENCV_EXTRA_MODULES_PATH 選擇剛剛下載的 opencv_contrib 路徑,需要到 modules 文件夾下(我的為H:/opencv_pasks/opencv_contrib-4.6.0/modules, 注意這里是正斜杠而不是反斜杠) 以上完成之后再次點擊 configure 進行第二次配置,等待配置完成后可繼續下一步。
這里不出意外會多出幾個紅色的錯誤警告 例如:wechat_qrcode、xfeatures2d、face相關等,基本都是因為下載不到文件引起,需要自己手動下載
(5)搜索 cudnn,勾選 WITH_CUDNN(我的默認已經勾選)
(6)搜索 cubla,勾選WITH_CUBLAS(我的默認已經勾選)
(7)搜索 cuda_ar,在CUDA_ARCH_BIN填入自己的顯卡gpu算力,不知道的可進入網址查詢,我的為6.1。 (顯卡gpu算力查詢網址見資料)
(8)搜索 fast,勾選CUDA_FAST_MATH 和 ENABLE_FAST_MAT
(9)搜索 type,將CMAKE_CONFIGURATION_TYPES的DEBUG刪除,只保留Release
(10)搜索 world,勾選BUILD_opencv_world
完成上述后再次點擊 configure 進行第三次配置,等待配置完成后,這時我們需要放入剛剛所說的一些下載錯誤的缺失文件。
在源碼目錄下的 .cache 文件夾內(我的路徑為 H:opencv_pasksopencvsources.cache)放入剛剛下載的相應文件,需要放入到對應的文件夾下,并且文件名需要和自己目錄下生成的 0k 文件名相對應,不對應的需要修改成對應的,然后將其替換。(不會的可以參考我的 .ceche 目錄,同時如果有文件下載不了的可以使用我文件里的)
替換完剛剛出錯的所有文件后,回到 cmake,點擊 Generate 會生成一個vs2019的c++工程,之后點擊 open Project 打開工程。
在 vs2019 上方選擇 Release,之后點右邊的 CmakeTargets-ALL_BUILD,右鍵生成,等待生成完成,過程大約一小時到兩小時,根據自己電腦的 cpu 而定。生成完會出現0錯誤、0跳過,全是成功的,之后還是同樣在 ALL_BUILD 下方的 INSTALL,同樣右鍵生成,過程大約幾分鐘,等待生成完成即可。
三、配置環境變量
此電腦右鍵-屬性-高級系統設置-高級-環境變量 在上方的用戶變量中新建兩個變量
在下方的系統變量-Path中新建三個變量,配置完后確定即可
四、測試
在代碼中,需要對net類進行兩處修改
net.setPreferableBackend(cv2.dnn.DNN_BACKEND_CUDA) net.setPreferableTarget(cv2.dnn.DNN_TARGET_CUDA)
之后運行即可支持GPU加速。
-
NVIDIA
+關注
關注
14文章
4986瀏覽量
103056 -
gpu
+關注
關注
28文章
4740瀏覽量
128948 -
OpenCV
+關注
關注
31文章
635瀏覽量
41350 -
CUDA
+關注
關注
0文章
121瀏覽量
13626
原文標題:OpenCV配置CUDA以支持GPU加速
文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論