提示:以下是本篇文章正文内容,下面案例可供参考
一、参考
博主一:炮哥带你学
目标检测—教你利用yolov5训练自己的目标检测模型
博主二她叫谢雨路:在CPU上跑yolov5(详细步骤+适合入门)
二、数据集
数据集放到自己的当前目录下
这里涉及到数据集划分,原始的数据集是图片和标注混合在一起的,包括jpg格式和csv格式
1.csv划分:yolov5标注的数据是txt格式的
对yolov5进行训练,所以要吧csv格式转换为txt格式
这里参考博主就叫啥也不会吧
将csv文件转成txt方便yolo数据集训练
import pandas as pd
import os
#line={filename,width,height,class,xmin,ymin,xmax,ymax}
Airplane_class = ['E2','B52','Mirage2000','F4','F14','Tornado','J20','JAS39','B2']
def getx_c(width,xmin,xmax):
x_c = (xmin+xmax)/2;
x_c = '%.16f'%(x_c/width)
return x_c
def gety_c(height,ymin,ymax):
y_c = (ymin+ymax)/2
y_c = '%.16f'%(y_c/height)
return y_c
def getbbox_width(width,xmin,xmax):
bbox_width = xmax - xmin
bbox_width = '%.16f'%(bbox_width/width)
return bbox_width
def getbbox_height(height,ymin,ymax):
bbox_height = ymax - ymin
bbox_height = '%.16f'%(bbox_height/height)
return bbox_height
filename = os.listdir(r'F:/dataset/train_csv')
for file in filename:
if file.endswith('.csv'):
file_csv = 'F:/dataset/train_csv/'+file
print(file_csv)
file_txt = file[:file.index('.')]
file_txt = 'F:/dataset/labels/'+file_txt +'.txt'
with open(file_txt,'w') as f:
data = pd.read_csv(file_csv)
for line in data.values:
#print(type(line[1]))
x_c = getx_c(line[1],line[4],line[6])
y_c = getx_c(line[2],line[5],line[7])
bbox_width = getbbox_width(line[1],line[4],line[6])
bbox_height = getbbox_height(line[2],line[5],line[7])
Airplane_index = Airplane_class.index(line[3])
#print(Airplane_class + ' ' + x_c + ' ' + y_c + ' ' + bbox_width + ' ' + bbox_height)
f.write(str(Airplane_index) + ' ' + str(x_c) + ' ' + str(y_c) + ' ' +str(bbox_width) + ' ' + str(bbox_height))
f.write('\n')
2.jpg划分
参考博主Cheng_0829
:cmd复制移动合并文件
就是吧源文件夹的所有文件转移到目标文件夹中
move c:\1\*.jpg c:\2
三、配置
需要修改俩个yaml文件,一个是data里面的VOC.yaml,复制一份,修改为自己的名字,这里我修改为plain.yaml.另一份是model里面的yolo5s.yaml,这里修改为yolo5s_plain.yaml
plain.yaml
修改nc和names:
nc是类别数,names是类别名称
yolov5s_plain.yaml
需要修改的是这一行:
nc: 1 # number of classes
打开train.py
修改:
parser.add_argument('--weights', type=str, default='yolov5s.pt', help='initial weights path')
parser.add_argument('--cfg', type=str, default='own_datas/yolov5s.yaml', help='model.yaml path')
parser.add_argument('--data', type=str, default='own_datas/cat.yaml', help='dataset.yaml path')
最后运行train.py