本人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,但是检测准确率会下降。后续会有具体的代码详解以及更改调试,感兴趣的朋友可以一起学习,共同进步。

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

  1. 使用Yolo3进行目标检测实现流程记录1

    上个月需要使用目标检测进行项目开发,简单了解了下目标检测的技术之后,果断选择使用yolo来进行尝试. 在查看了无数篇博客之后,头疼脑热,各种花样的问题之后,果断记录了自行爬坑的过程,希望对后续使用yo ...

  2. 【目标检测 深度学习环境搭建】CUDA9.0、cudnn7.3、tensorflow_gpu1.10下载和安装过程问题记录

    下载教程:https://www.jianshu.com/p/c73668544925 安装教程:https://www.jianshu.com/p/4ebaa78e0233 问题合集: 1.下载cu ...

  3. yolo3连接网络摄像头实现目标检测命令

    yolo3连接摄像头实现目标检测 yolo3使用较灵活,可以通过修改源码,来实现自己的一些功能.如果想要连接网络摄像头进行目标检测.针对目前我用的相机是海康或大华的,可以直接采用rtsp协议.测试连接 ...

  4. 目标检测学习————Keras搭建yolo3目标检测平台

    Keras搭建yolo3目标检测平台 源码下载 yolo3实现思路 一.预测部分 二.训练部分 训练自己的yolo3模型 参考原文出处 点击进入https://blog.csdn.net/weixin ...

  5. YOLOV3目标检测

    YOLOV3目标检测 YOLOV3目标检测 效果 部分代码示例 YOLO3借鉴了残差网络结构,形成更深的网络层次,以及多尺度检测,提升了mAP及小物体检测效果.如果采用COCO mAP50做评估指标( ...

  6. 【yolov4目标检测】(4) opencv+yolov4-tiny 实现选择性目标检测,附python完整代码

    各位同学好,今天和大家分享一下如何使用 opencv 调用 yolov4-tiny 目标检测方法,并对指定类别进行检测.用b站的视频做测试. 点击按钮 'all',按钮变红色,对所有的类别检测 点击按 ...

  7. 几十行python代码构建一个前后端分离的目标检测演示网站,代码开源

    在深度学习更讲究实用和落地的今天,构建一个简单的,可以利用浏览器和后端交互的演示性 Demo 可以说非常重要且实用了.本文我们将简单的介绍如何用几十行核心代码构建一个好用的.前后端分离的Demo. 2 ...

  8. 深入目标检测原理学习笔记1

    目标检测(object detection)学习笔记 文章目录 目标检测(object detection)学习笔记 一.目标检测任务概述 1.图像识别的任务 2.图像识别的两种模式 3.目标检测的定 ...

  9. BEV蒸馏来了!BEVDistill:用于多目3D目标检测的跨模态BEV蒸馏

    点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心[3D目标检测]技术交流群 后台回复[3D检测综述]获取最新基于点云/BEV/图像的3D ...

最新文章

  1. 区块链共识算法:PoS即权益证明 DPoS委托授权的权益证明
  2. 【keras】Input 0 of layer conv2d is incompatible with the layer. expected ndim=4, found ndim=3
  3. redis支持的数据类型有哪些?
  4. 输入三个字符串按由小到大输出
  5. 【转】[Hadoop源码解读](四)MapReduce篇之Counter相关类
  6. Docker 配置固定IP及桥接的实现方法(转载)
  7. Postman 使用 “status“: 415, “error“: “Unsupported Media Type“, “message“: “Content type ‘app
  8. 创建三个并发进程linux,Linux下几种并发服务器的实现模式(详解)
  9. 如何查看pytorch中层的名字
  10. Bootstrap modal使用及点击外部不消失的解决方法
  11. 响应式布局及bootstrap(实例)
  12. 【前端 · 面试 】HTTP 总结(四)—— HTTP 状态码
  13. 帆软按钮Javascript给某个单元格赋值(例:逻辑删除)
  14. Java IO-03 字节流和字符流
  15. 计算机主板检测卡0d,主板检测卡的0d码是什么意思?
  16. 像素、英寸、厘米的换算
  17. matlab连接mysql有什么用_MATLAB连接SQLServer和MySql数据库
  18. (淘宝无限适配)手机端rem布局详解
  19. 知识普及:KB=Kb?
  20. 求职秘技2:为什么公司不喜欢要应届毕业生

热门文章

  1. git上传代码到码云(详细)
  2. 【Linux】6.服务器会话的screen用法
  3. 牛人推荐机器学习网站
  4. Java并发编程--ReentrantReadWriteLock
  5. JavaSist之ClassPool
  6. 了解CMS(Concurrent Mark-Sweep)垃圾回收器
  7. Java Date 和 Calendar 实例
  8. 经验|博士毕业,也写一些发文章的心得
  9. 健身三大供能系统详解
  10. 机器学习中导数最优化方法(基础篇)