1.backbone:翻譯為主干網絡的意思,既然說是主干網絡,就代表其是網絡的一部分,那么是哪部分呢?翻譯的很好,主干部分,哈哈哈哈,文字游戲了哈。這個主干網絡大多時候指的是提取特征的網絡,其作用就是提取圖片中的信息,共后面的網絡使用。這些網絡經常使用的是resnet VGG等,而不是我們自己設計的網絡,因為這些網絡已經證明了在分類等問題上的特征提取能力是很強的。在用這些網絡作為backbone的時候,都是直接加載官方已經訓練好的模型參數,后面接着我們自己的網絡。讓網絡的這兩個部分同時進行訓練,因為加載的backbone模型已經具有提取特征的能力了,在我們的訓練過程中,會對他進行微調,使得其更適合於我們自己的任務。
2.head:head是獲取網絡輸出內容的網絡,利用之前提取的特征,head利用這些特征,做出預測。
3.neck:是放在backbone和head之間的,是為了更好的利用backbone提取的特征
基於深度學習的現在目標檢測算法中有三個組件:Backbone、Neck和Head,乍一看很讓人不理解:
- Backbone, 譯作骨干網絡,主要指用於特征提取的,已在大型數據集(例如ImageNet|COCO等)上完成預訓練,擁有預訓練參數的卷積神經網絡,例如:ResNet-50、Darknet53等
- Head,譯作檢測頭,主要用於預測目標的種類和位置(bounding boxes)
- 在Backone和Head之間,會添加一些用於收集不同階段中特征圖的網絡層,通常稱為Neck。
簡而言之,基於深度學習的目標檢測模型的結構是這樣的:輸入->主干->脖子->頭->輸出。主干網絡提取特征,脖子提取一些更復雜的特征,然后頭部計算預測輸出