YOLO3-Darknet训练自己的数据集实例笔记

前言:最近在做物体检测的小项目,导师让我用YOLO来做,在这里总结一下实现的过程。

一、运行环境

我的是Win10+VirtualBox+Ubuntu16.04,CPU跑的。之前用VS没有做成功。

二、数据准备

先给大家一个格式文件VOCdevkit ,可以在Win10下好后进行以下操作https://pan.baidu.com/s/1zGIgBAI4gKFApCwRkYcswg 1df5

1、图片准备,可以从网上爬取、下载公开数据集或者自己拍摄,对图片的大小没有要求。将所有图片放在JPEGImages文件夹下:
在这里插入图片描述

2、对图片进行统一命名,不要乱,如下图
在这里插入图片描述
这里给一个简单的更改图片名的代码:

import os
class BatchRename():
    def __init__(self):
        self.path = r'ptah'  # 要处理文件路径
    def rename(self):
        filelist = os.listdir(self.path)
        total_num = len(filelist)
        i = 0
        for item in filelist:
            if item.endswith('.jpg'):
               src = os.path.join(os.path.abspath(self.path), item)
               dst = os.path.join(os.path.abspath(self.path),str(i)+'.jpg')
                try:
                    os.rename(src, dst)
                    print('converting %s to %s ...' % (src, dst))
                    i = i + 1
                except:
                    continue
        print('total %d to rename & converted %d jpgs' % (total_num, i))
if __name__ == '__main__':
    demo = BatchRename()
    demo.rename()

3、再使用标签工具将图片变成xml文件,一般是通过标注工具labelimg,也可以通过下载好的VOCdevkit文件下面的getXml.py文件进行操作。
直接运行该文件,不需要修改。运行成功后,手动输入图片文件夹位置,以及标签名称(这个很重要),出现图形界面后,通过鼠标框出检测对象,按空格键到下一张图片
4、将生成的xml文件全部放入Annotations文件夹下:
在这里插入图片描述
5、运行VOC2019下面的test.py文件,将在Main文件夹下生成训练样本txt
在这里插入图片描述

三、Darknet

在Ububtu上进行的操作
1、在github上下载darknet文件

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

2、将VOCdevkit文件夹放入darknet文件夹下。
3、然后打开darknet下的Makefile文件,没有CPU、CUDA的就不需要修改,要进行视频检测的话需要将OPENCV置1,并且安装OPencv的环境
在这里插入图片描述
4、使用make语句编译,编译成功后,使用预训练模型测试一下

wget https://pjreddie.com/media/files/yolov3.weights
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg

三、开始训练自己的数据前的准备

1、使用voc_label.py转换label文件

wget https://pjreddie.com/media/files/voc_label.py

2、将下载好的py文件放在darknet文件夹下面。
3、修改voc_label.py文件中的参数,一个是sets,一个是classes。
在这里插入图片描述
4、运行该文件,darknet文件夹下面会生成2019_train.txt,2019_val.txt,2019_test.txt,将2019_train.txt和2019_val.txt中的内容复制到新建的test.txt文件中。
5、修改cfg文件夹下的voc.data文件路径
在这里插入图片描述
6、修改data文件夹下的voc.names和coco.names,改成自己的标签名称
在这里插入图片描述
7、修改cfg文件夹下的yolov3-voc.cfg,更改filters和classes(所有的)
classes=训练对象个数
filters=3*(5+len(classes))
单个的话就是classes=1,filters = 18
random = 1:多尺度输出,显存小可以改成0
文件的开头是训练和测试的一些参数,可以适当修改。

四、开始训练

1、下载预训练模型,放在darknet文件夹下就可以。

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

2、开始训练

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

3、运行成功后需要训练挺长时间。

五、使用训练出的模型检测

1、训练出来的模型生成在darknet文件夹下自动新建的backup文件夹中
在这里插入图片描述
2、开始测试

cd darknet
./darknet detector demo cfg/voc.data cfg/yolov3.cfg backup/yolov3-voc_600.weights

其他测试语句详见该博客:
https://blog.csdn.net/huoxingrenhdh/article/details/82981276

参考文档:https://blog.csdn.net/qq_21578849/article/details/84980298

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值