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