编译 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

  1. 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;
  2. 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;
  3. 添加系统环境变量
    1. D:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v11.7\include
    2. D:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v11.7\lib
    3. D:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v11.7\libnvvp
    4. D:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v11.7\bin
  4. 重启系统, 终端运行 nvcc -V; 在 D:\ProgramFiles\NVIDIA GPU Computing Toolkit\CUDA\v11.7\extras\demo_suite 路径下打开终端运行 deviceQuery.exebandwidthTest.exe 查看 CUDA 和 cuDNN 是否安装成功;

编译与测试

  1. 下载代码库 git clone https://github.com/AlexeyAB/darknet.gitD:\Data\darknet;

  2. 打开 CMake-GUI

    1. Where is the source code: D:/Data/darknet;
    2. Where to build the binaries: D:/Data/darknet/build;
  3. CMake Configure

    1. 2022
    2. x64
    3. v141
  4. 指定 CMAKE_CUDA_COMPILER 路径: D:/ProgramFiles/NVIDIA GPU Computing Toolkit/CUDA/v11.7/bin/nvcc.exe;

  5. 指定 OpenCV_DIR 路径: D:/ProgramFiles/OpenCV3411/build/x64/vc15/lib;

  6. 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
    7
    Commandline 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
  7. 设置 CMAKE_INSTALL_PREFIXD:/Data/darknet/install;

    1. CMAKE_INSTALL_PREFIX:PATH=D:/Data/darknet/install
    2. INSTALL_LIB_DIR:PATH=D:/Data/darknet/install/lib
    3. INSTALL_BIN_DIR:PATH=D:/Data/darknet/install/bin
  8. CMake Configure, Generate, Open Project

  9. 生成, 批生成, 全选, 生成;

  10. 在 D:/Data/darknet/install 路径下得到库文件.

  11. 测试: 将 编译生成的 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 中.

作者

Luo Siyou

发布于

2023-05-08

更新于

2023-05-08

许可协议