利用yolov5训练自定义数据集

目录

一、前言

二、yolov5训练的大致流程

三、具体步骤

1. 制作YOLOv5格式数据集

A. 准备数据和标签

B. 制作数据配置文件

2. 修改文件

3. 训练

4. 测试 

四、总结


一、前言

        随着基于深度学习算法的不断发展,yolo系列算法得到了广泛的研究。本文介绍了yolov5算法如何训练自己的数据集,并成功应用于自己的项目当中,解决复杂场景中的目标检测问题。

二、yolov5训练的大致流程

1.准备好项目所需的数据和标签(数据和标签一一对应);

2.数据配置文件(data.yaml)需配置好训练集和验证集的路径,修改类别的数量和名称;

3.在yolov5源码中打开,train.py文件进行配置:

代码如下:

--data ../orange_detection1/data.yaml #数据配置文件
--cfg models/yolov5s.yaml #网络模型
--batch-size 16 #批处理数量
--epochs 300 #训练次数

4.进行训练,得到best.pt和last.pt模型权重。

三、具体步骤

1. 制作YOLOv5格式数据集

A. 准备数据和标签

(1)首先需要在自己电脑(linux或win10)安装LabelImg,用于人工标注数据制作数据集。

打标数据并制作数据集可参考我的这篇博客: 

 LabelImg-制作YOLOv5格式的数据集(win10)_现实话费的博客-CSDN博客_labelimg yolov5

(2)建立自定义数据集文件夹,里面分别建立test、train、valid三个文件夹,并在其每个文件夹下建立images和labels文件夹,保存图片和对应的标签文件,本文我建的数据集(orange-detection1)架构如下所示。并把自定义的数据集文件夹放入到yolov5同级目录下。

B. 制作数据配置文件

         制作data.yaml文件(注意训练和验证图片的路径),并放在数据集(orange-detection1)文件夹下。data.yaml内容如下:

train: ../orange-detection1/train/images #训练集路径
val: ../orange-detection1/valid/images  #验证集路径

nc: 1                                    #目标类别
names: ['orange']                        #目标名称

2. 修改文件

(1)修改模型配置文件yolov5s.yaml里的nc(目标的类别数量)

由于我的数据集只有一类目标,所以设置 nc: 1。

(2)修改train.py(可不修改,直接通过命令来更改参数进行训练

在yolov5/train.py里修改如下参数:(batch-size的大小根据自己电脑显卡而定)

--data ../orange_detection1/data.yaml    #数据配置文件
--cfg models/yolov5s.yaml     #网络模型
--batch-size 16               #批处理数量
--epochs 300                  #训练次数

train.py里待修改的部分:

(3)将下载好的预训练权重文件(.pt)放入weights文件夹下。

3. 训练

(1)进入虚拟环境

conda activate yolov5    # yolov5为创建的虚拟环境的名字

(2)进入项目路径

cd work1/yolov5

(3)下载项目所需要的库

首先注释掉 torch、torchvision,因为配置环境时,我们下载好了pytorch GPU环境。

# torch>=1.6.0
# torchvision>=0.7.0

然后运行命令:pip install -U -r requirements.txt    #下载yolov5需要的库(如果执行该命令,下载过程中报错了,那么就请手动安装吧)。

yolov5源码下有requirements.txt文件,在文件夹下查找,并手动安装:pip install xxxxx。

requirements.txt文件如下:

(4)训练模型(以yolov5s为例)

如果没有修改train.py,可以在命令中直接添加参数指令来进行训练;如果修改了train.py,则直接运行python train.py指令来训练模型。

A. 基于训练得到的best.pt模型来训练:

$ python train.py --img 640 --batch 16 --epochs 300 --data ../orange-detection1/data.yaml --cfg models/yolov5s.yaml --weights best.pt

 B. 基于官网的预训练模型来训练:

$ python train.py --img 640 --batch 16 --epochs 300 --data ../orange-detection1/data.yaml --cfg models/yolov5s.yaml --weights yolov5s.pt

 C. 不使用预训练权重,从头开始训练:

$ python train.py --img 640 --batch 16 --epochs 300 --data ../orange-detection1/data.yaml --cfg models/yolov5s.yaml --weights ''

训练过程: 

4. 测试 

        训练结束后,在yolov5s/runs/train/exp/weights文件夹下生成了best.pt和last.pt,利用自定义数据集中的测试集图片(orange-detection1/test/images/图片名)来测试模型的效果。

检测一张图片: 

python detect.py --weight weights/best.pt --source ../orange-detection1/test/images/图片名

批量检测测试集的全部图片:

python detect.py --weight weights/best.pt --source ../orange-detection1/test/images

用训练得到的最好的best.pt模型检测测试集下模型mAP

python test.py --data ../orange_detection1/data.yaml --weight weights/best.pt --augment

        执行成功后,会显示检测结果的保存路径,并在保存路径(yolov5s/runs/detect(或test))下查看检测图片和测试结果。


四、总结

        总的来说,yolov5算法的训练相对简单,希望各位小伙伴成功训练出性能较好的模型,欢迎大家和我交流讨论。

  • 13
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
YOLO系列是基于深度学习的端到端实时目标检测方法。 PyTorch版的YOLOv5轻量而高性能,更加灵活和易用,当前非常流行。 本课程将手把手地教大家使用labelImg标注和使用YOLOv5训练自己的数据集。课程实战分为两个项目:单目标检测(足球目标检测)和多目标检测(足球和梅西同时检测)。  本课程的YOLOv5使用ultralytics/yolov5,在Windows和Ubuntu系统上分别做项目演示。包括:安装YOLOv5、标注自己的数据集、准备自己的数据集(自动划分训练集和验证集)、修改配置文件、使用wandb训练可视化工具、训练自己的数据集、测试训练出的网络模型和性能统计。 除本课程《YOLOv5实战训练自己的数据集(Windows和Ubuntu演示)》外,本人推出了有关YOLOv5目标检测的系列课程。请持续关注该系列的其它视频课程,包括:《YOLOv5(PyTorch)目标检测:原理与源码解析》课程链接:https://edu.csdn.net/course/detail/31428《YOLOv5目标检测实战:Flask Web部署》课程链接:https://edu.csdn.net/course/detail/31087《YOLOv5(PyTorch)目标检测实战:TensorRT加速部署》课程链接:https://edu.csdn.net/course/detail/32303《YOLOv5目标检测实战:Jetson Nano部署》课程链接:https://edu.csdn.net/course/detail/32451《YOLOv5+DeepSORT多目标跟踪与计数精讲》课程链接:https://edu.csdn.net/course/detail/32669《YOLOv5实战口罩佩戴检测》课程链接:https://edu.csdn.net/course/detail/32744《YOLOv5实战中国交通标志识别》课程链接:https://edu.csdn.net/course/detail/35209 《YOLOv5实战垃圾分类目标检测》课程链接:https://edu.csdn.net/course/detail/35284  
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

现实话费

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

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

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

打赏作者

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

抵扣说明:

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

余额充值