【論文筆記】【ICCV17】Multi-label Image Recognition by Recurrently Discovering Attentional Region

最近看的一篇論文是中山大學的一篇ICCV 2017論文,這篇論文主要介紹了在針對多標籤圖片,如何識別attention region ,並且定位到感興趣的區域,並且輸出針對類別標籤的各個分數。

接下來我們儘可能順著作者的行文思路先把整體的概念梳理一遍。

對於原文的解讀,是把文章理解以後說成自己的話,肯定不會逐字逐句的解讀,在解讀時候我也加上了一些自己的理解。


論文地址:arxiv.org/pdf/1711.0281

我一直在想我寫筆記的目的,這篇筆記大概寫了一個下午加晚上吧。是第三遍看論文的時候才會寫網上筆記(第一遍在PDF隨筆,第二遍自己動手寫筆記),我想對於我來說更多的是又重新加深一遍理解吧。

我希望我自己能保持下去,這次增加了論文拷問板塊(文末),這對我來說很有作用。讓我能夠帶著問題去思考。

我畢竟還是一個new CVer。一些思想上的不成熟,邏輯上的混亂,還請大佬們指出 。我一定虛心學習改正。


/Abstract/

首先作者提出一個創新的結構用來解決多標籤圖片的識別問題。這對於視覺理解來說是一個基礎並且實際的問題,但是呢,現在的常用的解決辦法都是從是額外的產生假定區域(makaay:比如faster rcnn 提出的rpn區域),這樣很容易導致的問題就是計算的冗餘性以及低性能的表現。而在這篇文字中,作者主要通過 循環可記憶model 來實現視覺上的可解釋性和多標籤圖片分類上的標籤相互聯繫的解釋。當然,他們最主要的結構就是使用一個空間轉換層來得到感興趣的區域,並且通過LSTM來得到語義標籤的分類,以及通過LSTM來得到相應的空間層轉換的參數。經過驗證,作者他們的模型在MSCOCO以及VOC 07上都取得了十分有效果的表現。


1./Introduction/

有效的識別多標籤的分類是一個很實際的問題。現在單標籤分類(makaay: 就比如cifar10,每張圖片就只有一張標籤)有時候會面臨著由於視角,尺度,遮擋,光照等因素所造成的類間差。更不用說現在多標籤分類的所面臨的問題了。多標籤的圖片的多個類別的精確識別經常需要能夠更加深層次的理解圖片,就比如說語義標籤和區域之間是如何聯繫的,以及他們依賴性。

接下里作者就大概介紹了下現在CNN巴拉巴拉所取得進展。然後那些傳統的hypothesis region 的方法他們的缺點就是,大量計算,並且忽略了上下文之間的聯繫,以及標籤之間的相互依賴聯繫(makaay:這裡解釋下,就比如出現了鳥,很大一部分會出現樹木,或者天空,他們都是有一定的聯繫關係的,這就不可避免的要使用lstm)。雖然王(16年的文章,這個後面我也會具體讀一下的)在16年提出了CNNRNN的方案用來解決標籤之間的關係的問題。但是卻忽視了標籤和區域之間的聯繫,並且缺少探索空間背景(這個空間我沒理解啥意思)。所以作者的對比目標就出來了,提出一個端到端的網路,然後能夠得到基於語義標籤的注意力區域,並且能夠從一個全局的視角捕捉到上下文的標籤的依賴性,並且他們的模型並不需要輸出假定框。

作者接下來就說明了他們的空間轉換層是用來提取相關的region,然後使用lstm來獲得相應的語義標籤分數以及相應的上下文信息。

作者他們的本文工作主要有三點:

  • 第一點就是他們提出一個方法能夠自己識別有語義信息的region ,然後呢,能夠發現他們之間的相互聯繫通過LSTM。
  • 他們在空間轉換層設置了三個限制,使得region的選取能夠更加的優化和順暢,這樣的話,後面的LSTM的效果也會變得很好。
  • 他們做了大量的對比試驗,發現他們的模型在打的數據集上依然表現的很好。

