attention
GCNet: Non-local Networks Meet Squeeze-Excitation Networks and Beyond
Abstract
Non-Local Network(NLNet)通過將特定于查詢的全局上下文聚合到每個查詢位置,為捕獲長期依賴關系提供了一種先進的方法。然而,通過嚴格的實證分析,我們發現non-local網絡建模的全局上下文對于圖像中的不同查詢位置幾乎是相同的。在本文中,我們利用這一發現創建了一個基于query-independent公式的簡化網絡,它保持了NLNet的準確性,但大大減少了計算量。我們進一步觀察到,這種簡化設計與Squeeze-Excitation網絡(SENet)具有相似的結構。因此,我們將它們統一到一個用于全局上下文建模的three-step的通用框架中。在通用框架中,我們設計了一個更好的實例化結構,稱為全局上下文(global context, GC)塊,它是輕量級的,可以有效地對全局上下文建模。輕量級特性允許我們將其應用于backbone網中的多個層,以構建一個全局上下文網絡(GCNet),它通常在各種識別任務的主要基準上優于簡化的NLNet和SENet。代碼可見https://github.com/xvjiarui/GCNet。
1. Introduction
捕獲long-range依賴,旨在提取對視覺場景的全局理解,已被證明有利于廣泛的識別任務,如圖像/視頻分類,目標檢測和分割[31,12,38,14]。在卷積神經網絡中,由于卷積層在局部鄰域內構建像素關系,因此其long-range依賴關系主要通過深度疊加卷積層來建模。然而,直接重復卷積層的計算效率低,而且很難優化[31]。這將導致對long-range依賴進行無效的建模,部分原因是在遠距離位置之間傳遞信息存在困難。
為了解決這一問題,提出了non-local網絡[31],使用一層自注意力機制[28]來建模long-range依賴關系。對于每個查詢位置,non-local網絡首先計算查詢位置與所有位置的成對關系,形成注意map,然后將所有位置的特征與注意map定義的權值相加。聚合的特性最終被添加到每個查詢位置的特征中以形成輸出。
non-local網絡中特定于查詢的注意力權值通常意味著對應位置對查詢位置的重要性。雖然可視化特定查詢的重要性權重有助于深入理解,但原始論文中很大程度上缺少這樣的分析。我們填補了這一遺憾,如圖1所示,但令人驚訝的是,不同查詢位置的注意力map幾乎是相同的,這表明只學習了與查詢無關的依賴關系。表1中的統計分析進一步驗證了這一觀察結果,即不同查詢位置的注意力map之間的距離非常小。
基于這一觀察,我們通過顯式地為所有查詢位置使用與查詢無關的注意力圖來簡化non-local塊。然后我們使用這個注意力map將相同的聚合特征添加所有查詢位置的特征上,以形成輸出。這種簡化塊的計算成本明顯小于原來的non-local塊,但在幾個重要的視覺識別任務中幾乎沒有發現精度下降。此外,我們發現這個簡化塊與流行的Squeeze-Excitation(SE)網絡[14]具有相似的結構。二者都是通過從所有位置聚集的相同的特征來強化原有的特征,但在聚集策略、transformation和強化function上的選擇卻使二者區別開來。通過對這些function的抽象,我們得到了一個統一了簡化的NL塊和SE塊的一個three-step通用框架:(a)一個將所有位置的特征聚合在一起形成全局上下文特征的上下文建模模塊(context modeling module);(b)特性轉換模塊(feature transform module),以捕獲channel-wise的相互依賴關系;(c)融合模塊(fusion module),將全局上下文特征融合到所有位置的特征中。
簡化的NL塊和SE塊是這個通用框架的兩個實例化結構,但是對這三個步驟有不同的實現。通過對每一步的比較研究,我們發現簡化的non-local塊和SE塊都是次優的,每個塊都有一部分比另一個塊效果好。通過在每一步結合最優實現,我們得到了通用框架的新實例化,稱為全局上下文(global context,GC)塊。新塊在上下文建模context modeling(使用全局注意力池化)和融合fusion(使用addition)步驟上與簡化的NL塊共享相同的實現,同時與SE塊共享相同的transform步驟(使用兩層bottleneck)。在多個視覺識別任務中,GC塊的性能優于簡化的non-local塊和SE塊。
與SE塊一樣,我們提出的GC塊也是輕量級的,允許被應用于ResNet體系結構中的所有residual塊,而原始的non-local塊通常在一層或幾層之后應用,因為它的計算量很大。經GC塊增強后的網絡稱為全局上下文網絡(global context network, GCNet)。在COCO對象檢測/分割方面,GCNet在APbbox上比NLNet和SENet分別高出1.9%和1.7%,在APmask上分別高出1.5%和1.5%,在FLOPs上僅相對提高0.07%。此外,GCNet在三個常見的視覺識別任務中產生了顯著的性能收益:在COCO上的對象檢測/分割中,比以ResNet-50為backbone,使用了FPN的Mask R-CNN[9]在APbbox上提高了2.7%,在APmask上提高了2.4%;在ImageNet上的圖像分類比ResNet-50[10]的top-1準確度提高了0.8%;和在Kinetics中的動作識別上比ResNet-50 Slow-only基線[6]的top-1準確度提高了1.1%, 且只增加了不到0.26%的計算成本。
2. Related Work
Deep architectures.卷積網絡最近在大規模視覺識別任務中取得了極大的成功,已經進行了很多嘗試去改善原來的體系結構,以實現更好的準確性[18, 26, 27, 10, 37, 15, 34, 14, 43, 13, 40, 11, 4, 42, 19, 2, 24, 31, 35, 6]。網絡設計的一個重要方向是改進基礎組件的功能公式,提高深度網絡的能力。ResNeXt[34]和Xception[3]采用組卷積增加基數。Deformable ConvNets[4,42]設計可變形卷積,增強幾何建模能力。Squeeze-Excitation網絡[14]采用channel-wise的縮放來顯式地建模信道依賴關系。
我們的全局上下文網絡是一個新的backbone架構,使用新的GC塊實現更有效的全局上下文建模,在廣泛的視覺任務上提供優越的性能,如對象檢測、實例分割、圖像分類和動作識別。
Long-range dependency modeling.最近的long-range依賴建模方法可以分為兩類。一是采用自注意力機制對關系進行建模。第二種方法是對與查詢無關的全局上下文建模。
自注意力機制最近已成功應用于各種任務中,如機器翻譯[7,8,28]、graph embedding[29]、generative modeling[39]、視覺識別[30,12,31,36]。[28]是第一次嘗試應用自注意力機制來模擬機器翻譯中的long-range依賴關系。[12]擴展了自注意力機制,在對象檢測中對對象之間的關系進行建模。NLNet[31]采用自注意力機制對像素級成對關系進行建模。CCNet[16]通過堆疊兩個criss-cross塊來加速NLNet,并將其應用于語義分割。然而,NLNet實際上對每個查詢位置學習與查詢無關的注意力map,其浪費了計算成本來建模像素級成對關系。
為了對全局上下文特征建模,SENet[14]、GENet[13]和PSANet[41]對不同的通道進行縮放,以重新校準通道對全局上下文的依賴關系。CBAM[32]通過縮放來重新校準不同空間位置和通道的重要性。然而,所有這些方法都采用了重新縮放的方法進行特征融合,這對于全局上下文建模是不夠有效的。
本文提出的GCNet可以如NLNet[31](heavy-weight,難以集成到多層)一樣通過addition fusion去有效地建模全局上下文,也有著如SENet[14](采用縮放,對全局上下文建模不夠有效)一樣的輕量級屬性。因此,通過更有效的全局上下文建模,GCNet可以在各種識別任務的主要基準上獲得比NLNet和SENet更好的性能。
3. Analysis on Non-local Networks
在本節中,我們首先回顧一下non-local塊[31]的設計。為了直觀地理解,我們將廣泛使用的non-local塊實例化所生成的跨不同查詢位置的注意力map可視化。為了統計分析其行為,我們平均了所有查詢位置的注意力maps之間的距離(余弦距離和Jensen-Shannon散度)。
3.1. Revisiting the Non-local Block
基本的non-local塊[31]旨在通過合并其他位置的信息來加強查詢位置的特征。用表示一個輸入實例(即一張圖或一個視頻)的特征map,其中Np是特征map中位置的數量(即對于圖像來說,Np=H*W,對于視頻來說,Np=H*W*T)。x和z分別表示non-local的輸入和輸出,有著相同的維度。non-local塊可以表示為:
其中i表示查詢為止的索引,j表示所有可能的位置,表示位置i和j之間的關系,使用了一個歸一化因子。Wz和Wv表示線性transform矩陣(即1x1卷積)。為了簡化,用表示歸一化后位置i和j之間的成對關系。
為了滿足實際應用中的多種需求,non-local塊的四種帶有不同的實例化實現被設計出來,命名為Gaussian、 Embedded Gaussian、Dot product和Concat:(a)Gaussian表示中的為Gaussian函數,定義為; (b)Embedded Gaussian是Gaussian的一個簡單擴展,計算嵌入空間中的相似度,定義為;(c)Dot product中,中的被定義為dot-product相似度,定義為;(d)Concat被定義為。最廣泛的應用實例是Embedded Gaussian,如圖3(a)所示
non-local塊可以看作是一個全局上下文建模塊,它將特定查詢的全局上下文特征(通過一個特定查詢的注意力map,對所有位置進行加權平均)聚合到每個查詢位置。由于對每個查詢位置計算注意力map,non-local塊的時間和空間復雜度都是位置個數Np的二次冪。
3.2. Analysis
Visualization為了直觀地理解non-block塊的行為,我們首先可視化不同查詢位置的注意力map。由于不同的實例化實現了相當的性能[31],這里我們只可視化了最廣泛使用的版本,Embedded Gaussian,它的公式與[28]中提出的block相同。由于視頻中的注意力map難以可視化和理解,我們只對以圖像為輸入的目標檢測/分割任務進行可視化顯示。根據non-local網絡對目標檢測[31]的標準設置,我們在使用了FPN和Res50的Mask R-CNN上進行實驗,只在res4的最后一個residual塊之前添加一個non-local塊。
在圖2中,我們從COCO數據集中隨機選擇了6幅圖像,并為每幅圖像可視化三個不同的查詢位置(紅點)及其特定于查詢的注意力map(熱點圖)。我們驚訝地發現,對于不同的提問位置,他們的注意力map幾乎是相同的。為了從統計上驗證這一觀察結果,我們分析了不同查詢位置的全局上下文之間的距離。
Statistical Analysis用表示位置i的特征向量。平均距離的測量被定義為,其中dist(.,.)表示兩個向量之間的距離。
cosine distance是一個廣泛使用的距離測量指標,定義為。在這里我們計算三類向量的cosine距離,non-local塊輸入(vi=xi,表1中的'input')、non-local塊在fusion前的輸出(vi=zi-xi,表1中的'output')和查詢為止的注意力maps(vi=,表1中的'att')。Jensen-Shannon divergence (JSD)被用來計算兩個概率分布之間的統計距離,定義為。每個注意力map的總和為1(在Gaussian和E-Gaussian中),我們將當作一個離散的概率分布。因此,我們計算Gaussian和E-Gaussian中注意力maps(vi=)之間的JSD。
兩個標準任務上的兩個距離測量的結果如表1所示。首先,在‘input’列中余弦距離的較大值表明,non-local塊的輸入特征可以在不同的位置上進行區分。但是“output”中的余弦距離值非常小,這說明non-local塊建模的全局上下文特征對于不同的查詢位置幾乎是相同的。注意力maps(“att”)上的距離測量值對于所有實例來說都非常小,這再次驗證了可視化的觀察結果。換句話說,雖然non-local塊的目的是計算每個查詢位置的全局上下文,但訓練后的全局上下文實際上是與查詢位置無關的。因此,不需要為每個查詢位置計算特定查詢的全局上下文,這允許我們簡化non-local塊。
4. Method
4.1. Simplifying the Non-local Block
由于不同的實例化在COCO和Kinetics上都能獲得相當的性能,如表1所示,在這里我們采用最廣泛使用的版本,Embedded Gaussian,作為基本的non-local塊。在觀察到不同查詢位置的注意力map幾乎相同的基礎上,我們通過計算一個全局(查詢無關)注意力map來簡化non-local塊,并在所有查詢位置共享該全局注意力map。在[12]中,有Wz和沒有Wz的變體的性能相當,我們在簡化版本中省略了Wz。我們簡化的non-local塊定義為:
其中Wk和Wv為線性變換矩陣。這個簡化的non-local塊如圖3(b)所示。
為了進一步降低簡化塊的計算成本,我們應用分配律將Wv移出attention pooling,如:
該簡化的non-local塊版本在圖4(b)中闡述:
1x1的卷積Wv的FLOPs從減少到
有別于傳統的non-local塊,等式3的第二項與查詢位置i無關,這意味著這一項是所有查詢位置i共享的。我們因此直接構建全局上下文作為所有為止特征的加權平均,并合并(add)全局上下文特征到每個查詢位置的特征上。在實驗中,我們直接用我們簡化的non-local(SNL)塊替換non-local(NL)塊,并在三個任務上評估精度和計算成本,分別是COCO上的目標檢測、ImageNet上的分類以及動作識別,如表2(a), 4(a)和5所示。正如我們所預料的那樣,SNL塊可以獲得與NL塊相當的性能,且具有明顯更低的FLOPs。
4.2. Global Context Modeling Framework
如圖4(b)所示,將簡化后的non-local塊抽象為三個過程:(a)一個global attention pooling,采用1x1卷積Wk和softmax函數獲得注意力權值,再進行attention pooling,獲得全局上下文特征;(b)通過1x1卷積Wv進行特征變換;(c)特征聚合,即利用加法將全局上下文特征聚合到每個位置的特征上。
我們將此抽象視為全局上下文建模框架,如圖4(a)所示,并定義為:
其中(a)表示context modeling模塊,使用權重通過加權平均將所有位置的特征組合起來去得到global context features(即簡化后的NL(SNL)塊的global attention pooling);(b)表示特征轉換去捕獲channel-wise依賴(即SNL塊中的1x1卷積);(c)F(.,.)表示fusion函數,用于將global context features合并到每個位置的特征中(即SNL塊中的broadcast element-wise addition)
有趣的是,在[14]中提出的squeeze-excitation(SE)塊也是我們提出的框架的一個實例。如圖4(c)所示,它包括:(a)用于全局上下文建模的全局平均池化(在等式4中設置),在SE塊中稱為squeeze操作;(b)一個bottleneck transform模塊(等式4中的為一個卷積層、一個ReLU、一個卷積層和sigmoid函數),去計算每個channel的重要性,在SE block中命名為excitation操作;(c)一個用于fusion的縮放函數(等式4中的F(.,.)為element-wise乘法),去重新校準channel-wise特征。和non-local塊不同,SE塊是輕量級的,能夠用于所有的層,且僅增加少量的計算開銷。
4.3. Global Context Block
在這里,我們提出了一個全局上下文建模框架的新實例,命名為全局上下文(global context,GC)塊,它具有簡化的non-local(SNL)塊和squeeze-excitation(SE)塊的優點,前者具有long-range依賴上的有效建模,后者具有輕量級計算。
在簡化后的non-local塊中,如圖4(b)所示,transform模塊擁有最多的參數,包括一個有C·C個參數的1x1卷積。當我們將這個SNL塊添加到更高的層,例如res5時,這個1x1卷積的參數數為C·C=2048·2048,主導了該塊的參數數量。為了獲得SE塊的輕量化特性,將這個1x1卷積替換為bottleneck transform模塊,大大減少了參數的數量,從C·C減少到2·C·C/r,其中r為bottleneck比率,C/r為bottleneck的隱藏表征維數。當默認的縮減比設置為r=16時,transform模塊的參數數可以減少到原始SNL塊的1/8。更多關于不同bottleneck比率r值的結果見表2(e)。
由于雙層bottleneck transform增加了優化的難度,我們在bottleneck transform(ReLU之前)內增加了layer normalization,以簡化優化,同時作為一種正則化,有利于泛化。如表2(d)所示,layer normalization可以顯著增強COCO上的對象檢測和實例分割。
全局上下文(GC)塊的詳細架構如圖4(d)所示,表述為
其中是global attention pooling的權重,表示bottleneck transform。
具體來說,我們的GC塊包括:(a)用于上下文建模的全局注意力池;(b)瓶頸轉換以捕獲通道依賴;和(c)廣播元素為特征融合。
由于GC塊是輕量級的,因此可以在多個層中應用它,從而更好地捕獲long-range依賴關系,而計算成本只會稍微增加一點。以ImageNet分類的ResNet-50為例,GC-ResNet-50表示將GC block添加到ResNet-50中的所有層(c3+c4+c5),bottleneck比率為16。GC-ResNet-50增加了ResNet-50的計算量,從3.86 GFLOPs到3.87 GFLOPs,對應0.26%的相對增長。此外,GC-ResNet-50在ResNet-50所需的25.56M參數之外,引入了額外約 2.52M的參數,對應的增加了約9.86%。
全局上下文有利于廣泛的視覺識別任務,并且GC塊的靈活性允許它被插入到用于各種計算機視覺問題的網絡架構中。在本文中,我們將我們的GC塊應用于三個通用視覺任務-圖像識別,目標檢測/分割和動作識別-并觀察到在這三個方面的顯著改進。
Relationship to non-local block. 由于non-local塊實際上學習的是與查詢無關的全局上下文,因此我們的全局上下文塊的全局注意力池化構建了與NL塊相同的全局上下文,但計算成本顯著降低。由于GC塊采用了bottleneck transform來減少全局上下文特征中的冗余,從而進一步減少了參數和FLOPs的數量。GC塊的FLOPs和參數數量明顯低于NL塊,這使得我們的GC塊可以應用于多個層,而只需略微增加計算量,同時更好地捕捉long-range依賴關系并幫助網絡訓練。
Relationship to squeeze-excitation block. SE塊和我們的GC塊之間的主要區別是fusion模塊,它反映了兩個塊的不同目標。SE塊采用重縮放來重新校準通道的重要性,但不能充分地模擬long-range依賴性。我們的GC塊遵循NL塊,使用加法將全局上下文聚合到所有位置,來捕獲long-range依賴。第二個區別是bottleneck transform中的layer normalization。由于我們的GC塊采用了加法進行融合,layer normalization可以簡化兩層架構的優化以實現bottleneck transform,從而獲得更好的性能。第三,SE塊中的全局平均池化是GC塊中的全局注意力池化的一種特殊情況。表2(f)和表4(b)的結果顯示了我們的GCNet相對于SENet的優越性。
5. Experiments
為了評價所提出的方法,我們在三個基本任務上進行了實驗,分別是COCO[21]上的目標檢測/分割、ImageNet[5]上的圖像分類和Kinetics[17]上的動作識別。實驗結果表明,所提出的GCNet總體上優于non-local網絡(具有較低的FLOPs)和squeeze-excitation網絡(具有相當的FLOPs)。
5.1. Object Detection/Segmentation on COCO
我們在COCO 2017[21]上研究了我們的目標檢測和實例分割模型,其訓練集由118k張圖像,驗證集由5k張圖像,測試開發集由20k張圖像組成。我們遵循[9]的標準設置,分別通過在不同boxes和mask IoUs上的標準平均average-precision分數來評價對象檢測和實例分割。
Setup. 我們的實驗是用PyTorch[23]實現的。除非另有說明,我們的比率r=16的GC塊應用于ResNet/ResNeXt的c3, c4, c5階段。
Training. 我們使用帶FPN的Mask R-CNN[9]的標準配置,以ResNet/ResNeXt作為backbone架構。輸入圖像被調整大小,使其短邊為800個像素[20]。我們在8個GPU上訓練,每個GPU 2張圖像(mini batch大小為16)。在ImageNet分類[5]上對所有模型的backbone進行預訓練,然后結合檢測頭和分割頭,對除c1和c2外的所有層進行聯合微調。不同于[9]的RPN階段訓練,我們的實現采用了[25]的端到端的訓練,效果更好。與傳統的微調設置[9]不同,我們使用Synchronized BatchNorm來代替frozen BatchNorm。使用權重衰減為0.0001,momentum為0.9的同步SGD,對所有模型進行12個epoch的訓練,大致對應于Mask R-CNN基準[22]中的1x schedule。學習率初始化為0.02,并在第9和第11個epoch以10的倍數衰減。超參數的選擇也遵循了最新發布的Mask R-CNN基準[22]。
5.1.1 Ablation Study
消融研究在COCO 2017驗證集上完成。bounding box和分割masks的標準COCO指標包括AP、AP50、AP75均被報告。
Block design.在[31]之后,我們插入1個non-local塊(NL), 1個簡化的non-local塊(SNL),或者1個全局上下文塊(GC),就在c4的最后一個殘差塊之前。從表2(a)可以看出,SNL和GC在參數和計算量較少的情況下都能達到與NL相當的性能,這說明在原始的non-local設計中,計算和參數存在冗余。此外,在所有殘差塊中添加GC塊可以獲得更高的性能(在APbbox上提高了1.1%,在APmask上提高了0.9%),并略微增加了FLOPs和參數。
Positions. NL塊在殘差塊之后插入(afterAdd),而SE塊在殘差塊(after1x1)中的最后一個1x1 conv之后集成。在表2(b)中,我們研究了使用GC塊的兩種情況,它們產生了類似的結果。因此,我們采用after1x1作為默認值。
Stages. 表2(c)顯示了在不同階段集成GC塊的結果。所有階段都可以從GC塊中的上下文建模中受益(在APbbox和APmask上提高了0.7%-1.7%)。插入到c4和c5都比插入到c3獲得了更好的性能,這表明更好的語義特征可以從全局上下文建模中獲得更多好處。隨著FLOPs的略微增加,將GC塊插入到所有層(c3+c4+c5)會比只插入到單個層獲得更高的性能。
Bottleneck design.bottleneck transform中每個組件的影響如表2(d)所示。w/o ratio表示用1個1x1 conv作為變換的簡化NLNet,與基線相比參數更多。盡管r16和r16+ReLU的參數比w/o比變量少得多,但發現兩層比單層更難優化,導致性能更差。因此,LayerNorm (LN)被用來簡化優化,導致性能類似于w/oratio,但參數少得多。
Bottleneck ratio. bottleneck設計的目的是減少參數的冗余,并在性能和參數之間進行權衡。在表2(e)中,我們改變了bottleneck的比例r。隨著參數和FLOPs數量的增加,比率r下降(從32下降到4),性能持續提高(在APbbox上為0.8%↑,在APmask上為0.5%↑),這表明我們的bottleneck在性能和參數之間取得了很好的平衡。值得注意的是,即使是r=32的比率,網絡的性能仍然遠遠超過基線。
Pooling and fusion.表2(f)列出了pooling和fusion的不同選擇。首先,在fusion階段,addition比scaling更有效。令人驚訝的是,attention pooling的結果只比普通的average pooling效果好一點點。這表明全局上下文如何聚合到查詢位置(融合模塊的選擇)比所有位置的特征如何組合到一起(上下文建模模塊的選擇)更重要。值得注意的是,我們的GCNet (att+add)的性能明顯優于SENet,因為它使用attention pooling來進行上下文建模,并用加法來進行特征聚合能有效地建模long-range依賴關系。
5.1.2 Experiments on Stronger Backbones
我們在更強的backbone上評估我們的GCNet,用ResNet-101和ResNeXt-101[34]替換ResNet-50,在多層(c3+c4+c5)中增加可變形卷積[4,42],并采用級聯策略[1]。我們的GC塊整合在所有層(c3+c4+c5),battleneck比為4和16的結果被報告。表3(a)給出了驗證集的詳細結果。值得注意的是,采用更強的主干后,與基線相比,GCNet的增益仍然是顯著的,這表明我們使用全局上下文建模的GC塊,是對當前模型容量的補充。對于最強大的backbone,在ResNeXt-101中使用了可變形卷積和級聯RCNN,我們的GC塊在APbbox上仍然可以提高0.8%,在APmask上提高0.5%。為了進一步評估我們提出的方法,我們還報告了test-dev集的結果,如表3(b)所示。在test-dev中,通過添加GC塊,強大的基線的效果也得到了很大的提高,這與驗證集上的結果是一致的。這些結果證明了我們提出的方法的魯棒性。
5.2. Image Classification on ImageNet
ImageNet[5]是一個用于圖像分類的基準數據集,包含來自1000個類的128萬張訓練圖像和50K驗證圖像。我們遵循[10]中的標準設置,在訓練集上訓練深度網絡,并在驗證集上報告single-crop top-1和top-5錯誤。我們的預處理和增強策略遵循[33]和[14]中提出的基線。為了加快實驗速度,所有報告的結果都經過兩個階段的訓練。我們首先在8個GPU(每個GPU 64張圖像(有效批處理大小為512))上訓練120個epochs的標準ResNet-50,并進行5個epochs的線性warmup。第二,我們將新設計的模塊插入到第一階段訓練的模型中,并以0.02的初始學習率對另40個epochs進行微調。基線也遵循這個兩階段訓練,但是在第二階段不添加新的塊。cosine學習率衰減用于訓練和微調。
Block Design. 與COCO的塊設計一樣,表4(a)報告了不同塊的結果。GC塊的性能略好于NL塊和SNL塊,參數少,計算量少,表明了我們設計的通用性和通用性。通過在所有殘差塊(c3+c4+c5)中插入GC塊,性能進一步提高(top-1精度比基線提高0.82%),并具有邊際計算開銷(FLOPs的相對增加0.26%)。
Pooling and fusion. 研究了不同池化和融合方法在圖像分類中的作用。對比表4(b)和表2(f)可以看出,attention pooling在圖像分類中的作用更大,這可能是[14]缺失的成分之一。此外,帶有加法的attention pooling(GCNet)在幾乎相同的參數和FLOPs情況下,比帶有scale的普通average pooling(SENet)的最高準確率高出0.44%。
5.3. Action Recognition on Kinetics
對于人類動作識別,我們采用了廣泛使用的Kinetics[17]數據集,該數據集有大約240k的訓練視頻和20k的驗證視頻,涵蓋400個人類動作類別。所有模型在訓練集上訓練,在驗證集上測試。在[31]之后,我們報告top-1和top-5識別準確度。我們在[6]中采用slow-only基線,這是迄今為止最好的single模型,可以利用來自ImageNet預訓練模型的inflated權重[2]。這個inflated3D策略[31]比從頭開始訓練的收斂更快。所有實驗設置都明確遵循[6];以8幀(8×8)作為輸入訓練slow-only基線,并采用multi(30)-clip驗證。
消融研究結果見表5。在Kinetics實驗中,GC塊的比率設置為4。首先,將NL塊替換為簡化的NL塊和GC塊時,性能是相當的 (top-1準確度為0.19%↓和0.11%↓,top-5準確度為0.15%↑和0.14%↑)。與COCO和ImageNet一樣,添加更多的GC塊可以進一步改善結果,比NL塊有更少的計算量。
6. Conclusion
long-range依賴建模的先驅工作non-local網絡旨在對特定查詢位置的全局上下文建模,但僅建模了與查詢無關的上下文。在此基礎上,我們對non-local網絡進行了簡化,并將這個簡化版本抽象為一個全局上下文建模框架。然后我們提出了這個框架的一個新的實例化——GC塊,它是輕量級的,可以有效地建模long-range依賴。我們的GCNet是通過將GC塊應用到多個層來構建的,其在各種識別任務的主要基準上優于簡化的NLNet和SENet。
總結
- 上一篇: 苹果已放弃“五福一安”,你还有必要坚持吗
- 下一篇: 一个wxWidgets判断注册表键值的函