1. 程式人生 > >《Learning Deep Features for Discriminative Localization》文章解讀

《Learning Deep Features for Discriminative Localization》文章解讀

摘要 在這項工作中, 我們重新審視了《 Network in network》中提出的全域性平均 池化層(global average pooling),並闡明瞭它是如何通過圖片標籤就能讓卷積神經網路具有卓越的定位能力。雖然這項技術以前被當做正則化訓練的一種方法,但是我們發現它實際構建了一種通用的適用於各種任務的能定位的深度表示。儘管global average pooling很簡單,我們仍然能夠在2014年的ILSVRC物體定位比賽中得到37.1%的top-5錯誤率,與CNN的34.2%top-5錯誤率非常接近。我們證明了我們的網路能在各種任務中區分影象區域進行定位,儘管沒有經過(定位)訓練。

1 Introduction

最近Zhou等人的《Object detectors emerge in deep scene cnns》表明CNN的各個層的卷積單元實際上是物體檢測器,儘管沒有對物體的位置進行監督。儘管卷積層定位物體的能力很出色,但當用全連線層進行分類時,這種能力會喪失。最近,一些流行的全連線層和卷積層的神經網路,比如Network in Network(NIN)和GoogLeNet,已經提出通過避免使用全連線層的方式來最小化引數並且保持高效能的方法。

為了實現這一目標,NIN使用global average pooling來做正則化,避免訓練過程中的過擬合。在我們的實驗中,發現global average pooling的優勢遠不止正則化——實際上,只需要稍微調整一下,網路就可以保持卓越的定位能力,直到最後一層。這樣的微調使辨別影象區域變得十分簡單,即使對那些最初沒訓練的網路也是如此。如圖1(a)所示,在物體分類上訓練的CNN能夠成功的將動作分類的區分割槽域定位為與人類互動的物體而非人類本身。

 

圖1. 簡單修改的global average pooling層結合我們的class activation mapping(CAM)技術使訓練過的分類CNN既能分類又能定位每類圖具體的分類區域,比如brushing teeth中的toothbrush和cutting trees中的chainsaw

 

儘管我們的方法顯得很簡單,在ILSVRC的弱監督物體定位比賽中,我們最好的網路在測試集中達到了37.1%的top-5錯誤率,這與全監督的AlexNet達到的34.2%top-5錯誤率極其接近。此外,我們還證明所提方法中的深度特徵可以很容易地用於其他資料集的分類、定位和概念發現(concept discovery)。

1.1 Related Work

卷積神經網路在視覺識別任務中有著令人印象深刻的表現。近期的研究表明,儘管在圖片級的標籤上訓練,CNN在定位上也有著卓越的能力。本文中,我們證明了只要使用正確的架構,就能將這種能力泛化到不僅僅是定位物體,而是標定圖片中具體哪一個區域正在用於分辨物體。這裡,我們討論與這些研究最相關的兩條主線:弱監督物件定位和視覺化CNN的內部表示。

