文章目录
使用yolov5训练自己的数据集
一、下载并配置yolov5所需要的环境
1.首先下载yolov5官方代码(我是下载zip版本):
yolov5的Github官方下载链接:https://github.com/ultralytics/yolov5
2.将下载的zip文件进行解压到英文目录下,然后使用pycharm进行打开,打开之后如下所示:
3.进入到pycharm左下方的Terminal终端使用命令进行下载yolov5所需要的库包
二、测试detect.py
运行yolov5-master\detect.py文件
在yolov5-master\runs\detect文件夹下出现下方结果,即证明环境配置完好
三、放置自己的数据集到对应的文件夹下方并创建两个文件
1.如果自己的数据集是voc格式不是yolo格式,请参考我的上一篇文章:voc格式转换成为yolo格式
2.在yolov5-master\ddjc文件夹下面创建ddic_model.yaml和ddjc_parameter.yaml文件
ddjc_parameter.yaml文件代码如下所示。
ddic_model.yaml文件代码如下所示,其中修改参数nc: 6,将6替换成为自己数据集索要识别的类别个数。
下面代码添加到创建的ddic_model.yaml文件当中
# Ultralytics YOLOv5 🚀, AGPL-3.0 license
# Parameters
nc: 6 # number of classes
depth_multiple: 0.33 # model depth multiple
width_multiple: 0.50 # layer channel multiple
anchors:
- [10, 13, 16, 30, 33, 23] # P3/8
- [30, 61, 62, 45, 59, 119] # P4/16
- [116, 90, 156, 198, 373, 326] # P5/32
# YOLOv5 v6.0 backbone
backbone:
# [from, number, module, args]
[
[-1, 1, Conv, [64, 6, 2, 2]], # 0-P1/2
[-1, 1, Conv, [128, 3, 2]], # 1-P2/4
[-1, 3, C3, [128]],
[-1, 1, Conv, [256, 3, 2]], # 3-P3/8
[-1, 6, C3, [256]],
[-1, 1, Conv, [512, 3, 2]], # 5-P4/16
[-1, 9, C3, [512]],
[-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
[-1, 3, C3, [1024]],
[-1, 1, SPPF, [1024, 5]], # 9
]
# YOLOv5 v6.0 head
head: [
[-1, 1, Conv, [512, 1, 1]],
[-1, 1, nn.Upsample, [None, 2, "nearest"]],
[[-1, 6], 1, Concat, [1]], # cat backbone P4
[-1, 3, C3, [512, False]], # 13
[-1, 1, Conv, [256, 1, 1]],
[-1, 1, nn.Upsample, [None, 2, "nearest"]],
[[-1, 4], 1, Concat, [1]], # cat backbone P3
[-1, 3, C3, [256, False]], # 17 (P3/8-small)
[-1, 1, Conv, [256, 3, 2]],
[[-1, 14], 1, Concat, [1]], # cat head P4
[-1, 3, C3, [512, False]], # 20 (P4/16-medium)
[-1, 1, Conv, [512, 3, 2]],
[[-1, 10], 1, Concat, [1]], # cat head P5
[-1, 3, C3, [1024, False]], # 23 (P5/32-large)
[[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
]
四、修改yolov5-master文件夹下面的train.py文件,并运行
1.在train.py文件夹中找到下面代码并修改为自己的文件路径
2.我是用的是大将3050RTX显卡,由于显存是8G的,使用源代码运行一段时间之后会报显存不够的错误,因此我修改了batch-size参数。(如果显存足够则不需要进行修改batch-size参数)
3.最后运行train.py文件,在yolov5-master\runs\train文件夹下面会出现对应的训练结果(下方是我的)
五、yolov5测试结果
1.yoloiv5评价指标运行结果:
2.yolov10训练同一个数据集的运行结果如下所示:
3.自己数据集当中只有六个标签类,下面是两个yolov5测试例子图片:
总结
在训练之前数据集划分的时候有点毛病,导致yolov5和yolov10的对比结果不行,不适用。
原因:数据集当中有些图片是经过平移进行得到的。划分数据集的时候没有将一张图片经过平移之后得到的所有图片划分到训练集或验证机当中。例如: