1. VOC的格式
VOC主要有三個重要的文件夾:Annotations、ImageSets和JPEGImages

JPEGImages 文件夾
該文件夾下存放着所有的訓練集圖片,格式都是.jpg

需要注意的是命名格式,雖然對命名沒有特別要求,但是最好按照官方的命名方法,如000001.jpg,000123.jpg,然后在這個文件夾里就沒有其他東西了。
Annotations 文件夾
該文件夾下存放的是每一個圖片的標注信息,文件都是.xml格式,文件名和圖片名是一致的對於該xml的格式,可以參考一下示例:

以上是使用標注工具標注的人臉,(在下面會提到,自己寫的一個比較簡陋的標注工具 ^^),該圖片的名字是000001.jpg
然后會在Annotations文件夾下面生成一個000001.xml文件與之對應:
<annotation>
<folder>VOCType</folder>
<filename>000001.jpg</filename>
<source>
<database>VOC</database>
</source>
<size>
<width>485</width>
<height>324</height>
<depth>3</depth>
</size>
<segmented>0</segmented>
<object>
<name>face</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>287</xmin>
<ymin>57</ymin>
<xmax>351</xmax>
<ymax>150</ymax>
</bndbox>
</object>
</annotation>
這是一個基本的格式,其中的object標簽保存的就是人臉的位置信息,對於一個圖片里面有多個對象的話,在該xml中就有多個object。然后Annotations文件夾里面就是這樣的一堆xml文件,其他沒什么。
ImageSets 文件夾
在這個文件夾中還有一個Main文件夾,其他的文件夾不太重要(對於我目前的需求來說),這個文件夾中主要有四個.txt文件,分別是train.txt、test.txt、trainval.txt、val.txt

test.txt中保存的是測試所用的所有樣本的名字,不過沒有后綴(下同),一般測試的樣本數量占總數據集的50%
train.txt中保存的是訓練所用的樣本名,樣本數量通常占trainval的50%左右
val.txt中保存的是驗證所用的樣本名,數量占trainval的50%左右
trainval.txt中保存的是訓練驗證樣本,是上面兩個的總和,一般數量占總數據集的50%
2.自動化標注工具

根據VOC的格式可以寫一個標注工具。例如我使用Python和C++制作的一個工具:github
首先是rename.py,該腳本用來生成三個基本文件夾並將圖片重新命名為VOC格式保存在JPEGImages中
然后打開VS2013工程,運行后可以開始進行圖片的標注
標注完成后可以執行txt.py腳本,用來生成test.txt,train.txt,val.txt,trainval.txt四個文件並保存在Main文件夾中。
相關內容請見github。