弱監督物體定位(Weakly-supervised object localization) 最近已經有很多用CNN做弱監督定位的研究了。Bergamo等人提出了一種“自己學習的(self-taught)”物體定位方法,為了實現物體定位,通過掩蓋圖片區域來尋找引起最大啟用的區域。Cinbis等人用CNN特徵結合多例項的學習定位物體。Oquab等人提出了一種能轉換中級影象的方法,並且展示了一些物體的定位能通過評估CNN在多重疊區域的輸出實現。但是,這些作者並沒有對定位能力做評估。此外,這些方法雖然產生了想要的結果,但並不是端到端的訓練,需要提前做一系列額外工作,然後輸入網路來定位物體,這使它們很難泛化到真實世界的資料集。我們的方法是一個端到端的,而且只需要輸入圖片就可以定位物體。
與我們的方法最相近的是Oquab提出的基於global max pooling的方法。不同於global average pooling,他們用global max pooling來定位物體的點。但是,它們的定位侷限於物體邊緣的點,而不是確定物體的全部範圍。我們認為雖然max和average很相似,但是平均池化更鼓勵網路識別完整的物體區域。背後的原理是average pooling網路相比於max pooling識別整個物體的辨別性區域的損失更小。在3.2部分有詳細的說明及驗證試驗。此外,不同於Oquab,我們證明了這種定位能力能夠泛化,甚至能用於偵測網路沒有訓練過的資料。
我們使用class activation map來代表每個圖中的啟用圖的權重,如第2部分所述。我們想要強調的是,global average pooling不是我們提出來的新技術,我們的創新點在於用它來精確定位區別性區域(discriminative localization)。我們相信,這種簡單的技術可移植性很好,能應用於快速精確地解決很多計算機視覺中的定位問題。
視覺化卷積神經網路: 最近有很多關於視覺化卷積神經網路內部的研究,試圖對其屬性有更好的表現。Zeiler等人用反捲積網路來視覺化啟用每個單元的模式。Zhou等人發現CNNs被訓練識別場景時會學習物體偵測,並證明了統一網路既能進行場景識別,又能進行物體定位。這些研究都只分析了卷積層,忽略了全連線層,因此是不全面的(國外論文好文藝,原文如是描述:thereby painting an incomplete picture of the full story)。通過移除全連線層並儘可能保持效能,能從頭到尾更好的瞭解我們的網路。
Mahendran等人和Dosoviskiy等人通過轉化不同層的深度特徵分析了CNN的視覺化解碼。雖然這些方法可以轉化全連線層,但是隻展示了深層特徵中什麼資訊被保留,並沒有凸顯出這些資訊的相對重要性。不同於Mahendran和Dosoviskiy,我們的方法你能凸顯出圖片的那個區域是區別性區域。總的來說,我們的方法是對CNN的另一種深入呈現。(又是很文藝的說法:our approach provides another glimpse into the soul of CNN)

2 Class Activation Mapping

這一部分,我們描述了用CNN的global average pooling(GAP)生成class activation maps(CAM)的過程。某一確切分類的CAM代表了CNN用於做分類時所看的區別性區域的位置(如圖3)。生成CAM的過程如圖2。

 

圖2 CAM:預測的類別分數被映射回先前的卷積層以生成類別啟用圖(CAM),CAM凸顯了特定類的區別性區域

 

圖3 ILSVRC中四個分類的CAM圖。這些圖將圖片中用於分類的區別性區域高亮標記,例如,hen和briard的頭,barbell上的圓盤,


我們使用了與Network in Network和GoogLeNet相似的網路結構——網路的大部分都是卷積層,只在輸出層前(用於分類的softmax)使用global average pooling層,並將它們作為得出分類的全連線層的特徵。通過這種簡單的連線結構,我們可以把圖片中的重要區域用輸出層權重映射回卷積層特徵的方式標記出來,我們稱這種技術為類啟用對映(CAM)。
如圖2所示,全域性平均池化層輸出最後一個卷積層的每個單元的特徵圖(feature map)的平均值。這些值的加權總和用於生成最後的輸出。也可以說,我們計算最後一個卷積層特徵圖的加權總和來獲得我們的CAM。我們在下面用更規範的方式描述softmax的情況。同樣的技術可以用於其他的迴歸函式或損失函式。
對於一個給定的圖,用fk(x, y)代表最後一個卷積層在空間座標(x,y)中單元k的啟用值。然後,對於每個單元k,通過GAP後的結果Fk為∑x,yfk(x, y)。則,對於每個類c,輸入softmax的Sc為∑kwc,kFk,wc,k代表單元k對應的類c的權重。實際上,wc,k就是Fk對類c的重要性。最後類c的sotfmax輸出Pc為exp(Sc)/∑cexp(Sc)。這裡我們忽略偏差項:我們明確地把softmax的偏差項設定為0因為它幾乎對分類表現沒有影響。
把Fk=∑x,yfk(x, y)帶入Sc,得

公式1


我們用Mc定義類別c的CAM,則空間每個元素為

公式2


