最近两天在看yolo项目,所以想着把作者的项目copy一下运行看一下效果,谁知道一不小心,陷入坑中无法自拔。真实感叹作者的厉害之处。
同时也记录了自己Windows10+YOLOV3+VisualStudio2017最新版本超详细走坑成功过程。

PS:(2019/9/28更新)根据博客朋友的反馈,我这里再把常见报错问题总结一下:

1.编译失败,项目成功0个,失败1个。这种情况较多: 错误 MSB3721 命令,CUDA和CUDNN是否正确安装,右键项目属性页,重新查找一下项目属性页中是否有哪些路径没有配置好。

2.CUDA:ERROR:电脑的NVIDIA显卡驱动,CUDA和cudnn版本一致,最好都是最新版,不然到最后执行检测会的时候错误(CUDA:ERROR)。以及检查系统环境变量C:\Program Files\NVIDIA Corporation\NVSMI等等。

3.CUDA Error: out of memory 。电脑独立显卡显存不足!(我在正常测试时NVIDIA1050TI ,4G独立显卡没有问题,再小可能就会出现显存不足情况。)

4.CUDNN_ERROR:CUDNN_STATUS_BAD_PAPRM:此时检查一下电脑CUDA状态是否被其他程序占用,可以重启一下电脑再试一下即可。

5.训练CIFAR-10等其他数据集数据,作者给出了教程:https://pjreddie.com/darknet/train-cifar/
若显卡内存不足可在darknet\build\darknet\x64\cfg\cifar.cfg。中文本方式打开修改并减小训练时bactch的大小。测试时我看了一下yolo.cfg默认就是batch=1,只要显存足够4G应该没问题。

YOLO项目官网:

https://pjreddie.com/darknet/
YOLO检测darknet安装教程
https://pjreddie.com/darknet/install/
作者完整项目:
https://github.com/AlexeyAB/darknet

首先先总结一下我踩过的坑:

1,官网上的安装教程入门是在Linux and Mac ,所以windows的用户还要自己编译,作者在github上也给出了具体的步骤,但是自己弄的时候还是感觉Error漫天飞。
作者说了:

2,VMware虚拟机安装Ubuntu貌似行不通,如果是CPU版本的话,我试过是可以,但是GPU版本就不行了,我查了一下因为虚拟机的显卡驱动都是虚拟的,不能直接调用自己主机电脑的硬件,所以就放弃了。

3,ubuntu的cpu版本比较简单,按照说明步骤执行就行了
作者项目地址:https://github.com/pjreddie/darknet
终端命令执行:

git clone https://github.com/pjreddie/darknet.git
cd darknet
make

接着下载训练好的权重

#wget命令获取预训练的参数权重
wget https://pjreddie.com/media/files/yolov3.weights
#可能有点大,大概200多MB
#当前文件下直接执行
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

然后就能看见效果图了。至于GPU版本由于是虚拟机没法用,所以就选择了windows。

3,windows10下编译遇到好多问题,主要详细记录一下:

本人电脑配置与环境:
①Windows10
②VisualStudio2017community
③Opencv3.4版本
④cuda10.1version
⑤cudnn-10.1-windows10-x64-v7.5.0.56
除了opencv不是最新版,其余的配置应该都是最新版本。

  • 注意电脑的NVIDIA显卡驱动,CUDA和cudnn版本一致,最好都是最新版,不然到最后执行检测会的时候错误(CUDA:ERROR)。
  • 至于为什么不要用最新版本的opencv,首先在作者的github项目中有说明书:

如用最新版本的(>=opencv4.0)会造成许多问题。其他版本注意路径配置。

