GoogLeNet
GoogLeNet最早出現(xiàn)在2014年的《Going deeper with convolutions》,之所以叫GoogLeNet,而不是GoogleNet,文章說是為了向早期的LeNet致敬。GoogLeNet是谷歌團(tuán)隊(duì)為了參加ILSVRC 2014(ImageNet?Large Scale Visual Recognition Challenge)比賽而精心準(zhǔn)備的。GoogLeNet,在2014年ILSVRC挑戰(zhàn)賽上獲得冠軍,將Top5的錯誤率降低到6.67%。總體上是一個22層的深度網(wǎng)絡(luò)。
GoogLeNet憑借其優(yōu)秀的表現(xiàn),得到了很多研究人員的學(xué)習(xí)和使用,因此Google團(tuán)隊(duì)又對其進(jìn)行了進(jìn)一步發(fā)掘改進(jìn),產(chǎn)生了升級版本的GoogLeNet。文章為:《Rethinking the Inception Architecture for Computer Vision》。
一、GoogLeNet V1(第一個版本)
一般來說,提升網(wǎng)絡(luò)性能最直接的辦法就是增加網(wǎng)絡(luò)深度和寬度,這也就意味著更巨量的參數(shù)。但是,巨量參數(shù)容易產(chǎn)生過擬合,也會大大增加計算量。文章認(rèn)為解決上述兩個缺點(diǎn)的根本方法是將全連接甚至一般的卷積都轉(zhuǎn)化為稀疏連接。參考文獻(xiàn)《Provable bounds for learning some deep representations. CoRR, abs/1310.6343, 2013.》認(rèn)為對于大規(guī)模稀疏的神經(jīng)網(wǎng)絡(luò),可以通過分析激活值的統(tǒng)計特性和對高度相關(guān)的輸出進(jìn)行聚類來逐層構(gòu)建出一個最優(yōu)網(wǎng)絡(luò)。所以,為了既能保持網(wǎng)絡(luò)結(jié)構(gòu)的稀疏性,又能利用密集矩陣的高計算性能,論文提出了inception的結(jié)構(gòu)!
1、inception結(jié)構(gòu)
Inception 結(jié)構(gòu)的主要思路是用密集成分來近似最優(yōu)的局部稀疏結(jié)構(gòu)。作者首先提出下圖這樣的基本結(jié)構(gòu):
對于上圖的解釋為:
但是,使用5x5卷積核仍然會帶來巨大的計算量。因此論文借鑒了NIN《Min Lin, Qiang Chen, and Shuicheng Yan. Network in network. CoRR, abs/1312.4400, 2013》,采用1x1卷積核來進(jìn)行降維。
關(guān)于1x1卷積核來進(jìn)行降維,舉個例子:
假如上一層的輸出為100x100x128,經(jīng)過具有256個輸出的5x5卷積層之后(stride=1,pad=2),輸出數(shù)據(jù)為100x100x256。其中,卷積層的參數(shù)為128x5x5x256。此時如果上一層輸出先經(jīng)過具有32個輸出的1x1卷積層,再經(jīng)過具有256個輸出的5x5卷積層,那么最終的輸出數(shù)據(jù)仍為為100x100x256,但卷積參數(shù)量已經(jīng)減少為128x1x1x32 + 32x5x5x256,大約減少了4倍。
改進(jìn)后(降維)的Inception Module如下圖:
2、GoogLeNet網(wǎng)絡(luò)結(jié)構(gòu)
對于上圖的GoogLeNet網(wǎng)絡(luò)結(jié)構(gòu),做如下幾點(diǎn)說明:
另外,為了達(dá)到最佳的性能,除了使用上述的網(wǎng)絡(luò)結(jié)構(gòu)外,還做了大量的輔助工作:包括訓(xùn)練多個model求平均、裁剪不同尺度的圖像做多次驗(yàn)證等等。詳細(xì)的這些可以參看文章的實(shí)驗(yàn)部分。本文的主要想法其實(shí)是想通過構(gòu)建密集的塊結(jié)構(gòu)來近似最優(yōu)的稀疏結(jié)構(gòu),從而達(dá)到提高性能而又不大量增加計算量的目的。GoogleNet的caffemodel大小約50M,但性能卻很優(yōu)異。
二、GoogLeNet V2(改進(jìn)版本)
GoogLeNet V1出現(xiàn)的同期,性能與之接近的大概只有VGGNet了,并且二者在圖像分類之外的很多領(lǐng)域都得到了成功的應(yīng)用。但是相比之下,GoogLeNet的計算效率明顯高于VGGNet,大約只有500萬參數(shù)。只相當(dāng)于VGGNet的1/12(GoogLeNet的caffemodel大約50M,VGGNet的caffemodel則要超過600M)。
GoogLeNet的表現(xiàn)很好,但是如果想要通過簡單地放大Inception結(jié)構(gòu)來構(gòu)建更大的網(wǎng)絡(luò),則會立即提高計算消耗。此外,在V1版本中,文章也沒給出有關(guān)構(gòu)建Inception結(jié)構(gòu)注意事項(xiàng)的清晰描述。因此,在V2中作者首先給出了一些已經(jīng)被證明有效的用于放大網(wǎng)絡(luò)的通用準(zhǔn)則和優(yōu)化方法。這些準(zhǔn)則和方法適用但不局限于Inception結(jié)構(gòu)。
上述的這些并不能直接用來提高網(wǎng)絡(luò)質(zhì)量,而僅用來在大環(huán)境下作指導(dǎo)。
1、把大的卷積核用若干個小的串聯(lián)起來(Factorizing Convolutions with Large Filter Size)
大尺寸的卷積核可以帶來更大的感受野,但也意味著更多的參數(shù),比如5x5卷積核參數(shù)是3x3卷積核的25/9=2.78倍。為此,作者提出可以用2個連續(xù)的3x3卷積層(stride=1)組成的小網(wǎng)絡(luò)來代替單個的5x5卷積層,(保持感受野范圍的同時又減少了參數(shù)量)如下圖:
從上面來看,大卷積核完全可以由一系列的3x3卷積核來替代。那3x3卷積核能不能分解的更小呢,文章考慮了nx1 卷積核:
任意nxn的卷積核都可以通過1xn卷積后接nx1卷積來替代。實(shí)際上,作者發(fā)現(xiàn)在網(wǎng)絡(luò)的前期使用這種分解效果并不好,還有在中度大小的feature map上使用效果才會更好。(對于nxn大小的feature map,建議n在12到20之間)。
網(wǎng)絡(luò)結(jié)構(gòu)對比如下:
總結(jié)
- 上一篇: BOM的相关知识
- 下一篇: 兀键和6键怎么判断_高中有机化学大兀键怎