計算機視覺中經(jīng)典的卷積神經(jīng)網(wǎng)絡結(jié)構
聲明:本文圖片和文字來自百度AI Studio 網(wǎng)站,僅僅是做一個搬運處理,以便于后期需要時查詢。
- LeNet:Yan LeCun等人于1998年第一次將卷積神經(jīng)網(wǎng)絡應用到圖像分類任務上[1],在手寫數(shù)字識別任務上取得了巨大成功。
- AlexNet:Alex Krizhevsky等人在2012年提出了AlexNet[2],并應用在大尺寸圖片數(shù)據(jù)集ImageNet上,獲得了2012年ImageNet比賽冠軍(ImageNet Large ScaleVisual Recognition Challenge,ILSVRC)。
- VGG:Simonyan和Zisserman于2014年提出了VGG網(wǎng)絡結(jié)構[3],是當前最流行的卷積神經(jīng)網(wǎng)絡之一,由于其結(jié)構簡單、應用性極強而深受廣大研究者歡迎。
- GoogLeNet:ChristianSzegedy等人在2014提出了GoogLeNet[4],并取得了2014年ImageNet比賽冠軍。
- ResNet:Kaiming He等人在2015年提出了ResNet[5],通過引入殘差模塊加深網(wǎng)絡層數(shù),在ImagNet數(shù)據(jù)集上的錯誤率降低到3.6%,超越了人眼識別水平。ResNet的設計思想深刻地影響了后來的深度神經(jīng)網(wǎng)絡的設計。
LeNet
- 第一模塊:包含5×5的6通道卷積和2×2的池化。卷積提取圖像中包含的特征模式(**函數(shù)使用sigmoid),圖像尺寸從32減小到28。經(jīng)過池化層可以降低輸出特征圖對空間位置的敏感性,圖像尺寸減到14。
- 第二模塊:和第一模塊尺寸相同,通道數(shù)由6增加為16。卷積操作使圖像尺寸減小到10,經(jīng)過池化后變成5。
- 第三模塊:包含5×5的120通道卷積。卷積之后的圖像尺寸減小到1,但是通道數(shù)增加為120。將經(jīng)過第3次卷積提取到的特征圖輸入到全連接層。第一個全連接層的輸出神經(jīng)元的個數(shù)是64,第二個全連接層的輸出神經(jīng)元個數(shù)是分類標簽的類別數(shù),對于手寫數(shù)字識別其大小是10。然后使用Softmax**函數(shù)即可計算出每個類別的預測概率。
AlexNet
AlexNet與LeNet相比,具有更深的網(wǎng)絡結(jié)構,包含5層卷積和3層全連接,同時使用了如下三種方法改進模型的訓練過程:
- 數(shù)據(jù)增廣:深度學習中常用的一種處理方式,通過對訓練隨機加一些變化,比如平移、縮放、裁剪、旋轉(zhuǎn)、翻轉(zhuǎn)或者增減亮度等,產(chǎn)生一系列跟原始圖片相似但又不完全相同的樣本,從而擴大訓練數(shù)據(jù)集。通過這種方式,可以隨機改變訓練樣本,避免模型過度依賴于某些屬性,能從一定程度上抑制過擬合。
- 使用Dropout抑制過擬合
- 使用ReLU**函數(shù)減少梯度消失現(xiàn)象
VGG
VGG通過使用一系列大小為3x3的小尺寸卷積核和pooling層構造深度卷積神經(jīng)網(wǎng)絡,并取得了較好的效果。
-
VGG-16的網(wǎng)絡結(jié)構示意圖,有13層卷積和3層全連接層。VGG網(wǎng)絡的設計嚴格使用3×3 的卷積層和池化層來提取特征,并在網(wǎng)絡的最后面使用三層全連接層,將最后一層全連接層的輸出作為分類的預測。
-
在VGG中每層卷積將使用ReLU作為**函數(shù),在全連接層之后添加dropout來抑制過擬合。使用小的卷積核能夠有效地減少參數(shù)的個數(shù),使得訓練和測試變得更加有效。
GoogLeNet
GoogLeNet是2014年ImageNet比賽的冠軍,它的主要特點是網(wǎng)絡不僅有深度,還在橫向上具有“寬度”。由于圖像信息在空間尺寸上的巨大差異,如何選擇合適的卷積核大小來提取特征就顯得比較困難了??臻g分布范圍更廣的圖像信息適合用較大的卷積核來提取其特征,而空間分布范圍較小的圖像信息則適合用較小的卷積核來提取其特征。為了解決這個問題,GoogLeNet提出了一種被稱為Inception模塊的方案。
- Inception模塊的設計思想,使用3個不同大小的卷積核對輸入圖片進行卷積操作,并附加最大池化,將這4個操作的輸出沿著通道這一維度進行拼接,構成的輸出特征圖將會包含經(jīng)過不同大小的卷積核提取出來的特征。Inception模塊采用多通路(multi-path)的設計形式,每個支路使用不同大小的卷積核,最終輸出特征圖的通道數(shù)是每個支路輸出通道數(shù)的總和,這將會導致輸出通道數(shù)變得很大,尤其是使用多個Inception模塊串聯(lián)操作的時候,模型參數(shù)量會變得非常大。為了減小參數(shù)量,Inception模塊使用了圖(b)中的設計方式,在每個3x3和5x5的卷積層之前,增加1x1的卷積層來控制輸出通道數(shù);在最大池化層后面增加1x1卷積層減小輸出通道數(shù)。
GoogLeNet的架構如 圖5 所示,在主體卷積部分中使用5個模塊(block,每個模塊之間使用步幅為2的3 ×3最大池化層來減小輸出高寬。
第一模塊使用一個64通道的7 × 7卷積層。
第二模塊使用2個卷積層:首先是64通道的1 × 1卷積層,然后是將通道增大3倍的3 × 3卷積層。
第三模塊串聯(lián)2個完整的Inception塊。
第四模塊串聯(lián)了5個Inception塊。
第五模塊串聯(lián)了2 個Inception塊。
第五模塊的后面緊跟輸出層,使用全局平均池化 層來將每個通道的高和寬變成1,最后接上一個輸出個數(shù)為標簽類別數(shù)的全連接層。
說明: 在原作者的論文中添加了圖中所示的softmax1和softmax2兩個輔助分類器,如下圖所示,訓練時將三個分類器的損失函數(shù)進行加權求和,以緩解梯度消失現(xiàn)象。這里的程序作了簡化,沒有加入輔助分類器。
ResNet
通過前面幾個經(jīng)典模型學習,我們可以發(fā)現(xiàn)隨著深度學習的不斷發(fā)展,模型的層數(shù)越來越多,網(wǎng)絡結(jié)構也越來越復雜。那么是否加深網(wǎng)絡結(jié)構,就一定會得到更好的效果呢?從理論上來說,假設新增加的層都是恒等映射,只要原有的層學出跟原模型一樣的參數(shù),那么深模型結(jié)構就能達到原模型結(jié)構的效果。換句話說,原模型的解只是新模型的解的子空間,在新模型解的空間里應該能找到比原模型解對應的子空間更好的結(jié)果。但是實踐表明,增加網(wǎng)絡的層數(shù)之后,訓練誤差往往不降反升。
Kaiming He等人提出了殘差網(wǎng)絡ResNet來解決上述問題,其基本思想如 圖6所示。
ResNet50
總結(jié):這里介紹了幾種經(jīng)典的圖像分類模型,分別是LeNet, AlexNet, VGG, GoogLeNet和ResNet。除了LeNet不適合大尺寸的圖像分類問題之外,其它幾個模型在此數(shù)據(jù)集上損失函數(shù)都能顯著下降,在驗證集上的預測精度在90%左右。
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請
點擊舉報。