详细可参考官方文档:
培训自定义数据 -Ultralytics YOLOv8 文档
0.使用Make Sense标注数据集
我们在网页上随机下载五张图片用以演示如何使用Make Sense工具进行标注。下载图片存放在指定文件夹中,如下图所示。
Make Sense网页链接:
Make Sense
进入上述网址,打开Make Sense网页,并点击 Get Started ,如下图所示。
得到如下图,在下图中,我们点击该区域用以选择需要标注的图片。
选择我们在网页上下载的五张图片,如下图所示。
选择Object Detection(目标检测),如下图所示。 进入如下图所示界面,此时选择Load labels from file(左,表示先加载预先准备好的标签类别)或者Start Project(右,表示直接进入项目中)均可,我们来介绍这两个按钮的区别。
若选择 Load labels from file,你需要在你的电脑中提前创建一个 Labels.txt (命名任意)文件,这个文件中包含你所下载图片的所有类别。比如说,我们刚刚下载的五张图片有人、狗、汽车这三个类别,那么你需要在这个Labels.txt文件中以如下的格式写入(注意:每个标签占一行)。
创建好后,点击该按钮,选中这个标签文件Labels.txt,然后进入项目即可。
若选择Start project这个按钮 ,则表示直接进入项目,如下图所示。左边栏展示了我们下载的五张图片,中间栏展示了对于指定图片进行标注操作,右边栏展示了以什么样的方式进行标注,这其中有Rect(矩形框)、Point(点)、Line(线)、Polygon(不规则图形)。
我们以 Rect 选中图片中的小女孩,如上图白色区域所示,随后我们点击下图红色箭头所指进行标签类别划分。
随后我们选择下图中的➕。
开始设置类别。
每设置一个,按下回车(Enter)进行第二个的设置,一共三个类别,如下图所示,设置完之后按下Accept。
然后选择相应的标签即可。
当然,这种方式是该工具内部编写标签类别,我们还可在如下图界面的时候直接点击➕进行标签类别的编写。
标注完成之后,我们需要导出我们标注好的数据集,如下图所示。
我们选择相应的格式。
点击Export,将会直接下载,下载的是一个zip文件,我们对其解压缩,得到标签。
我们任意打开一个.txt 文件,如下所示。
有两行代表有两个类别,0表示第一个类别,1表示第二个类别 ,我们刚刚设置第一个类别是狗,第二个类别是人,第三个类别是汽车。我们观察该标签对应的图片,如下图所示,有一个人和一只狗,两个类别。
0、1两行后面所对应的四个数据可按如下两图(官方文档的解释)理解。
1. 创建dataset.yaml
我们按照上图所示来设置我们自己的yaml文件,如下图所示。
文件中的内容如下。
# train and val data as 1) directory: path/images/, 2) file: path/images.txt, or 3) list: [path1/images/, path2/images/]
train: mydata/images/train # 5 images
val: mydata/images/train # 5 images 由于我们没有设置验证集,在这里出于演示作用,我们使用训练集当作验证集
# number of classes
nc: 3
# class names
names: [ 'dog', 'person', 'car' ]
注意:
train后面是训练集的路径,val后面是验证集的路径 ,mydata/images/train中的train文件夹存放的是我们刚刚下载好的五张图片。
nc表示类别数,赋值为3(因为五张图片中只出现了汽车、人、狗这三个类别),names表示类别名称。
2. 创建标签Labels
我们在第0步已经详细地解释了如何使用 make sense 创建标签。
3. 整理目录
我们在项目文件夹中创建一个存放我们自定义数据的文件夹mydata,然后在该文件夹下创建images文件夹和labels文件夹,在这两个文件夹下分别创建train文件夹和test文件夹。
将我们在网页上下载的五张图片放在images文件夹下的train文件夹中用于训练, 将make sense导出来的标注文件放在labels中的train文件中。有如下图所示。
经过以上步骤后,我们在官方下载的 yolov5-5.0 代码中的 train.py 文件中指定代码处进行修改,如下所示,将data/coco128.yaml修改成mydata.yaml(我们在第1步创建的文件)即可。
随后,即可训练。