YOLO3实现目标检测(VS2015+OPENCV3.4.2+YOLO3+CUDA10.0+CUDNN7.5)

本人YOLOv3刚刚入坑,走了不少弯路,自己摸索了一下,首先给大家配置一下yolo3,后续会有具体的算法分析讲解。安装VS2015+opencv3.4.2,这个就不用多说了吧,网上很多教程可以参考,主要是安装好opencv,添加环境变量后,切记勿忘,重启一下电脑。
本文电脑:windows7+i7-7700cpu+内存16G+显卡P620
一、github下载darknet。链接:https://github.com/AlexeyAB/darknet
二、安装cuda10.0,安装过程直接默认。安装之前需要了解cuda对应的显卡驱动,我的电脑支持cuda10.0,直接下载安装就行。下面有个对比图,可以参考一下。
在这里插入图片描述
安装完成后,接下来需要设置环境变量:

计算机上点右键,打开系统属性->高级系统设置->环境变量,可以看到安装完cuda之后,系统中自动生成CUDA_PATH和CUDA_PATH_V10_0两个环境变量,但还要在系统中添加以下几个环境变量:
CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.0(这是默认安装位置的路径,自定义安装的话需要自己设置路径)
CUDA_LIB_PATH = %CUDA_PATH%\lib\x64
CUDA_BIN_PATH = %CUDA_PATH%\bin
CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\win64
CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64

添加完成后在系统变量path的末尾添加:

%CUDA_LIB_PATH%;
%CUDA_BIN_PATH%;
%CUDA_SDK_LIB_PATH%;
%CUDA_SDK_BIN_PATH%;
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\lib\x64;
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin;
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.0\common\lib\x64;
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.0\bin\win64;

下面检查一下cuda安装是否成功:
cmd 运行 nvcc -V
在这里插入图片描述
上面显示已经安装成功,可以再检查一下相应的环境变量目录
在这里插入图片描述
上述可以看到之前添加的环境变量,如果cuda是自定义安装的,改为自己的安装路径即可。
三、安装cudnn v7.5
注意cudnn版本与cuda版本兼容问题。你可以通过链接下载:https://developer.nvidia.com/rdp/cudnn-download,下载前需要注册会员。里面会显示和cuda对应的版本。安装cudnn后,里面有个cuda文件夹。将cudnn里面的bin、include、lib文件下的文件分别复制到cuda安装的bin、include、lib文件夹下,如下图所示。
在这里插入图片描述
在这里插入图片描述
四、用VS2015打开darknet-master/build/darnet文件,你会发现里面有gpu和no_gpu版本,本文是基于gpu版的。但请不要直接打开darknet.sln,这一步很重要。
在这里插入图片描述 首先用notepad++或者写字板打开darknet.vcxproj,有两处CUDA版本的配置,默认的是10.0。因为我是安装的cuda10.0,所以不用修改。但是很多小伙伴安装的不是这个版本,所以会出现darknet.sln打不开的情况。假如你安装的是9.0,就把CUDA10.0.targets改为CUDA9.0.targets,修改两处即可。
五、打开darknet.sln之后,设置为Release x64模式。然后开始进行相关库的配置,主要就是配置opencv、cuda、cudnn的相关库。
因为本人之前已经新建了自己的opencv属性页,所以vs2015打开darknet.sln之后,直接在它的属性管理器中Release64中添加属性页即可,opencv就配置好了。
在这里插入图片描述

  1. 右键darknet项目>属性>VC++目录>包含目录,参照下图。
    在这里插入图片描述
  2. VC++目录>库目录,参照下图。
    在这里插入图片描述
  3. 链接器>附加依赖项,参照下图。加入opencv_world342.lib等。
    在这里插入图片描述
    大家也可以pthreadVC2、cuda相关的库文件目录加到上面去。
  4. 点击调试,生成解决方案,就会在darknet-master/build/darknet/x64生成darknet.exe文件。
    测试图像:darknet.exe detector test data/coco.data yolov3.cfg yolov3.weights -i 0 -thresh 0.25 bird.jpg
    在这里插入图片描述
    下面是具体参数显示:可以看出时间是81ms,还凑合
    在这里插入图片描述
    再测试一个,时间大概也是80ms。不过大家可以看出yolo3功能的强大,很多小目标都可以检测到,效率还可以。在这里插入图片描述
    可以给大家分享一个提高检测效率的方法,就是使用yolo3-tiny.weights,但是有时候会存在检测准确率下降的问题,可以看一下下面的测试,用的是tiny版本,检测时间是11ms。大大提高了检测效率。在这里插入图片描述
    在这里插入图片描述
    备注:
    我用的yolo3版本可以检测80种目标,如:人、自行车、汽车、船、鸟…因为具体的工程需要,没必要检测这么多目标的时候,可以在源码中修改。但是你会发现,当你检测一个图像,假如你原本可以识别上面的两种目标,但你只标记识别了一种,但是测试时间和识别两种目标时间一样。
    另外,本人也在做相关的视频检测,调用摄像头进行实时检测,我用的是yolo3.weights,帧率是12FPS。用tiny版本时,帧率可以达到65FPS,但是检测准确率会下降。后续会有具体的代码详解以及更改调试,感兴趣的朋友可以一起学习,共同进步。
  • 9
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值