AI大視覺(十六) | SPP(空間金字塔池化)


  本文來自公眾號“每日一醒”


SPP

對於一個CNN模型,可以將其分為兩個部分:

前面包含卷積層、激活函數層、池化層的特征提取網絡,下稱CNN_Pre,

后面的全連接網絡,下稱CNN_Post。

許多CNN模型都對輸入的圖片大小有要求,實際上CNN_Pre對輸入的圖片沒有要求,可以簡單認為其將圖片縮小了固定的倍數,而CNN_Post對輸入的維度有要求。

SPP:空間金字塔池化,無論CNN_Pre輸出的feature maps尺寸是怎樣,都能輸出固定的維度傳給CNN_Post。

SPP的本質就是多層maxpool,只不過為了對於不同尺寸大小 a*a 的featur map 生成固定大小 n*n 的的輸出。

那么 pool 的滑窗win大小,以及步長str都要作自適應的調整:

win=ceil(a/n)

str=floor(a/n)

ceil、floor分別表示上取整、下取整。

然后多個不同固定輸出尺寸的 pool組合在一起就構成了SPP Layer。

 

 

 

通俗的講,SPP就相當於標准通道層,不管任何大小的圖像,都用一套標准的pool對圖像進行池化,最后組合成一列相同大小的特征,作為全連接層的輸入,這一組相同大小的特征是固定的,可以提前進行計算。

 

SPP優點:

(1)對於不同尺寸的CNN_Pre輸出能夠輸出固定大小的向量。

(2)可以提取不同尺寸的空間特征信息,可以提升模型對於空間布局和物體變性的魯棒性。

(3)可以避免將圖片resize、crop成固定大小輸入模型的弊端。

 

Yolo v3中的SPP

spp模塊在yolov3的作用是多重感受野融合。

yolo v3基礎網絡:

yolov3-SPP網絡:

借鑒了SPP-Net中的SPP模塊,實現了不同尺度的特征融合。

和YOLOV3結構相比,在第一個預測特征層之前拆開了Convlutioanal Set,添加了SPP模塊。

通過DarkNet輸出的特征圖大小是16*16*1024, 由於三個卷積層的步距為1,特征圖的高寬不發生變化,通過三個卷積層以后,特征圖的大小變為16*16*512,

通過SPP有四個分支,將其拼接維度擴大四倍->16*16*2048。

相對於普通版本的YOLOv3,SPP版在本在第五、六層卷積之間增加了一個SPP模塊,這個模塊主要是由不同的池化操作組成。

檢測頭前面的第5和第6卷積層之間集成SPP模塊來獲得YOLOv3-SPP,在Feature Map經過SPP module池化后的特征圖重新cat起來傳到下一層偵測網絡中。

所以說,YOLOv3-SPP版本實際上只是增加了SPP 模塊,該模塊借鑒了空間金字塔的思想,通過SPP模塊實現了局部特征和全局特征融合,豐富了特征圖的表達能力,有利於待檢測圖像中目標大小差異較大的情況,所以對檢測的精度上有了很大的提升。

 

Yolo v4中的SPP

SPP結構參雜在對CSPdarknet53的最后一個特征層的卷積里,在對CSPdarknet53的最后一個特征層進行三次DarknetConv2D_BN_Leaky卷積后,分別利用四個不同尺度的最大池化進行處理,最大池化的池化核大小分別為13x13、9x9、5x5、1x1(1x1即無處理)。

SPP能夠極大地增加感受野,分離出最顯著的上下文特征。

 

 

總結

SPP可以對於不同尺寸的圖片輸出固定大小的向量。

SPP可以提取不同尺寸的空間特征信息,可以提升模型對於空間布局和物體變性的魯棒性。

 

 

 

 

 

 ——————

淺談則止,細致入微AI大道理

掃描下方“每日一醒”,選擇“關注”公眾號

—————————————————————

     

—————————————————————

投稿吧   | 留言吧

 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM