Win10下YOLOv3配置、制作数据集与训练检验


前言

近期做目标检测的实验,基于win10系统配置YOLOv3环境,因搭建过程多舛,故作此记录。此次记录一是为了做备份,加强对YOLO框架的了解与使用,在下次配置使用YOLO时能够有条不紊;二是给大家做一点参考,笔记中记录了搭建过程中的各种小插曲。因为本人之前没做过目标检测方面的实验,凭借查资料一步一步走通,花费了很长时间,绕了不少弯路,着实体会到了其对新人的不友好。在这篇手记里,我主要介绍的是配置流程与步骤,其中参考了许多前人的经验,均列出出处,感谢分享。

本文主要以配置使用YOLO检测为目的,文中多有引用前人的笔记与插图,以供大家参阅查看。其多是我已经借鉴过的文章,是可以解决问题的好笔记。如因借鉴冒犯,指出即删。

本文涉及到的所有文件,官方数据等,我会将网址指出。若是在文件或网址后有(见链接),其文件已经上传到微云。本文记录使用YOLOv3做目标检测的整个过程,包括环境配置,数据集制作以及查看训练结果,篇幅较长,对于一些细节可能会有遗忘,欢迎大家提出,我会在后面加以完善。由于课题组成员各个研究方向不一,缺乏交流探讨,搭建过程难免出现疏忽纰漏甚至错误,若大家发现,请指正!

微云链接:https://share.weiyun.com/1UhbIkRh

1、YOLO项目

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

Tip:实践完两次才知道官网的重要性,计划了解更深入一点的话,建议直接原文,起码通篇过一遍,Trust me,磨刀不误砍柴工。

2、电脑配置与环境

主要参考文章:https://blog.csdn.net/KID_yuan/article/details/88380269

Win10
NVIDIA RTX 2060
VisualStudio2017community
OpenCV3.4 version(OpenCV-3.4.2-vc14_vc15.exe)
Cuda10.1 version(Cuda_10.1.105_418.96_win10.exe)
Cudnn-10.1-windows10-x64-v7.5.0.56(Cudnn-10.1-windows10-x64-v7.5.0.56.zip)

Tip:
① NVIDIA RTX 2060貌似不支持Cuda9.1,我尝试安装过Cuda9.1/9.2,均失败。目前显卡更新比较快,使用之前查查你的显卡与计划安装的Cuda版本是否兼容。
② Tensorflow、Cuda 和Cudnn的版本具有对应关系。
③有人说安装顺序很重要,先Cuda,再VS2017。我的安装顺序忘了,应该没有遵守,但是可以用,建议遵守,万一呢。
④ 以上配置支持YOLOv3,但是如果要配置YOLOv4的话,OpenCV version 可以用4.4.0版本(OpenCV-4.4.0-vc14_vc15.exe),4.4.0版本的OpenCV编译步骤是一样的,我已经测试可用,安装包以及YOLOv4权重文件(见链接)。

2.1 安装Cuda

主要参考文章: https://blog.csdn.net/bingo_liu/article/details/103224730

2.1.1 查看本机驱动版本

(1)桌面右击,点击NVIDIA控制面板(首先电脑得有显卡);

(2)打开面板,选择系统信息
在这里插入图片描述

(3)选择组件按钮,查看显卡支持的最高版本,这儿并不是你电脑目前所装的Cuda版本,实际安装版本通过命令行nvcc -V查看;
在这里插入图片描述

2.1.2 安装过程

Cuda安装地址:https://developer.nvidia.com/cuda-toolkit-archive

(1)按照相应的版本进行选择下载;
在这里插入图片描述

(2)将下载的Cuda双击安装,这里的安装路径是临时解压路径,安装时会自动删除。
在这里插入图片描述

(3)选择自定义安装,可以选择安装驱动(网图);
在这里插入图片描述

(4)不要选Visual Studio Integration(网图);
在这里插入图片描述

(5)记住安装位置,配置环境用。如果不想后期找路径的话,建议默认路径,后期出现问题在网上找答案大多也是基于默认路径给的处理过程(这是我之前装的9.2版本,应该是10.1);
在这里插入图片描述

