首先我們來簡單介紹一下什麼是 Pascal VOC Dataset! 它是由 PASCAL (Pattern Analysis, Statistical Modelling and Computational Learning Visual Object Classes)組織所提供的開源影像資料集,他們是一個由歐盟資助的研究機構,於2003 年成立。他們自2005開始到2012年為止每年都有舉辦一系列跟CV領域(Computer Vision)相關的 Competition,而競賽的內容就是那些CV領域的熱門研究,像是:Classification、Segmentation 以及 Object Detection 等等。 既然是比賽,那自然要有一個公開的標準出來給大家!總不能各自用各自的 dataset,這樣就算A 最後做出來的成果比 B 好,你也很難判斷是因為 A 的演算法開發的比較好,還是其實 B 的演算法比較好,但就輸在 A 的 dataset 更加強大,所以只有在大家用的 dataset 都一樣的時候,我們才能單純的去比教他們各自設計的方法孰優孰劣。 這份資料集從一開始 2005年比賽版本的,到後面2006、2007 以及最終 2012年的其中包含的資料略有差異,基本上就是越近期的裡面包含的物件類別與圖檔都比較多,所以我們直接拿 2012年版本的來用就可以了!這份資料集包含了20個物件類別,然後又可以分成四大類,分別為:
Ok,在基本了解 PASCAL VOC Dataset 是什麼後,那接下來的問題是:為什麼我需要從別人的 Dataset 中擷取特定的物件標記,而不是直接拿這份 Dataset 來用就好了? 當然,直接拿整份 Dataset 來做 Training 也不失為一種辦法,BUT,你真實在應用的項目往往不會對資料集內所有的類別都感興趣,常常有只有一兩類是真的需要的! 雖然說你可以對模型辨識完的結果再寫一個簡單的 filter 來濾掉你不感興趣的類別,但是這樣的做法不僅在一開始訓練的時候,會白白浪費寶貴的運算資源去訓練完全沒有用的類別,還會降低模型對你真正感興趣那個類別的精度,甚至訓練完成的模型也會比較肥大、在應用上推理的速度也會比較慢。所以從資料集中提取真正感興趣的類別出來還是蠻有用的,甚至你還可以從不同的開源資料集中抽取你感興趣的類別,再加上你自己收集的資料,透過這樣來組成你項目專用的資料集。 閒聊夠了,接下來開始實作! Step 1. Download PASCAL VOC Dataset
Step 2. Understand PASCAL VOC Dataset
像如果我們要做 Object Detection 的話,其實只會用到 JPEGImages 與 Annotations 這兩個資料夾裡面的資料,所以其他的資料夾 Jason 就不多做解釋了!這兩個資料夾分別存放我們訓練要用的圖檔與標籤(label),PASCAL的標籤是用 .xml 檔案存放,格式如下所示:
VOC Annotation Example
Step 3. Extract Specific Classes from Pascal VOC Dataset
Extract Specific Classes from Pascal VOC Dataset
最後,要使用這程式的方法也蠻簡單的,只要將上面的代碼複製下來存成 .py檔,然後與你下載好的資料集放在同一個目錄底下,並在該目錄創建一個 classes.txt 檔案,裡面寫你感興趣的類別是哪些就好了,不需要改任何程式,假設我想提取包含貓跟狗的資料,只需要在 calsses.txt 中鍵入對應的類別名稱( cat 跟 dog),一個一行,然後直接執行程式就好!提取出來的檔案會存放在同目錄底下的 extracted_dataset 中,基本上如下面影片所展示的這樣:
0 評論
發表回覆。 |
Jason Chen人不光是生來就擁有一切,而是靠他從學習中得到的一切來造就自己。- 歌德 文章分類
全部
封存檔
九月 2023
|