為了在SSD網絡中訓練自己的數據集,我們要將其轉化為VOC數據集的格式
1、在data文件夾下面按照VOC的格式建立文件夾
voc格式如下:
VOCdevkit
VOC2007
Annotations(存放.xml文件)
ImageSets
Layout
Main (里面是目標檢測用到的test.txt, train.txt, val.txt, trainval.txt)
Segmentation
JPEGImages(存放目標檢測用到的圖片)
SegmentationClass
SegmentationObject
我們從中提取出目標檢測用到的文件以及文件夾,並且以visdrone為例,可以建立如下的文件夾:
VOCdevkit
VOC2007(這里沒有改名字是為了運行目標檢測的代碼時不修改代碼中的文件名)
Annotations(存放.xml文件)
train(存放train的.xml文件)
test
trainval
val
JPEGImages(存放目標檢測用到的圖片)
train(存放train的圖片)
test
trainval
val
ImageSets
Main
test.txt
trainval.txt
train.txt
val.txt
2、代碼鏈接如下
鏈接:https://pan.baidu.com/s/1ItGRJrc-VcJpSy9wDlx86A
提取碼:c977
3、具體步驟
- 下載代碼,將數據集中的內容放到相應的文件夾中
- 修改rename.py文件中的路徑,分別對val和train文件執行rename操作
- 執行txt2XML.py文件,分別將val和train中的txt文件轉換成xml文件
- 執行trainnamelist.py,會在Main文件夾下的train.txt文件中生成一些內容,這些是選中的作為train的圖片的編號。同理,修改路徑,再次執行trainnamelist.py,得到val.txt文件
- 下面再重新調整文件夾,將val和train的xml合並到一個文件夾(Annotations)下面,同樣將val和train的txt文件合並到一個文件夾(JPEGImages)下面,將train.txt和val.txt文件放到Main文件夾下面,將Main文件夾放到ImageSets下面。到這里基本上就把需要的東西准備好了
- 但是由於visdrone里面存在這樣兩個類'ignored regions', 'others',可以執行VOC.py將兩個類刪掉,注意改一下路徑。