關于圖像分類的經典

本文介紹十年來最佳圖像分類論文,來幫助你快速學習計算機視覺

前言計算機視覺是一門將圖像和視頻轉換成機器可理解信號的學科,有了這些信號,程序員可以基于這種高階進一步控制機器的行為。在計算機視覺任務中,圖像分類是最基本的任務之一,它不僅可以用于許多真實的產品,比如googlephoto的標簽和AI內容調節(jié),而且還是許多更高級的視覺任務奠定了基礎,比如目標檢測和視頻理解。自從深度學習技術爆發(fā)以來,由于該領域的快速變化,初學者往往會覺得學習起來太困難,與典型的軟件工程學科不同,使用DCNN進行圖像分類的好書并不多,理解這一領域的最好方法是閱讀學術論文。

但讀什么論文呢?我從哪里開始讀起呢?在本篇文章中,我將為初學者介紹10篇最佳論文。通過這些論文,我們可以看到這一領域是如何發(fā)展的,以及研究人員是如何根據先前的研究成果提出新的想法的,即使你已經在這個領域工作了一段時間,但它仍然有助于你理清脈絡。那么,讓我們開始吧。1998年:LeNet深度學習在文檔識別中的應用

LeNet于1998年推出,為未來使用卷積神經網絡的圖像分類研究奠定了基礎。許多經典的CNN技術(例如池化層,全連接層,填充和激活層)被該模型用來提取特征并進行分類,借助均方誤差損失函數和20個訓練周期,在MNIST測試集上的準確率達到99.05%。即使在20年后,許多最先進的分類網絡仍然大體上遵循這種模式。2012年:AlexNet深度卷積神經網絡的ImageNet分類

盡管LeNet取得了巨大的成就,顯示了CNN的潛力,但由于計算能力和數據量有限,該領域的發(fā)展停滯了10年。CNN似乎只能解決一些簡單的任務,如數字識別,但是對于更復雜的特征(如人臉和物體),帶有SVM分類器的HarrCascade或SIFT特征提取器是更可取的方法。然而,在2012年ImageNet大規(guī)模視覺識別挑戰(zhàn)賽中,Alex Krizhevsky提出了一種基于CNN的解決方案,并將ImageNet測試集top-5的準確率從73.8%大幅提高到84.7%。他們的方法繼承了LeNet的多層CNN思想,但大大增加了CNN的規(guī)模。從上圖中可以看出,與LeNet的32x32相比,AlexNet的輸入為224x224,LeNet卷積核有6個通道,但AlexNet的有192個通道。雖然設計沒有太大的變化,但隨著參數的增加,網絡捕捉和表示復雜特征的能力也提高了數百倍。

為了訓練一個大模型,亞歷克斯使用了兩個GTX580GPU,每個GPU有3GB的內存,這開創(chuàng)了GPU訓練的潮流,此外,ReLU非線性函數的使用也有助于降低計算成本。除了為網絡帶來更多的參數外,它還探討了一個大網絡使用一個Dropout層帶來的過擬合問題。雖然它的局部響應規(guī)范化方法在后來并沒有得到太多的普及,但是啟發(fā)了其他重要的規(guī)范化技術,如 BatchNorm 被用來解決梯度飽和問題??傊?AlexNet定義了未來10年的分類網絡框架:卷積、ReLu非線性激活、MaxPooling和全連接層的組合。2014年:VGG用于大型圖像識別的超深度卷積網絡

利用CNN進行視覺識別取得了巨大成功,整個研究界都大吃一驚,所有人都開始研究為什么這種神經網絡能夠如此出色地工作,例如在2013年發(fā)表的“可視化和理解卷積網絡”中,馬修·齊勒(Matthew Zeiler)討論了CNN如何獲取特征并可視化中間表示,突然之間,每個人都開始意識到CNN在2014年將成為計算機視覺的未來。在所有直接關注者中,Visual Geometry Group的VGG網絡是最吸引眼球的網絡,在ImageNet測試集上,top-5的準確度達到93.2%,top-1的準確度達到了76.3%。

