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