【人工智能】用Yolov5训练数据集


训练自己的数据集,首先需要安装Yolov5及创建数据集,这些部分在之前的文章中已经提到。
Yolov5安装及简单使用: Yolov5安装及简单使用
数据集标注: 数据集标注方法

1.创建数据集文件夹

coco数据集官网地址:https://cocodataset.org/

此处使用的是coco数据集来完成,选择Dataset
在这里插入图片描述
选择Download
在这里插入图片描述

一般情况下,下载2017年的训练、测试、验证集加上2017年Annotations即可
在这里插入图片描述

但由于硬件设备限制,在这里便使用验证集来进行训练
在这里插入图片描述

下载完成后,需要进行一定的处理来使其能够符合yolov5训练要求的格式,在此处使用一种开源工具来完成。
官网地址:https://github.com/ssaru/convert2Yolo
具体操作按官方文档操作即可。
注意: coco.names文件中只填入所需要的类别即可,之后会对对于无意义图片进行过滤删除,使模型更轻量化。

2.过滤

训练模型时,由于coco数据集存在很多实际项目并不需要的类别的数据,所以需要进行过滤。由于在之前数据格式转换时,已经通过coco.names指定了类别,故而生成的labels文档中存在许多无类别的项,此时需要将其这些无意义的内容删除,若图片要素全部无意义,则删除图片。

import os

url = './data/yolo/dataset/labels'
dirs = os.listdir(url)
pic_zero = []
# 删除labels文件中无意义的内容,并记录下内容全部无意义的文件
for file in dirs:
    whole_url = url + '/' + file
    f = open(whole_url, 'r+')
    flag = 0
    contents = []
    while True:
        content = f.readline()
        if content != '':
            if content[:4] != 'None':
                flag += 1
                contents.append(content)
            continue
        break
    name = f.name[-16:-4]
    f.close()
    f1 = open(whole_url, 'w+')
    f1.writelines(contents)
    f1.close()
    if flag == 0:
        pic_zero.append(name)
        os.remove(whole_url)
    flag = 0

# 删除无意义的图片
for pic in pic_zero:
    url_pic = './data/yolo/dataset/images/' + pic + '.jpg'
    os.remove(url_pic)

3.训练前置准备

3.1 创建数据集目录

创建数据集目录,使其符合类似于以下的目录结构:
在这里插入图片描述
train文件夹中就是想要的图片和标签数据了。

3.2 创建并写入配置文件

类似于以下文件内容即可:
在这里插入图片描述

3.3 修改训练参数

找到train.py文件,找到main函数,修改其中参数
在这里插入图片描述

选择预训练模型,在此处选择yolov5s.pt
在这里插入图片描述

选择配置文件,就是之前所创建的配置文件的路径
在这里插入图片描述

选择训练轮数,这个参数设置参考设备情况以及数据集大小情况
在这里插入图片描述

设置device,选择cpu或第几个gpu,此处选择第0gpu
在这里插入图片描述

设置结果保存路径,此处不作改变
在这里插入图片描述

设置结果目录名,此处不作改变
在这里插入图片描述
之后直接运用train.py文件即可

3.4 部分训练结果解释

在这里插入图片描述
weights:训练所得的模型,有best.pt和last.pt,一般选择best.pt
在这里插入图片描述
confusion_matrix.png:混淆矩阵
在这里插入图片描述
以上图为例,计算bus类别精确率与召回率如下所示:
精确率:0.84/(0.84+0.01+0.02+0.02)=0.94
召回率:0.84/(0.84+0.04+0.10+0.01)=0.85

results.png:
在这里插入图片描述
第一个图表示的是训练轮数与损失函数均值之间的关系,box表示GIOU损失函数均值,一般值越小,预测框越准;第二个图则表示目标检测loss均值,越小目标检测越准;第三个图是分类loss均值,越小分类越准;val表示验证集的情况;mAP是用Precision和Recall作为两轴作图后围成的面积,@后面的数表示判定iou为正负样本的阈值,@0.5:0.95表示阈值取0.5:0.05:0.95后取均值。

其余结果大部分较易理解,便不再解释。

由结果可以得出,模型训练效果较为优秀。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Silver Star

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值