2./Related Works/

依然是先介紹下圖片分類的相關工作,例行結構。

巴拉巴拉,巴拉巴拉小魔仙的介紹。

然後說明上述所有提到的方法都沒有解決區域和標籤之類的問題,並且容易受到複雜背景的影響。

然後又提了幾個論文,雖然解決了區域和標籤的問題,但是又產生了效率的問題。並且沒有辦法形成端到端的結構,沒法直接進行訓練。

注意力區域是由sT模型產生。


3./Model/

接下來重點介紹下模型:下圖是模型的整體描述,我已經把他基本用到的公式都已經重點貼了上去,使整個模型能夠更加的方便易懂。

我們從圖上也可以看出,最開始的圖片經過cnn,這裡的cnn使用的是VGG16,需要強調的是,這裡輸入是沒有圖片相關信息的。經過cnn 以後,我們能夠得到卷積的feature map ,把它定義為fi,然後把得到的feature map送入到循環注意力記憶模塊,(這個模塊由圖中可以看出是由一個空間轉換層ST和LSTM組成的),然後,ST會定位一個attentional region ,來作為lstm的輸入,而lstm也會針對這個區域預測具體的類別分數並且重新更新ST的參數,最後呢,從這些感興趣區域得到的分數在經過融合,就會得到相應的類別分類。

3.1./空間轉換層用於區域定位/

作者在這裡簡單的介紹了下空間轉換層的用法。空間轉換層是一個基於樣本的鑒別模塊,能夠在空間上把輸入映射轉換成輸出映射(對應著輸入映射的一個小塊分區)。而且呢,ST模塊能夠很方便的在網路中進行訓練,並且進行反向傳播。在作者的模型中,ST模塊被放入循環記憶模塊用於attention region區域的定位。

一般的,空間轉換層所輸出的attention region 的特徵被記住fk。這裡需要一個空間轉換矩陣 M(最開始的時候這個參數是我們給定的,而接下的時候是慢慢去學習的,這個在上面的圖中也有具體的展示),現在我們有了fk的坐標,所以就能得到在fi中的坐標網格了。 然後呢,包含attention region的fk就能夠通過雙線性插值來產生了。如下圖所示。

而為了定位region,我們常常來給轉換矩陣加限制,使得只有能進行縮放,平移等操作。

這裡解釋下,這個空間轉換矩陣通過改變參數能夠實現一些變換上的操作,所以我們就可以通過學習這個參數來使得原圖來發生一定的變化,最後得到我想要的attention region。

在論文《Spatial transformer networks》中,用公式證明了

進行複製、平移、縮放操作,只需要一個映射矩陣M[2,3]

一個有趣的例子:

平移

縮放

這個空間轉換矩陣為:

里我的理解就是我得到我的feature map 以後,我們學習M矩陣的參數,這樣的話,我們就能從原來的大feature map 得到我感興趣的feature map .然後就可以吧我感興趣的feature Map送到LSTM 中,這樣的話就可以節省很多的計算,但同時也提高了模型的穩定性。


3.2/循環注意力記憶模塊/

這裡就是把空間轉換層和LSTM進行了連接。

我們這裡很容易明白,我的fk 是關於fi和M 的一個函數:

這裡作者還強調了一點,就是他們的空間轉換操作是來自於feature map 以後進行的,這樣的話就可以剩下很多的計算過程。我覺得這點在一兩年前都已經想到了,就比如目標檢測的那些,都是在經過cnn 以後的feature Map上來進行的rpn 的相關操作。

接下來就是LSTM的常規操作了,這裡就不在具體的說明了。

當然:這裡為什麼使用LSTM,作者也給出了具體的原因。

從我自己的理解,就是因為語義標籤之間是有相互聯繫的,不可能成為一個孤立的存在。並且,作者他們也解釋了,他們希望LSTM找到所有的的有用信息並且進行有效的分類,而lstm 會記下之前的attention region 對於接下來的region的尋找也是能夠提供多樣性和互補性的。(畢竟LSTM會輸出空間轉換M的)

