深度学习网络backbone?head、neck、bottleneck、GAP、Embedding、pretext task、downstream task、temperature parameter
一些術(shù)語:
backbone這個(gè)單詞原意指的是人的脊梁骨,后來引申為支柱,核心的意思。在神經(jīng)網(wǎng)絡(luò)中,尤其是CV領(lǐng)域,一般先對(duì)圖像進(jìn)行特征提取(常見的有vggnet,resnet,谷歌的inception),這一部分是整個(gè)CV任務(wù)的根基,因?yàn)楹罄m(xù)的下游任務(wù)都是基于提取出來的圖像特征去做文章(比如分類,生成等等)。所以將這一部分網(wǎng)絡(luò)結(jié)構(gòu)稱為backbone十分形象,仿佛是一個(gè)人站起來的支柱。
1.backbone:翻譯為主干網(wǎng)絡(luò)的意思,既然說是主干網(wǎng)絡(luò),就代表其是網(wǎng)絡(luò)的一部分,那么是哪部分呢?翻譯的很好,主干部分,哈哈哈哈,文字游戲了哈。這個(gè)主干網(wǎng)絡(luò)大多時(shí)候指的是提取特征的網(wǎng)絡(luò),其作用就是提取圖片中的信息,共后面的網(wǎng)絡(luò)使用。這些網(wǎng)絡(luò)經(jīng)常使用的是resnet VGG等,而不是我們自己設(shè)計(jì)的網(wǎng)絡(luò),因?yàn)檫@些網(wǎng)絡(luò)已經(jīng)證明了在分類等問題上的特征提取能力是很強(qiáng)的。在用這些網(wǎng)絡(luò)作為backbone的時(shí)候,都是直接加載官方已經(jīng)訓(xùn)練好的模型參數(shù),后面接著我們自己的網(wǎng)絡(luò)。讓網(wǎng)絡(luò)的這兩個(gè)部分同時(shí)進(jìn)行訓(xùn)練,因?yàn)榧虞d的backbone模型已經(jīng)具有提取特征的能力了,在我們的訓(xùn)練過程中,會(huì)對(duì)他進(jìn)行微調(diào),使得其更適合于我們自己的任務(wù)。
2.head:head是獲取網(wǎng)絡(luò)輸出內(nèi)容的網(wǎng)絡(luò),利用之前提取的特征,head利用這些特征,做出預(yù)測(cè)。
3.neck:是放在backbone和head之間的,是為了更好的利用backbone提取的特征4.bottleneck:瓶頸的意思,通常指的是網(wǎng)網(wǎng)絡(luò)輸入的數(shù)據(jù)維度和輸出的維度不同,輸出的維度比輸入的小了許多,就像脖子一樣,變細(xì)了。經(jīng)常設(shè)置的參數(shù) bottle_num=256,指的是網(wǎng)絡(luò)輸出的數(shù)據(jù)的維度是256 ,可是輸入進(jìn)來的可能是1024維度的。
5.GAP:在設(shè)計(jì)的網(wǎng)絡(luò)中經(jīng)常能夠看到gap這個(gè)層,我之前不知道是干啥的,后了解了,就是Global Average Pool全局平均池化,就是將某個(gè)通道的特征取平均值,經(jīng)常使用AdaptativeAvgpoold(1),在pytorch中,這個(gè)代表自適應(yīng)性全局平均池化,說人話就是將某個(gè)通道的特征取平均值self.gap = nn.AdaptiveAvgPool2d(1)
6.Embedding: 深度學(xué)習(xí)方法都是利用使用線性和非線性轉(zhuǎn)換對(duì)復(fù)雜的數(shù)據(jù)進(jìn)行自動(dòng)特征抽取,并將特征表示為“向量”(vector),這一過程一般也稱為“嵌入”(embedding)
7.用于預(yù)訓(xùn)練的任務(wù)被稱為前置/代理任務(wù)(pretext task),用于微調(diào)的任務(wù)被稱為下游任務(wù)(downstream task)
8.temperature parameters
在論文中經(jīng)常能看到這個(gè)溫度參數(shù)的身影,那么他都有什么用處呢?比如經(jīng)常看到下面這樣的式子:里面的beta就是temperature parameter,他在運(yùn)算的時(shí)候起到什么作用呢?是這樣的,他可以起到平滑softmax輸出結(jié)果的作用,舉例子如下:
輸出結(jié)果如下:
tensor([0.0900, 0.2447, 0.6652]) tensor([0.1863, 0.3072, 0.5065]) tensor([0.0159, 0.1173, 0.8668])當(dāng)beta>1的時(shí)候,可以將輸出結(jié)果變得平滑,當(dāng)beta<1的時(shí)候,可以讓輸出結(jié)果變得差異更大一下,更尖銳一些。如果beta比較大,則分類的crossentropy損失會(huì)很大,可以在不同的迭代次數(shù)里,使用不同的beta數(shù)值,有點(diǎn)類似于學(xué)習(xí)率的效果。
9.熱身Warm up。Warm up指的是用一個(gè)小的學(xué)習(xí)率先訓(xùn)練幾個(gè)epoch,這是因?yàn)榫W(wǎng)絡(luò)的參數(shù)是隨機(jī)初始化的,一開始就采用較大的學(xué)習(xí)率容易數(shù)值不穩(wěn)定。
10 end to end 在論文中經(jīng)常能遇到end to end這樣的描述,那么到底什么是端到端呢?其實(shí)就是給了一個(gè)輸入,我們就給出一個(gè)輸出,不管其中的過程多么復(fù)雜,但只要給了一個(gè)輸入,機(jī)會(huì)對(duì)應(yīng)一個(gè)輸出。比如分類問題,你輸入了一張圖片,肯呢個(gè)網(wǎng)絡(luò)有特征提取,全鏈接分類,概率計(jì)算什么的,但是跳出算法問題,單從結(jié)果來看,就是給了一張輸入,輸出了一個(gè)預(yù)測(cè)結(jié)果。End-To-End的方案,即輸入一張圖,輸出最終想要的結(jié)果,算法細(xì)節(jié)和學(xué)習(xí)過程全部丟給了神經(jīng)網(wǎng)絡(luò)。
11 domain adaptation 和domain generalization
域適應(yīng)和域泛化域適應(yīng)中,常見的設(shè)置是源域D_S完全已知,目標(biāo)域D_T有或無標(biāo)簽。域適應(yīng)方法試著將源域知識(shí)遷移到目標(biāo)域。第二種場(chǎng)景可以視為domain generalization域泛化。這種更常見因?yàn)閷⒛P蛻?yīng)用到完全未知的領(lǐng)域,正因?yàn)闆]有見過,所以沒有任何模型更新和微調(diào)。這種泛化問題就是一種開集問題,由于所需預(yù)測(cè)類別較多,所以比較頭疼
參考文章:深度學(xué)習(xí)網(wǎng)絡(luò)中backbone是什么意思? - 知乎
總結(jié)
以上是生活随笔為你收集整理的深度学习网络backbone?head、neck、bottleneck、GAP、Embedding、pretext task、downstream task、temperature parameter的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTTP状态码一览
- 下一篇: Xshell怎么把界面信息(终端信息)输