因为遇到的BUG问题太多,不过基本上都形似:
①错误 MSB3721 命令““C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin\nvcc.exe” -gencode=arch=compute_30,code=“sm_30,compute_30” -gencode=arch=compute_75,code=“sm_75,compute_75” --use-local-env -ccbin “E:\VisualStudio\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64” -x cu -IC:\opencv_3.0\opencv\build\include -I…\include -I…\3rdparty\include -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include" -I\include -I\include -I"F:\githubCode\projectGit\vcpkg\installed\x64-windows\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include" --keep-dir x64\Release -maxrregcount=0 --machine 64 --compile -cudart static -DCUDNN_HALF -DOPENCV -DCUDNN -D_TIMESPEC_DEFINED -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_CRT_RAND_S -DGPU -DWIN32 -DNDEBUG -D_CONSOLE -D_LIB -D_MBCS -Xcompiler "/EHsc /W3 /nologo /O2 /Fdx64\Release\vc141.pdb /FS /Zi /MD " -o x64\Release\convolutional_kernels.cu.obj “F:\githubCode\projectGit\darknet\src\convolutional_kernels.cu””已退出,返回代码为 2。 darknet E:\VisualStudio\Common7\IDE\VC\VCTargets\BuildCustomizations\CUDA 10.1.targets 757
这里我后面把opencv4.0换成了opencv3.4,然后核对了cuda和opencv3.4等文件的系统环境变量和darknet.sln工程解决方案配置文件中的路径一致之后,再重新按照系统环境变量中的路径配置一遍。

②错误 C1083 无法打开包括文件: “opencv2/highgui/highgui_c.h”: No such file or directory darknet f:\githubcode\projectgit\darknet\src\image.h 11
诸如类似的这个错误一般是需要检查一下自己其实就是工程项目属性设置文件的路径,我的这个是opencv2/highgui/highgui_c.h的路径错误,这里我发现我在工程属性文件darknet.vcxproj以notepad++中文本形式打开,然后将对应的一些版本号与路径设置完毕即可;实际上经过我查阅一番发现这个darknet.vcxproj,opencv的环境路径和其他一些版本更改之类的,直接为darknet.sln解决方案在VisualStudio中设置对应的信息就行,具体整个配置流程我每一步争取都记录下来。


下面是我的详细安装过程:

一,为电脑安装最新版本的cuda和cudnn

cuda安装地址:https://developer.nvidia.com/cuda-downloads?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exelocal
cudnn安装地址:https://developer.nvidia.com/cudnn

其中cudnn下载安装包需要注册一个账号,过程是免费的。

两个文件下载完成之后是这样的:

1,将cuda运行安装,建议默认路径,因为我试过自己修改路径,最后遇到了两个问题:
  • ①临时解压路径:

  • ②安装路径:

  • (应该是CUDA10,因为我已经安装完了,所以在网上找了一个图来表示说明)

所以会遇到这两个路径如果设置为同一个的话,安装时会自动删除那个解压缩的Temp所在的文件夹,最后会发现CUDA安装的文件又没了!所以建议默认路径原因就是怕这两个路径设置为同一个了。

2,对于cudnn直接将其解开压缩包,然后需要将以下bin,include,lib文件复制粘贴到cuda的文件夹下C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1:

3,配置cuda的环境变量

4,最后测试cuda是否配置成功:

打开CMD执行:

nvcc -V

即可看到cuda的信息

二,如果电脑opencv不是opencv3.4之前的版本,可以在opencv3.4链接下载:

https://opencv.org/opencv-3-4.html
接着只需要将其解压缩,后配置环境变量就行了。
我自己的配置如下:

三,对YOLOV3中的darknet项目文件进行编译

准备工作已经做好:win10+cuda+cudnn+visualstudio2017community+opencv3.4

1,首先cd到你的项目想保存的文件路径后:

使用git clone https://github.com/AlexeyAB/darknet
下载的YOLO原生版本文件应该是这样的:

2,进入build>darknet文件中,主要有用的文件

注意此时先进入x64文件夹下>将opencv3.4中的两个dll文件:opencv_ffmpeg340_64.dll和opencv_world340.dll复制到该文件夹下,不然后面运行会报错找不到dll。

关于该问题,作者也给了说明:
意思是最后会生成一个darknet.exe文件,该文件执行时需要依赖上面两个dll。
至于这两个文件的路径,我自己的是在opencv的安装路径中:

选择以上两个就行(顺便说一下,340后面带有小d的貌似是debug版本;不带d的是release版本)
因为最后需要release版本的所以就只用选上面红框的复制到darknet>×64文件夹下就行。

3,来到最关键的一步了,前面工作一个都不能少,否则这接下来会BUG和ERROR漫天飞。

