yolov3(darknet版)训练自己的VOC格式数据集

一、获取数据集

1、如果可以下载好标注好的数据集,那就直接使用即可,注意查看一下数据集的组织格式是否和VOC的格式相同。

2、如果没有现成的数据集,那么可能需要自己去标注,这个以后有机会再细说吧。需要使用一些标注工具,如labelImg,具体使用方法可以参考以下两篇文章!!!

windows下使用labelImg标注图像

labelImg 安装使用说明

二、下载并编译darknet(Ubuntu下)

1、下载编译

git clone https://github.com/pjreddie/darknet.git
cd darknet
make

2、编译完成之后,可以使用下面的命令来检验一下

./darknet

如果没有问题,就会输出以下信息:

usage: ./darknet <function>

3、如果想要支持GPU和OPENCV,可以在编译之前修改Makefile,将所需编译的项的值修改为1即可,如下所示:
在这里插入图片描述
具体可以参考官方文档: https://pjreddie.com/darknet/install/

三、VOC数据集格式转YOLO数据格式

上篇文章已经详细说明了,传送门:VOC格式数据集转yolov3(darknet)格式

另外说明一点,可以在转换好格式后,在VOCdevkit同级目录下,运行以下命令:

cat 2007_train.txt 2007_val.txt  > train.txt

目的是将训练数据和验证数据合并成一个文件,都用来做训练,这个不是必须的,不过我看别人都是这么弄的,emmm!!!

四、参数修改

需要修改的地方主要有以下几项:

1、cfg/voc.data文件:根据自己的实际路径修改即可。backup是用来存放训练之后的权重的。
在这里插入图片描述
2、data/voc.names文件:根据自己数据集的实际种类和类别的名字进行修改。
在这里插入图片描述
3、cfg/yolov3-voc.cfg文件

  • filtersclasses参数;一共有三个部分,快捷的办法就是直接搜索yolo,然后将其上面的filtersclasses改为自己所需的实际值。这两个值满足以下公式:
filters = 3*(5+len(classes));
classes = len(classes)

在这里插入图片描述

  • 其他基础参数:比如训练时,将6、7两行解注释,3、4两行注释掉。其他如迭代次数等参数也可以根据需要自己去修改。

在这里插入图片描述

五、训练

1、下载darknet53的预训练模型

wget https://pjreddie.com/media/files/darknet53.conv.74

2、开始训练:

./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74

六、小结

如果你不想使用yolov3-voc.cfg也是可以的,只需要选择自己想要使用的配置文件,然后预训练权重也选择和模型结构匹配的即可。

不同的配置文件对应着不同的网络结构(所以才要选择匹配的预训练权重)或者参数,例如为了模型小一些,你可以选择yolov3-tiny.cfg,只要记住训练完成之后产生的权重文件对应的是yolov3-tiny即可。这样,你在加载该权重文件的时候,将加载该权重的模型的结构也设置成yolov3-tiny就可以。

猜你喜欢

转载自blog.csdn.net/qq_39507748/article/details/110826017