voc2012数据集详解
https://blog.csdn.net/wenxueliu/article/details/80327316
在目標檢測中,如果對數據不了解,在數據集處理這塊有時候會看得云里霧里。比如
本文的目的:
數據集詳解
在目標檢測中,主要用到了 Annotations,ImageSets,JPEGImages
其中 ImageSets/Main/ 保存了具體數據集的索引,Annotations 保存了標簽數據, JPEGImages 保存了圖片內容。
ImageSets
ImageSets/Main/ 文件夾以 , {class}_trainval.txt {class}_val.txt 的格式命名。 train.txt val.txt 例外
包括 Action,Layout,Main,Segmentation 四個文件夾
ImageSets/Main/ 文件夾以 , {class}_trainval.txt {class}_val.txt 的格式命名。 train.txt val.txt 例外
aeroplane_train.txt aeroplane_trainval.txt aeroplane_val.txt bicycle_train.txt bicycle_trainval.txt bicycle_val.txt bird_train.txt bird_trainval.txt bird_val.txt boat_train.txt boat_trainval.txt boat_val.txt bottle_train.txt bottle_trainval.txt bottle_val.txt bus_train.txt bus_trainval.txt bus_val.txt car_train.txt car_trainval.txt car_val.txt cat_train.txt cat_trainval.txt cat_val.txt chair_train.txt chair_trainval.txt chair_val.txt cow_train.txt cow_trainval.txt cow_val.txt diningtable_train.txt diningtable_trainval.txt diningtable_val.txt dog_train.txt dog_trainval.txt dog_val.txt horse_train.txt horse_trainval.txt horse_val.txt motorbike_train.txt motorbike_trainval.txt motorbike_val.txt person_train.txt person_trainval.txt person_val.txt pottedplant_train.txt pottedplant_trainval.txt pottedplant_val.txt sheep_train.txt sheep_trainval.txt sheep_val.txt sofa_train.txt sofa_trainval.txt sofa_val.txt train.txt train_train.txt train_trainval.txt train_val.txt trainval.txt tvmonitor_train.txt tvmonitor_trainval.txt tvmonitor_val.txt val.txt- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
每個文件包含內容為
2011_003194 -1 2011_003216 -1 2011_003223 -1 2011_003230 1 2011_003236 1 2011_003238 1 2011_003246 1 2011_003247 0 2011_003253 -1 2011_003255 1 2011_003259 1 2011_003274 -1 2011_003276 -1注:1代表正樣本,-1代表負樣本。- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
VOC2012/ImageSets/Main/train.txt 保存了所有訓練集的文件名,從 VOC2012/JPEGImages/ 找到文件名對應的圖片文件。VOC2012/Annotations/ 找到文件名對應的標簽文件
VOC2012/ImageSets/Main/val.txt 保存了所有驗證集的文件名,從 VOC2012/JPEGImages/ 找到文件名對應的圖片文件。VOC2012/Annotations/ 找到文件名對應的標簽文件
讀取 JPEGImages 和 Annotation 文件轉換為 tf 的 Example 對象,寫入 {train|test}{index}_of{num_shard} 文件。每個文件寫的 Example 的數量為 total_size/num_shard。(不同數據集可以適當調節 num_shard 來控制每個輸出文件的大小)
Annotations
文件夾中文件以 {id}.xml (id 保存在 VOC2012/ImageSets/Main/文件夾 ) 格式命名的 xml 文件,保存如下關鍵信息
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
JPEGImages
以 2009_001137.jpg 為例,解碼之后獲取 image_data(圖片內容的二進制),height, width
數據集轉換為 TF Record
以上面例子為例,最終的 TFRecord 為
TF Example { 'filename' : 'VOC{year}/JPEGImages/{id}.jpg' 'height' : height 'width' : width 'classes' : [classes.index(person), classes.index(person)] 'y_mins' : [float(121)/334, float(1)/334] # 各個 object 的 ymin 'x_mins' : [float(187)/500, float(376)/500] 'y_maxes' : [float(334)/334, float(261)/334] 'x_maxes' : [ float(355)/500, float(500)/500] 'encoded' : '圖片內容二進制' }其中classes = ["aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat","chair", "cow", "diningtable", "dog", "horse", "motorbike", "person","pottedplant", "sheep", "sofa", "train", "tvmonitor" ]注:difficult = 1 的直接跳過,不進行處理。- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
以上為將一張圖片及標簽轉為 TF Example,對于整個數據集,依次遍歷數據集即可。
總結
以上是生活随笔為你收集整理的voc2012数据集详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 随笔-Python批量转换图片格式
- 下一篇: 项目优化