当前位置:   article > 正文

Windows10+YOLOv4+Darknet训练自己的数据(一)_windows使用darknet+yolov4训练自己的数据集

windows使用darknet+yolov4训练自己的数据集

在这篇文章中先讲怎样配置环境,并利用作者训练好的模型进行测试
使用自己的数据集进行训练我放在了下一篇文章中,Windows10+YOLOv4+Darknet训练自己的数据(二)

一、环境和配置

系统:window10
CMake:版本>=3.12
CUDA:版本>=10.0
Cudnn:需要与CUDA版本对应
OpenCV:版本>=2.4
Visual Studio 2015/2017/2019

1.1 YOLOv4源码

直接再GitHub上下载就行,下载地址:作者源码下载

1.2 安装VS

注意:VS一定要在CUDA之前安装!!!!
第一步:下载VS。这里我安装的是VS2017,大家可以直接去官网下载VS2017下载地址,下载后打开是Visual Studio Installer,界面如下:
在这里插入图片描述
因为是自用,所以选择社区版安装就行,由于我的已经安装好了,所以打开之后社区版下面显示的是“更新”、“启动”、“更多”,如果还没有安装,其显示会跟下面的企业版和专业版一样,显示的是“安装”和“更多”。
第二步:点击社区版下面的“安装”按钮,会跳出如下界面:
在这里插入图片描述
第三步:安装上图指示的步骤:首先勾选“使用C++de桌面开发”,我们这里只需要用到这个。再点击上图的“2”出的“更改”按钮,更换安装路径,选择一个自己的安装路径就行,也可以不改。最后点击右下角的“安装”按钮。这样VS就安装好了!!!

1.3 安装CMake

进入CMake官网(CMake下载地址)直接下载最新版本就行,当然也可以下载其他高于3.12的版本,不过到我发这篇博客的时候,3.18以下的版本已经不能用了,使用的时候会报错提示有更高版本,需要更换到3.18版本以上运行。所以还是建议大家直接下载最新版本。
在这里插入图片描述
下载好之后一路默认安装就行,当然,你可以改动安装路径。

1.4 安装CUDA

在安装CUDA之前,需要查看自己电脑的GPU驱动的版本,因为CUDA版本对GPU驱动版本有要求,对应关系如下:
在这里插入图片描述
第一步:查看显卡驱动版本。鼠标在桌面空白处点击右键,然后选择“NVIDIA控制面板”,进去之后就能看到自己电脑GPU的版本,如下图:
在这里插入图片描述
然后对照上面的表格,看是否满足需要装的CUDA版本对驱动的要求,满足的话就可以直接进行下一步了,不满足也没关系,可以更新一下驱动,更新方式自行百度。
第二步:下载CUDA(CUDA下载地址)。这里我下载的是CUDA10.1,本来源码中说的是使用CUDA10.0,但是我使用CUDA10.0的时候,后面一直编译不成功,总是报错,更换为CUDA10.1就没问题了。
第三步:安装CUDA。首先双击我们下的程序,这其实就是一个解压的过程:
在这里插入图片描述
然后选择“同意并继续”
在这里插入图片描述
然后选择“自定义”,选择自定义安装是因为可以更改安装路径和选择安装哪些部件,当然如果您选择精简安装也是可以的,然后点击下一步:
在这里插入图片描述
然后选择需要的组件,第一个是必选,后面的随意,然后点击“下一步”:
在这里插入图片描述
然后根据需要选择安装路径,这三个需要同步,然后选择“下一步”,就开始安装了:
在这里插入图片描述
这样CUDA就装好了

第四步:设置环境变量。安装好之后一般情况下环境变量中会自动添加,如果没有的话,你也可以手动添加:
首先在桌面,鼠标放在“此电脑”上,点击右键,打开“属性”
在这里插入图片描述
再点击“高级系统设置”
在这里插入图片描述
点击“环境变量”
在这里插入图片描述
可以看到“系统变量”中有如下两条环境变量,没有的话就自己手动添加。
在这里插入图片描述
手动添加方式为:点击下方的“新建”
在这里插入图片描述
然后输入变量名和变量值,其中变量值为CUDA的安装路径,重复该操作,将上面的两条环境变量都进行添加。
在这里插入图片描述
然后在“系统变量”里面找到“Path”并选中它,然后点击下方的“编辑”:
在这里插入图片描述
查看“Path”中是否有如下几条路径(你自己Anaconda的安装路径),若不存在需要将其添加进来。
在这里插入图片描述
点击旁边的“新建”,然后将路径输入进去就完成了!
在这里插入图片描述
最后是很重要的一步,点击“确定”,一定要一路点击“确定”,不要漏任何一个,不然环境变量设置是不成功的。

第五步:测试CUDA是否装好
打开命令提示符,然后输入:

nvcc --version
  • 1

