image caption筆記(五):《SCA-CNN》

     工作的本質仍然是對attention機制的擴展。之前的《show attend and tell》是在空間上對特徵圖進行加權。

     特徵圖不同的通道本質上是不同的濾波器提取的特徵 ,那麼不同的濾波器可能 提取的重點就不一樣,可能 第一個濾波器提取的是cake的特徵比較多,第二個濾波器提取的person的信息比較多。那麼我們是不是應該在這裏做一個權重?也就是channel-wise weight.在某種程度上 channel-wise attention可以看作是semantic attention,也就是關注圖像中不同的對象。參考《Image Captioning with Semantic Attention》。

     之前的《show attend and tell》是直接在最後一層特徵圖上做attention機制,但是最後一層 每個神經元對應的感受野是非常大的,會不會幾乎覆蓋了全圖?之間的重合度應該也會很高。所以我們應該不光只挑CNN的最後一層特徵圖來做attention,應該多挑幾個層。

    《show attend and tell》中 的attention關注的是feature的spatial wise,作者新添加的兩個想法是channel-wise and multi-layer。

     接下來介紹這幾種attention怎麼結合

1、multi-layer

                                                     

                 

 

     用l來表示CNN特徵圖的層數。對於當前層,初始圖像特徵圖()和前一個時刻的隱藏態,經過attenntion機制,加權得到weighted feature,經過卷積得到下一層的初始圖像特徵圖()。

 

2、spatial wise

     我們先不考慮是在哪一層進行的這個操作,去掉l標識.

     這裏和後面channel-wise要注意的是,與《show attend and tell》不同的是,此前的加權是權重*特徵 然後累加

                                                    

      這裏用函數f來做加權的操作 不過是直接像素級的相乘。

      即:

     0.8*[1,2]+0.2*[1,2]    變成了  [0.8*1,0.2*2]

    

     首先計算spitial attention的權重,這和原本的attention有一點像,都是利用 圖像特徵和前一個時刻的隱藏態來求

                           

        

      即爲權重

3、channel-wise

       先把C個特徵圖攤開,得到U

                     

      每個通道上做平均池化,得到長度爲C的向量,表徵了不同通道的信息。

                                      

    基於此求channel-wise的權重:           

                        

      

 具體使用的時候,有兩種方法:

1、先進行channel wise attention,再進行spatial attention

                               

2、先進行spatial wise attention,再進行channel attention

                                  

 

實驗結果: 

首先是channel wise attention的效果,可以看Table1。Table1是在不同數據集和不同主網絡上的實驗對比。在Method一列中,S表示只採用spatial attention、C表示只採用channel wise attention、S-C表示先進行spatial attention再進行channel wise attention、C-S表示先進行channel wise attention再進行spatial attention、SAT表示論文“Show, ttend and tell: Neural image caption generation with visual attention”中的模型。在S和C的具體操作中,是對最後一個卷積層的輸出feature map進行相應的attention操作,然後用得到的weights對輸出feature map進行加權得到新的feature map輸出,新的feature map再過網絡後面的層(VGG中是全連接層,ResNet中是global average pooling)。

從Table1中可以得到幾個結論:1、方法S在VGG網絡的表現要優於SAT,但是在ResNet網絡上的表現要劣於SAT。主要原因在於在VGG網絡中,加權後的feature map經過的是全連接層,全連接層不會丟失空間信息;而在ResNet網絡中,加權後的feature map經過的是pooling層,會丟失空間位置信息。2、和方法S相比,方法C在ResNet上的表現要遠遠好於VGG網絡,主要原因是前者的最後一個卷積層有更多的channel輸出,這樣有利於channel wise attention提升效果。3、C-S和S-C的結果比較相近,但是C-S的效果會更好一點。
 

 

                                           

 

     然後是multi-layer的效果,如下面的Table2和Table3所示。For VGG-19, 1-st layer, 2-nd layer, 3-rd layer represent conv5_4; conv5_3; conv5_2 conv-layer, respectively. As for ResNet-152, it represents res5c; res5c_branch2b; res5c_branch2a conv-layer. 從Table2和Table3可以看出總體上multi-layer的效果確實比單層的效果要好一些,但是同時層數過多的話也容易引起過擬合。
                                          

 

 

                                           

 

最後是SCA-CNN算法和其他image caption算法的實驗對比,如Table4和Table5所示。其中Deep VS,m-RNN,Google NIC都是結合CNN和RNN的端到端網絡;Soft-Attention和Hard-Attention是spatial attention模型;emb-gLSTM和ATT是semantic attention模型。在Table5中SCA-CNN的表現不如ATT和Google NIC,作者認爲主要原因在於後二者都採用了模型融合的方式,一般而言融合的效果會優於單模型,只不過速度是劣勢,可惜文中沒有速度上的對比,不知道速度差異如何。
                                               

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