過(guò)去的部分帶我們參觀(guān)了計(jì)算機(jī)視覺(jué)的現(xiàn)代網(wǎng)絡(luò)設(shè)計(jì)。我們涵蓋的所有工作的共同點(diǎn)是它嚴(yán)重依賴(lài)科學(xué)家的直覺(jué)。許多架構(gòu)在很大程度上受到了人類(lèi)創(chuàng)造力的啟發(fā),而在很大程度上受到了對(duì)深度網(wǎng)絡(luò)提供的設(shè)計(jì)空間的系統(tǒng)探索的影響。盡管如此,這種網(wǎng)絡(luò)工程方法已經(jīng)取得了巨大的成功。
由于 AlexNet(第 8.1 節(jié))在 ImageNet 上擊敗了傳統(tǒng)的計(jì)算機(jī)視覺(jué)模型,因此通過(guò)堆疊卷積塊構(gòu)建非常深的網(wǎng)絡(luò)變得很流行,所有這些都是由相同的模式設(shè)計(jì)的。尤其,3×3卷積由 VGG 網(wǎng)絡(luò)(第 8.2 節(jié))推廣。NiN(第 8.3 節(jié))表明即使1×1通過(guò)添加局部非線(xiàn)性,卷積可能是有益的。此外,NiN 通過(guò)跨所有位置的聚合解決了在網(wǎng)絡(luò)頭部聚合信息的問(wèn)題。GoogLeNet(8.4節(jié))在其Inception block中加入了多個(gè)不同卷積寬度的分支,結(jié)合了VGG和NiN的優(yōu)點(diǎn)。ResNets(第 8.6 節(jié))改變了對(duì)身份映射的歸納偏差(來(lái)自f(x)=0). 這允許非常深的網(wǎng)絡(luò)。將近十年后,ResNet 設(shè)計(jì)仍然流行,證明了它的設(shè)計(jì)。最后,ResNeXt(第 8.6.5 節(jié))添加了分組卷積,在參數(shù)和計(jì)算之間提供了更好的權(quán)衡。擠壓和激發(fā)網(wǎng)絡(luò) (SENets) 是用于視覺(jué)的變形金剛的前身,可實(shí)現(xiàn)位置之間的高效信息傳輸 (Hu等人,2018 年)。他們通過(guò)計(jì)算每個(gè)通道的全局注意力函數(shù)來(lái)實(shí)現(xiàn)這一點(diǎn)。
到目前為止,我們省略了通過(guò)神經(jīng)架構(gòu)搜索 (NAS)獲得的網(wǎng)絡(luò)(Liu等人,2018 年,Zoph 和 Le,2016 年)。我們之所以選擇這樣做,是因?yàn)樗鼈兊某杀就ǔ:芨?,依?lài)于蠻力搜索、遺傳算法、強(qiáng)化學(xué)習(xí)或某種其他形式的超參數(shù)優(yōu)化。給定一個(gè)固定的搜索空間,NAS 使用搜索策略根據(jù)返回的性能估計(jì)自動(dòng)選擇架構(gòu)。NAS 的結(jié)果是單個(gè)網(wǎng)絡(luò)實(shí)例。EfficientNets 是這次搜索的顯著成果 (Tan 和 Le,2019 年)。
下面我們討論一個(gè)與尋求單一最佳網(wǎng)絡(luò)完全不同的想法。它在計(jì)算上相對(duì)便宜,它會(huì)在途中產(chǎn)生科學(xué)見(jiàn)解,并且在結(jié)果質(zhì)量方面非常有效。讓我們回顧一下Radosavovic等人的策略。( 2020 )設(shè)計(jì)網(wǎng)絡(luò)設(shè)計(jì)空間。該策略結(jié)合了手動(dòng)設(shè)計(jì)和 NAS 的優(yōu)勢(shì)。它通過(guò)對(duì)網(wǎng)絡(luò)分布進(jìn)行操作 并以某種方式優(yōu)化分布以獲得整個(gè)網(wǎng)絡(luò)系列的良好性能來(lái)實(shí)現(xiàn)這一點(diǎn)。它的結(jié)果是RegNets,特別是 RegNetX 和 RegNetY,以及一系列用于設(shè)計(jì)高性能 CNN 的指導(dǎo)原則。
import tensorflow as tf
from d2l import tensorflow as d2l
8.8.1. AnyNet 設(shè)計(jì)空間
下面的描述緊跟Radosavovic等人的推理 。( 2020 )加上一些縮寫(xiě)以使其符合本書(shū)的范圍。首先,我們需要一個(gè)供網(wǎng)絡(luò)系列探索的模板。本章設(shè)計(jì)的共同點(diǎn)之一是網(wǎng)絡(luò)由主干、主體 和頭部組成。. stem 執(zhí)行初始圖像處理,通常通過(guò)具有較大窗口大小的卷積。主體由多個(gè)塊組成,執(zhí)行從原始圖像到對(duì)象表示所需的大量轉(zhuǎn)換。最后,頭部將其轉(zhuǎn)換為所需的輸出,例如通過(guò)用于多類(lèi)分類(lèi)的 softmax 回歸器。反過(guò)來(lái),身體由多個(gè)階段組成,以降低的分辨率對(duì)圖像進(jìn)行操作。事實(shí)上,主干和每個(gè)后續(xù)階段都占空間分辨率的四分之一。最后,每個(gè)階段由一個(gè)或多個(gè)塊組成。這種模式對(duì)所有網(wǎng)絡(luò)都很常見(jiàn),從 VGG 到 ResNeXt。事實(shí)上,對(duì)于通用 AnyNet 網(wǎng)絡(luò)的設(shè)計(jì), Radosavovic等人。( 2020 )使用了 ResNeXt 塊圖 8.6.5。
圖 8.8.1 AnyNet 設(shè)計(jì)空間。號(hào)碼(c,r)沿每個(gè)箭頭指示通道數(shù)c和決議 r×r當(dāng)時(shí)的圖像。從左到右:由主干、主體和頭部組成的通用網(wǎng)絡(luò)結(jié)構(gòu);身體由四個(gè)階段組成;階段的詳細(xì)結(jié)構(gòu);塊的兩種替代結(jié)構(gòu),一種沒(méi)有下采樣,另一種將每個(gè)維度的分辨率減半。設(shè)計(jì)選擇包括深度di, 輸出通道數(shù)ci, 組數(shù)gi和瓶頸比ki對(duì)于任何階段i.
讓我們?cè)敿?xì)回顧一下圖 8.8.1中概述的結(jié)構(gòu)。如前所述,AnyNet 由主干、主體和頭部組成。詞干將 RGB 圖像(3 通道)作為輸入,使用 3×3與 stride 的卷積2,然后是批量規(guī)范,將分辨率減半r×r到 r/2×r/2. 此外,它生成c0作為身體輸入的通道。
由于該網(wǎng)絡(luò)旨在與形狀的 ImageNet 圖像配合使用 224×224×3,身體用于將其減少到 7×7×c4通過(guò) 4 個(gè)階段(回想一下 224/21+4=7), 每個(gè)最終的步幅為2. 最后,head 通過(guò)全局平均池采用完全標(biāo)準(zhǔn)的設(shè)計(jì),類(lèi)似于 NiN(第 8.3 節(jié)),然后是一個(gè)完全連接的層以發(fā)出一個(gè)n維向量為 n-類(lèi)分類(lèi)。
大多數(shù)相關(guān)的設(shè)計(jì)決策都是網(wǎng)絡(luò)主體固有的。它分階段進(jìn)行,每個(gè)階段都由我們?cè)诘?8.6.5 節(jié)中討論的相同類(lèi)型的 ResNeXt 塊組成。那里的設(shè)計(jì)再次完全通用:我們從一個(gè)塊開(kāi)始,通過(guò)使用一個(gè)步長(zhǎng)將分辨率減半2(圖8.8.1最右邊 )。為了匹配這一點(diǎn),ResNeXt 塊的剩余分支需要通過(guò)1×1卷積。此塊后跟可變數(shù)量的附加 ResNeXt 塊,這些塊使分辨率和通道數(shù)均保持不變。請(qǐng)注意,常見(jiàn)的設(shè)計(jì)實(shí)踐是在卷積塊的設(shè)計(jì)中添加一個(gè)小瓶頸。因此,瓶頸比 ki≥1我們提供一些渠道
評(píng)論