来源博客:
自有数据集上,如何用keras最简单训练YOLOv3目标检测
https://blog.csdn.net/sinat_26917383/article/details/85614247#commentsedit
GitHub地址:https://github.com/as472780551/keras-yolo3-improved
数据要求:
数据准备
最简单是因为把数据整理成以下的样子就可以开始训练:
path/to/img1.jpg 50,100,150,200,0 30,50,200,120,3
path/to/img2.jpg 120,300,250,600,2
也就是:地址,xmin,ymin,xmax,ymax,类别ID然后空格下一个box,每张图一行。
例子:
DBA90206.jpg 311,707,472,842,1 351,631,452,721,1 438,473,519,563,1
常见的数据标注格式:
DBA90206.jpg,311,707,472,842
DBA90206.jpg,351,631,452,721
DBA90206.jpg,438,473,519,563
DBA90206.jpg,420,553,557,688
DBA90206.jpg,501,446,641,607
DBA90206.jpg,602,370,759,548
DBA90206.jpg,809,436,953,603
DBA90206.jpg,709,568,862,721
DBA90206.jpg,560,609,719,781
所以写一个脚本进行上面数据转换:
#coding: utf-8
import csv
c=open("train_labels.csv","r", encoding="utf-8") #以rb的方式打开csv文件
read=csv.reader(c)
image = "DBA90206.jpg"
i = 1
with open('./data.txt', 'a') as f:
for line in read:
#print (line[0],line[1])
if line[0] == image:
if i == 1:
f.write(line[0] + " " + line[1] + "," + line[2] + "," + line[3] + "," + line[4] + "," + '1')
else:
f.write(" " + line[1] + "," + line[2] + "," + line[3] + "," + line[4] + "," + '1')
i = i+1
else:
i = 1
if i == 1:
f.write("\n" + line[0] + " " + line[1] + "," + line[2] + "," + line[3] + "," + line[4] + "," + '1')
image = line[0]
#else:
#f.write(" " + line[1] + "," + line[2] + "," + line[3] + "," + line[4] + "," + '1')
i = i+1
c.close()
最终结果:
DBA90206.jpg 311,707,472,842,1 351,631,452,721,1 438,473,519,563,1