一、数据集制作:LabelImg制作txt格式
(1)工具:LabelImg
(2)LabelImg的安装和使用:https://blog.csdn.net/qq_45828295/article/details/127227040?spm=1001.2014.3001.5502
(3)格式:标注之前已经修改成yolo模式(标注文件是txt格式)
(4)data文件夹下放img和labels,data里是图片,设置标注路径为该labels文件夹,会自动保存在这里
到此为止数据集就有了~
二、数据集路径及相关参数修改
1、数据集放置路径
我下的是yolov5-master,和yolov5-4.0格式好像不太一样
(1)新建自己的数据集文件夹:我建的是“own_datas”
(2)数据集分类:own_datas文件夹下建images和labels,这两个文件夹下分别存放图片和标签,images和labels下都分别建train、val、test,比例设置为6:2:2(下面附一个文件夹分类代码)
own_datas下的目录:
附:文件夹分类代码(把存放在一个文件夹内发图片分成三个文件夹)
import os
import random
import shutil
from shutil import copy2
trainfiles = os.listdir('E:\\Helmet_Glove\\from_ovid\\train\\Data\\img') # (图片文件夹)
num_train = len(trainfiles)
print( "num_train: " + str(num_train) )
index_list = list(range(num_train))
# print(index_list)
random.shuffle(index_list) # 打乱文件的顺序
num = 0
trainDir = 'D:\\RAS\\TargetDetection\\yolov5-master\\own_datas\\images\\train' # (将图片文件夹中的第一部分放在这个文件夹下)
validDir = 'D:\\RAS\\TargetDetection\\yolov5-master\\own_datas\\images\\val' # (将图片文件夹中的第二部分放在这个文件夹下)
testDir = 'D:\\RAS\\TargetDetection\\yolov5-master\\own_datas\\images\\test' # (将图片文件夹中的第二部分放在这个文件夹下)
for i in index_list:
fileName = os.path.join('E:\\Helmet_Glove\\from_ovid\\train\\Data\\img', trainfiles[i])
if num < num_train*0.6: # 这个数字对应第一部分的数值
# print(str(fileName))
copy2(fileName, trainDir)
elif num < num_train*0.8:
copy2(fileName, validDir)
else :
copy2(fileName, testDir)
num += 1
这一段代码我参考了其他的博客,当时忘了保存链接,如有侵犯,麻烦作者联系我删除!谢谢大佬!!
2、修改路径
一共需要修改三个地方:
(1)coco128.yaml
如果是直接从GitHub下载的yolov5包,那应该是在data文件下,因为我用的不是coco128数据集,因此我把这个文件名修改成了data.yaml
修改上图的两处:
一个是:训练集和验证集路径
另一个是:类别nc修改成自己需要训练的数据集类型,names是自己类别的名称
然后把data.yaml移动到own_datas文件下
(2)权重文件的yaml
我用的yolov5s,因此修改yolov5s.yaml
该文件在models文件下,移动到own_datas
修改类别数,也就是这里的nc
(3)train.py文件的参数
cfg是权重文件的yaml,修改成自己的路径
data是刚才自己的data.yaml路径
三、训练
1、训练
之后就可以训练了,运行train.py
2、保存路径
runs文件下会生成train\exp
四、测试
1、修改权重文件
(1)训练出的权重文件:
weights里会生成两个权重文件:
best.py:是训练结果最好的权重文件
last.py:是最后一轮的权重文件
(2)修改路径
把权重文件移动到和detect.py平行,也就是直接放在yolov5-master文件下
2、修改detect.py权重参数
我没有用test里的图片,用了几张图浅测试了一下
(1)目录:
放在data文件下的images下
(2)参数修改
detect.py需要修改的参数:
修改一下路径就好了,另外这边我还修改了一下置信度阈值conf-thres,原来是0.25,我改成了0.5,就是可能性大于0.5才会判定为是该类别
3、查看训练结果
测试结果保存在runs\detect\exp