Pascal VOC & COCO數據集介紹
Pascal VOC數據集介紹
- Annotations
- ImageSets
- JPEGImages
- SegmentationClass
- SegmentationObject
1. JPEGImages
主要提供的是PASCAL VOC所提供的所有的圖片信息,包括訓練圖片,測試圖片
這些圖像就是用來進行訓練和測試驗證的圖像數據。
2. Annotations
主要存放xml格式的標簽文件,每個xml對應JPEGImage中的一張圖片
<annotation>
<folder>VOC2012</folder>
<filename>2007_000392.jpg</filename> //文件名
<source> //圖像來源(不重要)
<database>The VOC2007 Database</database>
<annotation>PASCAL VOC2007</annotation>
<image>flickr</image>
</source>
<size> //圖像尺寸(長寬以及通道數)
<width>500</width>
<height>332</height>
<depth>3</depth>
</size>
<segmented>1</segmented> //是否用於分割(在圖像物體識別中01無所謂)
<object> //檢測到的物體
<name>horse</name> //物體類別
<pose>Right</pose> //拍攝角度
<truncated>0</truncated> //是否被截斷(0表示完整)
<difficult>0</difficult> //目標是否難以識別(0表示容易識別)
<bndbox> //bounding-box(包含左下角和右上角xy坐標)
<xmin>100</xmin>
<ymin>96</ymin>
<xmax>355</xmax>
<ymax>324</ymax>
</bndbox>
</object>
<object> //檢測到多個物體
<name>person</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>198</xmin>
<ymin>58</ymin>
<xmax>286</xmax>
<ymax>197</ymax>
</bndbox>
</object>
</annotation>
3. ImageSets
- Action // 人的動作
- Layout // 人體的具體部位
- Main // 圖像物體識別的數據,總共20類, 需要保證train val沒有交集
- train.txt
- val.txt
- trainval.txt
- Segmentation // 用於分割的數據
4. SegmentationObject & SegmentationClass
保存的是物體分割后的數據,在物體識別中沒有用到
COCO數據集介紹
COCO數據集是微軟團隊獲取的一個可以用來圖像recognition+segmentation+captioning 數據集
這個數據集以scene understanding為目標,主要從復雜的日常場景中截取,圖像中的目標通過精確的segmentation進行位置的標定。圖像包括91類目標,328,000影像和2,500,000個label。
該數據集主要解決3個問題:目標檢測,目標之間的上下文關系,目標的2維上的精確定位。數據集的對比示意圖:
數據集分類
-
Image Classification
分類需要二進制的標簽來確定目標是否在圖像中。早期數據集主要是位於空白背景下的單一目標,如MNIST手寫數據庫,COIL household objects。在機器學習領域的著名數據集有CIFAR-10 and CIFAR-100,在32*32影像上分別提供10和100類。最近最著名的分類數據集即ImageNet,22,000類,每類500-1000影像。
-
Object Detection
經典的情況下通過bounding box確定目標位置,期初主要用於人臉檢測與行人檢測,數據集如Caltech Pedestrian Dataset包含350,000個bounding box標簽。PASCAL VOC數據包括20個目標超過11,000圖像,超過27,000目標bounding box。最近還有ImageNet數據下獲取的detection數據集,200類,400,000張圖像,350,000個bounding box。由於一些目標之間有着強烈的關系而非獨立存在,在特定場景下檢測某種目標是是否有意義的,因此精確的位置信息比bounding box更加重要。
-
Semantic scene labeling
這類問題需要pixel級別的標簽,其中個別目標很難定義,如街道和草地。數據集主要包括室內場景和室外場景的,一些數據集包括深度信息。其中,SUN dataset包括908個場景類,3,819個常規目標類(person, chair, car)和語義場景類(wall, sky, floor),每類的數目具有較大的差別(這點COCO數據進行改進,保證每一類數據足夠)。
-
other vision datasets
一些數據集如Middlebury datasets,包含立體相對,多視角立體像對和光流;同時還有Berkeley Segmentation Data Set (BSDS500),可以評價segmentation和edge detection算法。
Coco
COCO數據集有91類,雖然比ImageNet和SUN類別少,但是每一類的圖像多,這有利於獲得更多的每類中位於某種特定場景的能力,對比PASCAL VOC,其有更多類和圖像。
COCO難度更大,因為coco數據集每張圖片中的物體數目很多,所以導致相對別的數據集,該數據集檢測的准確率很低
VOC數據集轉化為COCO數據集格式
Facebook的Detectron平台只支持coco格式的數據集,所以需要將VOC格式的數據集轉化為coco格式的數據集
具體過程參照:https://blog.csdn.net/meccaendless/article/details/79457330
訓練detectron
訓練
python2 tools/train_net.py --cfg experiments/e2e_faster_rcnn_resnet-50-FPN_pascal2007.yaml OUTPUT_DIR experiments/output
測試
python2 tools/infer_simple.py \
--cfg experiments/e2e_faster_rcnn_resnet-50-FPN_pascal2007.yaml \
--output-dir experiments/test_out/ \
--wts ./pretrained_model/model_final.pkl \
test_demo_cow
other:(注意在訓練結束后inferece時,需要將cls_score_voc以及bbox_pred_voc改回。不然會報錯)
python2 tools/infer_simple.py --cfg experiments/e2e_faster_rcnn_resnet-50-FPN_pascal2007.yaml --output-dir experiments/test_out/ --wts ./experiments/output_bak/train/voc_2007_train/generalized_rcnn/model_final.pkl test_demo_cow
評估
python2 tools/test_net.py \
--cfg experiments/e2e_faster_rcnn_resnet-50-FPN_pascal2007.yaml \
TEST.WEIGHTS ./experiments/output_bak/train/voc_2007_train/generalized_rcnn/model_final.pkl \
NUM_GPUS 1
Reference
https://blog.csdn.net/weixin_35653315/article/details/71028523