tft每日頭條

 > 生活

 > 如何學習計算機視覺系統

如何學習計算機視覺系統

生活 更新时间:2024-06-27 22:34:43

計算機視覺是一門将圖像和視頻轉換成機器可理解信号的學科,有了這些信号,程序員可以基于這種高階進一步控制機器的行為。在計算機視覺任務中,圖像分類是最基本的任務之一,它不僅可以用于許多真實的産品,比如googlephoto的标簽和AI内容調節,而且還是許多更高級的視覺任務奠定了基礎,比如目标檢測和視頻理解。

自從深度學習技術爆發以來,由于該領域的快速變化,初學者往往會覺得學習起來太困難,與典型的軟件工程學科不同,使用DCNN進行圖像分類的好書并不多,理解這一領域的最好方法是閱讀學術論文。

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

1998年:LeNet

深度學習在文檔識别中的應用

如何學習計算機視覺系統(快速學習計算機視覺)1

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

2012年:AlexNet

深度卷積神經網絡的ImageNet分類

如何學習計算機視覺系統(快速學習計算機視覺)2

盡管LeNet取得了巨大的成就,顯示了CNN的潛力,但由于計算能力和數據量有限,該領域的發展停滞了10年。CNN似乎隻能解決一些簡單的任務,如數字識别,但是對于更複雜的特征(如人臉和物體),帶有SVM分類器的HarrCascade或SIFT特征提取器是更可取的方法。

然而,在2012年ImageNet大規模視覺識别挑戰賽中,Alex Krizhevsky提出了一種基于CNN的解決方案,并将ImageNet測試集top-5的準确率從73.8%大幅提高到84.7%。他們的方法繼承了LeNet的多層CNN思想,但大大增加了CNN的規模。

從上圖中可以看出,與LeNet的32x32相比,AlexNet的輸入為224x224,LeNet卷積核有6個通道,但AlexNet的有192個通道。雖然設計沒有太大的變化,但随着參數的增加,網絡捕捉和表示複雜特征的能力也提高了數百倍。

為了訓練一個大模型,亞曆克斯使用了兩個GTX580GPU,每個GPU有3GB的内存,這開創了GPU訓練的潮流,此外,ReLU非線性函數的使用也有助于降低計算成本。

除了為網絡帶來更多的參數外,它還探讨了一個大網絡使用一個Dropout層帶來的過拟合問題。雖然它的局部響應規範化方法在後來并沒有得到太多的普及,但是啟發了其他重要的規範化技術,如 BatchNorm 被用來解決梯度飽和問題。

總之,AlexNet定義了未來10年的分類網絡框架:卷積、ReLu非線性激活、MaxPooling和全連接層的組合。

2014年:VGG

用于大型圖像識别的超深度卷積網絡

如何學習計算機視覺系統(快速學習計算機視覺)3

