在yolov5的datasets文件夹中,早images/train和images/test中为已经放进去的图片
下面labels中的train和val都是空的
根据两个json文件导入labels
train中数据导入
import os
import cv2
import json
train_json = json.load(open('mchar_train.json'))
for x in train_json:
img=cv2.imread("images/train/"+x)
width=img.shape[1]
height=img.shape[0]
train_label =list(map(int,train_json[x]['label']))
train_height=list(map(int,train_json[x]['height']))
train_left=list(map(int,train_json[x]['left']))
train_width=list(map(int,train_json[x]['width']))
train_top=list(map(int,train_json[x]['top']))
loc_pic="labels/train/"+x.split('.')[0]+'.txt'
pic=open(loc_pic,"w")
for i in range(len(train_label)):
pic_label=train_label[i]
pic_x=(train_left[i]+train_width[i]/2)/width
pic_y=(train_top[i]+train_height[i]/2)/height
pic_width=train_width[i]/width
pic_height=train_height[i]/height
pic.write(str(pic_label)+" "+str(pic_x)+" "+str(pic_y)+" "+str(pic_width)+" "+str(pic_height))
pic.write("\n")
pic.close()
val中数据导入
import os
import cv2
import json
val_json = json.load(open('mchar_val.json'))
for x in val_json:
img=cv2.imread("images/val/"+x)
width=img.shape[1]
height=img.shape[0]
val_label =list(map(int,val_json[x]['label']))
val_height=list(map(int,val_json[x]['height']))
val_left=list(map(int,val_json[x]['left']))
val_width=list(map(int,val_json[x]['width']))
val_top=list(map(int,val_json[x]['top']))
loc_pic="labels/val/"+x.split('.')[0]+'.txt'
pic=open(loc_pic,"w")
for i in range(len(val_label)):
pic_label=val_label[i]
pic_x=(val_left[i]+val_width[i]/2)/width
pic_y=(val_top[i]+val_height[i]/2)/height
pic_width=val_width[i]/width
pic_height=val_height[i]/height
pic.write(str(pic_label)+" "+str(pic_x)+" "+str(pic_y)+" "+str(pic_width)+" "+str(pic_height))
pic.write("\n")
pic.close()
然后数据就导入了labels文件夹,具体如下
进行训练
python train.py --img 320 --batch 64 --epochs 100 --data street_yolo.yaml --weights yolov5s.pt --cache
训练结果回报存在runs/train/exp6中
训练完成