用visualstudio2017打开darknet.sln文件进行生成darkent.exe文件

①右键对darknet.sln进行配置,注意上面应选为release和x64。

接下来一共几个关键步骤:
1:注意Windows SDK版本,平台工具集选择自己的VisualStudio2017

  • 注意:如果后面报错说请选择对应的VisualStudio2015版本,这里需要去darknet.vcxproj中用文本形式打开,并将红框中的内容都替换为v141即可(我的是已经替换过了):

2,修改包含目录和库目录,即添加opencv3.4的包含目录和库目录(按照自己的opencv3.4的路径来进行添加):

3,附加依赖项

4,最后已经完成对任务的配置,右键生成或者重新生成就行了。

结果如下:

前面都成功不出意外的话,在文件夹下多出一个darknet.exe文件就是想要的结果:

在测试效果之前还需要添加以下官网上下载训练好的权重:

#wget命令获取预训练的参数权重或者直接打开链接就能下载。
wget https://pjreddie.com/media/files/yolov3.weights

这里我把它放在了一个起名为weights的文件下面:

5,最后的最后,执行命令查看效果:

打开cmd命令提示符,切换到F:\githubCode\projectGit\darknet\build\darknet\x64
即生成的darknet.exe文件所在文件夹下

  • 检测图片效果:
    执行命令(一句话):
    即利用darknet.exe执行检测效果,加载权重之后,对.\data\文件夹下的dog.jpg进行检测
darknet.exe detector test data\coco.data yolov3.cfg .\weights\yolov3.weights .\data\dog.jpg

大功告成!!!

然后就会看到效果了:

  • 检测摄像头命令:
  • 也是在darknet.exe所在文件下执行
darknet.exe detector demo data\coco.data yolov3.cfg weights\yolov3.weights
  • 或者指定摄像头设备号0:
darknet.exe detector demo data\coco.data cfg\yolov3.cfg weights\yolov3.weights -c 0
  • 注意:检测前注意查看设备管理器自己的电脑摄像头是否正常工作,然后即可看到检测到自己电脑摄像头的检测效果。
  • 检测视频文件:
  • 我在data文件下放了一个视频文件即:.\data\TownCentre.avi
  • 执行命令:
darknet.exe detector demo data\coco.data yolov3.cfg .\weights\yolov3.weights .\data\TownCentre.avi
  • 通常需要YOLO保存检测后的视频文件时可以用下面命令:
  • 即增加了置信阈值选项0.25,和输出视频文件路径与名称
darknet.exe detector demo data\coco.data yolov3.cfg .\weights\yolov3.weights .\data\TownCentre.avi
-thresh 0.25 -out_filename .\data\test_result.avi


以及我看到在YOLO的GitHub说明中作者给出了利用微软的lib安装工具vcpkg对YOLO编译的教程,试了以下以后也遇到了许多问题,有待后续研究。

参考博客:
YOLO配置:https://blog.csdn.net/amusi1994/article/details/80261735
YOLOV3配置opencv:https://blog.csdn.net/leonary_jy/article/details/80293205
解决VC运行opencv后提示缺少opencv_world310d.dll问题