遵循AlexNet的設計,VGG網絡有兩個主要更新:1)VGG不僅使用了像AlexNet這樣更廣泛的網絡,而且使用了更深的網絡,VGG-19具有19個卷積層,而AlexNet中只有5個。2)VGG還展示了一些小的3x3卷積濾波器可以代替AlexNet的單個7x7甚至11x11濾波器,在降低計算成本的同時實現更好的性能。由于這種優(yōu)雅的設計,VGG也成為了其他計算機視覺任務中許多開拓性網絡的骨干網絡,例如用于語義分割的FCN和用于對象檢測的Faster R-CNN。隨著網絡的層數越來越大,從多層反向傳播中消失梯問題成為一個更大的問題,該問題限制了研究人員繼續(xù)添加更多的網絡層,因為太深的網絡層數會造成網絡很難擬合。為了解決這個問題,VGG還討論了預訓練和權重初始化的重要性,但是兩年后,學術界為此找到更好的解決方案。2014年:GoogLeNet探索卷積

VGG外形美觀,結構簡單易懂,但在ImageNet 2014年的所有決賽中,它的表現并不是最好的。GoogLeNet,又名InceptionV1,贏得了最后的獎項。與VGG一樣,GoogLeNet的主要貢獻之一就是通過22層結構來推動網絡深度的極限,這再次證明,向更深更廣的方向發(fā)展確實是提高準確性的正確方向。與VGG不同的是,GoogLeNet試圖正面解決計算和梯度遞減問題,而不是提出一種具有更好的預訓練模式和權重初始化的解決方案。

首先,它通過使用一個名為Inception的模塊探索了非對稱網絡設計的思想(見上圖)。理想情況下,他們希望通過稀疏卷積或密集層來提高特性效率,但現代硬件設計并不是針對這種情況而定制的,因此他們認為網絡拓撲級別的稀疏性也有助于功能的融合,同時有利于利用現有的硬件功能。其次,它借鑒了《網絡中的網絡》(Network in Network)一文的思想,解決了計算量大的問題。1x1卷積濾波器被引入,以在通過像5x5卷積內核這樣的繁重計算操作之前減少特征的維數,這種結構后來被稱為“瓶頸”,在許多后續(xù)網絡中得到了廣泛的應用,同時它還使用了平均池層來代替最終的全連接層,以進一步降低成本。第三,為了幫助梯度流到更深的層,GoogLeNet還對一些中間層輸出或輔助輸出使用了監(jiān)控。由于其復雜性,這種設計在以后的圖像分類網絡中并不是很流行,而是在計算機視覺的其他領域如沙漏網絡的姿態(tài)估計中得到了廣泛的應用。作為后續(xù)工作,谷歌團隊為Inception系列撰寫了一系列的論文。

InceptionV2:“批量標準化:通過減少內部協變量的變化來加速深度網絡訓練”2015年的InceptionV3:“重新思考計算機視覺的初始架構”2015年的InceptionV4:“Inception-v4,Inception ResNet和殘余連接對學習的影響”每一篇論文都在原有的初始網絡基礎上進行了更多的改進,取得了較好的效果。2015年:批量標準化批量標準化:通過減少內部協變量的變化來加速深度網絡的訓練Inception網絡幫助研究人員在ImageNet數據集上達到了超人般的精確度,然而CNN作為一種統(tǒng)計學習方法,受到特定訓練數據集統(tǒng)計性質的限制。因此,為了獲得更好的準確性,我們通常需要預先計算整個數據集的平均值和標準差,然后使用它們來規(guī)范化我們的輸入,以確保網絡中的大多數層輸入是接近的,這意味著更好的激活響應性。這種近似方法非常麻煩,有時對于新的網絡結構或新的數據集根本不起作用,因此深度學習模型仍然被視為難以訓練。為了解決這個問題,Sergey Ioffe和創(chuàng)建GoogLeNet的Chritian Szegedy決定發(fā)明一種更聰明的方法,稱為批處理規(guī)范化。

