前言:
AB大神版的yolov4在win10端的配置(详细教程)
Requirements:
- Visual Studio 2017/2019 https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=Community
- nvidia driver:https://www.nvidia.cn/geforce/drivers/
- CMake >= 3.12: https://cmake.org/download/
- CUDA >= 10.2: https://developer.nvidia.com/cuda-toolkit-archive
- OpenCV >= 2.4: https://opencv.org/releases.html
- cuDNN >= 8.0.2 https://developer.nvidia.com/rdp/cudnn-archive
第一步,安装Visual Studio
安装visual Studio,我这里选择了Visual Studio 2019。下载地址在Requirements
- 在这里选择你想使用功能,我在这里选了python和C++
- 之后需要别的功能,可以打开visual studio Installer 进行添加
第二步,安装Cmake
安装cMake,下载地址在Requirements(x86指的是32位系统;x64指的是64位系统),我选择的是3.20版本
- 记得勾选Create Cmake Desktop Icon(创建桌面图标)和 Add Cmake to the system PATH for all users(添加环境变量)
第三步:安装nvidia 驱动
安装nvidia驱动,下载地址在Requirements
我这里选择的是版本是461.09,太新的可能找不到匹配的cuda版本
地址啥的就别改了,避免后续不必要的麻烦(如果自定义了务必记住地址),然后一路下一步直到安装完成
第四步:安装cuda(要与nvidia驱动相匹配)
-
查看需要的匹配的版本,在桌面上右键打开NVIDIA 控制面板
-
在帮助中打开系统信息
-
选择组件,即可看到对应的cuda版本
-
打开Requirements中的链接,选择你需要下载的cuda,我这里的版本是11.2
-
安装步骤与第三步相同
-
测试,打开cmd,输出
nvcc -V
,获得类似以下内容就没问题了
第五步:安装cudnn(需要与cuda版本匹配)
- 安装cudnn,下载地址在Requirements,选择与cuda匹配的版本,这里需要登录才能下载。
下载完后是一个压缩包,解压后会获得一下文件
- 打开 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\V11.2**(即上面驱动和CUDA安装地址)将解压后得到的的bin ,include和lib文件夹分别复制到cuda安装路径下与cuda的bin ,include 和lib文件夹合并
- 添加环境变量:右击此电脑-属性-高级系统设置-环境变量,找到系统变量中的path,选择编辑,添加以下路径(即安装路径)
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\libnvvp
-
测试安装是否成功,运行CUDA的官方示例,win + r 打开cmd,cd到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\extras\demo_suite,运行bandwidthTest.exe和deviceQuery.exe
会获得一堆信息,在最后会得到一个PASS,则证明安装成功
第六步:下载opencv
-
安装opencv,下载地址在Requirements,我这里选择的是4.5.2,安装地址改了的请务必记住,后面用得到。
-
安装完成后,添加环境变量:右击此电脑-属性-高级系统设置-环境变量,找到系统变量中的path
C:\Program Files\opencv\build\x64\vc15\bin
C:\Program Files\opencv\build\x64\vc14\bin
- 添加完成后,建议重启下,保证环境变量生效
第七步:利用cmake build darknet
- 下载A版darknet,地址:https://github.com/AlexeyAB/darknet/archive/master.zip
- 打开cmake,然后按照以下步骤操作(图来自AB大神的github)
可能会遇到的问题1:找不到CUDA,解决办法:上面的安装步骤哪一步做错了
问题2:找不到opencv,解决办法:
- 右击此电脑-属性-高级系统设置-环境变量,找到系统变量中的**path,新建,添加“变量名”:OpenCV_DIR;变量值:
C:\Program Files\opencv\build
- 打开darknet文件夹,打开CmakeList(可以用记事本打开),ctrl+f 搜索
find_package(Opencv)
在这之前加入set(OpenCV_DIR "/path/to/opencv/bulid")
- 源码路径下会生成 Darknet.sln等项目文件,双击打开,选择debug或release, x64,右键选择ALL_BUILD生成
4.如果生成没有错误,即可右键选择INSTALL,选择“仅用于项目”----“仅生成INSTALL” ,成功后会生成darknet.exe和dark.dll等文件
5.需要将OpenCV对应版本的dll放在darknet.exe同目录,同时需要pthreadGC2.dll和pthreadVC2.dll(你也可以选择把darknet.exe以及这两个文件都放到C:\Users\Administrator\Desktop\darknet\build\darknet\x64
,这样更方便)
6.修改/创建cfg文件,如打开:(其他修改参照https://github.com/AlexeyAB/darknet)C:\Users\Administrator\Desktop\darknet\build\darknet\x64\cfg\yolov4-csp.cfg
- 修改batch
batch=64
- 修改subdivisions
batch=8
适当修改batch和subdivisions,不然容易GPU out of Memory
- 修改最大迭代数
max_batches
一般等于类别数*2000 - 修改
step
分别等于最大迭代数80%和90% - 适当修改输入图片大小
width height
,必须保证可以整除32 - 修改三个yolo层(ctrl+f 搜索yolo)的类别数:
classes
- 修改三个yolo层前filters的数量
filters
*(类别数+5) * 3,即类别数加(四个坐标+置信度得分)三个yolo检测器 - 创建
C:\Users\Administrator\Desktop\darknet\build\darknet\x64\data\
中创建detect.data
输入以下内容:
classes = X(你的数据集的类别数)
train = data/train.txt
valid = data/test.txt
names = data/detect.names
backup = backup/
text文件类似以下:
data/images/6057.jpg
data/images/5402.jpg
data/images/2508.jpg
data/images/4154.jpg
data/images/5086.jpg
data/images/3589.jpg
data/images/6448.jpg
data/images/748.jpg
data/images/6549.jpg
data/images/6873.jpg
data/images/8182.jpg
data/images/1572.jpg
data/images/7195.jpg
data/images/3319.jpg
- 创建
C:\Users\Administrator\Desktop\darknet\build\darknet\x64\data\
中创建detect.name
格式和以下内容相似:
aeroplane
bicycle
bird
boat
bottle
bus
car
cat
- 把自己的数据集(图片和标签)放到
C:\Users\Administrator\Desktop\darknet\build\darknet\x64\data\images\
下,路径要和data/train.txt
和data/test.txt
中一样
7.have a try:打开cmd,cd到C:\Users\Administrator\Desktop\darknet\build\darknet\x64
,输入darknet.exe detector train data/xxx.data cfg/yolov4-csp.cfg yolov4-csp.conv.142
跳出以下内容就可以了(可以用任务管理器查看GPU占用)
目前先到这里了,本文相当于介绍AB大神的readme中部分,增加了部分涉及的不完全的东西,避免遇到坑。
参考:
1.https://github.com/AlexeyAB/darknet
2.https://blog.csdn.net/qq_41277822/article/details/104018866
3.https://blog.csdn.net/weixin_42291376/article/details/106276151