最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

27 含并行連結(jié)的網(wǎng)絡(luò) GoogLeNet / Inception V3【動(dòng)手學(xué)

2022-02-21 14:44 作者:如果我是泡橘子  | 我要投稿

GoogLeNet


  • GoogLeNet在2014年ImageNet圖像識(shí)別挑戰(zhàn)賽中大放異彩
  • 雖然NiN現(xiàn)在基本上沒(méi)有被使用了,但是GoogLeNet現(xiàn)在還是大量地被使用
  • GoogLeNet是第一次做到快100層卷積層(第一個(gè)做到超過(guò)100層的卷積神經(jīng)網(wǎng)絡(luò),這里不是說(shuō)有100層深,而是說(shuō)網(wǎng)絡(luò)中卷積層的個(gè)數(shù)超過(guò)了100)
  • GoogLeNet名字中的L是大寫的,也是為了致敬LeNet,雖然它跟LeNet并沒(méi)有什么關(guān)系
  • GoogLeNet的設(shè)計(jì)受到了NiN很大的影響,吸收了NiN中串聯(lián)網(wǎng)絡(luò)的思想,并在此基礎(chǔ)上做了改進(jìn)



LeNet、AlexNet、VGG和NiN






GoogLeNet


Inception塊


GoogLeNet中最重要的是Inception塊,在這個(gè)塊中抽取了不同的通道,不同的通道有不同的設(shè)計(jì),如下圖所示,Inception塊通過(guò)四條路經(jīng)從不同的層面抽取信息,然后在輸出通道維合并:

  • 前三條路徑使用窗口大小為1 * 1、3 * 3、5 * 5的卷積層,從不同的空間大小中提取信息
  • 中間兩條路徑在輸入上執(zhí)行1 * 1卷積,以減少通道數(shù),從而降低模型的復(fù)雜性
  • 第四條路經(jīng)使用3 * 3最大匯聚層,然后使用1 * 1卷積層來(lái)改變通道數(shù)
  • 四條路徑都是用合適的填充來(lái)使輸入和輸出的高寬一致
  • 最后每條線路的輸出在通道維度上連結(jié),得到Inception塊的輸出
  • 在Inception塊中,通常調(diào)整的超參數(shù)是每層輸出通道數(shù)

具體過(guò)程:

首先,輸入被復(fù)制成了四塊(之前所遇到的都是一條路直接到最后):

  • 第一條路先進(jìn)入一個(gè)1 *1的卷積層再輸出
  • 第二條路先通過(guò)一個(gè)1 * 1的卷積層對(duì)通道做變換,再通過(guò)一個(gè)pad為1的3 * 3的卷積層,使得輸入和輸出的高寬相同
  • 第三條路先通過(guò)一個(gè)1 * 1的卷積層對(duì)通道數(shù)做變換,不改變高寬,但是再通過(guò)一個(gè)pad為2的5 * 5的卷積層提取空間信息特征,輸入和輸出還是等高等寬
  • 第四條路先通過(guò)一個(gè)pad為1的3 * 3的最大池化層,再通過(guò)一個(gè)1 * 1的卷積層

因?yàn)檫@四條路都沒(méi)有改變高寬,最后用一個(gè)contact的操作將它們的輸出合并起來(lái)(不是將四張圖片放在一起形成一張更大的圖片,而是在輸出的通道數(shù)上做合并,最終的輸出和輸入等同高寬,但是輸出的通道數(shù)更多,因?yàn)槭撬臈l路輸出的通道數(shù)合并在一起的),因此,輸出的高寬是不變的,改變的只有它的通道數(shù)

在這個(gè)結(jié)構(gòu)中,基本上各種形狀的卷積層和最大池化層等都有了,所以就不用過(guò)多地糾結(jié)于卷積層尺寸的選擇



為什么GoogLeNet這么有效?

  • 濾波器(filter)的組合:可以使用各種不同的濾波器尺寸探索圖像,這就意味著不同大小的濾波器可以有效地識(shí)別不同范圍的圖像細(xì)節(jié)
  • 可以為不同的濾波器分配不同數(shù)量的參數(shù)



Inception塊的通道數(shù)


  • 第一個(gè)Inception塊的通道數(shù)如下圖所示

假設(shè)輸入的通道數(shù)是192,高寬是28 * 28

