yolov3训练自己的数据集实践记录

1、标注自己的数据集

2、按照YoLo官网下载,下载yolov3项目工程

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

      cd darknet

      make

3、修改修改darknet目录下的makefile

     1、打开文件

          vi Makefile

    2、如需使用GPU训练,进行如下修改:

         GPU=1 #使用GPU训练

         CUDNN=0

         OPENCV=0

         OPENMP=0

         DEBUG=0

    3、make   #必须进行make才可生效

4、准备数据集。

       在scripts文件夹下创建文件夹VOCdevkit,目录结构如下:

Main中的文件分别包括test.txt是测试集,train.txt是训练集,val.txt是验证集,trainval.txt是训练和验证集,我只选用了训练集和验证集。

在VOC2019目录下建立test.py,代码如下:

import os
import random

val_percent = 0.1
train_percent = 0.9
xmlfilepath = 'Annotations'
txtsavepath = 'ImageSets\Main'
total_xml = os.listdir(xmlfilepath)

num = len(total_xml)
list = range(num)
tv = int(num * val_percent)
tr = int(tv * train_percent)
val = random.sample(list, tv)
train = random.sample(val, tr)


ftrain = open('ImageSets/Main/train.txt', 'w')
fval = open('ImageSets/Main/val.txt', 'w')

for i in list:
    name = total_xml[i][:-4] + '\n'
    if i in train:
        ftrain.write(name)
    else:
            fval.write(name)
 
ftrain.close()
fval.close()

可以得到所需的train.txt和val.txt的内容

5、修改voc_label.py如下三处的内容,得到YOLOV3需要的数据形式

python voc_label.py 运行可得到如下所示文件:

6、修改程序:

    修改data/voc.name为自己的类别:

  修改cfg/voc.data

修改cfg/yolov3-voc.cfg

这里需要注意的是batch和subdvisions的数值,batch/subdvisions的值就是每次丢进去训练的图片数,batch和subdvisions数值太大会导致内存消耗太大。我训练时未生成权重文件就是因为内存不够,训练到后面直接强制停止,后面修改了batch和subdvisions的值才生成权重文件,此外,训练多少次生成权重文件,可以通过train.py中如下代码进行修改,下面的代码是每训练10次保存一次权重文件。

if epoch > 0 and epoch % 10 == 0:
                torch.save(chkpt, weights + 'backup%g.pt' % epoch)

直接搜索yolo,会出现三个yolo,我们需要将filters改成(classes+5)*3的数值,将classes改成自己的类别数,random=0为关闭多尺度训练。

7、下载预训练模型

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

将darknet53.conv.74放到scripts目录下

8、开始训练

./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg scripts/darknet53.conv.74 -gpus 0,1

刚开始训练loss比较大,到100次之后会降的比较快了。

本文参考了网上其他人的经验,如有不足,请多指教哦

参考的部分博客链接如下:https://blog.csdn.net/weixin_42731241/article/details/81352013

                                          https://blog.csdn.net/qq_21578849/article/details/84980298

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值