您好,登錄后才能下訂單哦!
什么是Inception以及GoogleNet結構,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
googleNet是2014年的ILSVRC的冠軍模型,GoogleNet做了更大膽的網絡上的嘗試,而不是像vgg繼承了lenet以及alexnet的一切框架。GoogleNet雖然有22層,但是參數量只有AlexNet的1/12。
GoogleNet論文指出獲得高質量模型最保險的做法就是增加模型的深度,或者是它的寬度,但是一般情況下,更深和更寬的網絡會出現以下問題:
總之更大的網絡容易產生過擬合,并且增加了計算量
【GoogleNet給出的解決方案】
GoogleNet為了保持神經網絡結構的稀疏性,又能充分利用密集矩陣的高計算性能,提出了名為Inception的模塊化結構來實現此目的。依據就是大量文獻都表明,將稀疏矩陣聚類為比較密集的子矩陣可以提高計算性能。(這一塊我沒有很明白,是百度到的知識,但是關鍵在于GoogleNet提出了Inception這個模塊化結構,在2020年的今日,這個模塊依然有巨大作用)
這是一種王中王結構,哦不,是網中網結構(Network in Network)。就是原來的節點也是一個網絡,使用了Inception,這個網絡結構的寬度和深度都可以擴大。從而帶來性能的提升。解釋說明:
從網上找了一張GoogleNet的美圖:
還有一個:
GoogLeNet網絡結構明細表解析如下:
0、輸入
原始輸入圖像為224x224x3,且都進行了零均值化的預處理操作(圖像每個像素減去均值)。
1、第一層(卷積層)
使用7x7的卷積核(滑動步長2,padding為3),64通道,輸出為112x112x64,卷積后進行ReLU操作
經過3x3的max pooling(步長為2),輸出為((112 - 3+1)/2)+1=56,即56x56x64,再進行ReLU操作
2、第二層(卷積層)
使用3x3的卷積核(滑動步長為1,padding為1),192通道,輸出為56x56x192,卷積后進行ReLU操作
經過3x3的max pooling(步長為2),輸出為((56 - 3+1)/2)+1=28,即28x28x192,再進行ReLU操作
3a、第三層(Inception 3a層)
分為四個分支,采用不同尺度的卷積核來進行處理
(1)64個1x1的卷積核,然后RuLU,輸出28x28x64
(2)96個1x1的卷積核,作為3x3卷積核之前的降維,變成28x28x96,然后進行ReLU計算,再進行128個3x3的卷積(padding為1),輸出28x28x128
(3)16個1x1的卷積核,作為5x5卷積核之前的降維,變成28x28x16,進行ReLU計算后,再進行32個5x5的卷積(padding為2),輸出28x28x32
(4)pool層,使用3x3的核(padding為1),輸出28x28x192,然后進行32個1x1的卷積,輸出28x28x32。
將四個結果進行連接,對這四部分輸出結果的第三維并聯,即64+128+32+32=256,最終輸出28x28x256
3b、第三層(Inception 3b層)
(1)128個1x1的卷積核,然后RuLU,輸出28x28x128
(2)128個1x1的卷積核,作為3x3卷積核之前的降維,變成28x28x128,進行ReLU,再進行192個3x3的卷積(padding為1),輸出28x28x192
(3)32個1x1的卷積核,作為5x5卷積核之前的降維,變成28x28x32,進行ReLU計算后,再進行96個5x5的卷積(padding為2),輸出28x28x96
(4)pool層,使用3x3的核(padding為1),輸出28x28x256,然后進行64個1x1的卷積,輸出28x28x64。
將四個結果進行連接,對這四部分輸出結果的第三維并聯,即128+192+96+64=480,最終輸出輸出為28x28x480
第四層(4a,4b,4c,4d,4e)、第五層(5a,5b)……,與3a、3b類似,在此就不再重復。
到這里!我們看美圖應該能看出來一點,GoogleNet的結構就是3+3+3總共九個inception模塊組成的,每個Inception有兩層,加上開頭的3個卷積層和輸出前的FC層,總共22層!然后每3層的inception之后都會有一個輸出結果,這個網絡一共有三個輸出結果,這是什么情況呢?
這個是輔助分類器,GoogleNet用到了輔助分類器。因為除了最后一層的輸出結果,中間節點的分類效果也可能是很好的,所以GoogleNet將中間的某一層作為輸出,并以一個較小的權重加入到最終分類結果中。其實就是一種變相的模型融合,同時給網絡增加了反向傳播的梯度信號,也起到了一定的正則化的作用。
最后,我再提出兩個問題:
如果使用1x1進行特征壓縮,是否會影響最終結果?回答:不會,作者的解釋是,如果你想要把特征厚度從128變成256,你可以直接用3x3進行特征提取。如果你先用1x1進行壓縮到64,然后再用3x3把64channel的特征擴展成256,其實對后續的精度沒有影響,而且減少了運算次數。
為什么inception是多個尺度上進行卷積再聚合?回答:直觀上,多個尺度上同時卷積可以提取到不同尺度的特征。而這也意味著最后分類判斷更加準確。除此之外,這是可以利用稀疏矩陣分解成密集矩陣計算的原理來加快收斂速度。(第二個好處沒有太看懂) 個人淺顯的理解就是:提取多個尺度的特征,再聚合的時候,就可以找到關聯性強的特征,這樣就能避免浪費在關聯性較弱的特征上的計算力吧。
關于什么是Inception以及GoogleNet結構問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。