目標檢測標註格式轉換

來源博客:

自有數據集上,如何用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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章