而M 的更新規則還是很簡單的,就是LSTM的輸出經過幾個全連接就得到了M .並且也會得到相應分數。這裡其實是這樣的。我LSTM會輸出K個分數向量,而每個向量裡面包含了C個類別的分數(向量也就是C維的)。然後我們將這K 個向量融合,我們就得到了相應的最後的一個C維的向量,這就是最後的分類結果。

他們的模型基本就是這個樣子。


4./Learning/

4.1 Classification-loss

第一步他們講了分類的loss ,我覺得這裡還是很重要的。因為我之前沒注意到是這麼定義loss s的。他們採用了範數的方式。

下面詳細解釋下:

假設共有N個訓練樣本,而且每個樣本中包含C個標籤,當然並不是每張圖都有這C 個標籤,而是使用one  hot 的方式來表示C個類別中,在這一張圖片中都有那些在圖片中存在的。

而他們定義losss的方式,是採用1-範數的形式。比如 ground truth ,是

,這裡的Yi就是label vector。用幾乎同樣的定義,我們也可以定義我們的預測向量為這種形式:

最後就可以定義定義我們的loss是:

4.2/attention region constraint/

這裡是關於attention region的限制部分,因為作者需要這裡的準確度要高,而正常來說,ST模塊並不能實現作者的一些要求,而且會產生一些問題,比如產生大量的計算,並且忽視了細小的物體,並且得到的區域只能是垂直或者水平的。

然後作者針對這些問題對M矩陣加了三條限制,分別是anchor,scale,positive constraint.使得region的區域選擇儘可能穩定。

這樣的話,我們整體的loss 就是一個端到端的loss,能夠進行反向傳播。


5./實驗/

後面就是作者做的一些對比實驗。很詳細的實驗,很值得學習/


最後是一點對自己的拷問:

看完了一篇論文,總會有一些自己的思考。

  • 解決了什麼問題?

解決了多標籤分類的問題吧

  • 提出了怎樣的方法?

選取注意力區域,然後使用LSTM進行記憶相關注意力區域,得到的隱含層輸出融合得到分類結果

  • 為什麼會提出這個方法?

最開始的時候人們的attention region 很多時候都是由假設框所得到的,而現在可以採用空間轉換的方法,並且標籤之間都是存在相互關聯性的。自然是使用LSTM會更好。

  • 設計了怎樣的模型?

img-cnn-ST-LSTM

  • 建立在什麼樣的假設上?

這個啥意思

  • 這篇文章的關鍵點是什麼?

我覺得是對注意力區域的改進吧,並且使用了LSTM來記憶之前的標籤信息

  • 貢獻是什麼?

對於我來說,這種思路可以用到醫學上

  • 如何通過這個模型驗證了作者所提出的觀點?

巴拉巴拉

  • 這個模型為什麼能work?

端到端?反向傳播?

  • 和image——caption的注意力區域有什麼區別。

我覺得對於image_cption的注意力模塊來說 (xu ):圖像的文字描述經過LSTM以後得到的隱含層和feature map 進行結合,得到每個feature map的權重,在和feature map 加權就得到了最重要的一張特徵。在送到LSTM中。。

而本文是通過對一個矩陣參數的學習,來使得在原圖上找到相關的attention region 。再把這個區域送到LSTM.因為我沒看過他們的代碼。我感覺好像一樣。。。

這就比較尷尬了,畢竟我覺得img_caption的attention模塊也是關於一個(feature map ,LSTM的輸出H)的函數,他們兩個應該是一樣的吧。

如果有哪裡看到不夠對的,還煩請各路大神指出,我一定虛心學習。

以上。

18年4月17日 夜11點於上海


推薦閱讀:

TAG:人工智慧 | 深度學習DeepLearning | 學術論文 |