我為什麼要讀這篇論文?
這篇論文可以做什麼?
這篇論文怎麼做?
首先,因為我的 DGCNN 模型遭遇到了訓練瓶頸,
所以我到處找論文來 inprove 模型的準確度。
這篇論文可以加強模型的準確度,前提是 base on ResNet-50。
裡面提到這種架構可以插在任意的 convolution 層中間,
是不會消耗太多計算量的輕量型架構。
這篇論文是從 SE-Net 加強而來,
最主要的差別在於 SE-Net 只對 Channel 做 Attention Module,
而 CBAM 對 Spatial 也做了 Attention Module 並且把它加進來。
整個核心觀念就是用 attention Module 對 CNN 去優化,
至於 Attention Module 是什麼概念可以參考上一篇 SE-Net。
整個架構會長這樣:
圖一:CBAM整體架構 |
這對解釋接下來的方程式很有幫助。
想像那顆 Feature 是一顆生吐司,每一片都是不同口味。
其中有地瓜、甜芋頭、秋葵三種口味,
我是一個特別喜歡甜芋頭、極度討厭秋葵的人,
Channel Attention 在做的事情就是找出我喜歡的部分,
然後想辦法甜芋頭變得更甜、秋葵變得更無味、讓我更喜歡這顆生吐司。
這顆生吐司(Feature)在我心目中的價值就會越來越高。
從公式來看架構,剛剛(圖一)說過了尺寸很重要。
這部分會叫 Channel Attention 就是因為它是從 Channel 下去切割的。
Maxpooling 與 Avgpooling 過後的資料尺寸為 C x 1 x 1 的一條濃縮吐司。
MC(F) 就是整個做完的特徵圖(資料)、sigma = sigmoid operator;
W0 與 W1 是結構圖中間進 MLP 的權重,我在 SE-Net 有講過就不贅述了。
至於最重要的,為什麼要做 Maxpooling + Avgpooling?
原作者表示:啊這樣可以更精確地分別每個通道的權重…(幹話。
我自己的觀察:
從 PointConv 這篇論文提到 PointNet 的問題在於 Maxpooling 只能提供 global 或是 local 的 Feature。
又 SE-Net 使用 Avgpooling 能夠促進模型的性能。
所以小孩子才做選擇,我們兩種混在一起做撒尿牛丸!
解釋一下為什麼這個叫 Spatial Attention ,因為他是切 1 x H x W。
所以得到的特徵是 H x W 在每個通道的值(也就是空間位置)。
比較需要解釋的是 f 7*7,這顆是 Hyperparameter,試出來最好的 kernel。
結論:
根據數據來看 CBAM base on ResNet-50 的時候,
最差那個圖的錯誤率(Top-1 Error)減少了 1.9%。
這種 Attention 架構是一定會變好,
但是我個人猜測要在某些架構的前提下才會變好比較多。
至於CBAM 加進 DGCNN 會不會變好?
我還沒嘗試,但是根據上次 SE-NET 的經驗,
是增加了 萬分之十的準確率。
這次預估能增加萬分之十五應該就很不錯了(O)