PS:本文主要用于自我整理总结,涉及代码已成功在我电脑上运行,如果恰好帮到各位,不甚荣幸。
基础环境
本人实现环境及配置:
Windows10
CUDA10.2
cudnn8.0.5.39
Visual Studio 2019
opencv-2.4.13.6-vc14
代码下载:(下载后解压到相应文件夹)
GitHub:代码链接: link
权重下载:(看自己需求,在GitHub中都可以下载到,这里给出yolov4的权重)
权重链接: link
配置步骤
一、更改darknet.vcxproj
在你解压文件夹下".\darknet-master\build\darknet"找到darknet.vcxproj文件,选择记事本模式打开,搜索出以下两处CUDA:
将这两处的版本改为自己电脑的CUDA版本,比如我的就将11.1改为10.2
二、配置与生成darknet.exe
在同级目录中,用Visual Studio 2019打开darknet.sln,然后将上方解决方案配置和解决方案平台更改为Release和x64
然后右键解决方案中的darknet项目,选择属性进行配置:
配置后,重新生成解决方案,如果没有其他错误,会在子目录"./x64"中生成darknet.exe
三、遇到的问题
报警信息过长,我只展示其中一部分,关键信息(加粗位置)对应上,可能你也是遇到同样问题。
①SDK版本选择问题
问题:
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 MSB8036 The Windows SDK version 8.1 was not found. Install the required version of Windows SDK or change the SDK version in the
解决方案:
在属性页-常规中,将目标平台版本更换成10.0版本
参考:
https://www.cnblogs.com/xiachongkun/p/8757146.html
②CUDA配置
问题:
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 MSB3721 命令““CUDA\v10.2\bin\nvcc.exe” -gencode=arch=compute_35,code=“sm_35,compute_35” -gencode=arch=compute_86,code=“sm_86,compute_86” --use-local-env -ccbin
解决方案:
将配置页-CUDA C/C+±Device中的Code Generation的compute_86,sm_86改成52
参考:
https://www.jianshu.com/p/420e30202575
运行
当一切顺利,在"./x64"文件夹下生成darknet.exe后,将之前下载好的权重yolov4.weights也放在"./x64"文件夹下,然后打开命令提示符,跳转到"./x64"文件夹,输入命令
darknet.exe detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights -ext_output dog.jpg
即可得到下面的结果,代表运行成功,后面可以尝试训练自己数据集了。
备注
以上运行配置,命令,所需文件,都可以在源码下载GitHub页面上找到,希望大家认真查看吧,如果中途有其他问题可以一起讨论,不行就自己多搜索下,大佬还是很多的。
更新
2021/07/02
问题记录:
帮别人装下环境调试,成功生成darknet.exe了,也运行成功,导入图片,但是没有框显示出来??
问题解决:
因为之前看GitHub中作者写的最低标准是CUDA版本是10.2,所以帮人装的也是这个,但是可能与他的显卡不配套,计算检测框显示不出来,后来将CUDA版本换成10.1就可以了,成功达到出来检测框的结果。
2021/07/28
更新了如何训练自己的数据,想看的移步到这里
Windows10下Darknet版yolov4-tiny算法训练自己的数据
2021/10/22
更新了如何改变保存模型的步数及命名。
对darknet源码进行修改,改变保存模型的步数及命名