相信看這篇文章的人都在做深度學習吧,此數據集是爲目標檢測做的數據集,有錯誤處請海涵
代碼見我的github上:https://github.com/EddyGao/make_VOC2007
第一步:首先了解VOC2007數據集的格式
1)JPEGImages文件夾
文件夾裏包含了訓練圖片和測試圖片,混放在一起
2)Annatations文件夾
文件夾存放的是xml格式的標籤文件,每個xml文件都對應於JPEGImages文件夾的一張圖片
3)ImageSets文件夾
Action存放的是人的動作,我們暫時不用
Layout存放的人體部位的數據。我們暫時不用
Main存放的是圖像物體識別的數據,分爲20類,當然我們自己製作就呵呵呵不一定了,如果你有精力,Main裏面有test.txt , train.txt, val.txt ,trainval.txt.這四個文件我們後面會生成
Segmentation存放的是可用於分割的數據
4)其他的文件夾不解釋了,分割XXX等用的
如果你下載了VOC2007數據集,那麼把它解壓,把各個文件夾裏面的東西刪除,保留文件夾名字。如果沒下載,那麼就仿照他的文件夾格式,自己建好空文件夾就行。
第二步:搞定JPEGSImages文件夾
1)把你的圖片放到JPEGSImages裏面,在VOC2007裏面,人家的圖片文件名都是000001.jpg類似這樣的,我們也統一格式,把我們的圖片名字重命名成這樣的,如果你的文件太多怎麼辦,請看我的另一篇文章http://blog.csdn.net/gaohuazhao/article/details/60324715 能批量重命名文件
第三步:搞定Annatations文件夾
網上很多教程,但是我覺得都很麻煩,直到我遇到了一位大神做的軟件,手動標註,會自動生成圖片信息的xml文件
1)在這裏下載:https://github.com/tzutalin/labelImg,至於怎麼用相信你打開就知道了
2)保存的路徑就是我們的Annatations文件夾,別保存別的地方去了,,,
3)一張張的慢慢畫框。。。。。。。。。大約過了幾個小時,好繼續下一步
第四步:搞定ImageSets文件夾中的Main文件夾中的四個文件
直接上一個代碼給你:
import os
import random
trainval_percent = 0.66
train_percent = 0.5
xmlfilepath = 'Annotations'
txtsavepath = 'ImageSets\Main'
total_xml = os.listdir(xmlfilepath)
num=len(total_xml)
list=range(num)
tv=int(num*trainval_percent)
tr=int(tv*train_percent)
trainval= random.sample(list,tv)
train=random.sample(trainval,tr)
ftrainval = open('ImageSets/Main/trainval.txt', 'w')
ftest = open('ImageSets/Main/test.txt', 'w')
ftrain = open('ImageSets/Main/train.txt', 'w')
fval = open('ImageSets/Main/val.txt', 'w')
for i in list:
name=total_xml[i][:-4]+'\n'
if i in trainval:
ftrainval.write(name)
if i in train:
ftrain.write(name)
else:
fval.write(name)
else:
ftest.write(name)
ftrainval.close()
ftrain.close()
fval.close()
ftest .close()