失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > poly-yolo训练自己的数据

poly-yolo训练自己的数据

时间:2020-05-16 16:45:38

相关推荐

poly-yolo训练自己的数据

项目地址:poly-yolo

论文地址:poly-yolo论文

1、 Format of data for training

Generally, YOLO uses notation of one image per line. One line includes all the boxes inside an image.

path_to\image1.jpg x1,y1,x2,y2,class,p1x,p1y,pnx,pny x1,y1,x2,y2,class,p1x,p1y,pnx,pnypath_to\image2.jpg x1,y1,x2,y2,class,p1x,p1y,pnx,pny

Where x1,y1 denote top-left of a bounding box and x2,y2 denote bottom-right. p1x,p1y … pnx,pny are coordinates of bounding box vertices.

Script labels_to_yolo_format.py converts IDD and Cityscapes dataset annotations to yolo format. The generated annotation file is put to the provided image folder. Use ‘–help’ for script parameters description.

2、 训练网络结构

2.1 首先需要准备数据集。

我们将coco的 val数据集转成poly-yolo需要的数据集,脚本如下。将val的coco数据集通过下面数据集转换之后就可以得到一个train.txt存储这我们需要的训练标签。标签格式(path_to\image1.jpg x1,y1,x2,y2,class,p1x,p1y,pnx,pny x1,y1,x2,y2,class,p1x,p1y,pnx,pny)

import jsonfrom collections import defaultdictname_box_id = defaultdict(list)name_segmentation_id = defaultdict(list)id_name = dict()f = open("instances_val.json",encoding='utf-8')data = json.load(f)annotations = data['annotations']for ant in annotations:id = ant['image_id']name = 'coco/train/COCO_val_%012d.jpg' % idcat = ant['category_id']if cat >= 1 and cat <= 11:cat = cat - 1elif cat >= 13 and cat <= 25:cat = cat - 2elif cat >= 27 and cat <= 28:cat = cat - 3elif cat >= 31 and cat <= 44:cat = cat - 5elif cat >= 46 and cat <= 65:cat = cat - 6elif cat == 67:cat = cat - 7elif cat == 70:cat = cat - 9elif cat >= 72 and cat <= 82:cat = cat - 10elif cat >= 84 and cat <= 90:cat = cat - 11name_box_id[name].append([ant['bbox'], cat,ant['segmentation']])f = open('train.txt', 'w')for key in name_box_id.keys():f.write(key)box_infos = name_box_id[key]for info in box_infos:x_min = int(info[0][0])y_min = int(info[0][1])x_max = x_min + int(info[0][2])y_max = y_min + int(info[0][3])box_info = " %d,%d,%d,%d,%d," % (x_min, y_min, x_max, y_max, int(info[1]))#print(info[2])#print('*********************************')if isinstance(info[2],list):if len(info[2])==1:f.write(box_info)lista = []for i in info[2][0]:i = int(i)lista.append(i)f.write(str(lista))f.write('\n')f.close()

2.2将calss类别修改成coco的80类别,运行训练模型。

python poly-yolo.py

网络就开始训练了。

参考:将POLY-YOLO代码跑起来的环境配置,poly-yolo训练自己的数据集

如果觉得《poly-yolo训练自己的数据》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。