linux ubuntu--YOLOv4训练自己的数据集----darknet版本(多版本,更新中。。。)

YOLOv4训练自己的数据集----darknet版_记录

点击YOLOv4论文地址
本文基于代码链接实现训练自己的数据集
环境配置
Ubuntu+cuda10.02+darknet+python
1.下载模型文件

git clone https://github.com/AlexeyAB/darknet.git

2.下载预训练模型

链接:https://pan.baidu.com/s/1uJhsMlOvPfoIaipwYLKJIg 
提取码:aiqt

将下载的yolov4.conv.137和yolov4.weights模型放在darknet目录中即可。

3.编译

如果需要使用GPU加速,那么得打开项目里面的Makefile文件修改一些参数的值。修改完成之后在直接make。
GPU=1
CUDNN=1
CUDNN_HALF=1
OPENMP=1
LIBSO=1
DEBUG=1

NVCC=/usr/local/cuda-10.2/bin/nvcc # 自己cuda安装位置

##修改完成后
# cd 到 darknet-master 目录下
make
或者 make -j8

测试

# 测试图片,结果保存在 darknet-master/predictions.jpg
./darknet detect cfg/yolov4.cfg yolov4.weights data/dog.jpg

# 如果内存不够,修改 cfg/yolov4.cfg 
batch=1
subdivisions=1 
width=416
height=416

result
linux ubuntu--YOLOv4训练自己的数据集----darknet版本(多版本,更新中。。。)_第1张图片

训练

1.准备自己的数据集,以voc数据集的格式存放
linux ubuntu--YOLOv4训练自己的数据集----darknet版本(多版本,更新中。。。)_第2张图片
数据据制作过程参考:制作符合VOC格式的数据集
最后制作完效果如下:

按照上面格式准备好数据
Annotations是存放图片对应的标签xml文件
JPEGImage 存放图片
ImageSets --> Main -->test.txt train.txt trainval.txt val.txt 里面txt按行随机存放图片名字
如
000001
000002
000003

2.制作yolov4需要的label以及txt
这个时候只用voc数据集的格式是不满足我们这里需要的格式。首先打开路径下 build/darknet/x64/data/voc/voc_label.py,修改voc_label.py里面的内容。
先把7行的关于2012的去掉,再把第9行改成自己的类别。
在这里插入图片描述给每个路径前面加个data,如下图
在这里插入图片描述
在这里插入图片描述
可能会存在 w为0或h为0的存在
linux ubuntu--YOLOv4训练自己的数据集----darknet版本(多版本,更新中。。。)_第3张图片
修改完了之后复制voc_label.py在主目录darknet-master下执行,否则那些文件会生成在build/darknet/x64/data下面,执行完成后你会看到主目录下的data/目录下会生成几个txt。主目录darknet-master下的data/VOCdevkit/VOC2007/下面会生成一个label文件夹,里面txt会有坐标偏移量。

5.修改配置文件
cfg/目录下复制coco.data,并且重命名为obj.data,放在cfg/目录下。然后使用修改下面以下内容
linux ubuntu--YOLOv4训练自己的数据集----darknet版本(多版本,更新中。。。)_第4张图片

cfg/目录下复制coco.names,并且重命名为obj.names,放在cfg/目录下。改成自己类别的名称
linux ubuntu--YOLOv4训练自己的数据集----darknet版本(多版本,更新中。。。)_第5张图片
复制cfg/yolov4-custom.cfg,并且重命名为yolo-obj.cfg,放在cfg/目录下,同时修改一下内容
linux ubuntu--YOLOv4训练自己的数据集----darknet版本(多版本,更新中。。。)_第6张图片
上图中修改width和height为416,修改最大batch迭代多少个数max_batches = 6000,修改steps多久学习率下降一次,一般设置为batch个数的80%和90%。

然后三个classes的地方要修改
在这里插入图片描述
还有三个filters=255的地方要修改成自己的。
在这里插入图片描述

6.开始训练自己的数据集

./darknet detector train cfg/obj.data cfg/yolo-obj.cfg yolov4.conv.137

如需调用多个GPU

./darknet detector train cfg/obj.data cfg/yolo-obj.cfg yolov4.conv.137 -gpus 0,1,2,3

如若报错这个错误,则将cfg/yolo-obj.cfg 里面26行mosaic=1改成mosaic=0或者注释掉。没报错就忽略。
linux ubuntu--YOLOv4训练自己的数据集----darknet版本(多版本,更新中。。。)_第7张图片
7.预测

./darknet detector test cfg/obj.data cfg/yolo-obj.cfg yolo-obj_xxxx.weights 

参考:https://blog.csdn.net/weixin_44771532/article/details/105495755

你可能感兴趣的:(darknet,目标检测,yolov4)