利用CNN進行視覺識别取得了巨大成功,整個研究界都大吃一驚,所有人都開始研究為什麼這種神經網絡能夠如此出色地工作,例如在2013年發表的“可視化和理解卷積網絡”中,馬修·齊勒(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濾波器,在降低計算成本的同時實現更好的性能。由于這種優雅的設計,VGG也成為了其他計算機視覺任務中許多開拓性網絡的骨幹網絡,例如用于語義分割的FCN和用于對象檢測的Faster R-CNN。

随着網絡的層數越來越大,從多層反向傳播中消失梯問題成為一個更大的問題,該問題限制了研究人員繼續添加更多的網絡層,因為太深的網絡層數會造成網絡很難拟合。為了解決這個問題,VGG還讨論了預訓練和權重初始化的重要性,但是兩年後,學術界為此找到更好的解決方案。

2014年:GoogLeNet

探索卷積

如何學習計算機視覺系統(快速學習計算機視覺)4

VGG外形美觀,結構簡單易懂,但在ImageNet 2014年的所有決賽中,它的表現并不是最好的。GoogLeNet,又名InceptionV1,赢得了最後的獎項。與VGG一樣,GoogLeNet的主要貢獻之一就是通過22層結構來推動網絡深度的極限,這再次證明,向更深更廣的方向發展确實是提高準确性的正确方向。

與VGG不同的是,GoogLeNet試圖正面解決計算和梯度遞減問題,而不是提出一種具有更好的預訓練模式和權重初始化的解決方案。

如何學習計算機視覺系統(快速學習計算機視覺)5

首先,它通過使用一個名為Inception的模塊探索了非對稱網絡設計的思想(見上圖)。理想情況下,他們希望通過稀疏卷積或密集層來提高特性效率,但現代硬件設計并不是針對這種情況而定制的,因此他們認為網絡拓撲級别的稀疏性也有助于功能的融合,同時有利于利用現有的硬件功能。

其次,它借鑒了《網絡中的網絡》(Network in Network)一文的思想,解決了計算量大的問題。1x1卷積濾波器被引入,以在通過像5x5卷積内核這樣的繁重計算操作之前減少特征的維數,這種結構後來被稱為“瓶頸”,在許多後續網絡中得到了廣泛的應用,同時它還使用了平均池層來代替最終的全連接層,以進一步降低成本。

第三,為了幫助梯度流到更深的層,GoogLeNet還對一些中間層輸出或輔助輸出使用了監控。由于其複雜性,這種設計在以後的圖像分類網絡中并不是很流行,而是在計算機視覺的其他領域如沙漏網絡的姿态估計中得到了廣泛的應用。

作為後續工作,谷歌團隊為Inception系列撰寫了一系列的論文。

InceptionV2:“批量标準化:通過減少内部協變量的變化來加速深度網絡訓練”。

2015年的InceptionV3:“重新思考計算機視覺的初始架構”。

2015年的InceptionV4:“Inception-v4,Inception ResNet和殘餘連接對學習的影響” 每一篇論文都在原有的初始網絡基礎上進行了更多的改進,取得了較好的效果。

2015年:批量标準化

批量标準化:通過減少内部協變量的變化來加速深度網絡的訓練。

Inception網絡幫助研究人員在ImageNet數據集上達到了超人般的精确度,然而CNN作為一種統計學習方法,受到特定訓練數據集統計性質的限制。

因此,為了獲得更好的準确性,我們通常需要預先計算整個數據集的平均值和标準差,然後使用它們來規範化我們的輸入,以确保網絡中的大多數層輸入是接近的,這意味着更好的激活響應性。這種近似方法非常麻煩,有時對于新的網絡結構或新的數據集根本不起作用,因此深度學習模型仍然被視為難以訓練。

為了解決這個問題,Sergey Ioffe和創建GoogLeNet的Chritian Szegedy決定發明一種更聰明的方法,稱為批處理規範化。

如何學習計算機視覺系統(快速學習計算機視覺)6

批處理規範化的思想并不難:隻要訓練足夠長的時間,我們就可以使用一系列小批量的統計數據來近似整個數據集的統計信息,此外我們可以引入兩個更可學習的參數“scale”和“shift”,而不是手動計算統計數據,這可以讓網絡學習如何自己規範每一層。

上圖顯示了計算批次标準化值的過程。如我們所見,我們取整個小批量的平均值并計算方差,接下來,我們可以用這個小批量的均值和方差來規範化輸入,最後通過一個尺度和一個移位參數,網絡将學習如何調整批量标準化結果,以最适合以下層(通常是ReLU)。

有一點需要注意的是,我們在推理過程中沒有小批量信息,所以解決方法是在訓練期間計算移動平均值和方差,然後在推理路徑中使用這些移動平均值,這個小小的創新是如此的有影響力,所有後來的網絡都馬上開始使用它。

2015: ResNet

深度殘差學習用于圖像識别。

2015年可能是十年來計算機視覺發展最好的一年,我們看到了很多偉大的想法,不僅在圖像分類方面,而且在各種各樣的計算機視覺任務(如對象檢測,語義分割等)中都應運而生。2015年誕生了一個新的網絡,稱為ResNet,或稱為殘差網絡,該網絡由Microsoft Research Asia的一組中國研究人員提出。

如何學習計算機視覺系統(快速學習計算機視覺)7

正如我們在前面讨論的VGG網絡,進一步深入的最大障礙是梯度消失問題,也就是說,當反向傳播到更深的層時,導數變得越來越小,最終達到現代計算機體系結構無法真正有意義地表示的程度。

GoogLeNet試圖通過使用輔助監督和非對稱初始模塊來解決這一問題,但它隻在一定程度上緩解了這個問題。如果我們想用50層甚至100層,有沒有更好的方法讓漸變流通過網絡?ResNet的答案是使用殘差模塊。

如何學習計算機視覺系統(快速學習計算機視覺)8

ResNet為輸出添加了一個Identity輸入,每個殘差模塊不能預測輸入的是什麼,從而不會迷失方向。更重要的是,殘差模塊不是希望每一層都直接适合所需的特征映射,而是嘗試學習輸出和輸入之間的差異,這使得任務更加容易,因為所需的信息增益較少。

假設你正在學習數學,對于每一個新的問題,你都會得到一個類似問題的解決方案,所以你需要做的就是擴展這個解決方案,并努力使它發揮作用,這比為你遇到的每一個問題想出一個全新的解決方案要容易得多。或者正如牛頓所說,我們可以站在巨人的肩膀上,Identity輸入就是殘差模塊的那個巨人。

除了Identity Mapping,ResNet還借用了Inception networks的瓶頸和批處理規範化,最終它成功地建立了一個有152個卷積層的網絡,在ImageNet上達到了80.72%的最高精度。

殘差法後來也成為了許多其他網絡的默認選擇,如exception、Darknet等,并且由于其簡潔美觀的設計,在當今許多生産性視覺識别系統中仍被廣泛應用。

随着殘差網絡的大肆宣傳,出現了許多的不變量。在《Identity Mappings in Deep Residual Networks》中,ResNet的原作者把激活放在殘差模塊之前,取得了更好的效果,這一設計後來被稱為ResNetV2。

此外,在2016年的一篇論文“Aggregated Residual Transformations for Deep Neural Networks(聚合深度神經網絡的殘差變換)”中,研究人員提出了ResNeXt,它為殘差模塊添加了并行分支,以聚合不同變換的輸出。

2016年:Xception

Xception:具有深度可分卷積的深度學習。

如何學習計算機視覺系統(快速學習計算機視覺)9

随着ResNet的發布,圖像分類器中的大多數容易實現的目标看起來已經被搶先實現了,研究人員開始考慮研究CNN的内部機制原理。由于跨通道卷積通常會引入大量參數,因此Xception網絡選擇調查此操作以了解其效果的全貌。

就像它的名字一樣,Xception源自Inception網絡。在Inception模塊中,将不同轉換的多個分支聚合在一起以實現拓撲稀疏性,但是為什麼這種稀疏起作用了?Xception的作者,也是Keras框架的作者,将這一思想擴展到了一種極端情況,在這種情況下,一個3x3卷積對應于最後一個串聯之前的一個輸出通道,在這種情況下,這些并行卷積核實際上形成了一個稱為深度卷積的新操作。

如何學習計算機視覺系統(快速學習計算機視覺)10

如上圖所示,與傳統的卷積不同,傳統的卷積方法隻對每個通道分别計算卷積,然後将輸出串聯在一起,這減少了通道之間的特征交換,但也減少了許多連接,因此産生了一個參數較少的層,但是此操作将輸出與輸入相同數量的通道(如果将兩個或多個通道組合在一起,則輸出的通道數更少),因此,一旦信道輸出被合并,我們需要另一個常規的1x1濾波器,或點卷積,來增加或減少信道的數量,就像常規卷積一樣。

這個想法早在一篇名為“Learning visual representations at scale(學習視覺表征的規模)”的論文中有描述,偶爾也會在InceptionV2中使用。Exception更進一步的用這種新類型取代了幾乎所有的卷積。模型實驗結果很好,它超越了ResNet和InceptionV3,成為一種新的SOTA圖像分類方法,這也證明了CNN中的交叉相關和空間相關性的映射可以完全解耦,此外,Exception與ResNet有着相同的優點,它的設計也簡單美觀,因此它的思想也被許多後續的研究所使用,如MobileNet、DeepLabV3等。

2017年:MobileNet

MobileNets:用于移動視覺應用的高效卷積神經網絡。

Exception在ImageNet上獲得了79%的top-1準确率和94.5%的top-5準确率,但與之前的SOTA InceptionV3相比,這兩項改進分别隻有0.8%和0.4%。一種新的圖像分類網絡的邊際收益越來越小,因此研究者開始将注意力轉移到其他領域。MobileNet在資源受限的環境中引領了圖像分類的重大進展。

如何學習計算機視覺系統(快速學習計算機視覺)11

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

如何學習計算機視覺系統(快速學習計算機視覺)12

上式中的分子是深度可分卷積所需的參數總數,分母是相似正則卷積的參數總數,這裡D[K]是卷積核的大小,D[F]是特征映射的大小,M是輸入通道的數目,N是輸出通道的數目。

由于我們将通道和空間特征的計算分開了,所以我們可以将乘法轉化為加法,這是一個較小的數量級,而且從這個比率可以看出,輸出通道的數目越大,使用這種新的卷積就可以節省更多的計算。

MobileNet的另一個貢獻是寬度和分辨率乘數。MobileNet團隊希望找到一種标準的方法來縮小移動設備的模型尺寸,而最直觀的方法就是減少輸入和輸出通道的數量,以及輸入圖像的分辨率。為了控制這種行為,比率alpha與通道相乘,比率rho與輸入分辨率相乘(這也會影響特征映射的大小),因此參數總數可以用以下公式表示:

如何學習計算機視覺系統(快速學習計算機視覺)13

盡管這一變化在創新方面看起來很幼稚,但它具有巨大的工程價值,因為這是研究人員首次總結出一種規範的方法來調整網絡以适應不同的資源限制,同時它也總結了改進神經網絡的最終解決方案:更大分辨率的輸入導緻更好的精度,更薄和低分辨率的輸入導緻更差的精度。

2018年和2019年晚些時候,MobiletNet團隊還發布了MobileNetV2和MobileNetV3。在MobileNetV2中,使用了倒置殘差結構。在MobileNetV3中,它開始使用神經體系結構搜索技術來搜索最佳架構組合,我們将在下面介紹。

2017年:NASNet

學習可轉換的可伸縮圖像識别體系結構。

就像資源受限環境下的圖像分類一樣,神經架構搜索是2017年左右出現的另一個領域。通過ResNet、Inception和exception,我們似乎達到了一個人類可以理解和設計的最佳網絡拓撲結構,但是如果有一個更好、更複雜的組合遠遠超出人類的想象呢?

2016年,一篇名為“Neural Architecture Search with Reinforcement Learning(強化學習的神經結構搜索)”的論文提出了一種利用強化學習在預先定義的搜索空間内搜索最優組合的思想。

強化學習是一種尋找最優解的方法,具有明确的目标和對搜索主體的獎勵,但是由于計算能力的限制,本文隻讨論了在一個小型CIFAR數據集上的應用。

如何學習計算機視覺系統(快速學習計算機視覺)14

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

首先,NASNet假設在像ResNet和exception這樣的良好網絡中常見的手工制作的模塊在搜索時仍然有用,因此NASNet不再搜索随機連接和操作,而是搜索這些模塊的組合,這些模塊已經在ImageNet上被證明是有用的。

其次,實際的搜索仍然是在分辨率為32x32的CIFAR數據集上執行的,因此NASNet隻搜索不受輸入大小影響的模塊。為了使第二點起作用,NASNet預定義了兩種類型的模塊模闆:Reduction和Normal。與輸入相比,還原單元可以具有簡化的特征映射,而對于正常單元,則是相同的。

如何學習計算機視覺系統(快速學習計算機視覺)15

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

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

2019年:效率網

EfficientNet:對卷積神經網絡模型縮放的再思考。

2019年,CNN的監督圖像分類似乎再也沒有令人興奮的想法了。網絡結構的急劇變化通常隻會提高一點點精度,更糟糕的是,當同一個網絡應用于不同的數據集和任務時,先前聲稱的技巧似乎不起作用了,這就導緻了對這些網絡的批評,認為這些改進是否隻是過度适應了ImageNet數據集。

另一方面,有一個技巧永遠不會辜負我們的期望:使用更高分辨率的輸入,為卷積層添加更多通道,并添加更多層。雖然看上去簡單粗暴,但似乎有一個原則性的方法來擴大網絡的需求。MobileNetV1在2017年提出了這一點,但後來重點轉移到了更好的網絡設計上。

如何學習計算機視覺系統(快速學習計算機視覺)16

在NASNet和mNASNet之後,研究人員意識到即使在計算機的幫助下,架構的改變也不會帶來太多的好處,所以他們開始退回到擴大網絡的規模上,效率網就是建立在這個假設之上的。

一方面,它使用從MNASNET的最佳構建塊來确保開始的良好基礎。另一方面,它定義了三個參數alpha、beta和rho來控制網絡的深度、寬度和分辨率,通過這樣做,即使沒有一個大的GPU池來搜索最佳結構,工程師仍然可以依賴這些原則性參數來根據他們的不同需求來調整網絡。

最後,EfficientNet給出了8種不同寬度、深度和分辨率的變體,在小型和大型模型上都取得了良好的性能,換言之,如果你想要高精度,就選擇600x600和66M參數的EfficientNet-B7,如果你想要低延遲和更小的型号,請選擇224x224和5.3M參數的EfficientNet-B0。

閱讀更多

如果你讀完了以上10篇論文,那麼你應該對CNN的圖像分類的發展曆史有了一個相當好的了解。如果你想繼續學習這個領域,可以閱讀下面列出的一些其他有趣的論文,這些論文雖然不在前十名之列,但它們在各自領域都很有名,并激勵了許多其他研究者的研究。

2014年:SPPNet

用于視覺識别的深度卷積網絡中的空間金字塔池。

SPPNet從傳統的計算機視覺特征提取中借鑒了特征金字塔的思想,這種金字塔形成了一個具有不同尺度特征的詞包,可以适應不同的輸入大小,擺脫了固定大小的全連接層。這個想法也進一步啟發了DeepLab的ASPP模塊,以及用于目标檢測的FPN。

2016年:DenseNet

緊密連接的卷積網絡。

康奈爾大學的DenseNet進一步擴展了ResNet的思想,它不僅提供了層間的跳轉連接,而且還提供了所有前一層的跳轉連接。

2017年:SENet

Squeeze-and-Excitation Networks。

Excitation Networks表明,交叉信道相關性與空間相關性沒有太大關系,但是作為上一屆ImageNet競賽的冠軍,SEnet設計了一個Squeeze和Excitation塊,并講述了另一個不同的看法。

SE塊首先使用全局池将所有通道壓縮到較少的通道中,應用全連接的變換,然後使用另一個全連接層将它們“激發”回原始通道數。從本質上講,FC層幫助網絡學習輸入特征映射的注意信息。

2017年:ShuffleNet

ShuffleNet:一種用于移動設備的高效卷積神經網絡。

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

2018年:Bag of Tricks

卷積神經網絡在圖像分類中的應用。

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

結論

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

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved