YOLOv3/YOLOv4+Win10+VS2019+GPU的配置(从0开始 )
本教程主要分为了两个板块:YOLOv3的配置 和 YOLOv3用自己的数据集训练 (Yolov4配置过程是完全相同的,本博客依然适用,只是训练以及识别采用的命令有所不同,Yolov4的作者已经在他的GitHub中详细描述了,本文主要是讲述如何配置Yolo)。
第二篇博客:Win10+Yolov3用yolo_mark标记数据集 训练自己的模型 也已经发布了~~
这几天以来,我也看了很多这方面的博客,依然是踩了很多的坑才过来的。因此我写了这两篇博客,希望能够帮助一些人。
为此我还专门借了一台电脑,没有安装过任何编程相关的软件,以求做到真正的从0开始,且是我亲自配置确定无误的。
btw:文章中涉及到需要下载的东西,都最好先挂,不然下载速度会比较慢。
在配置之前自然要先安装相关的软件或组件(废话)
首先要注意的是,CUDA的安装需要在VS2019的安装之前!如果你已经安装过VS2019,再安装CUDA,可能会导致安装失败。但是也不用担心,也有解决方法。解决方法我等会会给出,这里先按照步骤继续。
先进入CUDA11.0下载地址,依次选择Windows,x86_64,10,最后选择network (选择 local也可以的,只是在线和本地的区别而已,不是重点)
如果你想要选择其他版本的CUDA当然也是可以的。但是需要注意的是,由于最近Yolov4的作者更新了darknet,所以你安装的CUDA版本必须 CUDA >= 10.1
,否则会编译失败!
此外似乎CUDA == 11.2
的时候会报错,推荐还是使用11.0版本
下载之后安装,安装也十分简单。先选择你习惯的路径,安装选项选择精简即可。
如图所示:
安装结束之后重启计算机就好了 (可以不用现在重启,因为之后安装VS2019之后也需要重启计算机)。
打开cmd后,输入:
nvcc -V
回到最开始所说的,假如已经安装了VS2019,导致安装失败了的解决方案。
安装失败之后,可以看到哪些组件未安装,或者安装失败。安装失败大概率是因为Visual Studio Integration这个组件。所以你在重新安装的时候,不要选择精简,而是选择自定义。在自定义安装的过程中,记得去掉安装Visual Studio Integration这个选项再安装。
如果这样依旧安装失败,那就再把安装失败的组件给记录下来,再次自定义安装的时候,额外去掉刚刚记录下来的安装失败的组件,多次重复直到安装成功。
cuDNN的下载要相对其他几个稍微麻烦一点,因为还需要注册一个账号。首先进入cuDNN下载的地址。之后点击Join now,进入一个登录界面,选择下面的Create An Acount开始注册账号。
注册之后重新打开最初的页面,需要填一个调查问卷,填好之后就可以开始安装了
注:如果在本教程前已经安装了CUDA且非11.0版本,则选择和自己相对应的cuDNN版本即可。
下载之后得到的是一个zip文件,打开后有一个cuda文件夹。进入这个文件夹,可以看见3个文件夹分别为bin,include,lib\x64,分别与上一步安装的CUDA中的三个文件夹相对应。
需要注意的就是,CUDA的文件目录是在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0
之后再把cuDNN的3个文件夹中的全部文件分别拷贝到CUDA对应的3个文件夹
VS2019的下载比较简单。点击下载地址即可到官网下载VS2019,选择Community版即可。
安装的时候需要注意勾选以下几个就可以了。注意要选择勾选v140。
我的因为最开始安装的时候是安装了其他东西的,所以看起来会反而卸载一些东西。注意左下方可以更换安装的位置。
首先依旧是先进入官网下载。
点击此处进入下载地址,需要选择3.4.0版本
根据YOLOv3作者的话,采用更高版本的OpenCV可能存在bug (如3.4.1)。目前在更高版本似乎是被修复了的 (毕竟经过一两年了),但是为了保险起见我还是选择了3.4.0版本。
下载之后运行exe文件开始安装,选择你熟悉的路径。
修改环境变量的步骤如下(文字教程下面有图片教程)
图片教程:
首先进入darknet的下载地址下载darknet并解压到自己熟悉的位置。
进入到文件夹的,找到darknet.vcxproj (位置为…\darknet-master\build\darknet\darknet.vcxproj) 选择用记事本打开。
打开之后,ctrl + h打开搜索框。
输入CUDA 10.0开始搜索CUDA的版本 (默认为10.0版本),如图所示。
注意!由于最新一版本的Yolov4的CUDA版本改成了CUDA 11.1,所以这里搜索的时候改成CUDA 11.1
进行搜索。之后可能仍然存在会更新CUDA版本的可能,如果你在搜素CUDA 11.1的时候依然没有找到,则改为直接搜索CUDA,然后修改 CUDA 1X.X版本为你现在安装的CUDA的版本
将所有的CUDA 10.0更改为自己的版本(目前最新版的Yolo为CUDA 11.1
),即CUDA 11.0 (如果你的CUDA版本不是11.0则改成你自己的版本)
btw:我在第一次打开项目的时候莫名失败了,不过关闭vs2019再重新打开又可以打开了
根据错误信息,我们进入到CUDA的的文件夹
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\extras\visual_studio_integration\MSBuildExtensions 以及错误信息中的文件夹 …\Community\MSBuild\Microsoft\VC\v160\BuildCustomizations
我们将CUDA的这四个文件全部拷贝过去。同时也拷贝到 C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140\BuildCustomizations中 (因为之后依然会报错显示这个地方缺少文件,为了节省大家时间所以直接让大家把文件也复制到这个地方了)
依旧是右键darknet项目然后选择属性,之后点击 配置属性 → CUDA C/C++ → Device → Code Generation。
先删去第二行,再修改第一行。
将两个变量修改成与继承的值相同 (即均为52)
配置完之后当然要先测试一下效果的~~。
首先需要下载权重文件yolov3.weights。点击这里直接开始下载。如果需要下载yolov4.weights,点击这里
首先先打开darknet的文件夹,进入x64文件夹,地址为 …\darknet-master\build\darknet\x64。新建一个文件夹weights,并把刚刚下载好的yolov3.weights(或yolov4.weights)权重文件放入到该文件夹中。
最后返回到x64文件夹处,在空白处Shift + 右键,选择在此处打开Powershell窗口 (打开cmd并到该文件夹目录也可,就是稍微麻烦一点点)
输入以下命令并回车运行:
./darknet.exe detect yolov3.cfg weights\yolov3.weights data\dog.jpg
得到检测结果:
成功!
除此之外,data文件夹下还有很多其他的图片,如eagle.jpg,horses.jpg等。可以将dog.jpg切换成其他图片检验学习效果。
除了通过data文件夹下的图片检验以外,还可以通过笔记本电脑自带的相机进行实时检测。
依旧是是x64文件夹下打开powershell,输入以下代码并运行:
./darknet.exe detector demo data\coco.data yolov3.cfg weights\yolov3.weights
如果想要使用yolov4版本的,则把上述的命令中的yolov3改为yolov4即可。
此外,还有相当多的其他命令可以使用,可以实现其他不同的识别功能,如:识别视频文件,打开摄像头实时识别,连续输入图片等,这些都可以在yolov4作者的Github中的README.md中找到。也可以看看我写的这篇博客,翻译其中的一部分内容。当然还是建议可以阅读一下英文原本内容。
YOLOv3/YOLOv4 + CUDA + cuDNN + VS2019 + Win10从0开始的配置全部结束了~
之后会再写一篇关于如何用自己的数据集训练出自己的模型的博客,也是从0开始的~~ 谢谢观看,觉得不错就点个赞吧!
(更新:第二篇博客Win10+Yolov3用yolo_mark标记数据集 训练自己的模型 也已经写好了~ 可以点进去看看的)