(6)安装完成后配置环境,Path需要手动添加如下路径,对应上一步的安装路径(如果是默认安装路径,可以将版本号改了直接复制粘贴)。

  • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\lib\x64
  • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\include
  • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\extras\CUPTI\lib64
  • C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.1\bin\win64
  • C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.1\common\lib\x64

在这里插入图片描述
在这里插入图片描述

2.2 安装Cudnn

Cudnn安装地址(需注册):https://developer.nvidia.com/cudnn

Tip:选择Cudnn的时候,7.1.x后面跟着的是Cuda 版本号。

(1)对于Cudnn直接将其解开压缩包,然后需要将以下bin,include,lib文件复制粘贴到cuda的文件夹下;

  • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1
    在这里插入图片描述

(2)测试Cuda是否安装成功,打开cmd命令窗口,输入:nvcc -V;
在这里插入图片描述

至此,Cuda 和 Cudnn安装成功!

2.3 安装OpenCV

OpenCV网址:https://opencv.org/releases/

Tip:不要使用3.4.1版本,官网说有bug。

在这里插入图片描述

双击解压安装,之后添加环境变量即可。
在这里插入图片描述

2.4 安装VS2017

主要参考:https://blog.csdn.net/qq_38737790/article/details/92797119

VS2017网址:https://docs.microsoft.com/zh-cn/visualstudio/releasenotes/vs2017-relnotes

安装版本(见链接),这个比较简单,上图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

到此,VS安装完毕!

3、编译

使用VS2017对YOLOv3中的darknet文件进行编译。
主要参考:(https://blog.csdn.net/qq_38737790/article/details/92797119

编译之前,确保上述准备工作做好:
Win10+Cuda+Cudnn+Visual Studio 2017 Community+OpenCV3.4
编译过程难免遇到Error,可以先浏览一下3.5节中常见的错误,解决方法已经备好。

3.1 下载darknet

darknet网址:https://github.com/AlexeyAB/darknet

下载好之后,先进入darknet-master\darknet-master\build\darknet\x64文件夹下,将OpenCV3.4中的两个dll文件:OpenCV_ffmpeg340_64.dll和OpenCV_world340.dll复制到该文件夹下,不然后面运行会报错找不到dll。
在这里插入图片描述

3.2 darknet.vcxproj文件的修改

用文本编辑器、或记事本打开…\darknet-master\build\darknet下面的darknet.vcxproj。分别在55行和309行的CUDA 10.0=>CUDA 10.1(对应安装的CUDA版本,建议全文搜索CUDA)。

在这里插入图片描述

在这里插入图片描述

3.3 darknet.sln文件的设置与编译

(1)先打开vs2017,然后依次点击文件=>打开=>项目选中darknet.sln打开,打开后,vs会显示如下;
在这里插入图片描述

(2)一定要选择无升级,之后将项目改成Release x64,然后右键项目=>属性
在这里插入图片描述

(3)选择VC++目录=>包含目录=>编辑添加目录:…\OpenCV\build\inclde(…表示各位OpenCV的安装路径,以下同理);
在这里插入图片描述

(4)配置库目录,添加:…\OpenCV\build\x64\vc14\lib;
在这里插入图片描述

(5)选择C/C++=>常规=>附加包含目录=>编辑添加目录:…\OpenCV\build\include;
在这里插入图片描述

(6)选择链接器=>输入=>附加依赖项=>添加目录:…\OpenCV\build\x64\vc14\lib下库的名字:OpenCV_world340.lib;
在这里插入图片描述

(7)接着,需要拷贝安装好的CUDA 9.0.props等文件: CUDA 9.0.props等文件就在cuda的安装目录下,本人的路径是:

  • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\extras\visual_studio_integration\MSBuildExtensions
    在这里插入图片描述

将里面的所有的文件拷贝到

  • C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\BuildCustomizations

中,这是vs2017安装后的路径。

注意注意,如果你没有该文件夹,不慌,我就遇到了。
主要参考:https://blog.csdn.net/weixin_44868057/article/details/106524786
1)打开cuda10.1的安装包;
2)把cuda临时解压包的路径改了(默认的如下图,现在要改到自己好找的地方);
在这里插入图片描述

