1、电脑配置
win10、OpenCV4.1、VS2019、cuda10.2
2、下载并配置
(1)YOLOv4网址:https://github.com/AlexeyAB/darknet
克隆到本地后,开始配置
(2)打开:D:\darknet\build\darknet(我下载在D盘,路径按照自己的打开)
(3)在文件夹C:\Program Files (x86)\opencv\build\x64\vc15\bin的两个dll文件:
opencv_ffmpeg410_64.dll和opencv_world410.dll
复制到
D:\darknet\build\darknet\x64
(不同的版本名称有点差异,但是大差不差的)
(4)release跟x64
点击项目->darknet属性
添加附加依赖项的时候添加的是opencv_world410.lib,就是没有d的有d的是debug的
(6) 编译项目,点击“重新生成解决方案”。
可能有下述错误:
严重性 代码 说明 项目 文件 行 禁止显示状态 错误 MSB4019 找不到导入的项目“C:\Program Files
(x86)\Microsoft Visual
Studio\2019\Community\MSBuild\Microsoft\VC\v160\BuildCustomizations\CUDA
10.0.props”。请 确认 Import 声明“C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\BuildCustomizations\CUDA
10.0.props”中的 表达式正确,且文件位于磁盘上。
(7)打开 D:\darknet\build\darknet\darknet.vcxproj
把CUDA的版本改成你自己的版本,我的是10.2,所以两处CUDA都改成10.2
(很奇怪的是,第一次修改完成后运行成功了,第二次再尝试就失败了,我就直接把第一次的文件复制过来运行就成功了,真的玄学)
(8)此时运行如果还有错误
将NVIDIA CUDA的安装程序(.exe文件)数据解压到一个指定文件夹中
将"D:\Temp\CUDA\VisualStudioIntegration\extras\visual_studio_integration\MSBuildExtensions"
下的文件直接拷贝到
“C:\Program Files (x86)\Microsoft VisualStudio
\2019\Community\MSBuild\Microsoft\VC\v160\BuildCustomizations”文件夹中。
(9)再次点击“重新生成解决方案”,这时应该编译成功,并产生可执行文件
D:\darknet\build\darknet\x64\darknet.exe
3、测试
下载 yolov4.weights,找一些图片和视频放到x64文件中
在D:\darknet\build\darknet\x64\ 目录下执行
darknet.exe detector test cfg\coco.data cfg\yolov4.cfg yolov4.weights
你的图片名.jpg
darknet.exe detector demo cfg\coco.data cfg\yolov4.cfg yolov4.weights
你的视频名.mp4
运行成功就可以开始训练了
4、训练
(1)数据集处理
在x64文件夹中建立一个py脚本文件将xml文件转化为txt
打开cmd到x64文件夹中,
python transform.py
运行成功
(之前是下载别人的用,但是一直报错,后来发现文件名包含中文的需要增标明UTF-8)
(2)修改配置
打开x64\data文件夹,
打开x64/cfg
复制黏贴yolov4.cfg,改成你喜欢的名字
在cfg\yolov4-mask.cfg文件中,三个yolo层和各自前面的convolutional层的参数需要修改:
三个yolo层都要改:yolo层中的classes为类别数,每一个yolo层前的convolutional层中的filters =(类
别+5)* 3
yolo层 classes=2, convolutional层 filters=21
一共有3个yolo层,从012,345到678
改完保存
(3)下载预训练权重
yolov4.conv.137
放置在D:\darknet\build\darknet\x64目录下
这里的训练使用迁移学习,所以下载的yolov4在coco数据集上的预训练权重文件(不含head)
darknet.exe detector train data\你刚刚修改的配置.data cfg\你刚刚修改的配置.cfg yolov4.conv.137 -map
有map可以看训练过程