因?yàn)樵贗nception塊中,高寬是不變的,所以上圖中只標(biāo)出了通道數(shù)的變化:

  • 通過(guò)第一條路時(shí),經(jīng)過(guò)第一個(gè)卷積層直接將通道數(shù)壓縮到了64
  • 經(jīng)過(guò)第二條路時(shí),先經(jīng)過(guò)一個(gè)1 * 1的卷積層將通道數(shù)從192壓縮到了96(這里為什么要壓縮到96?因?yàn)橄胍押笠粚? * 3的卷積層的輸入數(shù)降低,通過(guò)降低輸入通道數(shù)來(lái)降低模型的復(fù)雜度,因?yàn)槟P蛷?fù)雜度可以認(rèn)為是可以學(xué)習(xí)的參數(shù)的個(gè)數(shù),卷積層可學(xué)習(xí)參數(shù)的個(gè)數(shù)是輸入通道 * 輸出通道 * 卷積核的大?。? * 3),所以這里要將192壓縮為96),然后再經(jīng)過(guò)一個(gè)3 * 3的卷積層后,通道數(shù)增加到128
  • 經(jīng)過(guò)第三條路時(shí),先通過(guò)一個(gè)3 * 3的卷積層將通道數(shù)壓縮到16,再經(jīng)過(guò)一個(gè)5 * 5的卷積層(這里分配的通道數(shù)并不多)增加到32
  • 經(jīng)過(guò)第四條路時(shí),首先經(jīng)過(guò)一個(gè)3 * 3的最大池化層,這里并不會(huì)改變通道數(shù),然后經(jīng)過(guò)一個(gè)1 * 1的卷積層之后,通道數(shù)直接由192降到了32

總的來(lái)說(shuō),上圖中標(biāo)記為白色的卷積層可以認(rèn)為是用來(lái)改變通道數(shù)的,要么改變輸入要么改變輸出;標(biāo)記為藍(lán)色的卷積層可以認(rèn)為是用來(lái)抽取信息的,第1條路中標(biāo)記為藍(lán)色的卷積層不抽取空間信息,只抽取通道信息,第2、3條路中標(biāo)記為藍(lán)色的卷積層是用來(lái)抽取空間信息的,第4條路中標(biāo)記為藍(lán)色的最大池化層也是用來(lái)抽取空間信息的,增強(qiáng)魯棒性

經(jīng)過(guò)Inception塊之后,最后輸出的通道數(shù)由輸入的192變成了64+128+32+32=256,每個(gè)通道都會(huì)識(shí)別一些特定的模型,所以應(yīng)該把重要的通道數(shù)留給重要的通道(這里的意思應(yīng)該是類似于:輸入進(jìn)來(lái)之后被復(fù)制成了四份,然后經(jīng)過(guò)四條不同的路,最終進(jìn)行通道數(shù)的合并,在輸出通道數(shù)固定的情況下,四條路的最終輸出的通道數(shù)是不一樣的,所以可以將有限的輸出通道數(shù)分配給不同的路徑,有一點(diǎn)像權(quán)重,就比如上圖中給第二條路分配了128個(gè)輸出通道數(shù),接近一半的通道數(shù)都留給了3 * 3的卷積層,因?yàn)? * 3的卷積層計(jì)算量不大同時(shí)能夠很好地抽取信息,剩下通道數(shù)的一半分給了1 * 1的卷積層,然后再剩下給第3、4條路平分),大致的設(shè)計(jì)思路就是這樣,但是具體所使用的數(shù)值也是調(diào)出來(lái)的



為什么要用Inception塊?


  • 假設(shè)輸入是64,輸出是128
  • 如果使用Inception的話,模型參數(shù)大概有0.16M
  • 如果只用3 * 3的卷積而不用Inception塊的話,模型參數(shù)大概有0.44M
  • 如果只用5 * 5的卷積而不用Inception塊的話,模型參數(shù)大概有1.22M(卷積窗口變大了,所以模型參數(shù)變多了)
  • 由此可以得出,Inception通過(guò)各種塊的設(shè)計(jì)以及通過(guò)1 * 1的卷積層來(lái)降低通道數(shù),從而使得參數(shù)數(shù)量和計(jì)算量大幅度減少
  • Inception的優(yōu)點(diǎn):不僅增加了網(wǎng)絡(luò)結(jié)構(gòu)的多樣性(有大量不同設(shè)置的卷積層),而且參數(shù)數(shù)量和計(jì)算量都顯著降低了