批處理規(guī)范化的思想并不難:只要訓練足夠長的時間,我們就可以使用一系列小批量的統(tǒng)計數據來近似整個數據集的統(tǒng)計信息,此外我們可以引入兩個更可學習的參數“scale”和“shift”,而不是手動計算統(tǒng)計數據,這可以讓網絡學習如何自己規(guī)范每一層。上圖顯示了計算批次標準化值的過程。如我們所見,我們取整個小批量的平均值并計算方差,接下來,我們可以用這個小批量的均值和方差來規(guī)范化輸入,最后通過一個尺度和一個移位參數,網絡將學習如何調整批量標準化結果,以最適合以下層(通常是ReLU)。

有一點需要注意的是,我們在推理過程中沒有小批量信息,所以解決方法是在訓練期間計算移動平均值和方差,然后在推理路徑中使用這些移動平均值,這個小小的創(chuàng)新是如此的有影響力,所有后來的網絡都馬上開始使用它。2015: ResNet深度殘差學習用于圖像識別2015年可能是十年來計算機視覺發(fā)展最好的一年,我們看到了很多偉大的想法,不僅在圖像分類方面,而且在各種各樣的計算機視覺任務(如對象檢測,語義分割等)中都應運而生。2015年誕生了一個新的網絡,稱為ResNet,或稱為殘差網絡,該網絡由Microsoft Research Asia的一組中國研究人員提出。

正如我們在前面討論的VGG網絡,進一步深入的最大障礙是梯度消失問題,也就是說,當反向傳播到更深的層時,導數變得越來越小,最終達到現代計算機體系結構無法真正有意義地表示的程度。GoogLeNet試圖通過使用輔助監(jiān)督和非對稱初始模塊來解決這一問題,但它只在一定程度上緩解了這個問題。如果我們想用50層甚至100層,有沒有更好的方法讓漸變流通過網絡?ResNet的答案是使用殘差模塊。

ResNet為輸出添加了一個Identity輸入,每個殘差模塊不能預測輸入的是什么,從而不會迷失方向。更重要的是,殘差模塊不是希望每一層都直接適合所需的特征映射,而是嘗試學習輸出和輸入之間的差異,這使得任務更加容易,因為所需的信息增益較少。假設你正在學習數學,對于每一個新的問題,你都會得到一個類似問題的解決方案,所以你需要做的就是擴展這個解決方案,并努力使它發(fā)揮作用,這比為你遇到的每一個問題想出一個全新的解決方案要容易得多?;蛘哒缗nD所說,我們可以站在巨人的肩膀上,Identity輸入就是殘差模塊的那個巨人。

除了Identity Mapping,ResNet還借用了Inception networks的瓶頸和批處理規(guī)范化,最終它成功地建立了一個有152個卷積層的網絡,在ImageNet上達到了80.72%的最高精度。殘差法后來也成為了許多其他網絡的默認選擇,如exception、Darknet等,并且由于其簡潔美觀的設計,在當今許多生產性視覺識別系統(tǒng)中仍被廣泛應用。

隨著殘差網絡的大肆宣傳,出現了許多的不變量。在《Identity Mappings in Deep Residual Networks》中,ResNet的原作者把激活放在殘差模塊之前,取得了更好的效果,這一設計后來被稱為ResNetV2。此外,在2016年的一篇論文“Aggregated Residual Transformations for Deep Neural Networks(聚合深度神經網絡的殘差變換)”中,研究人員提出了ResNeXt,它為殘差模塊添加了并行分支,以聚合不同變換的輸出。2016年:XceptionXception:具有深度可分卷積的深度學習

隨著ResNet的發(fā)布,圖像分類器中的大多數容易實現的目標看起來已經被搶先實現了,研究人員開始考慮研究CNN的內部機制原理。由于跨通道卷積通常會引入大量參數,因此Xception網絡選擇調查此操作以了解其效果的全貌。就像它的名字一樣,Xception源自Inception網絡。在Inception模塊中,將不同轉換的多個分支聚合在一起以實現拓撲稀疏性,但是為什么這種稀疏起作用了?Xception的作者,也是Keras框架的作者,將這一思想擴展到了一種極端情況,在這種情況下,一個3x3卷積對應于最后一個串聯之前的一個輸出通道,在這種情況下,這些并行卷積核實際上形成了一個稱為深度卷積的新操作。

如上圖所示,與傳統(tǒng)的卷積不同,傳統(tǒng)的卷積方法只對每個通道分別計算卷積,然后將輸出串聯在一起,這減少了通道之間的特征交換,但也減少了許多連接,因此產生了一個參數較少的層,但是此操作將輸出與輸入相同數量的通道(如果將兩個或多個通道組合在一起,則輸出的通道數更少),因此,一旦信道輸出被合并,我們需要另一個常規(guī)的1x1濾波器,或點卷積,來增加或減少信道的數量,就像常規(guī)卷積一樣。這個想法早在一篇名為“Learning visual representations at scale(學習視覺表征的規(guī)模)”的論文中有描述,偶爾也會在InceptionV2中使用。

Exception更進一步的用這種新類型取代了幾乎所有的卷積。模型實驗結果很好,它超越了ResNet和InceptionV3,成為一種新的SOTA圖像分類方法,這也證明了CNN中的交叉相關和空間相關性的映射可以完全解耦,此外,Exception與ResNet有著相同的優(yōu)點,它的設計也簡單美觀,因此它的思想也被許多后續(xù)的研究所使用,如MobileNet、DeepLabV3等。2017年:MobileNetMobileNets:用于移動視覺應用的高效卷積神經網絡Exception在ImageNet上獲得了79%的top-1準確率和94.5%的top-5準確率,但與之前的SOTA InceptionV3相比,這兩項改進分別只有0.8%和0.4%。一種新的圖像分類網絡的邊際收益越來越小,因此研究者開始將注意力轉移到其他領域。MobileNet在資源受限的環(huán)境中引領了圖像分類的重大進展。

與Exception類似,MobileNet使用了上述的深度可分離卷積模塊,并強調了高效率和低參數。

上式中的分子是深度可分卷積所需的參數總數,分母是相似正則卷積的參數總數,這里D[K]是卷積核的大小,D[F]是特征映射的大小,M是輸入通道的數目,N是輸出通道的數目。由于我們將通道和空間特征的計算分開了,所以我們可以將乘法轉化為加法,這是一個較小的數量級,而且從這個比率可以看出,輸出通道的數目越大,使用這種新的卷積就可以節(jié)省更多的計算。MobileNet的另一個貢獻是寬度和分辨率乘數。MobileNet團隊希望找到一種標準的方法來縮小移動設備的模型尺寸,而最直觀的方法就是減少輸入和輸出通道的數量,以及輸入圖像的分辨率。為了控制這種行為,比率alpha與通道相乘,比率rho與輸入分辨率相乘(這也會影響特征映射的大小),因此參數總數可以用以下公式表示:

盡管這一變化在創(chuàng)新方面看起來很幼稚,但它具有巨大的工程價值,因為這是研究人員首次總結出一種規(guī)范的方法來調整網絡以適應不同的資源限制,同時它也總結了改進神經網絡的最終解決方案:更大分辨率的輸入導致更好的精度,更薄和低分辨率的輸入導致更差的精度。2018年和2019年晚些時候,MobiletNet團隊還發(fā)布了MobileNetV2和MobileNetV3。在MobileNetV2中,使用了倒置殘差結構。

在MobileNetV3中,它開始使用神經體系結構搜索技術來搜索最佳架構組合,我們將在下面介紹。2017年:NASNet學習可轉換的可伸縮圖像識別體系結構就像資源受限環(huán)境下的圖像分類一樣,神經架構搜索是2017年左右出現的另一個領域。通過ResNet、Inception和exception,我們似乎達到了一個人類可以理解和設計的最佳網絡拓撲結構,但是如果有一個更好、更復雜的組合遠遠超出人類的想象呢?

2016年,一篇名為“Neural Architecture Search with Reinforcement Learning(強化學習的神經結構搜索)”的論文提出了一種利用強化學習在預先定義的搜索空間內搜索最優(yōu)組合的思想。強化學習是一種尋找最優(yōu)解的方法,具有明確的目標和對搜索主體的獎勵,但是由于計算能力的限制,本文只討論了在一個小型CIFAR數據集上的應用。

為了找到像ImageNet這樣的大型數據集的最佳結構,NASNet為ImageNet定制了一個搜索空間。希望設計一個特殊的搜索空間,使CIFAR上的搜索結果也能在ImageNet上正常運行。

首先,NASNet假設在像ResNet和exception這樣的良好網絡中常見的手工制作的模塊在搜索時仍然有用,因此NASNet不再搜索隨機連接和操作,而是搜索這些模塊的組合,這些模塊已經在ImageNet上被證明是有用的。其次,實際的搜索仍然是在分辨率為32x32的CIFAR數據集上執(zhí)行的,因此NASNet只搜索不受輸入大小影響的模塊。為了使第二點起作用,NASNet預定義了兩種類型的模塊模板:Reduction和Normal。與輸入相比,還原單元可以具有簡化的特征映射,而對于正常單元,則是相同的。

盡管NASNet比人工設計網絡有更好的指標,但它也有一些缺點,即搜索最優(yōu)結構的成本非常高,只有像谷歌和Facebook這樣的大公司才能負擔得起,而且最終的結構對人類來說沒有太大意義,因此在生產環(huán)境中更難維護和改進。

2018年晚些時候,“MnasNet:Platform-Aware Neural Architecture Search for Mobile”通過使用預定義的鏈式塊結構限制搜索步驟,進一步擴展了NASNet的思想,同時通過定義權重因子,mNASNet給出了一種在特定資源約束下更系統(tǒng)地搜索模型的方法,而不是僅僅基于FLOPs進行評估。

2019年:效率網EfficientNet:對卷積神經網絡模型縮放的再思考2019年,CNN的監(jiān)督圖像分類似乎再也沒有令人興奮的想法了。網絡結構的急劇變化通常只會提高一點點精度,更糟糕的是,當同一個網絡應用于不同的數據集和任務時,先前聲稱的技巧似乎不起作用了,這就導致了對這些網絡的批評,認為這些改進是否只是過度適應了ImageNet數據集。另一方面,有一個技巧永遠不會辜負我們的期望:使用更高分辨率的輸入,為卷積層添加更多通道,并添加更多層。雖然看上去簡單粗暴,但似乎有一個原則性的方法來擴大網絡的需求。MobileNetV1在2017年提出了這一點,但后來重點轉移到了更好的網絡設計上。

在NASNet和mNASNet之后,研究人員意識到即使在計算機的幫助下,架構的改變也不會帶來太多的好處,所以他們開始退回到擴大網絡的規(guī)模上,效率網就是建立在這個假設之上的。一方面,它使用從MNASNET的最佳構建塊來確保開始的良好基礎。另一方面,它定義了三個參數alpha、beta和rho來控制網絡的深度、寬度和分辨率,通過這樣做,即使沒有一個大的GPU池來搜索最佳結構,工程師仍然可以依賴這些原則性參數來根據他們的不同需求來調整網絡。

最后,EfficientNet給出了8種不同寬度、深度和分辨率的變體,在小型和大型模型上都取得了良好的性能,換言之,如果你想要高精度,就選擇600x600和66M參數的EfficientNet-B7,如果你想要低延遲和更小的型號,請選擇224x224和5.3M參數的EfficientNet-B0。閱讀更多如果你讀完了以上10篇論文,那么你應該對CNN的圖像分類的發(fā)展歷史有了一個相當好的了解。

如果你想繼續(xù)學習這個領域,可以閱讀下面列出的一些其他有趣的論文,這些論文雖然不在前十名之列,但它們在各自領域都很有名,并激勵了許多其他研究者的研究。

2014年:SPPNet用于視覺識別的深度卷積網絡中的空間金字塔池SPPNet從傳統(tǒng)的計算機視覺特征提取中借鑒了特征金字塔的思想,這種金字塔形成了一個具有不同尺度特征的詞包,可以適應不同的輸入大小,擺脫了固定大小的全連接層。這個想法也進一步啟發(fā)了DeepLab的ASPP模塊,以及用于目標檢測的FPN。

2016年:DenseNet緊密連接的卷積網絡康奈爾大學的DenseNet進一步擴展了ResNet的思想,它不僅提供了層間的跳轉連接,而且還提供了所有前一層的跳轉連接。

2017年:SENetSqueeze-and-Excitation NetworksExcitation Networks表明,交叉信道相關性與空間相關性沒有太大關系,但是作為上一屆ImageNet競賽的冠軍,SEnet設計了一個Squeeze和Excitation塊,并講述了另一個不同的看法。SE塊首先使用全局池將所有通道壓縮到較少的通道中,應用全連接的變換,然后使用另一個全連接層將它們“激發(fā)”回原始通道數。從本質上講,FC層幫助網絡學習輸入特征映射的注意信息。

2017年:ShuffleNetShuffleNet:一種用于移動設備的高效卷積神經網絡基于mobilenev2的倒置瓶頸模塊,ShuffleNet認為深度可分離卷積中的逐點卷積犧牲了精度,以換取更少的計算量。為了彌補這一點,ShuffleNet增加了一個額外的通道Shuffle操作,以確保逐點卷積不會總是應用于同一個“點”。而在ShuffleNetV2中,這種通道Shuffle機制也進一步擴展到ResNet的Identity輸入分支,因此Identity輸入分支也會被用于Shuffle。

2018年:Bag of Tricks卷積神經網絡在圖像分類中的應用Bag of Tricks主要介紹了圖像分類領域中常用的技巧。當工程師需要提高基準性能時,它可以作為一個很好的參考。這些技巧,如混合增強和余弦學習率,有時比一個新的網絡架構能取得更好的改善。

結論隨著EfficientNet的發(fā)布,ImageNet分類基準測試似乎走到了盡頭。在現有的深度學習方法下,除非發(fā)生另一種范式轉換,否則我們永遠不會有一天在ImageNet上達到99.999%的準確率,因此,研究者們正積極研究一些新的領域,如用于大規(guī)模視覺識別的自監(jiān)督或半監(jiān)督學習,同時在現有的方法下,工程師和企業(yè)家面臨的更大問題是如何找到這種不完美的技術在現實世界中的應用。

(免責聲明:本網站內容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網站出現的信息,均僅供參考。本網站將盡力確保所提供信息的準確性及可靠性,但不保證有關資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網站對有關資料所引致的錯誤、不確或遺漏,概不負任何法律責任。
任何單位或個人認為本網站中的網頁或鏈接內容可能涉嫌侵犯其知識產權或存在不實內容時,應及時向本網站提出書面權利通知或不實情況說明,并提供身份證明、權屬證明及詳細侵權或不實情況證明。本網站在收到上述法律文件后,將會依法盡快聯系相關文章源頭核實,溝通刪除相關內容或斷開相關鏈接。 )

贊助商
2020-09-21
關于圖像分類的經典
本文介紹十年來最佳圖像分類論文,來幫助你快速學習計算機視覺前言計算機視覺是一門將圖像和視頻轉換成機器可理解信號的學科,有了這些信號,程序員可以基于這種高階進一步控制機器的行為。

長按掃碼 閱讀全文