1. 程式人生 > 實用技巧 >優化策略(六)常用neck

優化策略(六)常用neck

Additional blocks:

  1. SPP
  2. ASPP
  3. RFB
  4. SAM
  5. HDC

SPP、RFB和ASPP

CNN中“金字塔”系列的結構塊在深度學習諸多模型中發揮著重要的作用,個人認為有大類:“橫向”並聯金字塔結構(Google的Inception系列)和“縱向”特徵金字塔(FPN)。前者輸出的特徵圖融合了具有多種尺度感受野的特徵;後者更側重於是深層語義特徵與淺層邊緣特徵的融合,這裡主要學習一下前者的幾個典型結構(SPP、RFB和ASPP),這幾種結構或許可以作為模型即插即用的元件,對於優化模型有幫助,更重要的是學到如何根據實際需求設計合適的模型。

1、SPP(Spatial Pyramid Pooling)

空間金字塔池化在何凱明的SPPNet[1]中具有詳盡的描述,解決的是如何在具有全連線層的網路中實現多尺度影象的輸入,全連線層的輸入是固定的,使用文中提及的SPP結構則可以實現無論輸入特徵圖多大均能通過空間金字塔池化得到固定維度的神經元輸入。其結構如下圖所示:

如圖所示,此處最後一層卷積conv5的輸出維度256,按照圖中三個並行的池化層計算則可得到256*(1+4+16)維的特徵向量。在目標檢測和語義分割的全卷積網路中,同樣用到所謂的金字塔池化結構,但是結構上卻有所不同,由於不需要展開成一個固定大小的一維向量,池化的Size則不一定是Sliding windows的形式(每個池化分支的對特徵圖劃分的bins是固定不變的)。因此後續所謂的SPP都是修改後的結構。比如yolov3-spp[6]和yolov4[7]中的SPP結構僅僅是並聯的池化層kernel size不用,輸出特徵圖的大小則是相同的,如下圖所示:

另外在語義分割任務的PSPNet[8]中,則是普通的最大池化並聯最後接一個上取樣恢復到同樣尺寸的特徵圖。如圖所示輸入特徵圖大小為60x60,池化的kernel size分別10,20,30,60,如下圖所示。

2、RFB(Receptive Field Block)

論文[2]提出RFBNet目標檢測網路,RFBNet是在SSD網路中引入Receptive Field Block (RFB) ,引入RFB的出發點通過模擬人類視覺的感受野加強網路的特徵提取能力,在結構上RFB借鑑了Inception的思想,主要是在Inception的基礎上加入了dilated卷積層(dilated convolution),從而有效增大了感受野(receptive field)。RFB結構對於增大輕量級目標檢測網路的感受野很有幫助,並且不會引入過多的計算量和粗暴增加網路深度。原理部分論文[2]給出了一個比較形象的示意圖,描述RFB中的dilated卷積層如何加持感受野金字塔的,一三五卷積核配合空洞卷積實現了感受野的增大及不同感受野特徵圖的融合。補充一下空洞卷積的卷積層感受野大小的計算式:

k+(k-1)(rate-1)

論文[2]中的給出了RFB網路結構:

論文[2]官方開源實現:https://github.com/ruinmessi/RFBNet

另外 Github上的Ultra-Light-Fast-Generic-Face-Detector-1MB(https://github.com/Linzaer/Ultra-Light-Fast-Generic-Face-Detector-1MB)應該是一個應用RFB結構的較為火的的專案,超輕量超快速效果還不賴,其結構:

3、ASPP(atrous spatial pyramid pooling)[3,4,5]

RFBNet結構在Google的Incepetion系列的結構中引入了空洞卷積。同樣用到了空洞卷積,其實 Google自家的ASPP(空洞空間卷積池化金字塔)也是能打的。ASPP最早是出現在語義分割網路DeepLabv2中,ASPP對所給定的輸入以不同取樣率的空洞卷積並行取樣,相當於以多個比例捕捉影象的上下文,結構示意圖如下

論文[3](DeepLabv2)中從語義分割的角度闡述了使用這個一結構的好處: 空洞卷積可以在不增加太多計算量的情況下增大濾波器的視野;空洞空間卷積池化金字塔可以增強模型對不同尺度分割目標的感知能力。

DeepLabv3[4]的論文中通過實驗作者發現:當膨脹率越大,卷積核中的有效權重越少,當膨脹率足夠大時,只有卷積核最中間的權重有效,即退化成了1x1卷積核,並不能獲取到全域性的context資訊;解決方案是在最後一個特徵上使用了全域性平均池化(global average pooling)(包含1x1卷積核,輸出256個通道,正則化,通過bilinear上取樣還原到對應尺度),最後和其他並行的分支concat.

(已經用大老師的onnxsim merge了BN)的結構如下:

4、Hybrid Dilated Convolution

參考連結:https://blog.csdn.net/u011974639/article/details/79460893

Path-aggregation blocks:

  1. FPN
  2. PAN
  3. NAS-FPN
  4. Fully-connected FPN
  5. BiFPN
  6. ASFF
  7. SFAM