用python將MSCOCO和Caltech行人檢測數據集轉化成VOC格式


代碼:轉換用的代碼放在這里

之前用Tensorflow提供的object detection API可以很方便的進行fine-tuning實現所需的特定物體檢測模型(看這里)。那么現在的主要問題就是數據集了,目前公開的數據集已經有很多了,比如綜合的有MSCOCOImageNet人臉的有LFW,CASIA,CelebV等;行人檢測的有Caltech,KITTI等;姿勢檢測的VGG,還有其他等等(具體按分類可以參考下這個)。總之這個數據集資源的總結有很多,在google或者github上搜下有一大堆,這里就不具體介紹了。

1. COCO數據集

這里用到的數據集是object instance/keypoints數據集,用於之后的物體檢測和姿勢檢測,可以在這里進行下載,也可以用git上coco項目提供的api。

一開始的做法是下載train2014和val2014圖片數據集,然后根據instance/keypoints annotation (json)文件根據圖片名從中匹配出所需的圖片。不過后來發現annotation中的鏈接不一定能在下載的數據集里面找到,需要自行下載,所以最后的做法是直接從annotation文件中提取圖片名跟下載鏈接然后下載進行匹配。coco比Imagenet好的一點是除了圖片flickr鏈接之外還提供了coco源的鏈接(比如:http://mscoco.org/images/472),前者在開幾個線程爬取圖片的時候很可能會被封,后者就隨意多了,爬取速度可以很快。

使用:
MSCOCO數據集的注釋說明很清楚,轉換腳本很容易寫。用上面的庫里的anno_json_image_urls.py從annotation文件獲取圖片鏈接,然后用download_coco_images.py下載圖片以及anno_coco2voc.py生產voc格式的xml注釋文件。

2. Caltech pedestrian數據集

這個數據集提供的圖片文件存在seq中,注釋文件是vbb(是這群dalao用matlab寫的),開始還以為需要用matlab進行處理了,不過后來發現用scipy.io.loadmat函數可以讀取vbb文件,用opencv的cv2.VideoCapture()可以讀取seq,那么就可以直接用python來轉換而非matlab。當然如果對matlab很熟的話,可以直接用官方提供的toolbox

不過這個數據集的annotation文件的說明文檔我好像沒有找到,所以vbb文件的數據格式並不是很清楚,通過直接加載以后查看能夠知道里面提供了一大堆字段比如id(類型:person,people, person-far這種),pos(位置,就是我們需要的),occl(是否遮擋,可能有用),lock, posv(這兩個不太清楚是啥也沒怎么查到,有人查到可以留言下哈)。

使用
用上面庫里的vbb2voc腳本可以將下載的seq和vbb文件轉換成jpg和xml文件(不過這個數據集的下載有點麻煩,可能需要翻牆)。

參考

  1. http://www.vision.caltech.edu/Image_Datasets/CaltechPedestrians/
  2. http://mscoco.org
  3. https://github.com/mitmul/caltech-pedestrian-dataset-converter/blob/master/scripts/convert_annotations.py
  4. https://gist.github.com/chicham/6ed3842d0d2014987186


免責聲明!

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



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