GoogLeNet架構(gòu)


  • GoogLeNet一共使用了9個(gè)Inception塊全局平均匯聚層(避免在最后使用全連接層)的堆疊來(lái)生成估計(jì)值,第一個(gè)模塊類似于AlexNet和LeNet,Inception塊的組合從VGG繼承
  • Inception塊之間的最大匯聚層可以降低維度
  • GoogLeNet由大量的Inception塊組成,如上圖所示,總共分成了5個(gè)stage(有點(diǎn)類似于VGG,高寬減半一次為1個(gè)stage)
  • GoogLeNet中總共有9個(gè)Inception塊,主要集中在stage 3(2個(gè))、stage 4(5個(gè))和stage 5(2個(gè))
  • GoogLeNet中大量地使用了1 * 1的卷積,把它當(dāng)成全連接來(lái)使用,來(lái)做通道數(shù)的變換(受到NiN的影響)
  • GoogLeNet中也使用了全局平均池化層
  • 因?yàn)樽詈鬀](méi)有設(shè)置Inception塊使得最后的輸出通道數(shù)等于標(biāo)簽的類別數(shù),所以在倒數(shù)第二步做完全局平均池化之后會(huì)拿到一個(gè)長(zhǎng)為通道數(shù)的向量,最后再通過(guò)一個(gè)全連接層映射到標(biāo)號(hào)所要的類別數(shù)(這里并沒(méi)有強(qiáng)求最后的輸出通道數(shù)一定要等于標(biāo)簽類別數(shù),做了簡(jiǎn)化,更加靈活)



具體結(jié)構(gòu):

1、Stage 1:

第一個(gè)模塊使用了一個(gè)卷積層和一個(gè)最大池化層:

  • 第一個(gè)模塊先使用了一個(gè)64通道7 * 7的卷積層(stride = 2,padding = 3)
  • 然后使用了一個(gè)3 * 3的最大池化層(stride = 2,padding = 1)

2、Stage 2:

第二個(gè)模塊使用了兩個(gè)卷積層和一個(gè)最大池化層

  • 第一個(gè)卷積層是64通道1 * 1的卷積層
  • 第二個(gè)卷積層是192通道的3 * 3的卷積層(stride = 3,padding = 1)
  • 最大池化層的窗口大小為3 * 3(stride = 2,padding = 1)

3、Stage 3:

第三個(gè)模塊串聯(lián)了兩個(gè)完整的Inception塊和一個(gè)最大池化層

  • 第一個(gè)Inception塊的輸出通道數(shù)為:64 + 128 + 32 + 32 = 256,四條路經(jīng)之間的輸出通道數(shù)量比是:64 :128 :32 :32 = 2 :4 :1 :1。第二條和第三條路徑首先將輸入通道的數(shù)量分別由192減少到96和16,然后連接第二個(gè)卷積層(Inception(192,64,(96,128),(16,32),32))
  • 第二個(gè)Inception塊的輸出通道數(shù)增加到128 + 192 + 96 + 64 = 480,四條路經(jīng)之間的輸出通道數(shù)量比為128 :192 :96 :64 = 4 :6 :3 :2,第二條和第三條路徑首先將輸入通道數(shù)量分別由256減少到128和32,然后連接第二個(gè)卷積層(Inception(256,128,(128,192),(32,96),64))
  • 最大池化層的窗口大小為3 * 3(stride = 2,padding = 1)

4、Stage 4:

第四個(gè)模塊串聯(lián)了5個(gè)Inception塊和一個(gè)最大池化層

  • 第一個(gè)Inception塊的輸出通道數(shù)為:192 + 208 + 48 + 64 = 512(Inception(480,192,(96,208),(16,48),64))
  • 第二個(gè)Inception塊的輸出通道數(shù)為:160 + 224 + 64 + 64 =512(Inception(512,160,(112,224),(24,64),64))
  • 第三個(gè)Inception塊的輸出通道數(shù)為:128 + 256 + 64 + 64 = 512(Inception(512,128,(128,256),(24,64),64))
  • 第四個(gè)Inception塊的輸出通道數(shù)為:112 + 288 + 64 + 64 =528 (Inception(512,112,(144,288),(32,64),64))
  • 第五個(gè)Inception塊的輸出通道數(shù)為:256 + 320 +128 + 128 = 832(Inception(528,256,(160,320),(32,128),128 ))

以上這些路徑的通道數(shù)分配和和第三模塊中的類似

  • 第一條路經(jīng)僅含1 * 1的卷積層
  • 含3 * 3卷積層的第二條路徑輸出最多通道
  • 含5 * 5卷積層的第三條路經(jīng)
  • 含3 * 3最大匯聚層的第四條路經(jīng)
  • 第二、第三條路徑都會(huì)先按比例減小通道數(shù)

5、Stage 5:

第五個(gè)模塊中有兩個(gè)Inception塊和一個(gè)輸出層:

  • 第一個(gè)Inception塊的輸出通道數(shù)為:256 + 320 + 128 +128 = 832(Inception(832,256,(160,320),(32,128),128))
  • 第二個(gè)Inception塊的輸出通道數(shù)為:384 + 384 + 128 +128 = 1024(Inception(832,384,(192,384),(48,128),128))
  • 輸出層和NiN一樣使用全局平均匯聚層,將每個(gè)通道的高和寬變成1
  • 最后將輸出變成二維數(shù)組,再接上一個(gè)輸出個(gè)數(shù)為標(biāo)簽類別數(shù)的全連接層 nn.Linear(1024,10)

以上這些路徑通道數(shù)的分配思路和第三、第四模塊一致



stage 1 & stage 2


對(duì)比GoogLeNet和AlexNet


  • GoogLeNet的窗口更小,最終的高寬更大,使得這之后能夠使用更深的網(wǎng)絡(luò)



stage 3


  • stage 3使用了2個(gè)Inception塊,高寬從28 * 28變成了14 *14,但是通道數(shù)從192變成了480
  • 這兩個(gè)Inception塊的通道數(shù)的分配是不一樣的
    ?
    GoogLeNet P1 - 17:04
    ?



stage 4 & stage 5




Inception的變種


Inception-BN(V2):使用batch normalization

Inception-V3:修改了Inception塊

  • 替換5 * 5為多個(gè)3 * 3卷積層
  • 替換5 * 5為多個(gè)1 * 7和7 * 1卷積層
  • 替換3 * 3為多個(gè)1 * 3和3 * 1卷積層
  • 更深
  • 上圖中右邊是原始的Inception塊,左邊是Inception V3塊
  • 上圖中右邊是原始的Inception塊,左邊是Inception V3塊
  • 上圖中右邊是原始的Inception塊,左邊是Inception V3塊
  • Inception V3的模型效果如上圖所示
  • 圖中X軸表示處理的速度(log分布,越往右越快),從圖中可以看出Inception V3還算是比較慢,每秒鐘大概能夠跑800個(gè)樣本(僅僅是預(yù)測(cè),訓(xùn)練的話會(huì)更慢)
  • 圖中Y軸表示精度,可以看出Inception V3的精度還是比較高的,在ImageNet上的精度達(dá)到了0.8左右,雖然它所占用的內(nèi)存比較多(圖中園區(qū)那的大小表示所占用的內(nèi)存的大小),運(yùn)算比較慢,但是它的精度是完勝VGG的(和現(xiàn)在的一些網(wǎng)絡(luò)比較起來(lái)其實(shí)沒(méi)有太大的優(yōu)勢(shì),但是當(dāng)年的效果還是很好的)

Inception V4:使用殘差連接





總結(jié)


  • Inception塊有四條不同超參數(shù)的卷積層和池化層的路來(lái)抽取不同的信息(等價(jià)于一個(gè)有4條路徑的子網(wǎng)絡(luò),通過(guò)不同窗口形狀的卷積層和最大匯聚層來(lái)并行抽取信息,并使用1 * 1卷積層減少每像素級(jí)別上的通道維數(shù)從而降低模型的復(fù)雜度),它的一個(gè)主要優(yōu)點(diǎn)是模型參數(shù)小,計(jì)算復(fù)雜度低
  • GoogLeNet使用了9個(gè)Inception塊(每個(gè)Inception塊中有6個(gè)卷積層,所有Inception塊中一共有54個(gè)卷積層),這些Inception塊與其他層(卷積層、全連接層)串聯(lián)起來(lái),其中Inception塊的通道數(shù)分配之比是在Imagenet數(shù)據(jù)集上通過(guò)大量的實(shí)驗(yàn)得來(lái)的
  • GoogLeNet是第一個(gè)達(dá)到上百層的網(wǎng)絡(luò),但是不是深度是100,直到ResNet的出現(xiàn)才達(dá)到了模型的深度達(dá)到100層,這里的上百層指的是通過(guò)設(shè)計(jì)并行的通道來(lái)使得模型達(dá)到數(shù)百層
  • Inception后續(xù)也有一系列的改進(jìn),GoogLeNet V3和GoogLeNet V4目前依舊在被使用,GoogLeNet一開(kāi)始的精度其實(shí)不高,在BN、V3、V4之后精度才慢慢提升上去了,現(xiàn)在也是比較常用的模塊,它以較低的計(jì)算復(fù)雜度提供了類似的測(cè)試精度
  • GoogLeNet的問(wèn)題是特別復(fù)雜,通道數(shù)的設(shè)置沒(méi)有一定的選擇依據(jù),以及內(nèi)部構(gòu)造比較奇怪,這也是GoogLeNet不那么受歡迎的原因所在





