--NeoZng[neozng1@hnu.edu.cn]
如果覺得筆者寫得還不錯,關注一下點個贊吧!
稍作總結后,筆者在這里再介紹一些目標檢測領域的trick和改進方法(其實作在已經不新了),前一部分主要是關于LF的設計,而這一部分主要是關于關于模型的改進的經典方法與訓練技巧,還有一些有啟發性的機制,
-
多尺度特征融合
由于CNN基本構建模塊的特點,在最后輸出的feature map往往是濃縮了大量的語意資訊(“高級的特征”)但解析度較低、對細節的保留較少,因此對于小目標的檢測效果不盡如人意,且模型對檢測物件的尺度不變性大部分也只能來自于訓練資料,
SPPNet提出的空間金字塔池化通過對最后一層feature map執行stride大小不同的池化后再進行concatenate,能在一定程度上解決不同尺度物體的檢測問題,但是僅僅使用了高級特征(或者說特征其實還是來自同一層),對于不同尺度的融合還是不太好,
?
spp的結構,用不同大小的grid分割后進行max pooling操作,最后concatenate并投入下一層
?SSD首先提出在Backbone的不同層輸出進行檢測,就是希望能同時利用不同層次的資訊,但是對于多個feature map的檢測也導致了效率的低下,并且低層的feature map能夠提供的資訊太少而直接檢測的計算量又大(解析度高),雖然對于不同尺度的物體檢測能力略有提升,但是速度相對YOLO下降的比較多,
?
幾種檢測的方法
(a).傳統差分影像金字塔,抽值實作降采樣
(b).深度學習經典做法,使用頂層feature map檢測
(c).SSD的做法,利用深度網路提取feature并在每一層map上檢測
(d).FPN做法,top-down融合并在不同的map上檢測
?
那么很自然的我們就會想到,有沒有什么方法可以綜合底層的細節和高層語意資訊,隨后利用融合后的資訊進行檢測,將各種尺度的目標一網打盡?于是便有人提出了特征金字塔網路Feature Pyramid Netwok,和以往的影像金子塔不同,FPN的金字塔由深度網路提取的不同層級特征堆疊而成,并在堆疊的基礎上通過top-down的element-wise add實作特征的融合,從而實作對不同尺度物體的檢測,
?
FPN金字塔中的下采樣方式,最頂層的特征會經過x2的上采樣插值后和底層feature map相加
?
注意到FPN只有top-down的融合路徑,金字塔頂層無法享受到底層的更多細節,那直接添加down-top的融合不就完事了?PANet的作者直呼有手就行,提出了這個路徑聚合網路用于更充分的特征融合(PANet首先被用在語意分割上,分割其實相當于像素級的分類,因此對于細節的要求更加嚴苛和敏感,特別是邊緣和紋理),
PANet的整體結構如下,紅色虛線表示原始影像經過數十甚至近百層的卷積(即原圖經過backbone到最后頂部的feature map)得到的P5已經沒有什么細節資訊了,那么它相比FPN的不同就是(b)部分的down-top連接將底層細節通過較短的路徑融合到上層,即綠色虛線所示的路徑(P2->N2->N3->N4->N5),而這里的Top-down連接通過3x3,stride=1的卷積后再相加來實作而不是簡單的element-wise add,讓網路自己去學習如何進行特征融合(當然如果為了追求速度將卷積換成和FPN中一樣的element-wise add也是可以的,或多輕量化網路都是這么做的),通過綠色虛線路徑的特征大概只需要十層不到的conv就能達到N5處,這樣的兩個部分(top-down和down-top)就很好地解決了利用頂層feature map檢測時缺少細節和紋理的問題,
?
PANet的結構
?
?
PANet中down-top連接的結構
?
不過人們對于極致的追求是永不止步的,在進行了大量實驗后,EfficientNet將Neck(一般把檢測框架中的特征融合/選擇部分稱作neck)進行了進一步優化,提出了Bi-FPN(雙向特征金字塔),
?
左側白色單元backbone中不同層次的feature map輸出,虛線框內是BiFPN的結構;右側是PAN的結構
?
Bi-FPN的總體結構和PAN相同,都是top-down和down-top的排列,我們主要關注他們的不同之處,首先是feature map跨過top-down下采樣融合部分直接到bottom-up部分的遠跳連接,這和ResNet中的結構幾乎是一致的, 作用也是相同的,可以分散梯度并防止退化,另一個改變是洗掉了PANet中紅色框的單元直接連接到下一層,作者認為這種單邊的連接沒有必要添加額外的卷積,因為沒有融合的物件,如果進行卷積反而會引入不同層次的特征并增加梯度回傳的難度,若有必要,可以通過堆疊Bi-FPN的block實作更多的融合并方便地控制網路規模和深度(g家慣用套路了,比如inception),
還有其他的思路如把接下來要介紹的注意力機制引入特征金字塔中,為不同的連接路徑設定不同的可學習權重、通過GAN由高層語意資訊還原底層細節(類似超解析度)等,感興趣的同學可以自己探索,
若覺得筆者寫得還不錯,給個關注點個贊吧!
下一期將會更新CV中的注意力機制!關注HNU躍鹿戰隊第一時間獲取更新!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/419978.html
標籤:AI
