YOLO v5学习之数据集的标定及训练

发布时间 2023-08-23 10:59:15作者: xiondun

1、首先下载数据集标定工具labelImg

LabelImg数据集标定工具的下载地址:https://github.com/tzutalin/labelImg

labelImg的安装

首先安装labelImg所需要的依赖。

Ubuntu Linux
Python 3 + Qt5

sudo apt-get install pyqt5-dev-tools
sudo pip3 install -r requirements/requirements-linux-python3.txt
make qt5py3
123

macOS
Python 3 + Qt5

brew install qt  # Install qt-5.x.x by Homebrew
brew install libxml2

or using pip

pip3 install pyqt5 lxml # Install qt and lxml by pip

make qt5py3

123456789

其他系统参考官网:https://github.com/tzutalin/labelImg

2、数据集的标定

首先进入labelImg的文件夹内,然后直接运行labelImg.py文件即可。

cd labelImg
python labelImg.py
12

之后会出现以下这个界面表示工具运行成功。
在这里插入图片描述
对于一个物体来说,数据集越多,最终训练出来的模型效果会更好。

把所有的图片标定完成后,就会得到一个与images图片同名的labels的txt。

如下图所示:
原始的images图片数据集。
在这里插入图片描述
标定完成的labels标签。
在这里插入图片描述

3、建立yolo v5训练的数据集

数据集的文件结构为

boat_data
├── data.yaml
├── train
│   ├── images
│   │   ├── zuo1.png
│   │   ├── zuo10.png
│   │   ├── zuo100.png
│   │   ├── zuo101.png
│   │   ├── zuo102.png
│   │   ├── zuo103.png
│   │   ├── zuo104.png
│   │   ├── zuo105.png
....
....
....
│       ├── zuo94.txt
│       ├── zuo95.txt
│       ├── zuo96.txt
│       ├── zuo97.txt
│       ├── zuo98.txt
│       └── zuo99.txt
└── val
    ├── images
    │   ├── zuo1.png
    │   ├── zuo2.png
    │   ├── zuo3.png
....
....
....
    │   ├── zuo7.png
    │   └── zuo8.png
    └── labels
        ├── zuo1.txt
        ├── zuo2.txt
        ├── zuo3.txt
....
....
....
        ├── zuo7.txt
        └── zuo8.txt

6 directories, 351 files

12345678910111213141516171819202122232425262728293031323334353637383940414243

train文件夹中imageslabels是训练集。
val文件夹中imageslabels是测试集。

data.yaml文件是需要更改的。
内容一般为一下所示(以boat举例):

train: ../boat_data/train/images #训练集的目录
val: ../boat_data/val/images #测试集的目录

nc: 1 #标定的物品的个数
names: ['boat'] #标定物品的名称,如有多个,按标定的顺序依次排序,中间使用“,”隔开。
12345

4、yolo v5数据集的训练

注意,要把数据集放在与yolov5源码文件的相同的目录下!
在YOLO v5的目录下运行一下代码:

python train.py  --img 640 --batch 80 --epochs 3 --data ../boat_data/data.yaml --cfg yolov5s.yaml   --weights yolov5s.pt --nosave --cache
1

注意修改yolov5s.yaml文件中的nc为标定目标的个数。

运行以上代码后,训练完成后,出现以下情况说明模型训练成功,得到数据集last.pt
至此数据集就训练完成了。
在这里插入图片描述