模型須要好的數據才能訓練出結果,本文總結了機器學習圖像方面經常使用數據集。css
Linkhtml
機器學習入門的標準數據集(Hello World!),10個類別,0-9 手寫數字。包含了60,000 張 28x28 的二值訓練圖像,10,000 張 28x28 的二值測試圖像。算法
最先的深度卷積網絡 LeNet 即是針對 MNIST 數據集的,MNIST 數據集之因此是機器學習的 「Hello World」,是由於當前主流深度學習框架幾乎無一例外將 MNIST 數據集的處理做爲介紹及入門第一教程,其中 Tensorflow 關於 MNIST 的教程很是詳細。apache
Linkjson
COCO 是一個大規模的對象識別、分割以及 Captioning 數據集。具備如下特色:網絡
以 2014 年的數據爲例,其包含兩種文件類型(訓練、驗證文件均有),Annotations(圖片信息) 和 Images(圖片文件自己)。app
圖片名即 Annotations 中的 file_name
字段。框架
Annotations 文件爲一些超級大的 json 文件,分爲三種類型:object instances, object keypoints, 和 image captions。三種類型均以如下 json 格式存儲:dom
Copy{
"info" : info,
"images" : [image],
"annotations" : [annotation],
"licenses" : [license],
}
info{
"year" : int,
"version" : str,
"description" : str,
"contributor" : str,
"url" : str,
"date_created" : datetime,
}
image{
"id" : int,
"width" : int,
"height" : int,
"file_name" : str,
"license" : int,
"flickr_url" : str,
"coco_url" : str,
"date_captured" : datetime,
}
license{
"id" : int,
"name" : str,
"url" : str,
}
只有每種類型的 annotation
格式不一樣,如 Object Instance Annotations 格式爲:機器學習
Copyannotation{
"id" : int,
"image_id" : int,
"category_id" : int,
"segmentation" : RLE or [polygon],
"area" : float,
"bbox" : [x,y,width,height],
"iscrowd" : 0 or 1,
}
categories[{
"id" : int,
"name" : str,
"supercategory" : str,
}]
具體的格式信息能夠在這裏看到。
MNIST 將初學者領進了深度學習領域,而 ImageNet 數據集對深度學習的浪潮起了巨大的推進做用。深度學習領域大牛 Hinton 在2012年發表的論文《ImageNet Classification with Deep Convolutional Neural Networks》在計算機視覺領域帶來了一場「革命」,此論文的工做正是基於 ImageNet 數據集。
ImageNet 數據集有1400多萬幅圖片,涵蓋2萬多個類別;其中有超過百萬的圖片有明確的類別標註和圖像中物體位置的標註,具體信息以下:
你能夠下載圖片 urls 文件或者圖片文件(須要註冊,用於非商業用途)。圖片 urls 文件內容爲圖片 ID 和 url:
Copyn00015388_12 http://farm4.static.flickr.com/3040/2946102733_9b9c9cf24e.jpg
n00015388_24 http://farm3.static.flickr.com/2093/2288303747_c62c007531.jpg
n00015388_81 http://www.theresevangelder.nl/images/dierenportretten/dier4.jpg
n00015388_155 http://www.zuidafrikaonline.nl/images/zuid-afrika-reis-giraffe.jpg
n00015388_157 http://farm1.static.flickr.com/145/430300483_21e993670c.jpg
...
_
前面部分爲 WordNet ID(wnid),一個 wnid 表明一個 synset(同義詞集),如 n02084071
表明 "dog, domestic dog, Canis familiaris" 。具體信息能夠看官方文檔。
ImageNet 的 Object Bounding Boxes 文件採用了和 PASCAL VOC 數據集相同的格式,所以可使用 PASCAL Development Toolkit 解析。另外,ImageNet 的 Object Bounding Boxes 文件是按照 synset(同義詞集)劃分子文件夾的,每一個壓縮包下面是同語義的圖片文件 Annotation:
PASCAL VOC挑戰賽是視覺對象的分類識別和檢測的一個基準測試,提供了檢測算法和學習性能的標準圖像註釋數據集和標準的評估系統。PASCAL VOC2007以後的數據集包括20個類別:人類;動物(鳥、貓、牛、狗、馬、羊);交通工具(飛機、自行車、船、公共汽車、小轎車、摩托車、火車);室內(瓶子、椅子、餐桌、盆栽植物、沙發、電視)。PASCAL VOC挑戰賽在2012年後便再也不舉辦,但其數據集圖像質量好,標註完備,很是適合用來測試算法性能。
數據集包括圖片的三種信息:原始圖片(JPEGImages
文件夾),對象像素(SegmentationClass
文件夾)和分類像素(SegmentationObject
文件夾):
解壓以後這些圖片分別放在以下文件夾:
其中 Annotations
文件夾是圖片描述的 xml 文件,例如 JPEGImages
文件夾中的 000007.jpg
圖片,就會有相應的 000007.xml
文件描述該圖片,包括圖片的寬高、包含的 Object(能夠有多個) 的類別、座標等信息:
Copy<annotation>
<folder>VOC2007</folder>
<filename>000007.jpg</filename>
<source>
<database>The VOC2007 Database</database>
<annotation>PASCAL VOC2007</annotation>
<image>flickr</image>
<flickrid>194179466</flickrid>
</source>
<owner>
<flickrid>monsieurrompu</flickrid>
<name>Thom Zemanek</name>
</owner>
<size> //圖像尺寸(長寬以及通道數)
<width>500</width>
<height>333</height>
<depth>3</depth>
</size>
<segmented>0</segmented>
<object>
<name>car</name> //物體類別
<pose>Unspecified</pose> //拍攝角度
<truncated>1</truncated> //是否被截斷(0表示完整)
<difficult>0</difficult> //目標是否難以識別(0表示容易識別)
<bndbox> //bounding-box(包含左下角和右上角座標)
<xmin>141</xmin>
<ymin>50</ymin>
<xmax>500</xmax>
<ymax>330</ymax>
</bndbox>
</object>
</annotation>
ImageSets 存放的是每年的 Challenge 對應的圖像數據,不一樣年份數據可能不一樣。
Action
下存放的是人的動做(例如running、jumping等等,這也是VOC challenge的一部分)Layout
下存放的是具備人體部位的數據(人的head、hand、feet等等,這也是VOC challenge的一部分)Main
文件夾下包含了各個分類的 ***_train.txt
、***_val.txt
和 ***_trainval.txt
,如 aeroplane_train.txt
。文件每行是一個圖片ID以及是否爲正樣本(1表明正樣本,-1表明負樣本)。Segmentation
下存放的是驗證集圖片ID(val.txt
文件)、訓練集圖片ID(train.txt
文件)以及二者的合集(trainval.txt
文件)。CIFAR-10 和 CIFAR-100 數據集是 80 million tiny images 的子集。以 CIFAR-10 Python 版本爲例,包含 10 個分類,60000 張 32x32 彩色圖片,每一個分類 6000 張圖片。其中 50000 張是訓練圖片,另外 10000 張是測試圖片。
其中 50000 張分紅了 5 個訓練 batches,剩下的 10000 張是 test batch。訓練數據每一個類總共包含 5000 張,但每一個 batch 每一個類的圖片數量可能並不平均。
每一個 batch 文件都是 Python pickle 生成的,因此可使用 pickle 讀取:
Copydef unpickle(file):
import pickle
with open(file, 'rb') as fo:
dict = pickle.load(fo, encoding='bytes')
return dict
函數返回一個 dict
對象,其中有兩個 key 比較重要:
data
:10000x3072 numpy array,每一行是一個 32x32 彩色圖片。每 1024 個元素依次表明 R G B,像素值沒有歸一化(取值爲 0-255)。labels
:每一行表明圖片分類,取值 0-9。CIFAR-100 和 CIFAR-10 相似,只是類別爲 100 個。實際上,CIFAR-10 和 MNIST 很相似。
Tiny Images dataset 包含 79,302,017 張 32x32 彩色圖片。包含 5 個文件:
FDDB是全世界最具權威的人臉檢測評測平臺之一,包含來自 Faces in the Wild 的2845張圖片,共有5171我的臉數據。測試集範圍包括:不一樣姿式、不一樣分辨率、旋轉和遮擋等圖片,同時包括灰度圖和彩色圖,標準的人臉標註區域爲橢圓形。
FDDB 數據集包含如下內容:
原始圖片能夠在這裏下載:originalPics.tar.gz。解壓後圖片的路徑爲 originalPics/year/month/day/big/*.jpg
。
比較重要的是 Face annotations。解壓縮 FDDB-folds.tgz 文件將會獲得 FDDB-folds 文件夾,包含 FDDB-fold-xx.txt 和 FDDB-fold-xx-ellipseList.txt 文件,xx
表明文件夾索引。
"FDDB-fold-xx.txt" 文件的每一行指定了一個上述原始圖片的一個文件名,如 "2002/07/19/big/img_130" 對應 "originalPics/2002/07/19/big/img_130.jpg."
對應的 annotations 文件 "FDDB-fold-xx-ellipseList.txt" 格式以下:
Copy...
<image name i>
<number of faces in this image =im>
<face i1>
<face i2>
...
<face im>
...
每個 face 即一個橢圓區域,用如下格式表示:
Copy<長軸半徑 短軸半徑 長軸方向 x軸中心座標 y軸中心座標 1>
示例:
Copy2002/08/11/big/img_591
1
123.583300 85.549500 1.265839 269.693400 161.781200 1
2002/08/26/big/img_265
3
67.363819 44.511485 -1.476417 105.249970 87.209036 1
41.936870 27.064477 1.471906 184.070915 129.345601 1
70.993052 43.355200 1.370217 340.894300 117.498951 1
2002/07/19/big/img_423
1
87.080955 59.379319 1.550861 255.383099 133.767857 1
2002/08/24/big/img_490
1
54.692105 35.056825 -1.384924 145.665694 78.101005 1
2002/08/31/big/img_17676
2
37.099961 29.000000 1.433107 28.453831 37.664572 1
79.589662 49.835046 -1.457361 112.514300 92.364284 1