CIFAR-10+ImageNet=?CINIC-10!
就神經網路方面而言,ImageNet過於龐大,在計算資源不足的情況下,耗費的執行時間過長,而 CIFAR-10 又太小,有時候無法滿足需求。於是,本文提出一種方法,將從 CIFAR-10 中選出的影象與ImageNet中下采樣得到的影象相結合,編譯出了 CINIC-10,可以替代 CIFAR-10。
CINIC-10 可以直接替代 CIFAR-10。由於 CIFAR-10 太小(太簡單),而ImageNet又太大(太難),所以我們將 CINIC-10 編譯為基準資料集。雖然ImageNet32 和ImageNet64 比ImageNet小,但是它們卻更難。CINIC-10 填補了基準資料集的這一空隙。
動機
「我們可以看到近些年來在深度學習領域取得的巨大進步(LeCun 等人,2015)」
可能許多讀者都很熟悉這一推論。在許多深度學習方面的論文開頭都有類似的話。我們要怎麼評估這樣的陳述呢?通過基準資料集。在ImageNet上,AlexNet(Krizhevsky 等人,2012)比傳統的計算機視覺方法表現得更加出色,後來 VGG 網路(Simonyan&Zisserman,2015)超越了AlexNet,然後又被 ResNet(He 等人,2016)等網路超越。
但ImageNet也有缺陷。這是一個龐大的資料集。資料集中的影象很大,至少有關神經網路方面的影象如此,而這個資料集中有超過一百萬張這樣的影象。在計算資源不充足的情況下,執行一次訓練要花好幾天的時間(Goyal 等人,2017)。也許是出於這個原因,CIFAR-10 和 CIFAR-100(Krizhevsky,2009)已經成為許多人在現實影象背景下對神經網路進行基準測試的首選資料集。實際上,這正是幾個流行的架構展示其能力之處(Huang 等人,2017;Gastaldi,2017)。
在 CIFAR-10 中,10 類裡每一類都有 6,000 個樣本,而 CIFAR-100 中,100 類裡每一類只有 600 個樣本。這導致了這些任務間巨大的難度差異;CIFAR-100 可能比ImageNet更難。如果有能提供關於任務難度的另一個里程碑的資料集,那這個資料集就會很有用。ImageNet-32 是 CIFAR 的替代品,但這實際上引出了一個比ImageNet更具挑戰性的問題,因為下采樣影象的資訊容量顯著更低。此外,大部分基準資料集會不均勻地分割訓練集、驗證集和測試集(CIFAR 中不存在驗證集)。而我們需要大小相同的分割,因為它們才可以提供更有原則的泛化效能。
為了克服現有基準資料集的缺點,我們提出了 CINIC-10:CINIC-10 既不是ImageNet也不是 CIFAR-10。CINIC-10 是 CIFAR-10 通過新增下采樣的ImageNet影象擴充套件得到的。CINIC-10 具有以下幾個理想特質:
-
CINIC-10 有 270,000 張影象,是 CIFAR 的 4.5 倍。
-
影象大小與 CIFAR 中的一樣,也就是說可以用 CINIC-10 替代 CIFAR-10
-
它具有大小相同的訓練、驗證和測試分割。在一些實驗設定中,可能需要一個以上的訓練資料集。儘管如此,通過大小相同的資料集分割,可以公正地評估泛化效能。
-
可以將訓練子集和驗證子集結合在一起得到更大的訓練集
-
CINIC-10 中的影象來源於 CIFAR 和ImageNet。這些影象的分佈不一定相同,這就呈現出了新的挑戰:分佈轉移。換言之,我們可以在類別相同的情況下,瞭解在 CIFAR 影象上訓練得到的模型比在ImageNet影象上訓練得到的模型好多少。
細節
-
CINIC-10 中共有 270,000 張影象,將這些影象平均分割為三個子集:訓練集、驗證集和測試集。
-
在每個子集(90,000 張影象)中有十類(與 CIFAR-10 中的類別相同)。每個子集的每個類別中有 9,000 張影象。使用推薦的資料分割(平均分為三等份)的情況下,CINIC-10 的訓練樣本數量是 CIFAR-10 的 1.8 倍。CINIC-10 被設計為可以直接和 CIFAR-10 交換。
-
還可以將訓練集和驗證集結合在一起,組成更大的訓練集。在這種情況下,CINIC-10 的訓練樣本量是 CIFAR-10 的 3.6 倍。
-
可以根據下列程式碼計算(r,g,b)通道的平均值和標準差:
cinic_mean_RGB = [0.47889522, 0.47227842, 0.43047404] cinic_std_RGB = [0.24205776, 0.23828046, 0.25874835]
將 CINIC-10 儲存下來,以便和 PyTorch 資料載入器一起使用。資料夾結構如下所示:
train/
train/airplane
train/automobile
train/...
valid/
valid/...
test/
test/...
基準
用兩種方式對 CINIC-10 進行基準測試:(1)建議的三等份分割法,在訓練子集上訓練,在測試子集上測試;(2)將訓練集和驗證集結合,在結合的資料集上訓練,然後在測試集上測試。
我們從以下地址複製了模型定義。將 epoch 設定為 300,初始學習率為 0.1,動量乘數為 0.9,權值衰減乘數為 0.0001,batch size為 64。學習率按餘弦方式降到 0。
定義地址:https://github.com/kuangliu/pytorch-cifar/
在訓練子集上訓練的結果
在訓練子集和驗證子集結合得到的新資料集上訓練得到的結果
與 CIFAR-10 模型進行比較,用不同種子訓練 5 次。列出這些執行結果的誤差,包括標準差:
樣本
下圖是從 CINIC-10 和 CIFAR-10 中隨機挑選的樣本,將其進行比較。顯而易見,CINIC-10 噪聲更大,因為 Imagenet 中的樣本沒有審查過。
飛機
CIFAR-10
CINIC-10
鳥
CIFAR-10
CINIC-10
論文:CINIC-10 Is NotImageNetor CIFAR-10
論文連結: ofollow,noindex" target="_blank">https://arxiv.org/abs/1810.03505
摘要:在這篇簡短的技術報告中介紹了 CINIC-10 資料集,這個資料集可以作為 CIFAR-10 的擴充套件替代方案。將 從 CIFAR-10 中挑選的影象以及從ImageNet資料庫下采樣得到的影象結合在一起,編譯出了 CINIC-10。我們提出了編譯資料集的方法,說明了類別不同的樣本影象,給出了庫中每一部分的畫素分佈,還為那些眾所周知的模型給出了一些標準基準。關於下載、使用和編譯的一些細節可以從相關的 github 庫中找到。
理論 CIFAR ImageNet 計算機視覺 資料集
相關資料
Neural Network
(人工)神經網路是一種起源於 20 世紀 50 年代的監督式機器學習模型,那時候研究者構想了「感知器(perceptron)」的想法。這一領域的研究者通常被稱為「聯結主義者(Connectionist)」,因為這種模型模擬了人腦的功能。神經網路模型通常是通過反向傳播演算法應用梯度下降訓練的。目前神經網路有兩大主要型別,它們都是前饋神經網路:卷積神經網路(CNN)和迴圈神經網路(RNN),其中 RNN 又包含長短期記憶(LSTM)、門控迴圈單元(GRU)等等。深度學習是一種主要應用於神經網路幫助其取得更好結果的技術。儘管神經網路主要用於監督學習,但也有一些為無監督學習設計的變體,比如自動編碼器和生成對抗網路(GAN)。
來源:機器之心
AlexNet
AlexNet是一個卷積神經網路的名字,最初是與CUDA一起使用GPU支援執行的,AlexNet是2012年ImageNet競賽冠軍獲得者Alex Krizhevsky設計的。該網路達錯誤率大大減小了15.3%,比亞軍高出10.8個百分點。AlexNet是由SuperVision組設計的,由Alex Krizhevsky, Geoffrey Hinton和Ilya Sutskever組成。
來源: ImageNet Classification with Deep Convolutional Neural Networks
Computer Vision
計算機視覺(CV)是指機器感知環境的能力。這一技術類別中的經典任務有影象形成、影象處理、影象提取和影象的三維推理。目標識別和麵部識別也是很重要的研究領域。
來源:機器之心
Learning rate
在使用不同優化器(例如隨機梯度下降,Adam)神經網路相關訓練中,學習速率作為一個超引數控制了權重更新的幅度,以及訓練的速度和精度。學習速率太大容易導致目標(代價)函式波動較大從而難以找到最優,而弱學習速率設定太小,則會導致收斂過慢耗時太長
來源:Liu, T. Y. (2009). Learning to rank for information retrieval. Foundations and Trends® in Information Retrieval, 3(3), 225-331. Wikipedia
baseline
一種簡單的模型或啟發法,用作比較模型效果時的參考點。基準有助於模型開發者針對特定問題量化最低預期效果。
來源: sary" target="_blank" rel="nofollow,noindex">Google ML Glossary
Momentum
優化器的一種,是模擬物理裡動量的概念,其在相關方向可以加速SGD,抑制振盪,從而加快收斂
batch size
一個批次中的樣本數。例如,SGD 的批次規模為 1,而小批次的規模通常介於 10 到 1000 之間。批次規模在訓練和推斷期間通常是固定的;不過,TensorFlow 允許使用動態批次規模。
Deep learning
深度學習(deep learning)是機器學習的分支,是一種試圖使用包含複雜結構或由多重非線性變換構成的多個處理層對資料進行高層抽象的演算法。 深度學習是機器學習中一種基於對資料進行表徵學習的演算法,至今已有數種深度學習框架,如卷積神經網路和深度置信網路和遞迴神經網路等已被應用在計算機視覺、語音識別、自然語言處理、音訊識別與生物資訊學等領域並獲取了極好的效果。
來源: LeCun, Y., Bengio, Y., & Hinton, G. (2015). Deep learning. nature, 521(7553), 436.