天天看點

多尺度多目标檢測之金字塔

     在日常學習工作中,經常會碰到一個概念,那就是金字塔(pyramid),本文就該概念進行一定的闡述,具體如下:

(1)圖像金字塔

圖像金字塔結構,即對圖像進行一定比例的縮放,進而得到一系列不同尺寸的樣本圖像序列,在縮放過程中一般采用線性內插補點等方法,在縮放的同時可以加入濾波、模糊等處理,常見的形式有:

高斯金字塔(Gaussianpyramid): 用來向下采樣,主要的圖像金字塔。

拉普拉斯金字塔(Laplacianpyramid): 用來從金字塔低層圖像重建上層未采樣圖像,在數字圖像進行中也即是預測殘差,可以對圖像進行較大程度的還原,配合高斯金字塔一起使用。

這裡的向下與向上采樣,是對圖像的尺寸而言的(和金字塔的方向相反),向上就是圖像尺寸加倍,向下就是圖像尺寸減半。

多尺度多目标檢測之金字塔

圖像金字塔的作用在于解決目标檢測中的多尺度問題,在比較早的時候,是通過改變滑動視窗的形式來檢測圖像中大小不一的物體,而目前階段,更多的是采用滑動視窗規格不變,改變圖檔大小來檢測圖像中尺度不一緻的物體,金字塔的層級越多,計算量更大,花費的時間會更多,但是,在某種程度上有獲得更準确的結果。主要根據自己的應用場景選擇合适的比例進行生成圖像金字塔,如人臉檢測MTCNN中就用到圖像金字塔來實作多尺度檢測。

(2)特征金字塔(fpn)

FPN是一種利用正常CNN模型來高效提取圖檔中各次元特征的方法。FPN通過利用正常CNN模型内部從底至上各個層對同一scale圖檔不同次元的特征表達結構,提出了一種可有效在單一圖檔視圖下生成對其的多元度特征表達的方法。它可以有效地賦能正常CNN模型,進而可以生成出表達能力更強的feature maps以供下一階段計算機視覺任務像object detection/semantic segmentation等來使用。本質上說它是一種加強主幹網絡CNN特征表達的方法。

多尺度多目标檢測之金字塔

上圖(a)中的方法即為正常的生成一張圖檔的多元度特征組合的經典方法。即對某一輸入圖檔我們通過壓縮或放大進而形成不同次元的圖檔作為模型輸入,使用同一模型對這些不同次元的圖檔分别處理後,最終再将這些分别得到的特征(feature maps)組合起來就得到了我們想要的可反映多元度資訊的特征集。此種方法缺點在于需要對同一圖檔在更改次元後輸入處理多次,是以對計算機的算力及記憶體大小都有較高要求。

圖(b)中的方法則隻拿單一次元的圖檔做為輸入,然後經CNN模型處理後,拿最終一層的feature maps作為最終的特征集。顯然此種方法隻能得到單一次元的資訊。優點是計算簡單,對計算機算力及記憶體大小都無過高需求。此方法為大多數R-CNN系列目标檢測方法所用像R-CNN/Fast-RCNN/Faster-RCNN等。是以最終這些模型對小次元的目标檢測性能不是很好。

圖(c)中的方法同樣是拿單一次元的圖檔做為輸入,不過最終選取用于接下來分類或檢測任務時的特征組合時,此方法不隻選用了最後一層的high level feature maps,同樣也會選用稍靠下的反映圖檔low level 資訊的feature maps。然後将這些不同層次(反映不同level的圖檔資訊)的特征簡單合并起來(一般為concat處理),用于最終的特征組合輸出。此方法可見于SSD當中。不過SSD在選取層特征時都選用了較高層次的網絡。比如在它以VGG16作為主幹網絡的檢測模型裡面所選用的最低的Convolution的層為Conv4,這樣一些具有更低級别資訊的層特征像Conv2/Conv3就被它給漏掉了,于是它對更小次元的目标檢測效果就不大好。

圖(d)中的方法同圖(c)中的方法有些類似,也是拿單一次元的圖檔作為輸入,然後它會選取所有層的特征來處理然後再聯合起來做為最終的特征輸出組合。(作者在論文中拿Resnet為執行個體時并沒選用Conv1層,那是為了算力及記憶體上的考慮,畢竟Conv1層的size還是比較大的,所包含的特征跟直接的圖檔像素資訊也過于接近)。另外還對這些反映不同級别圖檔資訊的各層自上向下進行了再處理以能更好地組合進而形成較好的特征表達。而此方法正是我們本文中要講的FPN CNN特征提取方法。

(3)PAN

熟悉yolov4網絡結構應該對下面這張圖不陌生吧,

多尺度多目标檢測之金字塔

在neck部分加入的PAN網絡結構借鑒于文本分類,與FPN相比,FPN是自頂向下的,将高層特征通過上采樣和低層特征做融合得到進行預測的特征圖。Neck部分的立體圖像,具體看下兩部分是如何通過FPN+PAN結構進行融合的。

多尺度多目标檢測之金字塔

Yolov4在FPN層的後面還添加了一個自底向上的特征金字塔。這樣結合操作,FPN層自頂向下傳達強語義特征,而特征金字塔則自底向上傳達強定位特征,兩兩聯手,從不同的主幹層對不同的檢測層進行參數聚合,事實表明這樣檢測對某些目标而言,效果有所提升。

補充:

對于多尺度檢測,目前采用的方法還有SNIPER等,

多尺度多目标檢測之金字塔

在每個尺度下都有一個重點關注區域,框中區域的目标都在最佳尺度。還加入了重點排除區域,在許多背景中,許多目标是無需識别的。

總結,對于多尺度目标檢測,從原始的采用不同尺度的卷積核,再到不同尺度的輸入圖像(圖像金字塔),FPN,再到sniper,方法在不斷的更新疊代中,而且在深度學習中多采用anchor機制來實作對多目标多尺度的檢測,這樣簡單快捷。

參考連結:

https://www.jianshu.com/p/5a28ae9b365d(FPN: 一種高效的CNN特征提取方法)

https://blog.csdn.net/yychentracy/article/details/86288143(目标檢測中的多尺度問題)

https://blog.csdn.net/yychentracy/article/details/93301489(目标檢測研究方向之多尺度目标檢測)

繼續閱讀