在windows下训练yolov4模型(GPU)
1.为电脑安装最新版本的cuda和cudnn
cuda安装地址:https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exelocal
cudnn安装地址:https://developer.nvidia.com/cudnn
其中cudnn下载安装包需要注册一个账号,过程是免费的。

两个文件下载完成之后是这样的:
1,将cuda运行安装,建议默认路径,因为我试过自己修改路径,最后遇到了两个问题:
- ①临时解压路径:

- ②安装路径:
- (应该是CUDA10,因为我已经安装完了,所以在网上找了一个图来表示说明)

所以会遇到这两个路径如果设置为同一个的话,安装时会自动删除那个解压缩的Temp所在的文件夹,最后会发现CUDA安装的文件又没了!所以建议默认路径原因就是怕这两个路径设置为同一个了。
2,对于cudnn直接将其解开压缩包,然后需要将以下bin,include,lib文件复制粘贴到cuda的文件夹下C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1:

3,配置cuda的环境变量

4,最后测试cuda是否配置成功:
打开CMD执行:
nvcc -V
1
即可看到cuda的信息
二,如果电脑opencv不是opencv3.4之前的版本,可以在opencv3.4链接下载:
https://opencv.org/opencv-3-4.html
接着只需要将其解压缩,后配置环境变量就行了。
我自己的配置如下:
三,对YOLOV3中的darknet项目文件进行编译
准备工作已经做好:win10+cuda+cudnn+visualstudio2017community+opencv3.4
1,首先cd到你的项目想保存的文件路径后:
使用git clone https://github.com/AlexeyAB/darknet
下载的YOLO原生版本文件应该是这样的:

2,进入build>darknet文件中,主要有用的文件

注意此时先进入x64文件夹下>将opencv3.4中的两个dll文件:opencv_ffmpeg340_64.dll和opencv_world340.dll复制到该文件夹下,不然后面运行会报错找不到dll。
关于该问题,作者也给了说明:
意思是最后会生成一个darknet.exe文件,该文件执行时需要依赖上面两个dll。
至于这两个文件的路径,我自己的是在opencv的安装路径中:
选择以上两个就行(顺便说一下,340后面带有小d的貌似是debug版本;不带d的是release版本)
因为最后需要release版本的所以就只用选上面红框的复制到darknet>×64文件夹下就行。
3,来到最关键的一步了,前面工作一个都不能少,否则这接下来会BUG和ERROR漫天飞。
用visualstudio2017打开darknet.sln文件进行生成darkent.exe文件

①右键对darknet.sln进行配置,注意上面应选为release和x64。

接下来一共几个关键步骤:
1:注意Windows SDK版本,平台工具集选择自己的VisualStudio2017

- 注意:如果后面报错说请选择对应的VisualStudio2015版本,这里需要去darknet.vcxproj中用文本形式打开,并将红框中的内容都替换为v141即可(我的是已经替换过了):

2,修改包含目录和库目录,即添加opencv3.4的包含目录和库目录(按照自己的opencv3.4的路径来进行添加):



3,附加依赖项


4,最后已经完成对任务的配置,右键生成或者重新生成就行了。
结果如下:

前面都成功不出意外的话,在文件夹下多出一个darknet.exe文件就是想要的结果:

在测试效果之前还需要添加以下官网上下载训练好的权重:
#wget命令获取预训练的参数权重或者直接打开链接就能下载。
wget https://pjreddie.com/media/files/yolov3.weights
12
这里我把它放在了一个起名为weights的文件下面:

5,最后的最后,执行命令查看效果:
打开cmd命令提示符,切换到F:\githubCode\projectGit\darknet\build\darknet\x64
即生成的darknet.exe文件所在文件夹下
- 检测图片效果:
执行命令(一句话):
即利用darknet.exe执行检测效果,加载权重之后,对.\data\文件夹下的dog.jpg进行检测
darknet.exe detector test data\coco.data yolov3.cfg .\weights\yolov3.weights .\data\dog.jpg
1
大功告成!!!
然后就会看到效果了:

- 检测摄像头命令:
- 也是在darknet.exe所在文件下执行
darknet.exe detector demo data\coco.data yolov3.cfg weights\yolov3.weights
1
- 或者指定摄像头设备号0:
darknet.exe detector demo data\coco.data cfg\yolov3.cfg weights\yolov3.weights -c 0
1
- 注意:检测前注意查看设备管理器自己的电脑摄像头是否正常工作,然后即可看到检测到自己电脑摄像头的检测效果。
- 检测视频文件:
- 我在data文件下放了一个视频文件即:.\data\TownCentre.avi
- 执行命令:
darknet.exe detector demo data\coco.data yolov3.cfg .\weights\yolov3.weights .\data\TownCentre.avi
1
- 通常需要YOLO保存检测后的视频文件时可以用下面命令:
- 即增加了置信阈值选项0.25,和输出视频文件路径与名称
darknet.exe detector demo data\coco.data yolov3.cfg .\weights\yolov3.weights .\data\TownCentre.avi
-thresh 0.25 -out_filename .\data\test_result.avi
12

以及我看到在YOLO的GitHub说明中作者给出了利用微软的lib安装工具vcpkg对YOLO编译的教程,试了以下以后也遇到了许多问题,有待后续研究。
参考博客:
YOLO配置:https://blog.csdn.net/amusi1994/article/details/80261735
YOLOV3配置opencv:https://blog.csdn.net/leonary_jy/article/details/80293205
解决VC运行opencv后提示缺少opencv_world310d.dll问题