Windows10+YOLOV3+VisualStudio2017最新版本超详细过程相关推荐

  1. Kafka(八)----Kafka Tool 2.0.7(最新)版本超详细使用指北

    Kafka Tool 2.0.7版本使用指北 本篇博客要点如下: Kafka Tool 2.0.7下载安装 Kafka Tool 2.0.7参数优化及连接Kafka集群 Kafka Tool 2.0. ...

  2. VMware安装Centos7和卸载超详细过程(图文)

    下载Centos7镜像 下载地址 提供几个下载Linux镜像的网站,这里我下载的是Centos7.9版本的系统,内核版本为3.10.0版本 国内外镜像源: 阿里云:http://mirrors.ali ...

  3. VMware安装Centos7超详细过程(图文)

    原文:https://www.jianshu.com/p/ce08cdbc4ddb?utm_source=tuicool&utm_medium=referral 本篇文章主要介绍了VMware ...

  4. 使用Matlab工具箱(procamcalib)进行投影仪标定---超详细过程

    使用Matlab工具箱(procamcalib)进行投影仪标定-超详细过程 一 .procamcalib工具箱应用场景 同于相机标定的方法和步骤,投影仪的原理通常被看作是相机成像的逆过程,网上关于相机 ...

  5. Burpsuite介绍及2022.8.2版本超详细安装教程(图文版)

    Burpsuite介绍及2022.8.2版本超详细安装教程(图文版) 文章目录 Burpsuite介绍及2022.8.2版本超详细安装教程(图文版) Burpsuite是什么? Burpsuite环境 ...

  6. 电脑启动过程(超详细过程)

    Linux启动过程(超详细过程) 一.前言 二.启动过程概述 三.加电自检及初始化 四.主引导记录 五.加载kernel 六.加载init 致谢 一.前言 我开始的时候写了一篇关于Linux启动过程的 ...

  7. SVM支持向量机 超详细过程讲解

    SVM支持向量机 超详细过程讲解 前言 一.线性模型 前言 此篇文章为B站浙大机器学习课程支持向量机部分的个人笔记,不喜勿喷.笔记顺序从线性模型到非线性模型,层层递进,十分易懂. 一.线性模型 先从一 ...

  8. 【PyTorch】构造VGG19网络进行本地图片分类(超详细过程)——项目介绍

    本篇博客主要解决以下3个问题: 如何自定义网络(以VGG19为例). 如何自建数据集并加载至模型中. 如何使用自定义数据训练自定义模型. 第一篇:[PyTorch]构造VGG19网络进行本地图片分类( ...

  9. Win11上Pytorch的安装并在Pycharm上调用PyTorch最新超详细过程并附详细的系统变量添加过程,可解决pycharm中pip不好使的问题

    网上资源越来越多,关于PyTorch的安装教程各式各样,下面我将详细介绍在安装过程中的操作步骤. 经过上述流程图的介绍我们心中对安装过程有了一个大致的轮廓.下面我将对每一步进行细致的说明 步骤Ⅰ:检查 ...

最新文章

  1. HDU 4540 威威猫系列故事――打地鼠(DP)
  2. 基于Opencv实现眼睛控制鼠标
  3. python储存在ftp_python实现FTP
  4. topics in innovation management
  5. 【译】 Diving Into The Ethereum VM Part 6 - How Solidity Events Are Implemented
  6. 如何让手游内存占用更小?从内存消耗iOS实时统计开始
  7. 高质量程序设计指南c++/c语言(14)--函数指针
  8. 使用struts2中默认的拦截器以及自定义拦截器
  9. 2022年二级建造师《建设工程法规及相关知识》试题答案
  10. 国外 广告牌_广告牌下一首流行歌曲的分析和预测,第1部分
  11. 定语从句中的关系代词
  12. 蓦然回首,会员制CRM就在下里巴人处
  13. DNA计算 与 肽展公式 推导 AOPM-A 变胸腺苷, AOPM-O尿胞变腺苷, AOPM-P尿胞变鸟苷, AOPM-M鸟腺苷的 S形螺旋纹 血氧峰 触发器分子式 严谨完整过程
  14. 帝国CMS对接百度小程序实现文章自动收录的方法
  15. 【MM32F5270开发板试用】播放TF卡WAV格式音乐,I2S驱动CS4344
  16. Mybatis-Plus的条件构造器(Wrapper)
  17. 当运行pychrm时遇到please select a valid interpreter怎么解决
  18. 使用DOS的导出Oracle的dmp文件
  19. 97岁的诺奖得主,活着就会有好事发生
  20. Android 11 替换Launcher后导致近期任务无效

热门文章

  1. 私货——OIer 必备网站集
  2. 三分钟带你领路Java-JFrame窗体美化
  3. c++实现简易trpg角色生成器
  4. 怎么修改html的空格大小,css设置空格宽度间距样式
  5. 外贸网站建设需要注意的事项
  6. 打马赛克就安全了吗?AI消除马赛克,GitHub霸榜
  7. A study finds nearly half of jobs are vulnerable to automation
  8. WSO2 文件上传 (CVE-2022-29464)漏洞复现
  9. 加密、签名以及苹果的双重签名机制
  10. 过滤百度广告+搜索热点+adblock规则快速入门