如果出现如下结果,则说明安装成功了
在这里插入图片描述

1.5 安装cudnn

cudnn与CUDA有对应的版本关系,也是直接去官网下载就行cudnn下载地址
在这里插入图片描述
找一个适合自己安装的CUDA版本的cudnn,单击它,然后选择“for Windows10”,单击下载就行:
在这里插入图片描述
下载下来之后进行解压,然后将解压出来的
(1)\cuda\bin\文件夹下的cudnn64_7.dll复制到CUDA安装目录\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin\文件夹中
(2)\cuda\include\文件夹下的cudnn.h复制到CUDA安装目录\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include\文件夹中
(3)\cuda\lib\x64\文件夹下的cudnn.lib复制到CUDA安装目录\NVIDIA GPU Computing Toolkit\CUDA\v10.1\lib\x64\文件夹中

1.6 安装OpenCV

直接从官网下载,版本大于2.4就行,我下载的是3.4.12版本。官网下载很慢,还经常下一半就断了,我是从这里下载的!
下载之后直接解压就行!然后在环境变量中添加:
在这里插入图片描述
path中添加:
在这里插入图片描述
这样OpenCV就算是装好了!

2 VS配置

在进行编译之前,需要先对VS进行配置!

2.1 查看VS中的CUDA环境

打开VS2017,依次点击“文件”–>“新建”–>“项目”
在这里插入图片描述
在新建项目的页面中,NVIDIA项目下,就能看到我们装的CUDA版本,说明在VS中能够使用CUDA了。
在这里插入图片描述

2.2 在VS中配置OpenCV

第一步:打开VS,新建一个控制台应用,“文件”–>“新建”–>“项目”
在这里插入图片描述
“Visual C++”–>“控制台应用”–>修改名称和路径–>“确定”
在这里插入图片描述

第二步:页面顶部解决方案配置选择“Release”,解决方案平台选择“x64”
在这里插入图片描述
第三步:打开属性管理器,“视图”–>“其他窗口”–>“属性管理器”
在这里插入图片描述
打开之后,页面右侧选择“属性管理器”,界面如下:
在这里插入图片描述
第四步:配置属性管理器
(1)展开刚刚新建的项目,找到“Debug|x64”,按鼠标右键,然后在新展开的列表中点击“属性”。
在这里插入图片描述
(2)在新跳出的页面中选择“VC++目录”,需要在“包含目录”和“库目录”中添加一些路径。
在这里插入图片描述
(3)在包含目录中添加路径:点击“包含目录”–>右侧的下三角符号–>“编辑”
在这里插入图片描述
在新跳出的页面中按照下图指示方式添加opencv的路径
在这里插入图片描述

需要添加的路径为:
在这里插入图片描述
(4)在库目录中添加路径,跟包含目录同样的方式打开路径添加页面,在库目录中添加如下路径:
在这里插入图片描述
(5)在链接器中添加附加依赖项,按照下图顺序依次点击
在这里插入图片描述
在新出现的页面中输入文件名opencv_world3412d.lib,文件名中的数字3412是OpenCV的版本号,我的是版本号是3.4.12,所以文件名是opencv_world3412d.lib,如果版本是3.4.9,对应的文件名就是opencv_world349d.lib,以此类推。
在这里插入图片描述
到这里,在“Debug|x64”中的配置就做完了,但是整个配置还没有完成,需要将“Release|x64”中做基本同样的配置,唯一不同的是在在链接器中添加附加依赖项时,输入opencv_world3412.lib,也就是数字3412后面不再带有d了。
在这里插入图片描述
第五步:测试OpenCV
在刚刚新建的项目的源文件中输入测试代码:
在这里插入图片描述
代码如下:

#include<iostream>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;
int main() {
	Mat img = imread("E:\\pictures\\kite.jpg");
	namedWindow("picture");
	imshow("picture", img);
	waitKey(8000);
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

直接运行,屏幕上会显示我们要求输出的图片,说明配置成功。
在这里插入图片描述

3 CMake编译后生成解决方案

经过上面的测试,我们的程序运行环境就算是配置成功了,现在我们需要对YOLOv4中的源码进行编译然后生成解决方案,这里介绍两种生成解决方案的方法:CMake编译+V是生成、VS直接生成。首先我们来看使用CMake进行编译:

3.1 修改Makefile文件

如果想要使用GPU加速的话,需要对我们解压后的YOLOv4源码中的Makefile文件进行修改,更改GPU=1CUDNN=1OPENCV=1
在这里插入图片描述

在这里插入图片描述

3.2 使用CMake编译

打开Cmake编译器,选择“Browse Source”为源码所在位置,“Browse Build”为编译后文件存放的位置,可以和位置相同,也可以自己选一个位置,然后点击Configure。
在这里插入图片描述
弹出如下界面,选择自己安装的VS版本,操作系统选x64,然后点击“Finish”
在这里插入图片描述
然后等待Configure完成,没有弹出错误,就点击“generate”
在这里插入图片描述
然后再点击“Open Project”
在这里插入图片描述
在使用CMake编译的时候,出现如下提示不用管它,只要Configure的时候没有弹出一个框报错就行了。
在这里插入图片描述

3.3 使用VS生成解决方案

将上面CMake生成的项目使用VS打开之后,首先我们需要设置VS的解决方案配置为“Release”,解决方案平台为“x64”
在这里插入图片描述
然后,点击“生成”–>“生成解决方案”
在这里插入图片描述
运行结果:成功5个,说明生成成功了!
在这里插入图片描述

3.4 测试

第一步:将Release文件夹中的darknet.exe文件复制出来,放到darknet-master\build\darknet\x64 文件夹下。
在这里插入图片描述

在这里插入图片描述
第二步:准备YOLOv4权重文件,百度云自行提取,提取密码:o6hd
darknet-master\build\darknet\x64文件夹下,新建一个文件夹weights,将下载下来的权重文件放在里面
第三步:图片测试
打开“命令提示符”,进入darknet.exe所在文件夹,输入下面的命令:

darknet.exe detector test cfg/coco.data cfg/yolov4.cfg weights/yolov4.weights data/dog.jpg
  • 1

得到测试结果如下:
在这里插入图片描述
第四步:视频测试
还是在上面的命令行模式下,输入以下命令:

darknet.exe detector demo data\coco.data cfg\yolov4.cfg weights\yolov4.weights data\road.mp4 -thresh 0.25 -out_filename data\results\road.mp4
  • 1

在这里插入图片描述
运行结束之后,在data/results文件夹里面将有一个检测结果的视频。
在这里插入图片描述

4 使用VS直接生成解决方案

4.1 修改darknet.vcxproj文件

在作者给的源码中,有编译好的darknet.sln文件,我们可以直接使用VS对其进行编译。将下载下载的源码进行解压之后,有一个build文件夹,进入这个文件夹,再进入darknet文件夹,会看到有一些编译好的文件,我们主要用到的是darknet.slndarknet.vcxproj
在这里插入图片描述
在这里插入图片描述
打开darknet.vcxproj文件,修改CUDA的版本为自己安装的版本,我这里改成了CUDA 10.1
在这里插入图片描述
在这里插入图片描述

4.2 复制两个OpenCV文件

将opencv3.4.12中的两个dll文件:opencv_ffmpeg3412_64.dllopencv_world3412.dll复制到在x64文件夹下,不然后面运行会报错找不到dll。
在这里插入图片描述
这两个文件是在opencv的安装路径–>build–>x64–>vc15–>bin路径中,自己去找找。
在这里插入图片描述
选择以上两个就行(顺便说一下,3412后面带有小d的貌似是debug版本;不带d的是release版本)。因为最后需要release版本的所以就只用选上面红框的复制到darknet–>×64文件夹下就行。

4.3 VS生成解决方案

第一步:找到build/darknet/文件夹下的darknet.sln文件,点击右键选择打开方式为“Microsoft Visual Studio 2017”,在VS中打开darknet.sln文件。
在这里插入图片描述
第二步:设置VS的解决方案配置为“Release”,解决方案平台为“x64”
在这里插入图片描述
第三步:点击“生成”–>“生成解决方案”
在这里插入图片描述
运行结果为:成功1个,失败0个。表示生成解决方案成功了。这里的结果图就不贴出来了。
这时候x64文件夹下会生成一个darknet.exe
在这里插入图片描述

4.4 测试

跟3.4节中完全相同的操作,只是免去了第一步的将darknet.exe放到x64文件夹下,因为我们这里生成的darknet.exe文件本来就在改文件夹里面了。测试的过程就不再重复的写了。

5 生成解决方案的时候可能遇到的问题

1、在使用CMake编译的时候,提示找不到CUDA,可能原因是环境变量没设置好,或者CUDA版本低了。还有一种可能,就是我们装VS和CUDA的顺序搞反了,我当时就遇到了这样的问题,后来重新再装了一次,就可以了。一定要先装VS再装CUDA!!!
2、使用VS生成解决方案总是失败,错误编号为MSB3721,这个网上有很多说是如果不是用的CUDA10.0,就需要将darknet.vcxprojcompute_75,sm_75删掉,或者改成自己电脑GPU的计算力,比如我的电脑GPU是1080Ti,就改成compute_61,sm_61
在这里插入图片描述
但是,我遇到这个问题的时候,我用的CUDA版本确实也是10.0,按照网上说的几种方法删过、改过。还是一直报MSB3721的错误。最后解决方法是“将CUDA10.1换成CUDA10.1”其他什么都没改,生成成功了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/874962
推荐阅读
相关标签
  

闽ICP备14008679号