則Sc = ∑x,yMc(x,y),所以Mc(x,y)直接表明了把空間網格(x,y)啟用對圖片劃分為類別c的的重要性。
根據先前的研究,直觀地講,我們都希望用一些視覺化方法看到每個被啟用的單元的啟用區域,fk就是這種視覺化方法。CAM簡單說就是不同空間區域的線性加權視覺化。將類啟用圖的大小改變成輸入圖片的大小,就能清楚地看出與特定類最相關的區域。
圖3展示了一些CAM輸出的用例,可以看到不同類的區別性區域已經高亮。在圖4,我們展示了同一張圖用不同類別的c生成的CAM圖的不同之處。我們發現即使是同一張圖,對不同類的區別性區域也不同。這說明我們的方法與預期一樣。我們在前面的部分證明了這一點。

圖4 同一張圖片的top-5預測類生成的CAM圖。預測的類和是該類的概率在CAM圖上方。我們發現預測為各個類的高亮區域都不同,比如dome激活了上半部分而palace啟用的是下半部分。

 

全域性平均池化層(GAP)VS全域性最大池化層(GMP):鑑於之前有的研究使用GMP做弱監督物體定位,我們認為很有必要直觀地對比一下GAP和GMP的高亮區域的不同。比起GMP的鼓勵網路只關注1個discriminaltive part,GAP更鼓勵網路識別物件的整個範圍。因為當求平均數時,這個值可以通過找所有discriminative part來最大啟用而低啟用減少了特定的輸出。另一方面,對於GMP,所有圖的低分割槽域(除了最有區分力的一個),都不會對得分有影響,因為你只取了max。我們在第三部分用ILSVRC資料集驗證了此想法:GMP的分類效能與GAP相當,GAP的定位能力要強於GMP。

3 Weakly-supervised Object Localization

在這一部分,我們在ILSVRC2014資料集上評估了CAM的定位能力。我們先描述了實驗的設定和用到的CNN網路,見3.1部分。然後在3.2部分驗證了我們的技術不會在學習定位時對網路產生不利影響,並詳細給出了弱監督物件定位的結果。

3.1 Setup

我們用下面這些流行的CNN網路評估CAM的影響:AlexNet,VGGnet和GoogLeNet。通常來講,我們把這些網路的全連線層全部移除,替換為GAP,然後接一個softmax全連線層。
我們發現GAP前的最後一個卷積層有較高空間解析度時網路的定位能力可以得到改善,我們之稱為圖解析度(mapping resolution)。為了做到這一點,我們移除了一些網路的卷積層。具體來說,我們做了下面改動:對AlexNet,我們移除conv5之後的卷積層(pool5到prob),得到圖解析度(mapping resolution)為13x13。對VGGnet,我們溢位了conv5-3後的所有卷積層(pool5到prob),得到14x14的圖解析度。對GoogLeNet,我們溢位了inception4e後的卷積層(pool4到prob),得到14x14的圖解析度。對上述的每個網路,我們都新增一個3x3,步長為1,padding為1,1024個單元的卷積層,然後接一個GAP層和一個softmax層。最後對每個網路在ILSVRC的1.3M張要分成1000類的訓練圖片進行精調(fine-tuned),分別產生我們最終的AlexNet-GAP,VGGnet-GAP和GoogLeNet-GAP。
對於分類,我們與原始的AlexNet,VGGnet和GoogleNet與做了比較,也提供了Network in Network的結果。對於定位,我們與原始的GoogLeNet和NIN進行了比較,還用反向傳播代替了CAM。此外,為了比較average pooling和max pooling,我們也提供了用max pooling訓練的GoogLeNet的結果(GoogLeNet-GMP)。
我們使用一樣的誤差矩陣(top-1,top-5)作為ILSVRC對分類和定位的評估指標。對於分類,我們對ILSVRC的驗證集進行了評估,對於定位,我們在驗證集和測試集上都做了評估。

3.2 Results

