yolov4权重训练

Yolov4权重训练说明(所需weights文件、py文件、opencv文件、darknet-master文件、voc数据均可在下载链接:https://pan.baidu.com/s/1jAn7Yb657pBcd1SP7Rt9ag 提取码:wso8)

第一节:安装yolov4

一.安装Visio studio(此教程为vs2019,实际2015及以上版本均可用,需安装v140工具集)Visio studio官网下载https://visualstudio.microsoft.com/zh-hans/vs/ 选择community 2019在这里插入图片描述

二.安装python的IDE和解释器Python版本3以上即可
三.安装cuda和cudnn参考:https://blog.csdn.net/shuiyixin/article/details/99935799?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight
1.根据显卡支持的cuda版本,下载cuda安装工具包 https://developer.nvidia.com/cuda-downloads
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安装之前要关闭visual-studio

二.安装cudnn根据cuda版本下载对应的cudnn https://developer.nvidia.com/rdp/cudnn-download
在这里插入图片描述
下载的cuDNN解压缩,会得到下面的文件,将的得到的bin,include,lib文件中的文件拷贝到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1
当然后面那个v10.1是你自己的版本号。
三.添加环境变量C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\binC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\includeC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\libC:\Program Files\NVIDIA GPU ComputingToolkit\CUDA\v10.1\libnvvp
四.安装opencv4.4Opencv版本4.3,4.4均可(3应该也可以)运行opencv-4.4.0-vc14_vc15.exe配置环境变量 参照https://zhuanlan.zhihu.com/p/60944308(如果遇到超过环境变量长度允许范围,选择配置用户变量)
在这里插入图片描述
在这里插入图片描述

五.在vs中编译yolov4
解压darknet-master.zip
1.进入darknet\build\darknet文件夹,打开darknet.vcxproj,把CUDA 10.0" 换成CUDA 11.0(11.0是我的cuda版本,换成自己的即可),保存退出。
在这里插入图片描述

然后用vs2019打开darknet.sln, 不要升级 将项目改成Release x64。然后需要重定向项目:右键项目–>重定向项目如果是VS2019,需要修改工具集(下载工具集过程见1.1),修改如下:右键项目–>属性 在这里插入图片描述

如果安装vs2019时没有选择这个工具,不要紧,退出VS2019。在菜单里打开Visual Studio Installer. 勾选vc++2015(V140) 在这里插入图片描述
在这里插入图片描述

  1. 在属性表中配置opencv
    打开解决方案资源管理器,右键属性 Vc++目录->包含目录E:\opencv_4.4.0\opencv-4.4.0build\install\includeVc++目录->库目录E:\opencv_4.4.0\opencv-4.4.0build\install\x64\vc14\lib链接器->输入->附加依赖项opencv_world440.lib

3.属性页CUDA C/C++ Device根据显卡算力修改compute_75,sm_75,具体算力对应表在英伟达官网查找https://developer.nvidia.com/cuda-gpus#compute默认有两份compute和sm,保留一份即可
4.build项目,然后在工程目录下×64下多了些darknet.exe等文件,然后把之前下载的yolo_v4 weights文件放到darknet.exe同文件夹里darknet-master\cfg文件下的yolov4.cfg放到darknet.exe同文件夹里 三。测试然后在cmd上找到darknet-master\build\darknet\x64\darknet.exe的路径D:>cd D:\darknet\build\darknet\x64我的是这个。然后输入 ./darknet.exe detector test data/coco.data yolov3.cfg yolov4.weights -i 0 -thresh 0.25 dog.jpg 成功
在这里插入图片描述


第二节:制作数据集


  1. 建立一个空的voc数据集的目录格式,可以使用VOCdevkit.zip解压得

  2. 将照片重命名为规律的名字,注意不要与原有照片相同,放入JPEGImages文件夹中,使用Colabeler打开JPEGImages文件夹,使用矩形标注,并选择物体名,标注时不能超出图像范围,并且每张照片标注完了都需要保存,可以有无标注图片,也需要保存。在这里插入图片描述

  3. 全部照片标记完成后导出到Annatations文件夹 一般会导出到一个Annatations文件夹子文件夹,可以直接考出来,并把子文件夹删掉
    在这里插入图片描述

  4. 运行VOCdevkit\VOC2007下的ImageSets_main.py文件,可以在VOCdevkit\VOC2007\ImageSets\Main得到4个txt文件 在这里插入图片描述

第三节 训练数据集

1.打开voc_label.py文件,将classes修改为自己数据集对应的calssses
在这里插入图片描述
将voc_label.py文件放到VOCdevkit同目录下,运行,运行成功后该目录下生成4个txt文件,将这4个文件中的\替换成/ 在这里插入图片描述

并且VOCdevkit\VOC2007\labels路径下会生成许多txt文件,分别对应图片的锚点框
2. 准备配置文件,需要两个配置文件darknet-master\build\darknet\x64中的voc.data(如果没有就从darknet-master\cfg下复制一个过来)中的classes改为自己的种类数量,train和valid分别改为2007_train.txt和2007_val.txt darknet-master\build\darknet\x64中的voc.names中的名称改为自己的标签中的名称,一行一个。(将voc.data中names改为该文件路径(建议使用绝对路径))新建一个bacakup文件夹,将voc.data中backup改为该文件夹下对应路径(建议使用绝对路径)在这里插入图片描述

4.打开darknet-master\build\darknet\x64中的yolov4.cfg(如果没有就从darknet-master\cfg下复制一个过来) 将training下面的batch和subdivision修改为2和2(如果显存足够大可以选择更大的数字,subdivision不能超过batch,建议都选为2的倍数,越大越好,建议使用默认值,但一般会爆显存,如果训练时出现CUDA out of memory说明爆显存了,需要将这两个参数改小,
也可以修改width和height,需要保证是16的倍数,不建议小于480,可能会导致结果变差。)
max_batches是训练总迭代次数,建议大于10000Steps对应的两个参数分别为第一次步长减小迭代次数和第二次步长减小迭代次数,建议分别为max_batches的一半和3/4
在这里插入图片描述
在文件中查找yolo,将三处yolo对应卷积层和种类数进行修改在这里插入图片描述

5.训练 在\darknet\darknet\build\darknet\x64里面执行./darknet detector train D:/software_engineer/yolov4/darknet-master/cfg/voc.data D:/software_engineer/yolov4/darknet-master/cfg/yolov4.cfg -map其中voc.data和 yolov4.cfg为之前修改过的两个文件对应的绝对路径
6. 训练完成后在voc.data中backup对应路径下得到的几个weights文件,建议使用best文件。7. 单张图片测试Cmd中运行./darknet detector test D:/software_engineer/darknet/darknet/cfg/voc.data D:/software_engineer/darknet/darknet/cfg/yolov4.cfg D:/software_engineer/darknet/darknet/backup/yolov4_best.weights -i 0 -thresh 0.5 D:/work_place/门锁项目/计数项目深度学习目标识别/VOCdevkit/VOC2007/JPEGImages/00089.jpg注意cfg中的batch和subdivisions都要改为1
第四节.其他问题
1.已经训练了一部分数据,又添加了一些新数据,如何利用老数据的标签
(1) 新图片重命名,和老数据不重名,新图片放到老数据集里,这样在打标签文件中就可以看见新来的图片,标注新图片就行了
(2) 我现在有两个老数据,在不同的vocdevkit中,然后还有一批新数据。怎么做?把新图片重命名,放到其中一个老数据集里,按照1中的做。然后把两批老数据集的txt文件混合。就行了。如果类别变多了,要在voc.name,yolov4.cfg中修改。然后生成txt标签的脚本label.py也要修改,新老数据集的label.py要统一,修改类别,类别顺序不能错,然后重新生成3个txt文件和label文件夹

  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值