记录训练
一定要看数据标签,一定要看数据标签,一定要看数据标签
重要话说三次,因为一个星期都在训练模型,总是效果不好。数据集有1万+图片。开始懒得看标签,(不全部显示,也要差不多吧。。)我就显示了不到10张,以为其他都是正确的,然后这个炸弹把心态搞崩。
就记录下怎么全部显示框框和保存吧!
参考
博主的yolo-v4和tiny版一直在更新,对我帮助极大。
按照博主的程序存数据为train.txt
下面展示一些 画框
。
最后一列(对就是上边那一列4)是类别id
#需要自己输入自己的数据文本路径#
#我是按照上边博主的yolo-v4来编辑的train.txt#
#box[x_min,y_min,x_max,y_max,classes]#
annotation_path = r'.....\train.txt'
f = open(annotation_path)
lines = f.readlines()
for i in range(len(lines)):
annotation_line = lines[i]
line = annotation_line.split()
image = Image.open(line[0])
#把多个框放在boxs中
boxs = np.array([np.array(list(map(int, box.split(',')))) for box in line[1:]])
font = ImageFont.truetype(font='simhei.ttf', size=np.floor(3e-2 * np.shape(image)[1] + 0.5).astype('int32'))#博主github里有simhei.ttf,我就图省事,直接用了
for box in boxs:
left, top, right, bottom = box[0], box[1], box[2], box[3]
classes = box[4]
names = ['类名1','类名2','类名3','类名n']#反正要写在框里,自己有多少写多少咯
draw = ImageDraw.Draw(img_new)
label = '{} '.format(names[classes])
label_size = draw.textsize(label, font)
label = label.encode('utf-8')
if top - label_size[1] >= 0:
text_origin = np.array([left, top - label_size[1]])
else:
text_origin = np.array([left, top + 1])
#框的颜色,大家可以自己挑
draw.rectangle([left , top , right , bottom])
#draw.rectangle([left , top , right , bottom],fill=None,outline='red')
#fill是矩形内部的填充颜色(不想看矩形内部,那你就遮掩吧),outline是矩形的颜色
draw.text(text_origin, str(label, 'UTF-8'), fill=(0, 0, 0), font=font)
del draw
#你嘞画好的图存储地址,自己改咯
pth = r'C:\Users\yhsd\Desktop\data_labels'
#我就怕麻烦,直接取我原来地址的最后9个字符(就是当前图的'名字.png'。eg:00001.png<-就介个样子)
path = os.path.join(pth,line[0][-9:])
img_new.save(path)
```
