【深度學(xué)習(xí)】VGGNet原理解析及實(shí)現(xiàn)
VGGNet由牛津大學(xué)的視覺(jué)幾何組(Visual Geometry Group)和Google DeepMind公司的研究員共同提出,是ILSVRC-2014中定位任務(wù)第一名和分類(lèi)任務(wù)第二名。其突出貢獻(xiàn)在于證明使用很小的卷積(3*3),增加網(wǎng)絡(luò)深度可以有效提升模型的效果,而且VGGNet對(duì)其他數(shù)據(jù)集具有很好的泛化能力。到目前為止,VGGNet依然經(jīng)常被用來(lái)提取圖像特征。
VGGNet探索了CNN的深度及其性能之間的關(guān)系,通過(guò)反復(fù)堆疊3*3的小型卷積核和2*2的最大池化層,VGGNet成功的構(gòu)筑了16-19層深的CNN。
一、VGGNet結(jié)構(gòu)
VGGNet有A-E七種結(jié)構(gòu),從A-E網(wǎng)絡(luò)逐步變深,但是參數(shù)量并沒(méi)有增長(zhǎng)很多(圖6-7),原因?yàn)椋簠?shù)量主要消耗在最后3個(gè)全連接層,而前面的卷積層雖然層數(shù)多,但消耗的參數(shù)量不大。不過(guò),卷積層的訓(xùn)練比較耗時(shí),因?yàn)槠溆?jì)算量大。
其中,D和E是常說(shuō)的VGGNet-16和VGGNet-19。C很有意思,相比于B多了幾個(gè)1*1的卷積層,1*1卷積的意義在于線(xiàn)性變換,而輸入的通道數(shù)和輸出的通道數(shù)不變,沒(méi)有發(fā)生降維。
VGG的性能:
VGGNet網(wǎng)絡(luò)特點(diǎn):
VGGNet擁有5段卷積,每段卷積內(nèi)有2-3個(gè)卷積層,同時(shí)每段尾部都會(huì)連接一個(gè)最大池化層(用來(lái)縮小圖片)。
每段內(nèi)的卷積核數(shù)量一樣,越后邊的段內(nèi)卷積核數(shù)量越多,依次為:64-128-256-512-512
越深的網(wǎng)絡(luò)效果越好。(圖6-9)
LRN層作用不大(作者結(jié)論)
11的卷積也是很有效的,但是沒(méi)有33的卷積好,大一些的卷積核可以學(xué)習(xí)更大的空間特征。
為什么一個(gè)段內(nèi)有多個(gè)3*3的卷積層堆疊?
這是個(gè)非常有用的設(shè)計(jì)。如下圖所示,2個(gè)33的卷積層串聯(lián)相當(dāng)于1個(gè)55的卷積層,即一個(gè)像素會(huì)跟周?chē)?5的像素產(chǎn)生關(guān)聯(lián),可以說(shuō)感受野大小為55。而3個(gè)33的卷積層相當(dāng)于1個(gè)77的卷積層。并且,兩個(gè)33的卷積層的參數(shù)比1個(gè)55的更少,前者為233=18,后者為155=25。
更重要的是,2個(gè)33的卷積層比1個(gè)55的卷積層有更多的非線(xiàn)性變換(前者可使用2次ReLu函數(shù),后者只有兩次),這使得CNN對(duì)特征的學(xué)習(xí)能力更強(qiáng)。
所以3*3的卷積層堆疊的優(yōu)點(diǎn)為:
(1)參數(shù)量更小
(2)小的卷積層比大的有更多的非線(xiàn)性變換,使得CNN對(duì)特征的學(xué)習(xí)能力更強(qiáng)。
與其他網(wǎng)絡(luò)對(duì)比:
與ILSVRC-2012和ILSVRC-2013最好結(jié)果相比,VGGNet優(yōu)勢(shì)很大。與GoogLeNet對(duì)比,雖然7個(gè)網(wǎng)絡(luò)集成效果不如GoogLeNet,但是單一網(wǎng)絡(luò)測(cè)試誤差好一些,而且只用2個(gè)網(wǎng)絡(luò)集成效果與GoogLeNet的7網(wǎng)絡(luò)集成差不多。