backbone、head、neck等深度學習中的術語解釋

我們在閱讀文章的時候,經常看到backbone head  neck 這一類的術語,但是我們可能並不知道是什麼意思,這篇文章就是對這些術語進行解釋:

backbone:翻譯爲主幹網絡的意思,既然說是主幹網絡,就代表其是網絡的一部分,那麼是哪部分呢?翻譯的很好,主幹部分,哈哈哈哈,文字遊戲了哈。這個主幹網絡大多時候指的是提取特徵的網絡,其作用就是提取圖片中的信息,共後面的網絡使用。這些網絡經常使用的是resnet VGG等,而不是我們自己設計的網絡,因爲這些網絡已經證明了在分類等問題上的特徵提取能力是很強的。在用這些網絡作爲backbone的時候,都是直接加載官方已經訓練好的模型參數,後面接着我們自己的網絡。讓網絡的這兩個部分同時進行訓練,因爲加載的backbone模型已經具有提取特徵的能力了,在我們的訓練過程中,會對他進行微調,使得其更適合於我們自己的任務。

head:head是獲取網絡輸出內容的網絡,利用之前提取的特徵,head利用這些特徵,做出預測。

neck:是放在backbone和head之間的,是爲了更好的利用backbone提取的特徵

bottleneck:瓶頸的意思,通常指的是網網絡輸入的數據維度和輸出的維度不同,輸出的維度比輸入的小了許多,就像脖子一樣,變細了。經常設置的參數 bottle_num=256,指的是網絡輸出的數據的維度是256 ,可是輸入進來的可能是1024維度的。

GAP:在設計的網絡中經常能夠看到gap這個層,我之前不知道是幹啥的,後瞭解了,就是Global Average Pool全局平均池化,就是將某個通道的特徵取平均值,經常使用AdaptativeAvgpoold(1),在pytorch中,這個代表自適應性全局平均池化,說人話就是將某個通道的特徵取平均值。

self.gap = nn.AdaptiveAvgPool2d(1)

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章