先从Github上下载YOLOv5,下载好解压配置好就可以使用,地址:
https://github.com/ultralytics/yolov5
1.训练数据集的准备工作
在yolov5 目录的data文件夹下新建四个文件夹,先说明这四个文件夹分别是用来干什么的,后面会往里面一一加入需要添加的内容。
Annotations文件夹:用来存放使用labelimg给每张图片标注后的xml文件,后面会讲解如何使用labelimg进行标注。
Images文件夹:用来存放原始的需要训练的数据集图片,图片格式为jpg格式。
ImageSets文件夹:用来存放将数据集划分后的用于训练、验证、测试的文件。
Labels文件夹:用来存放将xml格式的标注文件转换后的txt格式的标注文件。
2.准备数据集
我做的是关于苹果成熟度的检测,将苹果根据成熟度划分为3类:高成熟度 High_Ripeness,中成熟度 Medium_Ripeness,低成熟度 Low_Ripeness。下图为数据集的一部分,共准备了60张原始图片,高中低成熟度的图片各有20张,图片都是从百度上一一下载的。此处会用到一个非常高效的重命名方式,就不用一张一张图片的进行重命名。批量重命名的代码如下。60张图片准备好后就放在images文件夹中即可。
import os
class BatchRename():
'''
批量重命名文件夹中的图片文件
'''
def __init__(self):
self.path = 'E:GitHubyolov5-masteryolov5-masterdataimages新建文件夹'
self.new_path='E:GitHubyolov5-masteryolov5-masterdataimages新建文件夹'
def rename(self):
filelist = os.listdir(self.path)
total_num = len(filelist)
i = 1
for item in filelist:
if 1:
src = os.path.join(os.path.abspath(self.path), item)
dst = os.path.join(os.path.abspath(self.path), 'Low Ripeness0000' + format(str(i), '0>3s') + '.jpg')
try:
os.rename(src, dst)
print('converting %s to %s ...' % (src, dst))
i = i + 1
except:
continue
print ('total %d to rename & converted %d jpgs' % (total_num, i))
if __name__ == '__main__':
demo = BatchRename()
demo.rename()
3.使用labelimg进行标注
Labelimg是一个图像标注工具,软件使用非常简单,下载解压后在data文件夹下有一个predefined_classes文件,在里面提前写好要训练