Open Images V4 下載自己需要的類別


OpenImages V4數據集描述
1)這個v4數據集主要有兩種用途:
對象檢測及分類,意思是說可以用這個數據集訓練出對象檢測模型,用於識別圖像中的對象類別及位置邊框。
視覺關系檢測,比如你用這個v4數據集訓練好一個模型,然后給模型一張圖,模型會告訴你“女人在彈吉它”。

2)根據上面說的兩個用途,google已經貼心的為你把這個數據集分成兩份(共9,011,219張圖,這兩種數據集的圖片不是互斥的,它們有相同的圖片),每份又分成了訓練集,驗證集,測試集。

3)所有作用於對象檢測及分類的圖片主要特性是有邊界框,一張圖中可能有多個邊界框

 

我們試着從官網的Boxes這一行下載一個下來,是個csv文件,我們暫稱它為邊界框表

其中各個字段如下所
ImageID:邊界框id,可以理解成一個外鍵,具體的描述在另一個文件里。
Source:表示邊界框是如何制作的:
freeform並且xclick是手動繪制的邊界框。
activemil是使用該方法的增強版生成的邊界框。在IoU> 0.7時,這些經過人為驗證是准確的。
LabelName:此框屬於的對象類的MID。
Confidence:虛擬值,始終為1。
XMin,XMax,YMin,YMax:框的坐標,在標准化圖像坐標。XMin在[0,1]中,其中0是最左邊的像素,1是圖像中最右邊的像素。Y坐標從頂部像素(0)到底部像素(1)。

這些屬性具有以下定義:
IsOccluded:表示該對象被圖像中的另一個對象遮擋。
IsTruncated:表示對象超出圖像的邊界。
IsGroupOf:表示邊界框跨越一組對象(例如,花壇或一群人)。我們要求注釋者使用這個標簽來處理5個以上的實例,這些實例會嚴重遮擋對方,並且會觸及身體。
IsDepiction:指示對象是描述(例如,對象的卡通或圖畫,而不是真實的物理實例)。
IsInside:表示從對象內部拍攝的照片(例如,汽車內部或建築物內部)

從Image labels行下載一個文件后,可以看到是標簽類別,一幅圖上有幾個對象,就給你打幾個標簽,我們暫稱它為分類標簽表,可做圖像分類用。

Source:表示注釋的創建方式:verification 是由Google內部注釋人員驗證的標簽。crowdsource-verification是由Crowdsource應用程序驗證的標簽。machine是機器生成的標簽。

Confidence:經人工驗證出現在圖像中的標簽的置信度= 1(正標簽)。經過人工驗證的圖像中缺失的標簽的置信度= 0(負標簽)。機器生成的標簽具有部分置信度,通常> = 0.5。信心越高,標簽成為假陽性的機會就越小。

 

從Image IDs行下載文件后,可以看到是圖像的相關信息,它包含圖片網址,OpenImages ID,輪換信息,標題,作者和許可證信息,我們暫稱它為圖片表,可以看得出來,幾乎所有的圖像都來自flickr網站。每個圖像都有一個唯一的64位ID分配。在CSV文件中,它們顯示為零填充的十六進制整數,例如000060e3121c7305

數據與目標網站上顯示的數據相同。OriginalSize 是原始圖像的下載大小。OriginalMD5是base64編碼二進制MD5,如所描述這里。Thumbnail300KURL是約300K像素(〜640x480)的縮略圖的可選網址。它提供了為了方便下載數據而沒有更方便的方式來獲取圖像。如果丟失,OriginalURL必須使用(如果需要,然后調整大小相同的大小)。這些縮略圖會隨時生成,其內容甚至解析度可能每天都會有所不同。Rotation是,圖像應逆時針轉動,以匹配Flickr用戶預期的方向(多少度090180270)。nan意味着這些信不可用。查看此公告以獲取有關此問題的更多信息。我們可以按照這個地址,自已一個一個去下,或者去第一行那邊下完整的包都是可以的。

第五行Metadata是元數據,就是分類實際名稱,我們暫稱它為標簽表。

可以將MID格式的類名轉換為簡短描述,

請注意逗號和引號等字符的存在。該文件遵循標准的CSV轉義規則。

 

 可以分析得出,它們形成了一個數據庫表關系,是簡單的外鍵關系,圖片表描述圖片信息,最重要是下載地址,邊界框表主要描述一張圖有幾個邊框,它與圖片表通過外鍵ImageID關聯,同時每個邊框具體屬於哪個分類,又要通過LabelName外鍵和標簽表關聯。

參考資源:https://blog.csdn.net/wulala789/article/details/80646618

