每一步超详细!制作自己的voc数据集并通过yolov3训练

1 把自己的数据集打标记

用labelImg生成的是xml格式标记文件

https://blog.csdn.net/qq_34806812/article/details/81670310

https://blog.csdn.net/qq_34806812/article/details/81394646

这里建议大家用VOC和ILSVRC比赛的数据集,因为xml文件都是现成的,省去很多功夫。

或者可以去下载现成的数据集

  ILSVRC2015比赛的地址是: http://image-net.org/challenges/LSVRC/2015/download-images-3j16.php

                    VOC 比赛地址是: http://host.robots.ox.ac.uk/pascal/VOC/index.html

标记文本的解释:https://blog.csdn.net/qq_34806812/article/details/82355614

2 整理数据集路径格式:

2.1 建立文件夹层次为 darknet / VOCdevkit / VOC2018,voc2018下面有三个文件夹:

2.2 JPEGImages放所有的训练图片,annotation放所有的xml标记文件。

2.3 Imagesets包含两个文件夹:

3 生成txt标签和list文件

3.1 Main包下新建3个txt:

里面的txt内容格式为图片名(不带后缀):

(生成train.txt的教程:

把一个文件夹中的所有文件名统计到一个txt中   https://blog.csdn.net/qq_34806812/article/details/81674290)

3.2 修改voc_label.py(根据自己情况修改):

3.3 运行voc_label.py

运行后发现label文件夹下面已经生成了对应的txt标签

同时发现在vocdevkit同目录下也生成了5个list文件

打开发现路径也自动写好了:

4 修改需要的各种配置文件

4.1 新建 cfg/voc_birds.data:(可以复制cfg/voc.data进行根据自己情况的修改)

4.2 新建data / voc_birds.names:(可以复制data/voc.names 进行根据自己情况的修改)

4.3 新建cfg / yolov3-voc-birds.cfg:(可以复制cfg/yolov3-voc.cfg 进行根据自己情况的修改)

修改如下:

4.3.1 注释掉testing,打开train

4.3.2 subdivisions=8

4.3.3 共三个yolo层都要改,yolo层中的class为类别数,每一个yolo层前的conv层中的filters =(类别+5)* 3

5 在darknet目录下载权重文件:

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

6 训练

nohup ./darknet detector train cfg/voc_birds.data cfg/yolov3-voc-birds.cfg darknet53.conv.74 2>1 | tee visualization/train_yolov3_birds.log &

nohup $ 是防止因为ssh断开而中断服务器的进程(如果出现“找不到nohup文件”的错误,去掉命令中的“nohup ... &”)

2>1 | tee visualization/train_yolov3_birds.log 是为了保留训练中的log,为了后续绘制loss曲线。


训练开始:

训练直到loss下降到0.0X之后,不再下降了,就可以停止训练了:

7.测试

训练好后可以在backup看到权重文件,

尝试test前要修改cfg文件,切换到test模式:

开始测试:

./darknet detector test cfg/voc_birds.data cfg/yolov3-voc-birds.cfg backup/birds/yolov3-voc-birds.weights

测试结果:

绘制训练中的loss、IOU等变化曲线的教程:https://blog.csdn.net/qq_34806812/article/details/81459982

8.问题集锦

8.1 问题:CUDA Error: out of memory

解决:增大cfg文件中subdivisions,16、32或者64(最多为batch值)

subdivision:这个参数很有意思的,它会让你的每一个batch不是一下子都丢到网络里。而是分成subdivision对应数字的份数,一份一份的跑完后,在一起打包算作完成一次iteration。这样会降低对显存的占用情况。如果设置这个参数为1的话就是一次性把所有batch的图片都丢到网络里,如果为2的话就是一次丢一半。

YOLOv3是一种目标检测算法,它可以同时实现目标的检测和分类。训练YOLOv3模型需要使用特定的数据集,其中包括了目标物体的图像和相应的标注信息。在这里,我将为您介绍如何训练YOLOv3模型使用VOC数据集。 1. 下载VOC数据集:首先,您需要下载Pascal VOC数据集,它是一个常用的目标检测数据集。您可以从官方网站上下载VOC2007和VOC2012两个版本的数据集。 2. 数据集准备:解压下载的数据集文件,并将图像和标注文件分别放置在不同的文件夹中。确保每个图像文件都有对应的XML格式的标注文件。 3. 数据集标注:使用标注工具(如LabelImg)打开图像,并手动绘制边界框来标注目标物体的位置。保存标注信息为XML格式。 4. 配置YOLOv3模型:下载YOLOv3的源代码,并根据自己的需求进行配置。主要包括修改配置文件中的类别数、训练集和测试集的路径等。 5. 数据集划分:将整个数据集划分为训练集和验证集。通常情况下,80%的数据用于训练,20%用于验证。 6. 数据集转换:将数据集的图像和标注信息转换为YOLOv3所需的格式。可以使用脚本或工具来完成这一步骤。 7. 模型训练:使用转换后的数据集进行模型训练。运行训练脚本,指定配置文件、权重文件和数据集路径等参数。 8. 模型评估:训练完成后,可以使用测试集对模型进行评估,计算模型的精度、召回率等指标。 9. 模型优化:根据评估结果,可以对模型进行优化,如调整参数、增加训练数据等。 10. 模型应用:训练完成的YOLOv3模型可以用于目标检测任务,可以通过调用模型的API或使用预训练权重来进行目标检测。
评论 70
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值