VS2019 & CUDA 11.0 & opencv 4.3.0 & darknet
前言
最近需要用yolo,得搭建yolo_v3环境,所以找了很多资料,有关于yolo的讲解,有关于搭建的教程,大部分人用的是darknet,然而有些教程可能时间比较久了,不一定有用,我安装中也碰到了很多新的问题。所以在本文中对我的搭建过程进行一次回顾,整理一下碰到的问题,作为经验分享,提供给近期需要安装yolov3的同学。参考的博文会在相应处给出。 首先简单理一下知识点:
-
什么是yolo: yolo_v3是一种检测算法,顾名思义,还有v1,v2,原作者在一篇论文中详细介绍了v3。
-
yolo的用处: 简单说,输入图像,输出物体位置,类别,置信概率。
-
什么是darknet: yolo作者写的深度学习框架,也随着yolo不断升级,yolo_v3中的是darknet-53,另外也还有个替换:tiny-darknet。
刚开始接触,一知半解,更多关于的yolo的知识点可参考:
下面进正题,开始环境搭建:
1 VS2019安装
darknet是原作者是在Linux下用C写的,所以想在Windows上使用需下载darknet源码然后利用MSVC编译,有几种方法,包括VS,cygwin等方式。用cygwin编译makefile的话,需要修改一些路径,很多教程都在linux上进行,关于VS的教程比较多,相对也省事。大多教程都是用的VS2015,其实19也行,装的时候勾选2015的部分就行。 下载打开VS2019社区版安装包,进入下面的界面后,勾选使用C++的桌面开发,然后在右边选择最后一个MSVC v140 工具集,其他选项按需求勾选,然后安装。
![](https://img.haomeiwen.com/i13614190/72cccb065710c3b7.jpg)
2 安装CUDA
cuda、cudnn之间的版本是需要对应的,可以先安装CUDA,然后去下载对应的cudnn。 CUDA下载地址
按需求下载对应版本就行了,我直接下了最新版11.0,然后进入以下界面,这里就是本地安装和在线安装的区别,刚开始我尝试在线安装,结果老提示无法连接到nvidia,索性就下载了本地安装包,用个下载工具一会儿就下完了,然后的安装界面一路点 确定/下一步 就行了。
![](https://img.haomeiwen.com/i13614190/96ea779c08368028.jpg)
然后CUDA的安装过程中环境变量自动安装了,不放心的话可以自行确认一下。 最后打开命令行(win+R---cmd),输nvcc -V,如果有版本信息(如下),则安装成功。 !
![](https://img.haomeiwen.com/i13614190/30fa9e7cea3a87de.png)
3 下载cudnn
进入cudnn下载页面,这边需要成为nvidia开发者计划成员,其实就是注册一下就行了,填一些信息,几分钟搞定。 然后进入下载界面,根据安装的CUDA版本找到对应的cudnn下载,当中包含以下文件:
![](https://img.haomeiwen.com/i13614190/ae351c9e7bd6d2d8.jpg)
![](https://img.haomeiwen.com/i13614190/cd739117fb25ab1d.jpg)
4 安装opencv
进入官网,选择Windows版本下载安装,就不多说了,我装的是最新的4.3.0。
安装完后要配置环境变量:![](https://img.haomeiwen.com/i13614190/057ad387a19b8d24.jpg)
5 darknet
先附上我最终使用的darknet项目地址,这个已经基于VS2015配置好了,接下来介绍搭建过程中还是会顺便扯一下我碰到的问题。
5.1 修改darknet.vcxproj文件
进入darknet ---> build ---> darknet 文件夹,打开darknet.vcxproj文件,搜索cuda 10,替换成你安装的版本,如果你装的一样就不用改。
![](https://img.haomeiwen.com/i13614190/47983b2af5758e8b.jpg)
5.2 使用VS打开项目
刚开始使用的是从某教程中找到的darknet项目,进入上一步的目录,用VS打开darknet.sln(没有GPU的打开darknet_no_gpu.sln,有GPU的打开darknet.sln),直接提示打开失败,关闭VS再开一遍,莫名其妙又可以了。打开时会有两个选项,其中第二个 平台工具集 一定要选 无升级。
![](https://img.haomeiwen.com/i13614190/cc4157576a113b33.png)
![](https://img.haomeiwen.com/i13614190/2cfbb43a3801e7b2.png)
5.3 配置opencv
右键项目,属性,先修改这两个地方:
C/C++ ~ 常规 ~ 附加包含目录 ~ 编辑,把opencv的build\include目录设置成自己的(在第二行):
然后是链接器 ~ 常规 ~ 附加包含目录,同样的操作,不过这里设置的是build\x64\vc14\lib,图略。
5.4 生成项目
右键项目,重新生成 这里可能会报错,提示你在C盘的某某目录下缺失CUDA的targets等文件,也就是我们刚刚修改版本的那两个文件,可以按照报错提示的位置把对应文件放过去。 搞定后我又碰到了其它问题,提示我darknet下的某C文件存在 变量未申明,语法错误等等等等,解决不了我就换成了上面给出的这个配置好的darknet项目,按照流程又走一遍,一次成功。 项目重新生成成功后会在build\darknet\x64目录下发现darknet.exe文件,下载yolov3.weights文件放到该目录下(官网地址 或者 网盘 提取码: jdkt)。
-
收尾工作
-
进入 opencv\build\x64\vc14\bin文件夹
拷贝文件
把这两个文件拷贝到darknet.exe同一目录下。
-
进入CUDA的 v11.0\bin文件夹下,把cudnn64_8.dll也拷贝到darknet.exe同一目录。
拷贝文件
-
进入 opencv\build\x64\vc14\bin文件夹
5.5 测试
在darknet.exe目录下打开cmd,用图片进行测试,我这边使用了自己找的图: darknet.exe detect yolov3.cfg yolov3.weights 325.jpg搞定 !
![](https://img.haomeiwen.com/i13614190/6ec16de0df3c90af.gif)
网友评论