言有三 畢業(yè)于中國科學(xué)院,,計算機視覺方向從業(yè)者,有三工作室等創(chuàng)始人 作者 | 言有三 編輯 | 言有三 圖像分類是計算機視覺中最基礎(chǔ)的任務(wù),,基本上深度學(xué)習(xí)模型的發(fā)展史就是圖像分類任務(wù)提升的發(fā)展歷史,,不過圖像分類并不是那么簡單,也沒有被完全解決,。 01 什么是圖像分類 圖像分類是計算機視覺中最基礎(chǔ)的一個任務(wù),,也是幾乎所有的基準(zhǔn)模型進行比較的任務(wù)。從最開始比較簡單的10分類的灰度圖像手寫數(shù)字識別任務(wù)mnist,,到后來更大一點的10分類的 cifar10和100分類的cifar100 任務(wù),,到后來的imagenet 任務(wù),圖像分類模型伴隨著數(shù)據(jù)集的增長,,一步一步提升到了今天的水平?,F(xiàn)在,在imagenet 這樣的超過1000萬圖像,超過2萬類的數(shù)據(jù)集中,,計算機的圖像分類水準(zhǔn)已經(jīng)超過了人類,。 不過,不要把圖像分類任務(wù)想的過于簡單,。 圖像分類顧名思義就是一個模式分類問題,,它的目標(biāo)是將不同的圖像,劃分到不同的類別,,實現(xiàn)最小的分類誤差,。總體來說,,對于單標(biāo)簽的圖像分類問題,,它可以分為跨物種語義級別的圖像分類,子類細粒度圖像分類,,以及實例級圖像分類三大類別,。 1.1 跨物種語義級別的圖像分類 所謂跨物種語義級別的圖像分類,它是在不同物種的層次上識別不同類別的對象,,比較常見的包括如貓狗分類等,。這樣的圖像分類,各個類別之間因為屬于不同的物種或大類,,往往具有較大的類間方差,,而類內(nèi)則具有較小的類內(nèi)誤差。 下面是cifar10 中的10個類別的示意圖,,這就是一個典型的例子,。 cifar包含10個類別,分別是airplane,,automobile,,bird,cat,,deer,,dog,frog,,horse,,ship,truck,,其中airplane,,automobile,ship,,truck都是交通工具,,bird,,cat,deer,,dog,,frog,horse都是動物,,可以認為是兩個大的品類,。而交通工具內(nèi)部,動物內(nèi)部,,都是完全不同的物種,,這些都是語義上完全可以區(qū)分的對象,所以cifar10的分類任務(wù),,可以看作是一個跨物種語義級別的圖像分類問題,。類間方差大,類內(nèi)方差小,。 1.2 子類細粒度圖像分類 細粒度圖像分類,相對于跨物種的圖像分類,,級別更低一些,。它往往是同一個大類中的子類的分類,如不同鳥類的分類,,不同狗類的分類,,不同車型的分類等。 下面以不同鳥類的細粒度分類任務(wù),,加利福尼亞理工學(xué)院鳥類數(shù)據(jù)庫-2011,,即Caltech-UCSD Birds-200-2011為例。這是一個包含200類,,11788張圖像的鳥類數(shù)據(jù)集,,同時每一張圖提供了15個局部區(qū)域位置,1個標(biāo)注框,,還有語義級別的分割圖,。在該數(shù)據(jù)集中,以woodpecker為例,,總共包含6類,,即American Three toed Woodpecker,Pileated Woodpecker,,Red bellied Woodpecker,,Red cockaded Woodpecker,Red headed Woodpecker,,Downy Woodpecker,,我們?nèi)∑渲袃深惛饕粡埵疽鈭D查看如圖。 從上圖可以看出,兩只鳥的紋理形狀都很像,,要像區(qū)分只能靠頭部的顏色和紋理,,所以要想訓(xùn)練出這樣的分類器,就必須能夠讓分類器識別到這些區(qū)域,,這是比跨物種語義級別的圖像分類更難的問題,。 1.3 實例級圖像分類 如果我們要區(qū)分不同的個體,而不僅僅是物種類或者子類,,那就是一個識別問題,,或者說是實例級別的圖像分類,最典型的任務(wù)就是人臉識別,。 在人臉識別任務(wù)中,,需要鑒別一個人的身份,從而完成考勤等任務(wù),。人臉識別一直是計算機視覺里面的重大課題,,雖然經(jīng)歷了幾十年的發(fā)展,但仍然沒有被完全解決,,它的難點在于遮擋,,光照,大姿態(tài)等經(jīng)典難題,,讀者可以參考更多資料去學(xué)習(xí),。 02 圖像分類模型 圖像分類任務(wù)從傳統(tǒng)的方法到基于深度學(xué)習(xí)的方法,經(jīng)歷了幾十年的發(fā)展,。這里只關(guān)注于深度學(xué)習(xí)的進展,,下面重點講述幾個重要的節(jié)點。 2.1 MNIST與LeNet5 在計算機視覺分類算法的發(fā)展中,,MNIST 是首個具有通用學(xué)術(shù)意義的基準(zhǔn),。這是一個手寫數(shù)字的分類標(biāo)準(zhǔn),包含 60000 個訓(xùn)練數(shù)據(jù),,10000 個測試數(shù)據(jù),,圖像均為灰度圖,通用的版本大小為 28×28,。 在上個世紀(jì)90年代末本世紀(jì)初,,SVM and K-nearest neighbors方法被使用的比較多,以SVM為代表的方法,,可以將MNIST分類錯誤率降低到了0.56%,,彼時仍然超過以神經(jīng)網(wǎng)絡(luò)為代表的方法,即LeNet系列網(wǎng)絡(luò),。LeNet網(wǎng)絡(luò)誕生于1994年,,后經(jīng)過多次的迭代才有了1998年的LeNet5,,是為我們所廣泛知曉的版本。 這是一個經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò),,它包含著一些重要的特性,,這些特性仍然是現(xiàn)在CNN網(wǎng)絡(luò)的核心。
雖然LeNet5當(dāng)時的錯誤率仍然停留在0.7%的水平,不如同時期最好的SVM方法,,但隨著網(wǎng)絡(luò)結(jié)構(gòu)的發(fā)展,,神經(jīng)網(wǎng)絡(luò)方法很快就超過了其他所有方法,錯誤率也降低到了0.23%,,甚至有的方法已經(jīng)達到了錯誤率接近0的水平,。 2.2 ImageNet與AlexNet 在本世紀(jì)的早期,雖然神經(jīng)網(wǎng)絡(luò)開始有復(fù)蘇的跡象,,但是受限于數(shù)據(jù)集的規(guī)模和硬件的發(fā)展,,神經(jīng)網(wǎng)絡(luò)的訓(xùn)練和優(yōu)化仍然是非常困難的。MNIST和CIFAR數(shù)據(jù)集都只有60000張圖,,這對于10分類這樣的簡單的任務(wù)來說,,或許足夠,但是如果想在工業(yè)界落地更加復(fù)雜的圖像分類任務(wù),,仍然是遠遠不夠的,。 后來在李飛飛等人數(shù)年時間的整理下,2009年,,ImageNet數(shù)據(jù)集發(fā)布了,,并且從2010年開始每年舉辦一次ImageNet大規(guī)模視覺識別挑戰(zhàn)賽,,即ILSVRC。ImageNet數(shù)據(jù)集總共有1400多萬幅圖片,,涵蓋2萬多個類別,,在論文方法的比較中常用的是1000類的基準(zhǔn)。 在ImageNet發(fā)布的早年里,,仍然是以SVM和Boost為代表的分類方法占據(jù)優(yōu)勢,,直到2012年AlexNet的出現(xiàn)。 AlexNet是第一個真正意義上的深度網(wǎng)絡(luò),,與LeNet5的5層相比,,它的層數(shù)增加了3層,網(wǎng)絡(luò)的參數(shù)量也大大增加,,輸入也從28變成了224,,同時GPU的面世,也使得深度學(xué)習(xí)從此進行GPU為王的訓(xùn)練時代,。 AlexNet有以下的特點:
2.3 分類模型的逐年進步 2013年ILSVRC分類任務(wù)冠軍網(wǎng)絡(luò)是Clarifai,,不過更為我們熟知的是zfnet。hinton的學(xué)生Zeiler和Fergus在研究中利用反卷積技術(shù)引入了神經(jīng)網(wǎng)絡(luò)的可視化,,對網(wǎng)絡(luò)的中間特征層進行了可視化,,為研究人員檢驗不同特征激活及其與輸入空間的關(guān)系成為了可能,。在這個指導(dǎo)下對AlexNet網(wǎng)絡(luò)進行了簡單改進,包括使用了更小的卷積核和步長,,將11x11的卷積核變成7x7的卷積核,,將stride從4變成了2,性能超過了原始的AlexNet網(wǎng)絡(luò),。 2014年的冠亞軍網(wǎng)絡(luò)分別是GoogLeNet和VGGNet,。 其中VGGNet包括16層和19層兩個版本,共包含參數(shù)約為550M,。全部使用3×3的卷積核和2×2的最大池化核,,簡化了卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)。VGGNet很好的展示了如何在先前網(wǎng)絡(luò)架構(gòu)的基礎(chǔ)上通過簡單地增加網(wǎng)絡(luò)層數(shù)和深度就可以提高網(wǎng)絡(luò)的性能,。雖然簡單,,但是卻異常的有效,在今天,,VGGNet仍然被很多的任務(wù)選為基準(zhǔn)模型,。 GoogLeNet是來自于Google的Christian Szegedy等人提出的22層的網(wǎng)絡(luò),其top-5分類錯誤率只有6.7%,。 GoogleNet的核心是Inception Module,,它采用并行的方式。一個經(jīng)典的inception結(jié)構(gòu),,包括有四個成分,。1×1卷積,3×3卷積,,5×5卷積,,3×3最大池化,最后對四個成分運算結(jié)果進行通道上組合,。這就是Inception Module的核心思想。通過多個卷積核提取圖像不同尺度的信息然后進行融合,,可以得到圖像更好的表征,。自此,深度學(xué)習(xí)模型的分類準(zhǔn)確率已經(jīng)達到了人類的水平(5%~10%),。 與VGGNet相比,,GoogleNet模型架構(gòu)在精心設(shè)計的Inception結(jié)構(gòu)下,模型更深又更小,,計算效率更高,。 2015年,ResNet獲得了分類任務(wù)冠軍,。它以3.57%的錯誤率表現(xiàn)超過了人類的識別水平,,并以152層的網(wǎng)絡(luò)架構(gòu)創(chuàng)造了新的模型記錄,。由于ResNet采用了跨層連接的方式,它成功的緩解了深層神經(jīng)網(wǎng)絡(luò)中的梯度消散問題,,為上千層的網(wǎng)絡(luò)訓(xùn)練提供了可能,。 2016年依舊誕生了許多經(jīng)典的模型,包括贏得分類比賽第二名的ResNeXt,,101層的ResNeXt可以達到ResNet152的精確度,,卻在復(fù)雜度上只有后者的一半,核心思想為分組卷積,。即首先將輸入通道進行分組,,經(jīng)過若干并行分支的非線性變換,最后合并,。 在ResNet基礎(chǔ)上,,密集連接的DenseNet在前饋過程中將每一層與其他的層都連接起來。對于每一層網(wǎng)絡(luò)來說,,前面所有網(wǎng)絡(luò)的特征圖都被作為輸入,,同時其特征圖也都被后面的網(wǎng)絡(luò)層作為輸入所利用。 DenseNet中的密集連接還可以緩解梯度消失的問題,,同時相比ResNet,,可以更強化特征傳播和特征的復(fù)用,并減少了參數(shù)的數(shù)目,。DenseNet相較于ResNet所需的內(nèi)存和計算資源更少,,并達到更好的性能。 2017年,,也是ILSVRC圖像分類比賽的最后一年,,SeNet獲得了冠軍。這個結(jié)構(gòu),,僅僅使用了“特征重標(biāo)定”的策略來對特征進行處理,,通過學(xué)習(xí)獲取每個特征通道的重要程度,根據(jù)重要性去降低或者提升相應(yīng)的特征通道的權(quán)重,。 至此,,圖像分類的比賽基本落幕,也接近算法的極限,。但是,,在實際的應(yīng)用中,卻面臨著比比賽中更加復(fù)雜和現(xiàn)實的問題,,需要大家不斷積累經(jīng)驗,。 03 總結(jié) 雖然基本的圖像分類任務(wù),尤其是比賽趨近飽和,,但是現(xiàn)實中的圖像任務(wù)仍然有很多的困難和挑戰(zhàn),。如類別不均衡的分類任務(wù),,類內(nèi)方差非常大的細粒度分類任務(wù),以及包含無窮負樣本的分類任務(wù),。
|
|