在windows下训练yolov4模型(GPU)

在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
img
其中cudnn下载安装包需要注册一个账号,过程是免费的。

img

两个文件下载完成之后是这样的:
在这里插入图片描述

1,将cuda运行安装,建议默认路径,因为我试过自己修改路径,最后遇到了两个问题:
  • ①临时解压路径:
    在这里插入图片描述
  • ②安装路径:
  • (应该是CUDA10,因为我已经安装完了,所以在网上找了一个图来表示说明)

img

所以会遇到这两个路径如果设置为同一个的话,安装时会自动删除那个解压缩的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原生版本文件应该是这样的:

img

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

img

注意此时先进入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文件

img

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

img

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

img

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

img

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

imgimg

在这里插入图片描述

3,附加依赖项

imgimg

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

结果如下:

img

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

img

在测试效果之前还需要添加以下官网上下载训练好的权重:

#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

大功告成!!!

然后就会看到效果了:

img

  • 检测摄像头命令:
  • 也是在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问题


版权声明:本文为weixin_43934369原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。