代碼:轉換用的代碼放在這里
之前用Tensorflow提供的object detection API可以很方便的進行fine-tuning實現所需的特定物體檢測模型(看這里)。那么現在的主要問題就是數據集了,目前公開的數據集已經有很多了,比如綜合的有MSCOCO, ImageNet;人臉的有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文件(不過這個數據集的下載有點麻煩,可能需要翻牆)。