但是到官網下載的時候要一次性下載所有的部分,不僅文件很大,而且下載的也不大快,更重要的是自己訓練要用到的類別並不多。正當我手足無措時,剛好就在github上看到了相關的issues(https://github.com/cvdfoundation/open-images-dataset/issues/8)。

我采用的是里面介紹到的工具箱的方法(https://github.com/EscVM/OIDv4_ToolKit),實際操作起來也挺順利的。

工具箱的介紹:

~OIDv4 ToolKit~
是否想要構建您的個人物體探測器但是您沒有足夠的圖像來訓練您的模型?
想訓練你的個人圖像分類器,但你厭倦了ImageNet的致命緩慢?
您是否已經發現Open Images Dataset v4具有600個類和超過1,700,000個圖像以及可以使用的相關邊界框?
你想為你的項目利用它,但你不想下載千兆字節和千兆字節的數據!?
使用此存儲庫,我們可以幫助您盡可能輕松地充分利用此數據集。
特別是,使用Python3編寫的這個實用的ToolKit,我們為您提供以下選項:對象檢測和圖像分類任務:

(2.0)物體檢測

  • 分別下載600個數據集中的任何一個,負責為每個下載的圖像創建相關的邊界框
  • 同時下載多個類,為每個類創建單獨的文件夾和邊界框
  • 下載多個類並使用每個圖像的唯一注釋文件為所有這些類創建公共文件夾
  • 下載具有所需屬性的單個類或多個類
  • 使用實用的可視化工具來檢查已下載的類

(3.0)圖像分類

  • 在一個共同的標簽文件夾中下載任何19,794個
  • 利用數十種可能的命令來僅選擇所需的圖像(例如僅測試圖像)

 

 

接下來是使用工具箱的一些筆記,在Readme里面我們能通過

python main.py -h

看到工具箱的一些官方幫助介紹(我谷歌翻譯的):

用法:main.py [-h] [--Dataset/path/to/OID/csv/] [-y]
               [ - 類列表[類列表...]]
               [--type_csv'train''validation''test''all']
               [--sub 子人驗證圖像的子集或機器生成的h或m)]
               [--image_IsOccluded 1或0] [ -  image_IsTruncated 1或0]
               [--image_IsGroupOf 1或0] [ -  image_IsDepiction 1或0]
               [--image_IsInside 1或0] [--multiclasses 0(默認值或1)
               [--n_threads [默認20]] [--noLabels]
               [--limit integer number]
               <command>'downloader''visualizer''ill_downloader'。
Open Image Dataset Downloader
打開圖像數據集下載程序 位置參數:   
<command>'downloader''visualizer''ill_downloader'。                         'downloader''visualizer''ill_downloader'。 可選參數:   -h, --help 顯示此幫助消息並退出   --Dataset /path/to/OID/csv/                         OID數據集文件夾的目錄   -y, --yes 是和是可以下載丟失的文件    - 類列表[類列表...]                         所需類的“字符串”序列   --type_csv'train''validation''test''all'                         從什么csv搜索圖像   --sub 人工驗證圖像或機器生成的子集(h或m)                         從人類驗證的數據集或從                         機器生成一個。   --image_IsOccluded 1或0                         圖像的可選特征。表示                         對象被圖像中的另一個對象遮擋。   --image_IsTruncated 1或0                         圖像的可選特征。表示                         對象超出圖像的邊界。   --image_IsGroupOf 1或0                         圖像的可選特征。表示                         盒子跨越一組物體(分鍾5)。   --image_IsDepiction 1或0                         圖像的可選特征。表示                         對象是一個描述。   --image_IsInside 1或0                         圖像的可選特征。表示a                         從對象內部拍攝的照片。   --multiclasses 0(默認值)或1                         分別(0)或一起下載不同的類                         (1)   --n_threads [默認20]                         要使用的線程數   --noLabels 沒有標簽創作   --limit integer number                         要下載的圖像數量的可選限制

 

因為我要下載的類別不止兩位數,所以我修改了classes.txt中的類別,在文本中輸入了自己需要的種類,最后通過指令

python main.py downloader  --classes ./OpenImageV4/OIDv4_ToolKit/classes.txt  --type_csv validation
python main.py downloader  --classes ./OpenImageV4/OIDv4_ToolKit/classes.txt  --type_csv train
python main.py downloader  --classes ./OpenImageV4/OIDv4_ToolKit/classes.txt  --type_csv test

#也可以用--type_csv all 直接下載所有的圖片集合

就可以分別下載物體檢測任務下的驗證集、訓練集和測試集合了。

個人感覺下載的速度也不大快,看了下終端,發現訓練集中有的類別的圖片數目達到了幾萬張,而實際訓練中其實沒必要用到這么多圖片,所以這時候應該在指令中加上--limit 30(30可以換成自己需要的圖片數量)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM