日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PASCAL VOC2012 增强数据集

發(fā)布時間:2023/12/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PASCAL VOC2012 增强数据集 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 分割數(shù)據(jù)集
    • Benchmark
    • PASCAL VOC 2012
    • PASCAL VOC 2012 Augmented Dataset
  • 制作 VOC 數(shù)據(jù)集

分割數(shù)據(jù)集

下面三張分別是原圖,實例分割和語義分割的 PNG 圖:

  • 語義分割相當于是類別分割,即為每一個像素分類,得到它所屬的類別即可,但如果有兩個物體都屬于同一類別,語義分割并不區(qū)分這兩個物體,只是單純的將他們都分為同一類,體現(xiàn)為下面最右側圖中花盆全被填充為綠色;
  • 實例分割相當于是物體分割,它是語義分割的子類型,需要在像素級分類的基礎上,進一步對不同的實例進行區(qū)分,體現(xiàn)為中間一幅圖中對每一個花盆都填充了不同的顏色進行區(qū)分。

    在 FCN 這篇論文中,用到了兩個基本的分割數(shù)據(jù)集,分別是 benchmark_RELEASE 和 PASCAL VOC2012
  • Benchmark

    Benchmark 數(shù)據(jù)集:benchmark_RELEASE
    其所有的圖片都可用于分割任務(語義分割與實例分割),共 11355 張,其中官方劃分用于訓練的數(shù)據(jù)包含 8498 張,用于驗證的數(shù)據(jù)包含 2867 張,如下表:

    訓練(train)驗證(val)總計
    8498 張2857 張11355 張

    dataset 文件夾下包含了訓練數(shù)據(jù)的相關內容,其中 cls 為語義分割標簽,inst 為實例分割標簽,img 為原圖,其中兩種標簽都是以 .mat 的格式存儲的。

    (1)img:

    (2)cls 和 inst:

    查看 cls 語義分割 中的一個 .mat 文件:

    CategoriesPresent 為 20,表示該圖片上物體的分類編號為 20
    Segmentation 為 375 x 500 的 unit8 數(shù)據(jù),打開如下:

    這張表形狀為 375 行 500 列,表示了圖像中的每一個像素點,且只有兩個數(shù)值:0 和 20,代表給一個像素點的分類要么是 0(背景),要么是 20(某一類前景)

    查看 inst 實例分割中與上面對應的 .mat 文件:

    可以看到類別標注 Categories 仍是 20,但是打開 Segmentation 發(fā)現(xiàn)在 cls 標注為 0 和 20 的像素點在 inst 中標注為了 0 和 1,這說明在 inst 中的 label 信息只是為了實現(xiàn)目標的分割任務,只要將一幅圖中的分割目標顯示出來即可,而不需要對物體進行類別標記。

    再查看另一個 inst 中的例子:2008_000036.mat

    看到其 Categories 值為 [2;2;4;4;15],說明這幅圖里包括 3 類物體,其中屬于 2 類和 4 類的物體分別有兩個,屬于 15 類的物體有 1 個,打開 Segmentaion 如下:

    發(fā)現(xiàn)像素點范圍是 0 ~ 5,其中 0 代表背景,1 ~ 5 代表圖中的 5 個物體,但是這里僅僅是對不同物體做出了區(qū)分,并未進行分類標記,如果從 cls 中打開對應的 label 信息,那么上面 1 ~ 5 對應的像素應該分別對應 2,2,4,4,15。

    PASCAL VOC 2012

    PASCAL VOC2012 數(shù)據(jù)集官網(wǎng):http://host.robots.ox.ac.uk/pascal/VOC/voc2012/index.html
    不過官網(wǎng)的下載鏈接總是掛掉的狀態(tài),所以下載數(shù)據(jù)集用下面的鏡像地址
    Pascal VOC Dataset Mirror:https://pjreddie.com/projects/pascal-voc-dataset-mirror/

    VOC2012 數(shù)據(jù)集可以做很多任務,包括圖像分類,目標檢測,目標分割等。這里主要介紹用于分割任務的數(shù)據(jù)。官方劃分 VOC2012 為兩個壓縮包,分別用于訓練驗證(trainval)和測試(test),數(shù)據(jù)分布如下:

    訓練+驗證(trainval)測試(test)
    可用于分割任務2913 張1456 張(ground truth未公開)
    總計17125 張16135 張

    VOC2012 數(shù)據(jù)集共有 20 + 1 = 21 個類,其中 1 是背景類,20 個類分別為:

    • Person:person
    • Animal:bird, cat, cow, dog, horse, sheep
    • Vehicle:aeroplane, bicycle, boat, bus, car, motorbike, train
    • Indoor:bottle, chair, dining table, potted plant, sofa, tv/monitor

    1. JPEGImages 中是原始圖像

    2. Annotation 中包含圖像對應的標記信息:存儲為 xml 格式,其中 segmented 為1,意思是這幅圖可以用于分割任務(因為VOC2012 中一共有 10000+ 圖,但并不都用于分割任務,有的用以目標檢測或動作識別等),若這一欄為 0 則說明這幅圖不能用于分割任務。

    3. ImageSets 文件夾下的 Segmentation 保存了三個 txt 文件,用于記錄用于分割任務的圖片名,這樣在跑程序時用 train.txt 就可以直接從 10000+ 圖片中挑出可以用于分割訓練的圖片。

    4. SegmentationClass 中的 PNG 圖片用于語義分割任務,每個類別都有固定的顏色。
    5. SegmentationObject 中的 PNG 圖片用于實例分割任務,對圖中不同的物體進行區(qū)分。

    PASCAL VOC 2012 Augmented Dataset

    PASCAL VOC 2012 增強數(shù)據(jù)集(PASCAL VOC 2012 Augmented Dataset)是目前語義分割和實例分割領域最常用、也是最基礎的 benchmark 數(shù)據(jù)集,它是由兩個數(shù)據(jù)集合二為一制作的,下面只針對分割任務進行說明:

    • PASCAL VOC 2012:用于分割任務中訓練+驗證的圖像有 2913 張,用于測試的圖像有 1456 張
    • Semantic Boundaries Dataset(SBD):用于訓練和驗證分別有 8498 張和 2857 張
    數(shù)據(jù)集訓練+驗證(trainval)測試(test)類別數(shù)
    PASCAL VOC 20122913145621
    SBD11355/21
    PASCAL VOC 2012 Augmented Dataset12031145621

    說明:

    • SDB 數(shù)據(jù)集的 11355 張圖片實際上是包含在原 VOC 2012 數(shù)據(jù)集當中的,區(qū)別在于原 VOC 2012 數(shù)據(jù)集只有 1462 張圖片可以用于做語義分割,而 SBD 數(shù)據(jù)集的 11355 張圖片全是用來做語義分割的
    • 為什么 VOC2012 和 SBD 合起來之后,用于trainval 的數(shù)據(jù)不是 2913+11355,而是 12031,看一下具體數(shù)據(jù)就會發(fā)現(xiàn),SBD 中有一部分數(shù)據(jù)和 VOC2012 的 2913 張是重復的
    • PASCAL VOC 2012 Augmented Dataset 的測試數(shù)據(jù)與原 VOC 2012 數(shù)據(jù)集一致,仍是 1456 張圖像
    • VOC 2012 測試數(shù)據(jù)集的 ground truth 未公開,要測試性能需要向官網(wǎng)提交結果,在線評估模型性能

    因此,如果你要需要使用 PASCAL VOC 2012 Augmented Dataset 進行實驗,其實不用把 benchmark 和 VOC 2012 分別下載下來再手動合并,只需要下載 SegmentationClass & ImageSets 和 VOCtrainval_11-May-2012.tar,然后替換掉 VOC 2012 中的對應文件即可,這樣就是增強數(shù)據(jù)集了。

    數(shù)據(jù)處理腳本下載: tools.zip

    # 腳本包含mat2png.py convert_labels.py utils.py

    PASCAL VOC 2012 數(shù)據(jù)集下載:

    • 訓練+驗證:VOCtrainval_11-May-2012.tar
    • 測試:VOC2012test.tar
    • 鏡像下載地址:pascal-voc-dataset-mirror/

    Pascal voc 數(shù)據(jù)文件組織如下:

    + VOCdevkit+ VOC2012+ Annotations # 數(shù)據(jù)標簽+ ImageSets # 數(shù)據(jù)集索引+ JPEGImages # 17125張圖片+ SegmentationClass # 用于語義分割的mask,2913張+ SegmentationObject # 用于實例分割的mask+ tools # 用于數(shù)據(jù)轉換的腳本+ convert_labels.py+ utils.py

    SBD 數(shù)據(jù)集下載:benchmark.tgz,官網(wǎng):download.html

    SBD 數(shù)據(jù)文件組織如下:

    + benchmark_RELEASE+ cls # 用于語義分割的mask,11355個.mat文件+ img # 11355張圖片+ inst # 用于實例分割的mask,11355個.mat文件+ tools # 用于數(shù)據(jù)轉換的腳本+ mat2png.pytrain.txt # 訓練數(shù)據(jù)索引,8498個圖片索引val.txt # 驗證數(shù)據(jù)索引,2857個圖片索引

    說明:tools 文件夾下放腳本文件

    制作 VOC 數(shù)據(jù)集

    跑代碼大部分用到的數(shù)據(jù)集格式都是 VOC,所以記錄一下整理自己的數(shù)據(jù)集為 VOC 格式的一些代碼~

    # 提取文件名保存在txt文件 import random import globimg_path = glob.glob('/root/data/image/*.jpg') for each in img_path:with open('/root/data/image/all.txt','a')as f:f.write(each[15:-4]+'\n')# 切片換成自己路徑對應的文件名位置# 將上面的txt文件內容隨機劃分為三個txt import randomwith open('/root/data/image/all.txt','r')as f:lines = f.readlines()g = [i for i in range(1, 2172)]# 設置文件總數(shù)random.shuffle(g)# 設置需要的文件數(shù)train = g[:1500]trainval = g[1500:1900]val = g[1900:]for index, line in enumerate(lines,1):if index in train:with open('/root/data/index/train.txt','a')as trainf:trainf.write(line)elif index in trainval:with open('/root/data/index/trainval.txt','a')as trainvalf:trainvalf.write(line)elif index in val:with open('/root/data/index/val.txt','a')as valf:valf.write(line)

    原圖、標簽、XML文件的命名一一對應。xml標注文件的基本格式:

    1)xmin 和 ymin 是目標物體 bounding box 的左上角坐標,xmax 和 ymax 是目標物體 bounding box 的右下角坐標;
    2)這里每張圖片只有一個目標,信息量還是很小的。

    增強數(shù)據(jù)集組織格式:

    pascal_voc_aug ├── pascal # 原voc數(shù)據(jù) │ └── voc2012 └── sbd # 原sbd數(shù)據(jù) │ └── ... └── pascal_aug # 增強voc數(shù)據(jù)└── cls_aug # 17125張└── img_aug # 12031張└── list└── test.txt # 測試數(shù)據(jù)索引└── train.txt└── train_aug.txt # 訓練數(shù)據(jù)索引└── trainval.txt └── trainval_aug.txt└── val.txt # 驗證數(shù)據(jù)索引

    1. 數(shù)據(jù)集格式轉換

    SBD 數(shù)據(jù)的 mask 是 .mat 格式,先將其轉換為 .png 格式。

    在 benchmark_RELEASE 目錄下創(chuàng)建 cls_png 文件夾用于存放轉換后的 sbd png 圖片,然后在該目錄下執(zhí)行腳本 mat2png.py 進行數(shù)據(jù)轉換,轉換后的圖片是 8-bit 的灰度圖。

    python tools/mat2png.py cls cls_png

    Pascal VOC 2012 數(shù)據(jù)的 mask 為 RGB 圖像,將它們也轉換為 8-bit 的灰度圖。

    在 VOCdevkit/VOC2012 目錄下創(chuàng)建 SegmentationClass_1D 文件夾用于存放轉換后的 mask 圖片,

    python tools/convert_labels.py SegmentationClass ImageSets/Segmentation/trainval.txt SegmentationClass_1D

    兩個數(shù)據(jù)集已經(jīng)轉換好的 Label 標注文件,可以直接下載:SegmentationClassAug.zip

    2. 合并數(shù)據(jù)

    創(chuàng)建文件夾 pascal_voc_aug/img_aug 和 pascal_voc_aug/cls_aug,分別存放增強后的圖片數(shù)據(jù)和對應的標簽文件,數(shù)量分別為 17125 張和 12031 張,這里圖片數(shù)據(jù)(img_aug)其實仍然是原 VOC 2012 數(shù)據(jù)集的 JPEGImages,標簽文件(cls_aug)是轉換后的 VOC 和 SBD 灰度圖標注文件。

    這里由于 txt 文件中路徑名的問題,將 img_aug 和 cls_aug 分別改名為 JPEGImages 和 SegmentationClassAug,這樣就不用再改 txt 文件啦。

    VOC 增強數(shù)據(jù)集所使用的驗證數(shù)據(jù)和測試數(shù)據(jù)集與原始 VOC 2012 一致,所以直接將原本的 val.txt 和 test.txt 文件放在增強數(shù)據(jù)集目錄下即可。

    數(shù)據(jù)索引文件下載:VOC增強數(shù)據(jù)集數(shù)據(jù)索引文件

    總結

    以上是生活随笔為你收集整理的PASCAL VOC2012 增强数据集的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。