1. 程式人生 > >ACNet: 特別的想法,騰訊提出結合注意力卷積的二叉神經樹進行細粒度分類 | CVPR 2020

ACNet: 特別的想法,騰訊提出結合注意力卷積的二叉神經樹進行細粒度分類 | CVPR 2020

> 論文提出了結合注意力卷積的二叉神經樹進行弱監督的細粒度分類,在樹結構的邊上結合了注意力卷積操作,在每個節點使用路由函式來定義從根節點到葉子節點的計算路徑,結合所有葉子節點的預測值進行最終的預測,論文的創意和效果來看都十分不錯   來源:曉飛的演算法工程筆記 公眾號 **論文: Attention Convolutional Binary Neural Tree for Fine-Grained Visual Categorization** ![](https://upload-images.jianshu.io/upload_images/20428708-7802ad2d4ed25388.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) * **論文地址:[https://arxiv.org/abs/1909.11378](https://arxiv.org/abs/1909.11378)** # Introduction *** ![](https://upload-images.jianshu.io/upload_images/20428708-30da999853014f6a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   細粒度分類(Fine-Grained Visual Categorization, FGVC)是圖片分類的一個分支,由於類別間的相似性非常大,一般人比較難區分,所以是個很有研究意義的領域。受神經樹研究的啟發,論文設計了結合注意力卷積的二叉神經樹結構(attention convolutional binary neural tree architecture, ACNet)用於弱監督的細粒度分類,論文的主要貢獻如下: * 提出結合注意力卷積的二叉神經樹結構ACNet用於細粒度分類,在樹結構的邊上結合了注意力卷積操作,在每個節點使用路由函式從而定義從根節點到葉子節點的計算路徑,類似於神經網路。這樣的結構讓演算法有類似於神經網路的表達能力,以及能夠從粗到細的層級進行特徵學習,不同的分支專注於不同的區域性區域,最後結合所有葉子節點的預測值進行最終的預測 * 新增attention transformer模組來加強網路獲取關鍵特徵進行準確分類 * 在三個資料集CUB-200-2011、Stanford Cars和Aircraft上達到了SOTA #Attention Convolutional Binary Neural Tree *** ![](https://upload-images.jianshu.io/upload_images/20428708-16070106290b12ee.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   ACNet包含4個模組,分別是主幹網路(backbone network)、分支路由(branch routing)、attention transformer和標籤預測(label prediction),如圖2所示。將ACNet定義為$(\mathbb{T},\mathbb{O})$,$\mathbb{T}$為樹狀拓撲結構,$\mathbb{O}$為樹邊的操作集。論文使用滿二叉樹$\mathbb{T}=\{\mathcal{V},\mathcal{E}\}$,$\mathcal{V}=\{v_1,...,v_n \}$為節點,$\mathcal{E}=\{e_1,...,e_k \}$為邊,對於樹深$h$,共$n=2^h-1$節點,$k=2^h-2$邊。每個節點為路由模組,決定下一個計算節點,邊採用attention transformer進行操作。另外,滿二叉樹$\mathbb{T}$採用了非對稱結構,例如左邊使用兩個transformer模組,右邊使用一個transformer模組,這樣有利於提取不同尺寸的特徵 ### Architecture * ##### Backbone network module   由於細粒度類別的關鍵特徵都是高度區域性的,需要使用相對較小的感受域來提取特徵,因此主幹網路使用截斷的VGG-16網路,輸入改為$448\times 448$ * ##### Branch routing module   分支路由用來決定子節點的選擇,結構如圖2b所示,$k$-th層的$i$-th路由模組$\mathcal{R}_i^k(\cdot)$由$1\times 1$卷積和global context block組成 ![](https://upload-images.jianshu.io/upload_images/20428708-60993c93f86ab891.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   global context block的大概結構如上圖a所示,來自GCNet的論文中。在context modeling和fusion步驟使用了simplified NL block,在transform步驟使用了SE block,這個模組能夠很好地結合上下文資訊來提取特徵,最後使用global average pooling、element-wise square-root、L2正則化以及sigmoid啟用的全連線層輸出標量$[0,1]$   假設分支路由模組$R_i^k(x_j)$輸出樣本$x_j\in X$到右邊節點的概率為$\phi_i^k(x_j)\in [0,1]$,則輸出到左邊節點的概率為$1 - \phi_i^k(x_j)$,概率越大的節點對最終結果的影響越大 * ##### Attention transformer ![](https://upload-images.jianshu.io/upload_images/20428708-158237c3d50ecb15.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   Attention transformer模組用於加強網路獲取關鍵特徵的能力,在$3\times 3$卷積後面插入結構如圖2c所示的attention模組,該模組的旁路輸出一個大小為$\mathbb{R}^{C\times 1\times 1}$的channel attention map對輸入特徵進行加權 * ##### Label prediction   對於ACNet的每個葉子節點,用標籤預測模組$\mathcal{P}_i$來預測目標$x_j$的類別,$r_i^k(x_j)$為目標$x_j$從根節點到k層第i個節點的累計概率,預測模組由$1\times 1$卷積層、max pooling層、L2歸一化層、全連線層和softmax層組成,通過求和所有的葉子節點的預測結果和路徑累計概率的乘積得到最終的預測$\mathcal{C}(x_j)={\sum}_{i=1}^{2^{h-1}}\mathcal{P}_i(x_j)r_i^h(x_j)$ ![](https://upload-images.jianshu.io/upload_images/20428708-533e172298bfc194.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   最終的預測結果$\mathcal{C}(x_j)$的各項和為1,論文對其進行了證明,有興趣的可以去看看,主要基於葉子節點的累計概率和為1,各葉子節點的預測結果和也為1 ### Training * ##### Data augmentation   在訓練階段,使用裁剪和翻轉操作進行資料增強,首先將圖片縮放至短邊512畫素,然後隨機裁剪到$448\times 448$,隨機進行翻轉 * ##### Loss function ![](https://upload-images.jianshu.io/upload_images/20428708-db920307a7c590a0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   ACNet的損失函式由兩部分組成,分別為葉子節點預測產生的損失以及最終結果產生的損失。$h$為樹高,$y^*$為GT,$L(\mathcal{P}_i(x_j),y^*)$為最終預測結果的負對數似然損失,$L(\mathcal{P}(x_j),y^*)$為第$i$個葉子預測結果的負對數似然損失 * ##### Optimization   主幹網路使用在ILSVRC上預訓練的模型,使用"xavier"進行所有卷積層的隨機初始化,整個訓練過程包含兩階段,第一階段固定主幹網路訓練60週期,第二階段則使用小學習率對整個網路進行200週期的fine-tune # Experiments ***   訓練共需要512G記憶體,8張V100,下面的實驗主要跟弱監督的細粒度演算法進行對比,即不需要額外的標註的細粒度演算法 ### CUB-200-2011 Dataset ![](https://upload-images.jianshu.io/upload_images/20428708-4077235d3d66ed63.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ### Stanford Cars Dataset ![](https://upload-images.jianshu.io/upload_images/20428708-34018470516256ea.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ### Aircraft Dataset ![](https://upload-images.jianshu.io/upload_images/20428708-24af80083ea05761.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ### Ablation Study ![](https://upload-images.jianshu.io/upload_images/20428708-bac70ea187d48149.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) * ##### Effectiveness of the tree architecture ![](https://upload-images.jianshu.io/upload_images/20428708-5a07e3b71a421674.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   如圖5所示,使用樹狀結構能夠顯著提升準確率,使用Grad-CAM產生heatmap來對葉子節點對應的響應區域進行視覺化,發現不同的葉子節點關注的特徵區域各不一樣 * ##### Height of the tree ![](https://upload-images.jianshu.io/upload_images/20428708-7e3d460151e99cf7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) * ##### Asymmetrical architecture of the tree ![](https://upload-images.jianshu.io/upload_images/20428708-983b6fe17abb537a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   論文對比左右路徑的attention transformer數的對稱性對識別的影響 * ##### Effectiveness of the attention transformer module   如圖5所示,attention transformer模組能夠有效地提升模型的準確率 * ##### Components in the branch routing module ![](https://upload-images.jianshu.io/upload_images/20428708-7e0d5ad9304bbe09.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![](https://upload-images.jianshu.io/upload_images/20428708-b4d2743728d72bbb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)   論文發現不同的分支路由模組關注的特徵區域也不一樣,圖6的視覺化結果分別為圖2的R1、R2和R3節點使用Grad-CAM得到的響應區域 # CONCLUSION ***   論文提出了結合注意力卷積的二叉神經樹進行弱監督的細粒度分類,在樹結構的邊上結合了注意力卷積操作,在每個節點使用路由函式來定義從根節點到葉子節點的計算路徑,結合所有葉子節點的預測值進行最終的預測,論文的創意和效果來看都十分不錯       > 如果本文對你有幫助,麻煩點個贊或在看唄~ 更多內容請關注 微信公眾號【曉飛的演算法工程筆記】 ![work-life balance.](https://upload-images.jianshu.io/upload_images/20428708-7156c0e4a2f49bd6.png?imageMogr2/auto-orient/strip%7CimageView2/2