关于深度学习:解决Darknet编译时报MSB3721错误

17次阅读

共计 2038 个字符,预计需要花费 6 分钟才能阅读完成。

原文地址:https://blog.lanweihong.com/p…

谬误形容

我在应用 VS 2015 编译 darknet 我的项目时报如下谬误:

Github 相干 issues: darknet build error MSB3721。

尝试解决

1. 批改 darknet.vcxproj 文件中 Code Generation 的值,即 compute_75,sm_75(未解决)

按在网上找到解决办法 VS2015 配置 darknet 我的项目时遇到 MSB3721 的解决办法 尝试解决。

  1. 批改 darknet.vcxproj 文件中的两处 Code Generation,将 compute_86,sm_86(网上说的compute_75,sm_75,我这里是 compute_86,sm_86)批改为 compute_52,sm_52;批改后残缺的值为 compute_30,sm_30;compute_52,sm_52

这里的 compute_52,sm_52 是通过计算得进去的值,可能每个用户的显卡不一样,值也不一样,我的显卡是 GTX 1050Ti,这里用 “52”,其余型号的显卡请查看英伟达的 GPU 算力表,地址是:https://developer.nvidia.com/…。

  1. 在 VS 2015 的 “darknet 属性页 ” 窗口中,批改 Code Generation 的值为 compute_30,sm_30;compute_52,sm_52

  1. 在 VS 2015 中从新生成 darknet,发现还是 生成失败,还是报 MSB 3721 谬误

2. 删除 Code Generation 中的 compute_75,sm_75(未解决)

  1. 编辑 darknet.vcxproj,将 Code Generation 中的 compute_75,sm_75 删掉;
  2. 同样的,在 VS 2015 的 “darknet 属性页 ” 窗口中,将 compute_75,sm_75 删掉;
  3. 在 VS 2015 中从新生成 darknet,发现还是 生成失败,还是报 MSB 3721 谬误

3. 删除 Code Generation 选项(未解决)

编辑 darknet.vcxproj 文件,删除 Code Generation 这项参数,留神的是删除后,darknet 会默认设置该参数值为 compute_52,sm_52,这个在从新生成 darknet 后代码输入中可看到。

从新生成 darknet,发现还是 生成失败,还是报 MSB 3721 谬误

4. 批改 OpenCV 版本为 3.4.14(未解决)

在 OpenCV 官网下载页 下载 “3.4.14” 版本后,重新部署,而后从新生成 darknet,发现还是 生成失败,还是报 MSB 3721 谬误

5. 重新安装 CUDA(未解决)

重新安装 CUDA 后,再次从新生成 darknet,发现还是 生成失败,还是报 MSB 3721 谬误

不过在重装 CUDA 过程中,NVIDIA Installer 提醒 “Nsight for Visual Studio 2019 will not be installed,Nsight for Visual Studio 2017 will not be installed” 之类的信息让我有了思路:我要不装置个 VS 2019 试试?

6. 装置 Visual Studio 2019,应用其编译(已解决)

装置 Visual Studio 2019 实现后,从新解压 darknet-master.zip,基于这份未做任何批改的代码做测试。依照之前的配置流程,批改 darknet.vcxproj 中 CUDA 版本,在 VS 2019 中配置 OpenCV。。。具体的可看我的另一篇形容搭建的文章 Windows 10 搭建基于 Darknet 的 Yolov4 指标检测平台,在 VS 2019 中,我的项目属性如下图:

配置实现后,从新生成 darknet,这次居然 没任何报错,胜利编译了!

x64 目录下也生成了 darknet.exe 可执行文件:

通过测试,发现没问题。至此,我的问题已解决。

总结

  1. 呈现 MSB 3721 谬误后,务必在 VS 2015/2017/2019 中查看 darknet 我的项目配置是否正确,配置的蕴含目录、库目录、援用库文件名等是否都存在,相干的环境变量是否配置好,有时引发谬误的可能就是这些配置不正确导致的;
  2. 降级 CUDA 至最新版本,并应用相应版本的 cuDNN;
  3. 依据显卡算力,批改 darknet.vcxproj 中的 Code Generation 值,毕竟也有人应用这个办法解决的;
  4. 应用 VS 2017 或 VS 2019 来编译 darknet

每个人环境不一样,导致谬误的问题也不一样,只有一直尝试各种办法、一直排错,能力找到问题的解决方案。具体我的项目具体分析,有时网上很多材料都是间接转载他人的内容,并不适宜所有人,心愿这篇文章能帮忙到你们。

参考文档

  1. Compiling with GPU on windows 10
  2. https://github.com/AlexeyAB/darknet
  3. windows 下 darknet 之 yolo(gpu 版本)装置
  4. VS2015 配置 darknet 我的项目时遇到 MSB3721 的解决办法
正文完
 0