最近找了十幾篇神經網絡注意力機制的論文大概讀了一下。這篇博客記錄一下其中一篇,這篇論文大概只看了摘要和方法。本文主要就是識別農作物葉子疾病,因為農作物葉子疾病圖片背景復雜並且只有葉子區域會有小的反差。本文采用的就是自注意力卷積神經網絡self-attention convolution neural network(SACNN),這個SACNN由倆部分的網絡組成,一個是base-net,還有一個是SA-net,其中基礎網絡用來提取圖片的全局特征,SA-net用於提取病變的局部特征。這里的SA就是為了提高CNN的抗干擾能力。本文在方法部分講了網絡的結構和參數的試驗。
Base-Net
Base-Net,基礎網絡其實就是卷積的疊加,並且使用殘差來改善。基礎網絡一共由九層,前三層都是殘差塊,這三層用於加速訓練的收斂速度,改善精確率、並且使網絡不容易陷入過擬合中,每個殘差塊有三個卷積操作。后面是一個最大池化層,三個卷積層,一個全局平均池化層和一個softmax層。這么多卷積層的目的就是為了能夠提取出圖片的全局特征。

Self-attention net
Self-attention net,三個並行的卷積操作,倆個矩陣乘法運算,一個softmax層和一個額外的操作。在整個網絡中self-attention net是嵌套在base-net中的。圖中的轉置操作是矩陣運算的需要,attention maps是self-attention net網絡的關鍵值,有了它之后就可以計算出后面的SA和out的值。Self-attention利用attention來計算每個單詞與其他所有單詞之間的關聯,這樣就可以考慮到了上下文之間的信息。在圖中也是這樣進行運算的,Conv1每個塊都會和Conv2圖像中所有的塊進行計算相乘,之后使用softmax來歸一化處理得到attention maps。其中的ratio就是通道設置參數,一般設置為1/2,1/4,1/8,1/10,1/16。

整體的過程可以用公式來表示:
總體結構
其中網絡整體結構如下所示

其中藍色塊就是Base-Net,雖然圖中標記為Conv。實驗表明,SA放在conv8是最好的,並且其中的ratio取1/2或者1/8是最好的,不過ratio對之影響很小。並且SA網絡只有一個才是最好的,多個SA網絡會過分強調局部特征而忽略了全局特征。
這篇文章注重了全局和局部倆種特征,不過對於局部特征用的是self-attention的方法來進行設計上下文信息的。不過全局就是普通的卷積層的疊加來提取出的全局特征。對於文中局部特征的提取,還是可以值地參考的設計。