我們先提供了在分類上的結果,以證明我們的方法沒有對分類效能產生明顯的不良影響。然後我們有證明了我們的方法在弱監督物體定位上十分有效。
分類:Tb.1總結了原始網路與我們的GAP網路的分類效能。我們發現多數情況下從各個網路中移除多餘的網路層使分類效能下降了1%~2%。我們觀察到AlexNet是移除全連線層後分類效能受影響最大的網路。作為補償,我們在它的GAP層前添加了兩個卷積層,得到AlexNet-GAP網路。我們發現AlexNet-GAP與AlexNet的效能相當。因此,總體而言,我們的GAP網路很大程度地保留了網路的分類效能。此外,與預期的一樣,我們觀察到GoogLeNet-GAP和GoogLeNet-GMP的分類效能相似。注意,為了在定位上得到好的表現,網路的分類效能很重要,因為它決定了網路是否能準確地分類和定位的邊界。

Table 1

 

定位:為了做定位,我們需要生成一個邊界框及其關聯的物體類別。為了生成CAM的邊界框,我們使用簡單閾值來劃分熱力圖。我們先用大於CAM最大值的20%的值做一個邊框,然後我們再用覆蓋分割圖中最大連通分量做一個邊框。我們把預測的top-5全部如此標記出來。圖6(a)展示了用這項技術生成的示例邊框。在ILSVRC驗證集上的定位效能見Tbl2,輸出示例圖見圖5。

Table 2

 

圖5. CNN-GAPs的CAM和特定類的反向傳播方法

 

圖6 (a)GoogLeNet-GAP的定位示例

我們觀察到我們的GAP網路表現優於所有使用GoogLeNet-GAP的方法,達到了top-5上最低定位錯誤率43%,沒有用任何一個帶標註的邊界框上訓練就能達到這樣表現的網路是前所未有的。我們也可以看到CAM方法明顯優於反向傳播的方法(比較結果見圖6(b))。此外,我們發現GoogLeNet-GAP比GoogLeNet的定位效能更好,儘管得到的分類沒有GoogLeNet好。我們是認為GoogLeNet(7x7)的低解析度導致它丟失了精確地定位能力。最後,我們發現GoogLeNet-GAP比GoogLeNet-GMP表現更傑出,它的合理範圍說明了average pooling在識別物體範圍上比max pooling更重要。

 

圖6(b) 使用GoogLeNet-GAP的定位(上面兩個)與使用AlexNet反向傳播的定位比較。真實框為綠色,預測的框為紅色

為了進一步比較我們的方法與現有的弱監督和全監督CNN方法,我們評估了GoogLeNet-GAP在ILSVRC的測試集上的表現。使用一個稍微不同於上的邊界框選擇策略:我們選擇兩個邊界框(一鬆一緊),一個從top 1st和2nd預測類的CAM中選擇,一個從top 3rd預測類的CAM中選擇。我們發現這種啟發式方法對改善驗證集表現很有幫助,表現在表3種陳列。啟發式的弱監督GoogLeNet-GAP在達到top-5錯誤率37.1%,與全監督的AlexNet(34.2%)十分接近。雖然令人印象深刻,但如果想用同樣的結構得到與全監督的網路相同的效能,還有的路要走(如,弱監督的GoogLeNet-GAP vs 全監督的GoogLeNet)。

 

Table 3

4 Deep Features for Generic Localization

CNN的更高層(比如AlexNet的fc6,fc7)已經被證明能提取到很有效的通用特徵(generic features),其在各種個圖片資料集上都有極好的效能。這裡,我們證明了我們的GAP CNN學到的特徵可以很好地作為通用特徵,識別出用於分類的區別性區域,儘管沒有針對這些特定任務進行訓練。為了得到與softmax層相似的權重,我們在GAP的輸出上簡單訓練了一個SVM。
首先,對比我們的方法與一些基準模型在下面場景及物體分類任務中的表現:SUN397 [27], MIT Indoor67[18], Scene15 [11], SUN Attribute [17], Caltech101[6], Caltech256 [9], Stanford Action40 [28], andUIUC Event8 [12]。實驗設定與B. Zhou, A. Lapedriza, J. Xiao, A. Torralba, and A. Oliva.Learning deep features for scene recognition using places database. In Advances in Neural Information Processing Systems,2014.一樣。表5對比了我們最好的網路GoogLeNet-GAP提取的特徵與AlexNet的fc7提取的特徵和GoogLeNet的ave pool提的特徵比較。

