最近了解並嘗試在Win10安裝YOLOv3,參考了十幾篇文章,發現每個人都有自己的安裝方式,最初嘗試用cmake編譯,雖然安裝完成,但無法使用GPU,坑非常多,經2天努力終於安裝成功,分享並記錄自己的安裝過程,供大家參考。
系統:Win10
顯卡:GeForce RTX2070 with Max-Q Design
其它:CUDA10.2,cuDNN7.6.5,VS2019,OpenCV3.4.0(opencv版本不能高於3.4.0)
1、顯卡驅動下載和安裝
打開NVIDIA官網驅動程序下載頁面,選擇適合你顯卡的驅動,下載並安裝。
選擇自定義安裝:
登錄賬戶,沒有就注冊一個:
點擊“跳過”:
確認“NVIDIA Studio Driver”安裝成功。
2、VS2019下載和安裝
切記,先安裝VS2019,再安裝CUDA。
選擇“.Net桌面開發”、“使用C++的桌面開發”、“通用Windwos平台開發”三項,點擊右下角安裝:
安裝成功后,根據提示重啟電腦。
3、CUDA的下載和安裝
點擊:https://developer.nvidia.com/cuda-toolkit-archive,選擇cuda10.2版本
下載完成后,雙擊打開,開始安裝。
選擇自定義安裝:
全部勾選,點擊下一步:
使用默認的安裝路徑:
安裝成功后,會看到CUDA向已安裝的Visual Studio2019中寫入了Nsight工具,所以我才強調必須先安裝CS2019,再安裝CUDA。
3.1、配置CUDA環境變量
右鍵“我的電腦”選擇屬性,點擊“高級系統設置”->“環境變量”。
可以看到CUDA默認寫入了2條環境變量信息,但這些還不夠,點擊新建,添加以下環境變量:
變量名:CUDA_BIN_PATH 變量值:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\bin 變量名:CUDA_LIB_PATH 變量值:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\lib\x64 變量名:CUDA_SDK_BIN_PATH 變量值:C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.2\bin\win64 變量名:CUDA_SDK_LIB_PATH 變量值:C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.2\common\lib\x64 變量名:CUDA_SDK_PATH 變量值:C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.2
根據你CUDA的實際安裝路徑配置變量值,但我建議你安裝CUDA時使用默認的路徑,避免出現各種奇葩問題。
然后在系統變量中找到Path,雙擊打開並加入以下變量值:
%CUDA_LIB_PATH%;%CUDA_BIN_PATH%;%CUDA_SDK_LIB_PATH%;%CUDA_SDK_BIN_PATH%; C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\lib\x64 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\include C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\extras\CUPTI\lib64 C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.2\bin\win64 C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.2\common\lib\x64
然后打開控制台,輸入:nvcc -V
如果輸出CUDA版本等相關信息,說明CUDA安裝成功。
4、CUDNN下載和安裝
點擊:https://developer.nvidia.com/rdp/cudnn-download 注冊個賬戶,然后下載Download cuDNN v7.6.5 (November 18th, 2019), for CUDA 10.2
下載完成后,解壓cudnn-10.2-windows10-x64-v7.6.5.32.zip,將解壓后的文件,覆蓋到CUDA的安裝目錄下,如圖:
5、OpenCV下載和安裝
點擊:https://opencv.org/opencv-3-4/ 下載3.4.0版本的OpenCV。
下載完成后雙擊打開,該exe是個自解壓程序,選擇一個解壓目錄,解壓完成后,將解壓出來的opencv文件夾復制到c盤根目錄下。
然后在環境變量Path中加入以下值:
C:\opencv\build\x64\vc15\bin
6、YOLO下載和編譯
點擊https://github.com/AlexeyAB/darknet 下載YOLO。
下載到本地后,解壓,將darknet-master重命名為darknet,保存到D盤。
6.1、復制編譯依賴文件
將c:/opencv/build/x64/vc15/bin目錄下的opencv_ffmpeg340_64.dll、opencv_world340.dll復制到D:\darknet\build\darknet\x64目錄下:
進入D:\darknet\build\darknet目錄,用VS2019打開darknet.sln,首次打開可能會出現以下錯誤:
沒關系,確定后,關閉VS2019,重新用VS2019打開darknet.sln即可,打開后此處選擇Release X64。
右鍵darknet工程,選擇屬性。
將“常規”下的Windows SDK版本選為10.0,將平台工具集選為Visual Studio2019(v142),點擊應用。
然后點擊VC++目錄,編輯包含目錄,將以下路徑添加到包含目錄中:
C:\opencv\build\include\opencv2 C:\opencv\build\include\opencv C:\opencv\build\include
如果你的opencv路徑和我不一樣,請修改成你自己的路徑。
然后點擊庫目錄,把以下內容添加到庫目錄中:
C:\opencv\build\x64\vc14\lib
然后點擊鏈接器->輸入,在附加依賴項中添加:
C:\opencv\build\x64\vc14\lib\opencv_world340.lib
然后點擊確定保存,並退出VS2019。
用記事本或文本編輯器打開darknet.vcxproj。
將CUDA 10.0,替換為CUDA 10.2,共兩處
用VS2019打開darknet.sln,再次確保此處為Release X64,然后右鍵點擊項目選擇生成。
編譯過程可能會出現很多警告,但只要最終提示生成:成功1個,失敗0個,則表示編譯成功。
6.2、下載YOLOv3預訓練權重文件
進入https://pjreddie.com/media/files/yolov3.weights 下載yolov3.weights文件,再將yolov3.weights放在D:\darknet\build\darknet\x64目錄下。
如果下載慢,選擇迅雷下載。
6.3、運行YOLO
控制台進入D:\darknet\build\darknet\x64目錄,輸入命令:
darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
執行過程,如果出現CUDA版本信息,說明YOLO可以通過GPU來進行目標識別了。
7、注意事項
如果先安裝的CUDA,后安裝的VS2019,可能會出現無法使用GPU進行訓練和識別的問題,可以將CUDA的安裝程序“cuda_10.2.89_441.22_win10.exe”解壓,然后在解壓后的文件夾中找到CUDAVisualStudioIntegration\extras\visual_studio_integration\MSBuildExtensions目錄,將目錄中的四個文件復制到C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\BuildCustomizations目錄下,然后重新編譯工程。