在实习中,有一个任务是训练出一个车辆检测的yolov4模型。感觉yolov4的功能好强大啊!特此记录一下自己在使用过程中的一些改动。
首先肯定是要配置相关的环境:OpenCV,Cmake,还有cuda,cudnn这些就不多说了。配置环境基本项,多找博客多试一试。
我用的系统环境是:
deepin系统, OpenCV3.4.16, Cmake3.22.0, cuda11.3, cudnn8.2.1。
配置好环境,下载了源码肯定动手开始训练,源码很多。需要修改的我梳理了一下:
1.预训练权重
首先下载好预训练权重放在darknet文件夹中(建议在里面新建一个项目文件夹例如xingding,把所有的文件都放在里面)。
2.复制配置文件
复制cfg文件夹里面的yolov4-custom.cfg文件。然后修改里面的内容:
max_batches = classes*2000
steps = 0.8*max_batches,0.9*max_batches
ctrl+F 搜索[ yolo ]有三个yolo。把yolo里面的classes=[你的类别]
yolo之前的filters=(classes+5)×3
3.创建标签文件
可以复制voc.names文件,然后把里面的类别修改为自己的类别
4.创建数据文件
这个文件实际上是表明你的文件路径之类的文件xingding.data:
.data文件可以搜索一下darknet的默认.data文件,复制进行改写。
classes:类别
train,valid:俩个txt所在的绝对路径或者相对路径
names:标签文件的路径
backup:训练产生权重文件的路径
5.制作train.txt,val.txt
我是基于voc数据集格式然后通过俩个.py文件转化为yolov4需要的txt文件。
这俩个脚本文件实现了提取VOC数据集格式的特定类,并且转化为yolov4需要的txt
俩个.py文件,我已经上传到我的资源了。
6.最终就可以训练了(一些命令行)
注意:在darknet文件夹打开终端。(记得和自己的文件夹和文件名字一一对应)
1.训练:./darknet detector train xinding/obj-xinding.data xinding/yolov4-xinding.cfg xinding/yolov4.conv.137
2.测试map:./darknet detector map larger-object/obj.data larger-object/yolov4-larger-obj.cfg larger-object/yolov4-larger-obj_best.weights
3.测试视频:./darknet detector demo xinding/obj-xinding.data xinding/yolov4-xinding.cfg xinding/yolov4-xinding_final.weights xinding/huize.mp4 -out_filename xxx.mp4
4.提取best model的前N层参数做预训练模型(v4,136;v3,74): ./darknet partial xx.cfg xx_best.weights xxx.conv.136 136
5.测试新的没有标签的数据:./darknet detector test larger-object/obj.data larger-object/yolov4-larger-obj.cfg larger-object/yolov4-larger-obj_best.weights -dont_show -save_labels
note:第5个需要改src文件夹的detector.c文件然后重新make。
0.最后看看训练效果:
训练时
测试map:
版权声明:本文为CSDN博主「言初-xys」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42433234/article/details/123068342
暂无评论