YOLOv4之trick總結(2)

上文記錄了YOLOv4一文中所提到的不增加計算損耗的trick(Bag of freebies),本文用於記錄僅增加微小的計算損耗的trick(Bag of specials)。

  • 不增加計算損耗的trick(Bag of freebies):
  1. 像素級數據增強(亮度、對比度、色彩、飽和度、噪聲;隨機尺度、裁剪、翻轉、旋轉)
  2. 模擬目標遮擋(Random Erase、Cutout、Hide-and-seek、Grid-mask;Dropout、DropConnect、DropBlock)
  3. 使用多張圖混合增強(Mixup、CutMix)
  4. 樣本不平衡問題(困難樣本挖掘(HEM、OHEM)、Focalloss)
  5. Onehot類標無法表示各類之間關係(Labelsmooth、Label refinement network)
  6. 邊框迴歸損失函數(IoU、GIoU、DIoU、CIoU loss)
  • 僅增加微小的計算損耗的trick(Bag of specials):
  1. 增強感受野(SPP、ASPP、RFB)
  2. 注意力機制(SE、SAM)
  3. 特徵融合(SFAM、ASFF、BiFPN)
  4. 激活函數(LReLU、PReLU、ReLU6、Scaled Exponential Linear Unit(SELU)、Swish、hard-Swish、Mish)
  5. 非極大值抑制(GreedyNMS、softNMS、DIoUNMS)

2.僅增加微小的計算損耗的trick:

  1. 增強感受野:作者文中所提到的用於增強感受野的模塊包括:SPP(Spatial Pyramid Pooling)、ASPP(Atrous Spatial Pyramid Pooling)、RFB(Receptive Field Block)。這三個模塊的結構也是大同小異,都是採用並聯、對同一個特徵圖進行重採樣的方式提取不同尺度的特徵。

其中SPP模塊是Kaiming大神ECCV2014的工作,今天看來結構也很簡單,如下圖所示。由於CNN網絡後面接的全連接層需要固定的輸入大小,故往往通過將輸入圖像resize到固定大小的方式輸入卷積網絡,這會造成幾何失真影響精度。SPP模塊就解決了這一問題,他通過三種尺度的池化,將任意大小的特徵圖固定爲相同長度的特徵向量,傳輸給全連接層。

SPP

受到SPP的啓發,語義分割模型DeepLabv2中提出了ASPP模塊,該模塊使用具有不同採樣率的多個並行空洞卷積層。爲每個採樣率提取的特徵在單獨的分支中進一步處理,並融合以生成最終結果。該模塊通過不同的空洞rate構建不同感受野的卷積核,用來獲取多尺度物體信息,具體結構比較簡單如下圖所示。

ASPP

ASPP

RFB模塊是在(ECCV2018:Receptive Field Block Net for Accurate and Fast Object Detection)一文中提出的,該文的出發點是模擬人類視覺的感受野從而加強網絡的特徵提取能力,在結構上RFB借鑑了Inception的思想,主要是在Inception的基礎上加入了空洞卷積,從而有效增大了感受野。

RFB

2. 注意力機制:文中提到了兩個注意力機制模塊(SE、SAM),其中SE模塊是通道注意力模塊,SAM是ECCV2018的文章CBAM中的空間注意力模塊。

具體思想都比較簡單,SE模塊首先將特徵圖沿着空間維度(H,W)池化壓縮爲列向量,之後輸入兩個全連接層分別進行通道壓縮(1/16)與通道擴張使通道數保持不變,最後通過一個sigmoid激活函數得到各通道的權值,並用該權值對特徵圖賦權。整個過程相當於對整體特徵圖進行了一次全局特徵篩選,抑制無用的特徵通道,加強有用的通道,從而提升性能。

SE模塊

SAM模塊與SE模塊不同,它關注於空間注意力。具體做法類似於SE,只不過是對特徵圖進行通道維度的池化壓縮,之後進行一次卷積操作與sigmoid激活函數得到空間權值圖,再將該權值圖乘回原特徵圖,就得到了賦有注意力的特徵圖。思想與SE一樣,通過全局信息抑制無用的區域、加強重點區域,從而提升性能。

SAM模塊

3. 特徵融合:文中提到的特徵聚合模塊包括(SFAM、ASFF、BiFPN)。

SFAM(Scale-wise Feature Aggregation Module)模塊來自於AAAI2019的M2Det模型中,該模塊結構分爲兩部分,第一部分是不同尺度的特徵拼接,SFAM模塊將前方網絡提取得到的多尺度等尺寸特徵沿通道維拼接得到融合特徵圖,第二部分就是SE通道注意力模塊,對融合後的特徵進行賦權值,得到最終特徵。

SFAM

ASFF(Adaptively Spatial Feature Fusion)模塊避免了傳統多尺度特徵融合中生硬的concat或直接相加的融合方式,採用自適應的方法,讓網絡自己學出一種最好的融合方式,如下圖所示。首先對不同層的特徵圖進行上下采樣使其大小相同,之後對resize後的特徵圖分別經過1×1的卷積得到權重參數α,β和γ,且α,β和γ經過concat之後通過softmax激活函數使其範圍在[0,1]內且和爲1。

ASFF

BiFPN(Bi-directional feature pyramid network)模塊是在EfficientDet模型中提出的,該模塊是在PANet的基礎上進行了改進, 首先,刪除了只有一個輸入的節點,作者認爲這種節點對特徵融合的貢獻很小; 其次,如果與原始輸入處於同一級別,則從原始輸入添加到輸出節點,以便在不增加大量成本的情況下融合更多的特性(藍色斜線);最後,添加了自上而下和自下而上的雙向路徑(紫色連線).(個人覺得有點魔改的意思)

BiFPN

4. 激活函數:這一部分包括了一大堆激活函數:LReLU、PReLU、ReLU6、Scaled Exponential Linear Unit(SELU)、Swish、hard-Swish、Mish,最後作者採用了Mish激活函數。(PS:個人覺得這部分意義不大,老老實實用relu)(此部分引用https://blog.csdn.net/qq_20909377/article/details/79133981https://www.wandouip.com/t5i356161/#ct6https://blog.csdn.net/jsk_learner/article/details/102822001

LReLU:

PReLU:

ReLU6:Relu在x>0的區域使用x進行線性激活,有可能造成激活後的值太大,影響模型的穩定性,爲抵消ReLU激勵函數的線性增長部分,可以使用Relu6函數:

Scaled Exponential Linear Unit(SELU):

Swish:

hard-Swish:

Mish:

5. 非極大值抑制:文中提到了三種NMS的方法:NMS、softNMS、DIoUNMS。傳統NMS就不多說了,記錄一下另外兩位。

softNMS:針對傳統的NMS容易將相鄰物體當做同一物體抑制掉(等同於將其分數置零),從而導致漏檢的問題,softNMS設置了一個衰減函數(線性或高斯)降低其分數而非置零。通過這樣soft的方法,如若相鄰兩物體的置信度都足夠高則可以避免被nms掉。

DIoUNMS:該NMS在DIoUloss一文中提出,在nms過程中採用DIoU的計算方式替換了IoU,由於DIoU的計算考慮到了兩框中心點位置的信息,故使用DIoU進行評判的nms效果更符合實際,效果更優。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章