YOLOv5训练自己的数据集(labelImg制作标签)

时间:2022-12-03 01:24:49

YOLOv5官方讲解: Train Custom Data - YOLOv8 Docs (ultralytics.com)

labelImg(制作标签用) :GitHub - liyunfei0411/labelimg-master

目录

1、Create dataset.yaml

 2、Create Labels

1、下载labelimg仓库并安装labelimg

 2、开始标注

①创建文件夹

②设置路径

③打标

 3、xml文件

 4、txt文件(YOLO v5)

3、Organize Directories

 4、运行命令行


1、Create dataset.yaml

YOLOv5训练自己的数据集(labelImg制作标签)

将yaml文件放入yolov5/datasets文件夹中,此处命名为lego.yaml文件,接下来需要对yaml文件 进行修改。yaml文件主要进行2个设置:①dataset的路径设置;②classes的设置

YOLOv5训练自己的数据集(labelImg制作标签)

①路径设置

(1)path:训练集和测试集所在的上一级文件夹

(2)train:训练集所在文件夹,路径为path/train

(3)val:验证集所在文件夹,路径为path/val

(4)test:测试集所在文件夹,路径为path/test,可不设置,为空

举例:

YOLOv5训练自己的数据集(labelImg制作标签)YOLOv5训练自己的数据集(labelImg制作标签)

 ②classes设置

nc -- 类别数

类名字典 -- 编号: 类别名

例:0对应lego

YOLOv5训练自己的数据集(labelImg制作标签)

YOLOv5训练自己的数据集(labelImg制作标签)

 2、Create Labels

1、下载labelimg仓库并安装labelimg

https://github.com/liyunfei0411/labelimg-master.git

YOLOv5训练自己的数据集(labelImg制作标签)

win+anaconda环境下根据提示进行安装  

打开Anaconda Prompt 后切换到labelimg文件夹输入以下命令

conda install pyqt=5
pyrcc5 -o libs/resources.py resources.qrc
python labelImg.py
python labelImg.py [IMAGE_PATH] [PRE-DEFINED CLASS FILE]

运行labelImg.py后顺利弹出以下界面即为成功

YOLOv5训练自己的数据集(labelImg制作标签)

若运行labelImg.py时遇到报错

(py38) F:\labelimg-master>python labelImg.py
Traceback (most recent call last):
  File "labelImg.py", line 39, in <module>
    from libs.labelFile import LabelFile, LabelFileError
  File "F:\labelimg-master\libs\labelFile.py", line 10, in <module>
    from libs.pascal_voc_io import PascalVocWriter
  File "F:\labelimg-master\libs\pascal_voc_io.py", line 6, in <module>
    from lxml import etree
ModuleNotFoundError: No module named 'lxml'

安装这个包后就能顺利运行labelImg.py

pip install lxml

 2、开始标注

①创建文件夹

我在labelimg文件夹中创建了两个文件夹:images、labels。其中,images用来保存图片,labels用来保存标签的xml文件

YOLOv5训练自己的数据集(labelImg制作标签)     YOLOv5训练自己的数据集(labelImg制作标签)

②设置路径

放大后界面:

 YOLOv5训练自己的数据集(labelImg制作标签)

 open dir -- 图片所在文件夹,此处为C:\Users\r***\Pictures\labelimg\images

change save dir -- 用来保存标签的文件夹,此处为C:\Users\r***\Pictures\labelimg\labels

save下面是change save format,点击后即可切换为YOLO(如下图所示)。PascalVOC的保存格式为xml,yolo的格式为txt

YOLOv5训练自己的数据集(labelImg制作标签)  YOLOv5训练自己的数据集(labelImg制作标签)

③打标

设置号open dir后,中间会自动加载出images文件夹中的图片,就可以开始标注了。

按w -- 开始标注

按a -- 上一张

按d -- 下一张

按w进行标注,移动鼠标画框

YOLOv5训练自己的数据集(labelImg制作标签)

 下面会弹出小框 

YOLOv5训练自己的数据集(labelImg制作标签)

 填入所属的class(此处为person)后ok,再ctrl+s保存

YOLOv5训练自己的数据集(labelImg制作标签)

完成一张的标注后,按d进行下一张,如果设置了auto save mode,labelimg会在加载上一张前自动替你保存(意思就是不需要再手动ctrl+s来保存了)

YOLOv5训练自己的数据集(labelImg制作标签)

每完成一张图片,anaconda prompt会显示,labels文件夹中会多出一个xml文件。若images中的图片名为1.jpg,那么labels中对应的文件名为1.xml

YOLOv5训练自己的数据集(labelImg制作标签)

 3、xml文件

记录一下xml中保存了什么信息

YOLOv5训练自己的数据集(labelImg制作标签)

若有多个物体

YOLOv5训练自己的数据集(labelImg制作标签)

 4、txt文件(YOLO v5)

当保存为txt文件时,labels文件夹内部如下所示,主要是包括①所设置的类别及对应编号的说明(classes.txt)②每张图片对应的bounding box信息(如67.jpg对应信息保存在67.txt中)

 YOLOv5训练自己的数据集(labelImg制作标签)

①classes.txt当中内容如下,classes由0开始编号

YOLOv5训练自己的数据集(labelImg制作标签)

②73.txt当中内容:

YOLOv5训练自己的数据集(labelImg制作标签)

其中第一列(15和16)代表对应class的编号,如15表示lego,16表示water;后四列是bounding box的边框信息。yolov5要求将坐标归一化到0-1,这里与xml当中的坐标不同

YOLOv5训练自己的数据集(labelImg制作标签)

3、Organize Directories

YOLOv5训练自己的数据集(labelImg制作标签)

因为YOLOv5会将路径中最后一个 /images/ 替换为 /labels/,所以labels文件夹放置位置如下

YOLOv5训练自己的数据集(labelImg制作标签)

YOLOv5训练自己的数据集(labelImg制作标签)

YOLOv5训练自己的数据集(labelImg制作标签)

 4、运行命令行

(以下两种都可以)

F:\PycharmProjects\yolov5-master>python train.py --img 640 --epochs 3 --data datasets/lego.yaml --weights yolov5s.pt

F:\PycharmProjects\yolov5-master>python train.py --img 640 --epochs 3 --data datasets/lego1.yaml --weights yolov5s.pt

参考:(2条消息) YOLOV5-打标签建立自己的数据集_yolov5打标签_卿云阁的博客-CSDN博客