1、InceptionNet 出現(xiàn)解決的問題
既然網(wǎng)絡(luò)中的結(jié)構(gòu)可以千變?nèi)f化,那能不在參數(shù)量一樣的前提下,讓網(wǎng)絡(luò)更加有效,這就是InceptionNet 的主要思想。
2、InceptionNet 介紹
2-1、InceptionNet V1
InceptionNet V1網(wǎng)絡(luò)的參數(shù)量只有6.9兆,模型大小大約50M。
為什么InceptionNet V1t網(wǎng)絡(luò)的參數(shù)這么少呢?我們先來看一下它的基本單元的結(jié)構(gòu):
主要原因就是它有效的利用了1* 1 的卷積核。不同于VGGNet從上到下的類似于一個串聯(lián)的結(jié)構(gòu),Inception的結(jié)構(gòu)表現(xiàn)為一個網(wǎng)中網(wǎng)的結(jié)構(gòu)。也就是說,對于我們中間的一個隱藏層層,它的每個節(jié)點(diǎn)也都是一個卷積網(wǎng)絡(luò)。對于前一層傳入進(jìn)來的特征圖,這層的每一個節(jié)點(diǎn)對它進(jìn)行了1* 1 、3* 3、5* 5的卷積和3* 3的max pooling操作。
其中值得一提的是,在3* 3和5* 5 的卷積操作之前,該網(wǎng)絡(luò)用1* 1 的卷積核降低了輸入層的通道的數(shù)目,1* 1 的卷積核通常理解在通道上的一種非線性變換。例如:我們的輸入是一個56* 56 * 128維的這么一個特征(這時候128就是我們通道的數(shù)量)。我們通過一個1* 1 的卷積核,可以將通道數(shù)降為32,然后我們將它再輸入到3* 3的卷積核中。從上圖可知,對于前一層的輸入,會進(jìn)行四組操作,那么輸出通道的數(shù)目也可以均分給每一組。這樣,大大減少了計算量。
2-2、InceptionNet V2/V3
在v2/v3中,他們有效的利用了這個知識。在VggNet中,提到了通過連續(xù)的兩層3* 3的卷積核代替掉了5* 5的卷積核。而在Inception v3中,工程師們將進(jìn)行進(jìn)一步優(yōu)化,用n* 1 和 1* n的卷積核代替了n* n的卷積核。這樣既保證了視野域,也將參數(shù)減少很多。比如:原來的視野域為 7 * 7 ,換做 7 * 1 和 1 * 7 后,參數(shù)減少了 (49-14) / 49 = 5/7。
通過這樣的操作,我們能夠?qū)崿F(xiàn)什么樣的效果呢?
首先,參數(shù)量降低,計算量減少。拆分大的卷積核后,網(wǎng)絡(luò)變深,網(wǎng)絡(luò)非線性表達(dá)能力更強(qiáng)(因為在每一個卷積層后面都可以增加一個激活層)。要注意的是,在實驗中偉大的先行者們發(fā)現(xiàn),并不是拆分都能達(dá)到很好的效果。卷積的拆分最好是用在中間的部分,不要在圖像的開始就進(jìn)行這樣的拆分。
2-3、InceptionNet V4
InceptionNet V4 的思想中,集成了殘差網(wǎng)絡(luò)的跳連。