表5


與預期一樣,GoogLeNet-GAP和GoogLeNet的表現明顯優於AlexNet。同時,我們也發現GoogLeNet-GAP和GoogLeNet表現相近,儘管前者含有更少的卷積層。總的來說,我們發現GoogLeNet-GAP的特徵與最先進的技術提取的特徵不相上下。
更重要的是,我們想探究使用我們的CAM技術生成的定點陣圖是否比GoogLeNet-GAP更具有資訊性,即使在這種情況下也是。圖8展示了各種資料集下生成的例圖。我們發現所有資料中大多數區別性區域都被高亮標出。總體來說,我們的方法在一般任務中可以有效地生成能定位的深度特徵。
在4.1部分,我們將探索鳥類的更細粒度的識別,並展示我們如何評估定位能力,使用它進一步提高效能。4.2部分證明了GoogLeNet-GAP可以用於從圖片中提取通用視覺模式。

 

4.1 Fine-grained Recognition

在這一部分,我們將提取到的通用定位深度特徵用於在CUB-200-2011資料中識別200種鳥類。這個資料集包含11788張圖片,5994張訓練集,5794張測試集。我們選擇這個資料集是因為它也包含邊界框註解,能讓我們評估我們定位的能力。表4總結了結果。

 

表4

 

我們發現,GoogLeNet-GAP與現有方法表現相當,在沒有用任何帶邊界標記的資料訓練過的情況下得到了全圖(full-image)63%的準確率。使用邊界框訓練時,準確率增加至70.5%。現在,給出我們網路的定位能力,可以用3.2部分(即閾值)的方法先標出訓練集和測試集中鳥的邊界框,然後我們用GoogLeNet-GAP從邊界框內提取特徵來訓練和測試。我們發現效能提高至了67.8%。在細粒度識別中,定位能力非常重要,因為類別之間的差別是極細微的,如果有更集中的裁剪區域,則會帶來更好的區分度。
此外,我們發現GoogLeNet-GAP能準確定位41%的交併比為0.5(IoU,兩個邊界框的重疊度)的鳥,其他的只有5.5%(不確定翻譯,原文為as compared to a chance performance of 5.5%)。我們在圖7中足了一些視覺化,進一步驗證了我們方法的定位能力。

 

圖7 選擇的CUB200類別中的4個鳥的CAM和預測邊框(紅色)。在4.1部分,我們評估了邊界框的準確率(0.5交併比的有41%)。我們發現提取這些GoogLeNet-GAP的CAM邊界框並且再用SVM訓練,可以將鳥的分類準確率提高約5%(表4)

4.2 Pattern Discovery

這一部分,探索我們的技術是否能識別一般元素或出物體外的圖片模式,比如文字或者更高維的概念。給一些包含普通概念的圖片,我們想確定網路認為哪些區域是重要的,以及是否符合輸入模式。我們使用了與以前相似的方法:在GoogLeNet-GAP網路的GAP層訓練了一個線性SVM,並使用CAM技術識別重要區域。我們用我們的深度特徵做了三個模式的實驗,結果在下方總結。注意在這種情況下,我們不需要拆分訓練集和測試集——只用CNN做視覺模式探索。
發現場景中資訊豐富的物體:我們從SUN資料集[27]中抽取10個包含至少200個完全註解影象的場景類別,從而產生總共4675個完全註解的圖片。我們針對每個場景類別訓練一對一線性SVM,並使用線性SVM的權重計算CAM。圖9繪製了預測風景類別的CAM,並列出了兩個場景類別的CAM高啟用區域中高頻覆蓋的前6個物體。我們發現高啟用區域經常對應於指示特定場景類別的物體。

圖9 兩個場景的資訊豐富的物體。對Dining room和Bathroom,我們展示了原圖(top),列出了6個場景中高頻出現的物體以及出現頻率。bottom是CAM以及列出的6個啟用區域高頻覆蓋的物體。


