yolo3 + Windows + VS2017 + CUDA9.2 教程

图像识别算法yolov3,因实验需要在Windows中搭建环境,GitHub中作者建议使用vs2015,网上大多数教程也使用的是vs2015甚至更早版本。如今大多数人都使用的是vs2017。
因为搭建过程比较繁琐,库比较多,故在此尽可能详细记录下搭建的全过程。给广大人工智能开发者提供便利。

搭建日期:2018年7月4日

前期准备:

资源(百度网盘)https://pan.baidu.com/s/1bsDEclG8Ej4eC5sRX8zXUw 密码:3l32

1.一个装有VS2017的Windows10电脑,因为yolo3项目是用VS2015写的,所以我们需要在VS2017中安装扩展。


打勾为安装,未打勾时请安装。

2.CUDA9.2(百度网盘)。CUDA9.2的官方下载链接,在中国,因为某些原因不可用。为节省读者的时间,我上传到了百度网盘。

安装教程:双击exe文件,此时会让你选择一个目录。这个exe文件的本质是一个压缩包,所以你选择的目录就是解压目录,不是安装目录,按默认的C盘就好,因为安装完成系统会自动删除解压目录的。解压完成后会弹出安装程序,进入计算机配置检查环节,大概4-5分钟,安装模式按默认的就好,(好像叫典型还是精简什么的),然后就会自动安装啦。是不是很简单。

3.cuDNN7.1(百度网盘)。因为cuDNN7.1的官方下载链接,还要注册个英伟达的开发者账号。为节省读者的时间,我上传到了百度网盘。

安装教程:下载后解压,会有bin,include,lib三个目录,记住,这是cudnn的三个目录。

然后打开C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2这个目录,下面简称CUDA目录

把cudnn/bin/cudnn64_7.dll复制到CUDA/bin里面去

把cudnn/include/cudnn.h复制到CUDA/include里面去

把cudnn/lib/x64/cudnn.lib复制到CUDA/lib/x64里面去

其实说白了就是复制三个文件,是不是很简单,复制完后,原来那个cudnn目录就可以删掉了,cudnn其实就是cuda的一个补丁。

4.OpenCV3.4.0(百度网盘)。因为OpenCV的官方下载链接是国外的,下载速度异常缓慢。为节省读者的时间,我上传到了百度网盘。在读者写作的时候,OpenCV已经更新到了3.4.1版本,但是,请不要使用3.4.1,请不要使用3.4.1,请不要使用3.4.1。yolo的作者已经明确声明使用3.4.1会出现编译错误。没错,作者尝试了一下,果然会出现错误,哈哈哈。所以笔者建议使用3.4.0版。但现在又会出现一个问题,比如说我之前使用的3.4.1,我又不想卸载3.4.1.如何让他们两个共存呢?请往下看。

首先,建议把3.4.0和3.4.1安装在同一目录下,查找的时候比较方便。笔者的目录结构如下:

D:\library\opencv3.4.0和D:\library\opencv3.4.1\opencv

然后修改系统环境变量,详细步骤就不介绍了,具体百度,我们直接跳到这一步:


然后照下图输入,变量名是自己随便取的,建议大写,建议为OPENCV_HOME或者OPENCV_DIR(符合规范),变量值的蓝色部分是安装路径,请读者灵活变通:

最后,请双击环境变量中的path,进入path的编辑界面,点新建,然后输入%OPENCV_HOME%,如下图:

重启电脑,大公告成。为什么会这样呢?原来Windows有这样一个机制,如果修改path路径,需要重启电脑才生效。但是修改其他变量名,则不用重启电脑,会立即生效。所以如果我们想切换回OpenCV3.4.1.则直接修改OPENCV_HOME变量值就行了,不用重启电脑,是不是很方便。

5.下载yolo3源代码(百度网盘)。GitHub官方网址:https://github.com/pjreddie/darknet向作者致敬,源代码我已打包好,见百度网盘(darknet-master.zip)。

上述2,3,4,5步的资源,均已打包好,见开头的百度网盘链接。


开始用VS2017编译yolo3源代码:

经过繁琐的前期准备,我们终于可以开始编译了,相信我,编译过程一样繁琐。

首先解压darknet-master.zip,打开bulid/darknet/,你会看到这样的一堆东东:

我们首先用记事本编辑darknet.vcxproj,把所有的CUDA 9.1替换为CUDA 9.2,(其实也就两处)分别在第55行和第293行。

替换好后保存,接下来我们需要打开darknet.sln。但是,但是,但是,不要双击打开因为我们现在是用vs2017打开vs2015的项目,直接打开可能把vs2017搞成未响应,笔者的vs2017就是。所以我们要先打开vs2017,然后左上角文件->打开->打开项目/解决方案,打开darknet.sln,之后回弹出来,是否重定向项目,也就是把vs2015的项目升级成vs2017的项目,我们点否。

之后,大概是下面界面:


首先,我们把1和2调到release 和X64,然后在3上点右键,然后点属性。如果你的界面看不到3,请检查一下箭头处,点一下属性管理器就好了。

通用属性->VC++目录中,我们需要改包含目录和库目录,见下图,安装路径请读者灵活更改:

通用属性->C/C++->常规,我们需要修改附加包含目录,见下图,安装路径请读者灵活更改:

通用属性->链接器->输入,我们需要修改附加依赖项,见下图。前4个是本来就有的,我们只需要加上opencv_world340d.dll,如果你使用的是非3.4.0版本的opencv,请进入安装路径\build\x64\vc14\lib文件夹,参看对应的dll:

大公告成,属性界面已经配置完成,我们现在只需要按一下F7键,让VS编译即可:

成功,END。



猜你喜欢

转载自blog.csdn.net/shadandeajian/article/details/80913481