3)解压完成之后,找到上述文件并把文件复制到

-C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\BuildCustomizations

里面(网图)。
在这里插入图片描述

在这里插入图片描述

(8)最后,还需要确认电脑显卡的算力,我的电脑显卡是NVIDIA RTX 2060(根据自己的显卡),算力是75,修改darknet.vcxproj的compute值。
在这里插入图片描述

(9)完成上述之后,就可以在darknet工程上右键=>生成,就会发现在工程目录下x64下多了darknet.exe等文件啦,到这里就完成了darknet编译了。
在这里插入图片描述

你是小白的话,如果编译一次成功,建议跪下磕个响头,感谢上天待你不薄。

其实,VS的作用就是编译出darknet.exe,如果有别人编译好的darknet.exe直接拷贝来也是可以直接用的(见链接),可以跳过编译这一步。

3.4 测试YOLOv3

下载yolo3.weights,网址:https://pjreddie.com/media/files/yolov3.weights

下载后放在…\darknet-master\build\darknet\x64目录下;
然后进行测试,在当前目录下cmd打开命令窗口(也可以打开cmd,cd到darknet.exe的目录下),然后输入命令:

darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

到此,YOLO基本框架搭建完成!

3.5 总结一下常见错误

(1)编译失败,错误 MSB3721 命令。出现该问题就回到3.3节(8)步骤重新设置算力,该错误就是没有设置合适自己显卡的算力,如果改了还是不行,并且掺杂其他的错误命令,可能就是版本不匹配,怕是要重新搭配安装正确的版本。

(2)CUDA Error: out of memory 。电脑内存不够,解决方案见(参考)。

4、基于自己的数据创建YOLO数据集

4.1 labelimg标记数据集

主要参考:https://blog.csdn.net/yuejich/article/details/116653964

这一篇就写的很详细,按照步骤就可以标记数据,感谢分享。
这一步相对来讲比较简单,就简单做个总结。

小记:labelimg有许多版本,有的是.exe格式的,可以直接打开,有的需要cmd命令运行,这两类labelimg标记数据的程序我都用过,比较推荐cmd运行的版本,就是以上博主推荐使用的版本(见链接),其相较于打包成.exe格式的有两点优势:其一,打包成.exe格式的labelimg图片标记工具只能保存xml格式的文件,而cmd命令行运行的具有xml、txt(YOLO使用)、json三种保存格式。其二,虽说做YOLO数据集时,图片标记时可以保存成YOLO的.txt模式,但是xml和txt文件之间可以相互转换,后面有xml转txt文件的详细步骤,所以保存时建议保存成xml格式。推荐使用cmd运行版本的主要原因是,在最初使用exe格式的图片标注工具会出现采集图片长宽数据为零的问题,导致xml转txt时出现问题,所以这里也提醒大家,做数据集时先采取小样本测试一下标记的数据集是否运行顺利,以防跳楼。

还有一个小Tip:因为数据量大,我一开始将数据存储在U盘中,在U盘中进行数据标记的工作,标记的时候就比较卡顿,将数据转到电脑存盘就不会了。

4.2 数据集的搭建

不要浪费时间自己搭建结构,听我的,直接下载原始文件夹,然后将原始数据替换掉,这是搭建YOLO数据的一个重要的环节,搭建错了事倍倍功半半,听话。

4.2.1 下载VOC2007数据集

VOC2007下载地址:https://pjreddie.com/projects/pascal-voc-dataset-mirror/

(1)数据下载好应该是三个文件夹(见链接),如下:

在这里插入图片描述
(2)解压的时候记得一起解压,最终会解压到一个文件夹下VOCdeckit。
在这里插入图片描述

trainval和test数据集是从一个完整数据集划分来的,所以目录结构一样,且不存在冲突的图片命名。所以解压完成后相当于将两个子数据集合并成一个完整的有train,val,trainval,test的大数据集。

(3)将VOCdevkit文件夹放到darknet-master\build\darknet\x64\data\下;
在这里插入图片描述

(4)其数据结构基本如

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值