弱標記影象的概念定位:使用B. Zhou, V. Jagadeesh, and R. Piramuthu. Conceptlearner:Discovering visual concepts from weakly labeled image collections.Proc. CVPR, 2015中的hard-negative mining方法學習概念檢測器並用我們的CAM技術定點陣圖片概念。為了訓練一個短語的概念檢測器,positive set由包含文字標題中的短語的圖片組成,negative set由隨機選擇的圖片組成,文字標題中沒有任何相關詞語。圖10,我們可視化了排名最高的圖片以及兩個概念檢測器的CAM圖。注意,即使這些短語比典型的物體名更抽象,CAM也會將這些概念的資訊區域進行定位。

圖10 弱標籤圖片學到的資訊區域概念。儘管概念相當抽象,但我們的GoogLeNet-GAP網路充分定位了這些概念。

 

弱監督文字檢測器:我們用350個Google Street View圖片訓練弱監督文字檢測器,positive set包含SVT資料集的文字,negative set包含從SUN資料集種隨意取樣的室外風景圖片。如圖11所示,我們的方法沒使用邊界框註解就準確地標出了文字區域。

圖11 學習一個弱監督文字檢測器。儘管我們的網路沒有用text或者任何邊界框註解訓練,還是準確地標出了text的位置

 

視覺問題回答:(Interpreting visual question answering)我們用我們的方法標出與B. Zhou, Y. Tian, S. Sukhbaatar, A. Szlam, and R. Fergus.Simple baseline for visual question answering. arXivpreprint arXiv:1512.02167, 2015.中提出的視覺問題答案相關的深度特徵。在Open-Ended track中,整體準確率為55.89%。如圖12所示,我們的方法標出了與預測答案相關的影象區域。

圖12 在視覺問題回答中預測答案相關區域的標定示例

 

5 Visualizing Class-Specific Units

Zhou等人展示了CNN不同層的卷積單元可以作為視覺概念檢測器,識別諸如紋理和材質之類的low-level concepts和物體或者場景這些high-level concepts。深入神經網路,這些單元變得越來越有識別能力。但是,很多網路由於全連線層,變得很難確定識別不同類的不同單元起到的重要性。這裡,使用GAP和排序的softmax權重,可以直接視覺化這些單元對給定類的識別的重要性。這裡我們將其稱為CNN的指定類單元(class-specific units)。
圖13展示了AlexNet*-GAP的指定類單元,分別在ILSVRC資料集做物體識別(top)和Places Database做風景識別(bottom)。我們使用與Zhou等人相似的處理估計接收區域和分割最後一個卷積層的每個單元的啟用圖。然後我們簡單地使用softmax的權重來對每個單元做指定類的排序。從圖中我們可以看出到底是哪個單元將物體分類的區別性區域標記了出來。例如,檢測狗臉和體表皮毛的單元對分類湖地獵犬很重要,檢測沙發、桌子和壁爐的單元對分類客廳很重要。 因此我們可以推斷CNN實際上學習了一個單詞包,每個單詞都是一個特定類區別性區域的單元。 這些特定於類的單元的組合可以指導CNN對每個影象進行分類。

 

圖13 視覺化AlexNet*-GAP分別在ImageNet(top)和Places(bottom)上的指定類單元。展示每個資料集的前3個選定類的單元。每一行展示了接收區域單元分割最自信的影象。例如,檢測黑板,椅子和桌子對場景分類中教室的類別判定很重要

6 Conclusion

本文針對使用GAP的CNN網路提出了一個叫做CAM的通用技術,這個技術可以讓做過分類訓練的CNN網路學會進行物體定位,不需要進行額外的邊界框註解訓練。CAM可以視覺化預測類在任何給定圖片上的得分,標出CNN檢測到的物體的區別性區域。我們在ILSVRC上評估了我們的方法,進行了弱監督物體定位,證明了我們的全域性平均池化層的CNN可以進行準確的物體定位。此外,我們證明了CAM定位技術可以推廣到其他視覺識別任務中,也就是說,我們的技術可以生成通用的用於定位的深層特徵,可以幫助其他用CNN做任務的研究人員,作為他們理解區別性區域的基礎。