Q&A


  • 1、d2l這個(gè)名字是deep to learning的意思嗎?
    ?
    QA P3 - 00:06
    ?


  • 2、不同的1 * 1的卷積后通道不一樣是因?yàn)橛昧瞬煌牟椒鶈幔?/strong>
    ?
    QA P3 - 01:08
    ?


  • 3、Inception塊中的一個(gè)path的Maxpooling在Conv之前,比較少見(jiàn),為什么這么設(shè)計(jì)?
    ?
    QA P3 - 01:20
    ?


  • 4、3 * 3和5 * 5的卷積層也可以降低通道數(shù),為什么要選1 * 1?
    ?
    QA P3 - 02:48
    ?


  • 5、模型里面有很多超參數(shù)都是2的n次方,有什么聯(lián)系嗎?
    ?
    QA P3 - 03:30
    ?


  • 6、正常做深度學(xué)習(xí)模型的時(shí)候,是根據(jù)經(jīng)典模型寫出來(lái)去跑,還是直接調(diào)用實(shí)現(xiàn)好的network?
    ?
    QA P3 - 03:59
    ?


  • 7、最強(qiáng)的模型是什么?
    ?
    QA P3 - 04:57
    ?


  • 8、Inception block是不是輸入同樣的**網(wǎng)絡(luò)?
    ?
    QA P3 - 06:55
    ?


  • 9、3 * 3改1 * 3和3 * 1的好處是什么?
    ?
    QA P3 - 07:30
    ?


  • 10、改進(jìn)版的moudle內(nèi)部的path不對(duì)稱是不是因?yàn)樵谔崛〔煌瑢拥男畔?,因?yàn)樽詈笠粚雍偷谝粚拥男畔⒉灰粯?/strong>
    ?
    QA P3 - 07:58
    ?


  • 11、linear、flatten和dense有什么區(qū)別,感覺(jué)全是全連接?
    ?
    QA P3 - 08:32
    ?


  • 12、gluonCV的model zoo里面有GgoogLeNet、Inception V3這兩個(gè)模型,它們有什么區(qū)別
    ?
    QA P3 - 08:59
    ?


  • 13、模型中都是一個(gè)樣本、一個(gè)通道,而在實(shí)際情況下有n個(gè)樣本、3個(gè)通道,這樣的話是一起進(jìn)入還是一個(gè)一個(gè)計(jì)算?
    ?
    QA P3 - 09:34
    ?


  • 14、既然模型的調(diào)參是靠不同的方法對(duì)比得到的,在計(jì)算資源有限的情況下有什么辦法降低成本呢?比如說(shuō)把Fashion-MNIST尺寸減???
    ?
    QA P3 - 10:25
    ?


  • 15、感覺(jué)現(xiàn)在講的網(wǎng)絡(luò)的輸出通道越來(lái)越多,為什么?
    ?
    QA P3 - 11:51
    ?


  • 16、Inception中不同的路徑用pytorch實(shí)現(xiàn)的話會(huì)自動(dòng)并行嗎?
    ?
    QA P3 - 13:14
    ?


  • 17、ResNet用的是Attention的架構(gòu)嗎?想聽(tīng)一下有什么不同?
    ?
    QA P3 - 13:40
    ?





----end----

其它參考:

1、《動(dòng)手學(xué)深度學(xué)習(xí)》,課程安排,https://courses.d2l.ai/zh-v2/assets/pdfs/part-1_11.pdf

2、Visualization of Inference Throughputs vs. Validation Accuracy of ImageNet pre-trained models,https://cv.gluon.ai/model_zoo/classification.html

3、GoogLeNet,https://arxiv.org/abs/1409.4842

4、《動(dòng)手學(xué)深度學(xué)習(xí)》,https://zh-v2.d2l.ai/chapter_convolutional-modern/googlenet.html

27 含并行連結(jié)的網(wǎng)絡(luò) GoogLeNet / Inception V3【動(dòng)手學(xué)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
耒阳市| 武鸣县| 金坛市| 当阳市| 襄城县| 遵义市| 天祝| 溆浦县| 太原市| 内丘县| 金堂县| 铜川市| 岳西县| 华安县| 教育| 辽宁省| 运城市| 上杭县| 通渭县| 南城县| 偏关县| 缙云县| 库车县| 大同县| 陈巴尔虎旗| 康定县| 民乐县| 永宁县| 兰坪| 西和县| 赤水市| 达孜县| 临安市| 永川市| 大石桥市| 白朗县| 调兵山市| 九寨沟县| 江阴市| 司法| 永春县|