编译 Darknet
- Windows 11
- Visual Studio 2022 (toolset: v141)
- CUDA Driver Version = 12.0 (显卡支持的最高版本 cuda)
- CUDA Toolkit 11.7.0 (实际使用的 CUDA 版本)
- NVIDIA GeForce RTX 4060 Laptop GPU
安装 CUDA & cuDNN
- 从 https://developer.nvidia.com/cuda-toolkit-archive 下载 CUDA Toolkit 11.7.0 (October 2022), Versioned Online Documentation, 并安装至
D:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v11.7
; - 从 https://developer.nvidia.com/rdp/cudnn-archive 下载 Download cuDNN v8.9.0 (April 11th, 2023), for CUDA 11.x, 解压并将三个库文件夹拷贝到
D:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v11.7
; - 添加系统环境变量
D:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v11.7\include
D:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v11.7\lib
D:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v11.7\libnvvp
D:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v11.7\bin
- 重启系统, 终端运行
nvcc -V
; 在D:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v11.7\extras\demo_suite
路径下打开终端运行deviceQuery.exe
和bandwidthTest.exe
查看 CUDA 和 cuDNN 是否安装成功;
编译与测试
下载代码库
git clone https://github.com/AlexeyAB/darknet.git
到D:\Data\darknet
;打开 CMake-GUI
- Where is the source code:
D:/Data/darknet
; - Where to build the binaries:
D:/Data/darknet/build
;
- Where is the source code:
CMake Configure
- 2022
- x64
- v141
指定
CMAKE_CUDA_COMPILER
路径:D:/ProgramFiles/NVIDIA GPU Computing Toolkit/CUDA/v11.7/bin/nvcc.exe
;指定
OpenCV_DIR
路径:D:/ProgramFiles/OpenCV3411/build/x64/vc15/lib
;将
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\extras\visual_studio_integration\MSBuildExtensions
路径下的文件拷贝到D:\ProgramFiles\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v150\BuildCustomizations
. 因为安装的 VS2022 的默认版本号为 v170, 因此安装 CUDA 时只在 v170 文件夹下安装了相关组件, 而我们现在希望以 v141 平台工具集进行编译, 这是 VS2017 默认的平台工具集, 对应的 VS 版本是 v150, 因此需要把如下文件拷贝到 v150 对应的文件夹下. 关于 Visual Studio 版本对应关系 可以参考 https://luosiyou.cn/blogs/visualstudio/;- CUDA 11.7.props
- CUDA 11.7.targets
- CUDA 11.7.xml
- Nvda.Build.CudaTasks.v11.7.dll
1
2
3
4
5
6
7Commandline options:
-DCMAKE_CUDA_COMPILER:FILEPATH="D:/ProgramFiles/NVIDIA GPU Computing Toolkit/CUDA/v11.7/bin/nvcc.exe" -DOpenCV_DIR:PATH="D:/ProgramFiles/OpenCV3411/build/x64/vc15/lib"
Cache file:
CMAKE_CUDA_COMPILER:FILEPATH=D:/ProgramFiles/NVIDIA GPU Computing Toolkit/CUDA/v11.7/bin/nvcc.exe
OpenCV_DIR:PATH=D:/ProgramFiles/OpenCV3411/build/x64/vc15/lib设置
CMAKE_INSTALL_PREFIX
为D:/Data/darknet/install
;- CMAKE_INSTALL_PREFIX:PATH=D:/Data/darknet/install
- INSTALL_LIB_DIR:PATH=D:/Data/darknet/install/lib
- INSTALL_BIN_DIR:PATH=D:/Data/darknet/install/bin
CMake Configure, Generate, Open Project
生成, 批生成, 全选, 生成;
在 D:/Data/darknet/install 路径下得到库文件.
测试: 将 编译生成的 darknet.exe 和 darknet.dll 拷贝到
D:\Data\darknet\build\darknet\x64
路径下, 从 https://pjreddie.com/media/files/yolov3.weights 下载权重文件同样放到该路径下, 双击运行该路径下的darknet_yolo_v3.cmd
脚本, 根据提示, 缺少 zlibwapi.dll 文件, 在系统内找到该文件, 同样放到该路径下. 重新双击darknet_yolo_v3.cmd
脚本运行, 将对示例图片进行推理并分类结果可视化到图片predictions.jpg
中.
编译 Darknet