Win10+VS2015安装配置YOLO3(CPU/GPU)

概述

自己尝试安装和配置YOLO3,实际上在GitHub上有详细的所有步骤,见darknet README
这里只是为了自己方便参考,所以把安装和配置的过程记录在此。

1 安装或下载安装需要的软件包

由于自己也是第一次实际操作使用这些软件,所以这里记录下每个工具的意义。
YOLO3有CPU和GPU版本,如果只是使用CPU版本,具备以下前两个就可以了(实际上OpenCV也是个可选项),如果使用GPU版本,就需要都具备。

1.1 VS2015

这个就不细说了,必要的编译环境。

1.2 OpenCV

OpenCV:这个搞图像处理的应该都知道,OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV下载:OpenCV下载,现在最新版本已经到4.0.1了,yolo的作者明确说了使用3.4.0或之前的版本(If installing OpenCV, use OpenCV 3.4.0 or earlier. This is a bug in OpenCV 3.4.1 in the C API),所以这里我用了3.4.0版本,OpenCV3.4.0下载地址,我计算机上已经有4.0.0版本,没关系,共存就是了,只是要根据使用的不同来修改系统的PATH环境变量。

1.3 CUDA

CUDA:(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。
CUDA下载:CUDA最新版下载页面, 目前最新版已经到了10.1.105_418.96版本,保险起见,先下了个9.2版本,下载地址(后来在另一台计算机上下载安装了最新的10.1版本)。下载后正常安装即可,我选择了典型安装。

1.4 cuDNN

cuDNN:(CUDA Deep Neural Network library),是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。NVIDIA cuDNN可以集成到更高级别的机器学习框架中。
cuDNN下载:cuDNN下载页面,下载NVIDIA cuDNN需要注册账号,然后邮箱激活(我的aliyun邮箱等了将近一小时才收到激活邮件,据说gmail和163的收到的快),登陆回答几个调查问题,然后就可以下载,下载时要与CUDA版本对应。与CUDA9.2对应的是7.1,与CUDA10.1对应的是7.5。
cuDNN实际上是CUDA的补丁,下载解压后,看到三个目录,拷贝覆盖到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2(或v10.1)下面。

2 下载YOLO3源码

2.1 下载YOLO3源码

Darknet: 一个使用C和CUDA编写的开源神经网络框架,速度快,便于安装,支持CPU和GPU运算。
YOLO3源码下载页面,下载文件为darknet-master.zip

2.2 下载yolov3测试的权重文件

这个是作者已经训练好的权重文件,我们拿来测试:YOLOv3权重文件

3 编译

3.1 准备

把darknet-master.zip解压到方便的路径,进入darknet-master\build\darknet,如果使用GPU运算,用UE等文本编辑器(注意不要双击,不是用VS2015)打开darknet.vcxproj,拉到最后行,看到有个CUDA 10.0字样(早期下载的源码里可能是其他版本号),把这个按照安装的CUDA版本替换为CUDA 9.2(或CUDA 10.1)(文件里一共两处)。同样如果要编译GPU运算的DLL,yolo_cpp_dll.vcxproj也需要照此修改。
如果使用CPU,用VS2015打开darknet_no_gpu.sln,如果使用GPU,打开darknet.sln

3.2 修改工程属性

  1. 老版本程序(用CUDA9.1版本的源码的设置):右键-工程属性页,
    C/C++-常规,附加包含目录,把这里的opencv路径修改为你自己安装opencv3.4.0的include路径。
    链接器-常规,附加库目录,把这里的opencv路径修改为你自己安装opencv3.4.0的lib路径,注意x64和x86的区分
    链接器-输入,附加依赖项,添加一行opencv_world340.lib(如果是debug版本就是opencv_world340d.lib)
  2. 新下载的版本程序(用CUDA10.0的):在工程属性里,已经设置了OpenCV使用的是环境变量方式,即$(OPENCV_DIR),这样的话,工程属性就不需要任何修改,在我的电脑右键高级设置里环境变量添加一个OPENCV_DIR即可,该变量指向opencv3.4.0所在的build目录(例如:e:\opencv\opencv3.4.0\build),这样不需要任何修改,直接就可以编译。

3.3 编译

我这里测试的是x64的Release编译,编译完成后,如果CPU版,生成darknet-master\build\darknet\x64\darknet_no_gpu.exe,如果GPU版,则生成darknet-master\build\darknet\x64\darknet.exe

4 测试

编译完成后,进入darknet-master\build\darknet\x64路径,此时需要用到刚才下载的权重文件yolov3.weights,把这个文件拷贝到这个目录。
运行darknet_yolo_v3.cmd,这里调用了刚才编译的darknet.exe,利用权重yolov3.weights对dog.jpg图片进行识别计算,运行后能看到弹出窗口显示识别结果。
如果是CPU版本,先把darknet_no_gpu.exe改为darknet.exe,或者把darknet_yolo_v3.cmd复制一个,把里面的darknet.exe改为darknet_no_gpu.exe,然后运行cmd。
测试结果,我这里GPU和CPU运算好像速度差不多,大约5秒(这个时间包括了YOLO3初始化的时间,实际上识别时间只有几十毫秒)。
附:本人计算机和显卡的配置:
计算机基本配置
显示配置

5 参考

yolo3 + Windows + VS2017 + CUDA9.2 教程
win10下YOLOv3下载与编译

猜你喜欢

转载自blog.csdn.net/hangl_ciom/article/details/88914288