論文筆記之:Multiple Object Recognition With Visual Attention


 

 Multiple Object Recognition With Visual Attention

 Google DeepMind  ICRL 2015

  

  本文提出了一種基於 attention 的用於圖像中識別多個物體的模型。該模型是利用RL來訓練 Deep RNN,以找到輸入圖像中最相關的區域。盡管在訓練的過程中,僅僅給出了類別標簽,但是仍然可以學習定位並且識別出多個物體。

  

  Deep Recurrent Visual Attention Model

  文中先以單個物體的分類為基礎,再拓展到多個物體的情況。用基於attention的模型來處理一張圖像 x 是有N steps的序列處理問題,每一個step是由掃視構成的,然后緊跟着是 glimpse。在每一個step n 中,該模型從一個 glimpse observation $x_n$ 接收到位置信息 $l_n$。模型利用該 observation 來更新自身的狀態,並且輸出下一個 time-step的位置$l_{n+1}$。通常情況下,一個 glimpse $x_n$的像素點個數都會比原始圖像x要小很多,使得處理一個glimpse的計算代價獨立於原始圖像的大小。

 

  模型的圖形化表示如圖所示:

  

  該模型可以分解成多個子成分,即:每一個都將輸入輸出成向量。

  Glimpse Network

  該網絡是一種非線性函數,接收當前輸入的圖像patch或者說是 glimpse,$x_n$,以及其位置序列$l_n$,其中$l_n = (x_n, y_n)$作為輸入,輸出一個向量$g_n$。Glimpse Network 的工作就是從原始圖像中從位置$l_n$附近提取一組有用的特征。利用$G_{image}(x_n|W_{image})$來表示函數$G_{image}(*)$ 的輸出向量,$G_{image}(*)$的輸入是圖像patch $x_n$,然后以權重$W_{image}$參數化,$G_{image}(*)$ 通常由三個卷積隱層構成,沒有pooling layer,然后緊跟着一個全連接層。另外,$G_{loc}(l_n|W_{loc})$利用全連接的隱層來映射出位置元組,$G_{loc}(l_n|W_{loc})$ 和 $G_{image}(x_n|W_{image})$ 擁有相同的維度。我們將這兩個向量進行點乘操作得到最終的 glimpse feature vector $g_n$:

  $g_n = G_{image}(x_n|W_{image} G_{loc}|W_{loc})$.

  

  Recurrent Network

  RN 匯聚從每一個glimpse上提取的信息,並且以一種 coherent manner 組合起來以保存空間信息。從 glimpse Network 得到的glimpse feature vector $g_n$ 作為每一個時刻 RN的輸入。RN 由兩個循環層和非線性函數 $R_{recur}$構成,定義兩個 recurrent layer的輸出為$r^{(1)}$ and $r^{(2)}$ :

  $r^{(1)} = R_{recur}(g_n, r_{n-1}^{(1)}|W_{r1})$ and  $r^{(2)} = R_{recur}(g_n, r_{n-1}^{(2)}|W_{r2})$

  我們用LSTM單元來處理非線性$R_{recur}$,因為其具有學習長期依賴(long-range dependencies)和穩定的學習動態(stable learning dynamics)的能力。

 

  Emission Network (放射網絡?)

  該網絡將RN 當前的狀態作為輸入,然后預測出 glimpse network 應該向何處提取圖像patch。這個就像一個指揮中心,從 RN 中基於當前的內部狀態,控制着 attention。由一個全連接隱層構成,將feature vector $r_n^{(2)}$從recurrent layer的頂部映射成坐標元組$l_{n+1}$:

 

  Context Network

  Context Network 提供了 RN的輸出狀態,其輸出用於 emission Network 來預測第一個glimpse的位置。Context Network $C(*)$ 將下采樣的圖像 $I_{coarse}$作為輸入,並且出書一個固定長度的向量 $c_I$。該結構信息提供了一個可見的提示,即:所給圖像潛在的感興趣區域的位置。采用三個卷積層將粗糙的圖像 $I_{coarse}$ 映射成特征向量作為 RN 的top recurrent layer $r^2$ 的初始狀態。底層 $r^1$初始化為零向量,原因后面會具體介紹。

   

  Classification Network

  分類網絡基於底層RN的最終的特征向量 $r_N^{(1)}$預測出一個類別標簽 y。由一個全連接隱層和softmax 輸出層構成:

  $P(y|I) = O(r_n^1|W_o)$

  理想情況下,深度循環attention model 應該學習去尋找對分類物體相關的位置。Contextual information的存在,提供了一個“short cut”的解決方案,使得模型通過組合不同glimpse的信息從而更加容易學習到Contextual information。我們阻止如此不想要的行為,通過鏈接 context network and classification network 到不同的 recurrent layer。所以,最終使得contextual information 不能被直接用於 classification network,然后只影響模型產生的glimpse locations序列。

 

 

 


 

  1. Learning Where and What ?

  給定一張圖像 I 的類別標簽 y,我們可以利用交叉熵目標函數,將學習過程規划為 有監督分類問題。attention model 基於每一個 glimpse 得到潛在的位置變量 l,然后提取出對應的patches。所以我們可以通過忽略 glimpse locations 來最大化 類別標簽的似然性 :

  $log p(y|I, W) = log\sum_l p(l|I,W)p(y|l, I, W)$。

  忽略的目標函數可以通過其 variational free energy lower bound F 來學到:

  將上述函數求關於模型參數W的導數,可以得到學習的規則:

  在glimpse 序列中的每個glimpse,很難在訓練中估計許多成指數式glimpse locations。公式(8)的和可以利用蒙特卡羅采樣(Monte Carlo Samples)的方法來進行估計:  

  公式(10)提供了一種實際的算法來訓練深度attention model。即,在每次glimpse之后,我們從模型中預測出的glimpse location中進行采樣。這些樣本然后用於標准的后向傳播來得到當前模型參數的估計。似然性 $log p(y|l^m, I, W)$ 有一個 unbounded range,可以在梯度估計中引入大量的 high variance。特別是,當圖像中采樣的位置偏離物體時,log 似然性會引入 一個不想要的較大的梯度更新,並且通過剩下的模型進行后向傳播。

 

  我們可以減小公式(10)中的 variance, 通過將  $log p(y|l^m, I, W)$ 替換為 0/1離散指示函數 R,然后利用一個baseline technique 來解決該問題:

  像所展示的那樣,recurrent network state vector $r_n^{(2)}$ 用來估計每一個glimpse 基於狀態的baseline $b$,此舉明顯的改善了學習的效率。該baseline 有效地中心化了隨機變量 R,並且可以通過向期望的R值進行回歸而學習到。給定指示函數和baseline,我們有如下的梯度更新:

  其中,超參數 $\lambda$ 平衡了兩個梯度成分的尺度。實際上,通過利用 0/1指示函數,公式13的學習規則就等價於 利用強化學習的方法來訓練attention model。當看作是強化學習更新時,公式13的第二項就是基於glimpse policy的期望獎勵 R的對應W的梯度無偏估計。此處有點繞人,看原文吧:the second term in equation 13 is an unbiased estimate of the gradient with respect to W of the expected reward R under the model glimpse policy。

  在推理的過程中,前饋位置估計可以用作位置坐標的決策性估計,以此提取模型下一個輸入圖像patch。該模型表現的像一個常規的前饋網絡。我們的 marginallized objective function equation 5 通過利用位置序列的采樣,提供了一個預測期望的類別估計,並且對這些估計進行平均:

  通過平均分類估計,這允許attention model 可以多次評價。作者的實驗表明平均 log 概率可以得到最優的性能。

 

  


  2. Multi-Object/Sequential Classification as a Visual Attention Task

 

 

 

 

 

 

  3. 實驗部分

  這里只是給出部分貼圖,具體參考文章原文。

  文中給出了兩個數據集上的結果。從上圖可以看出,最左邊是輸入圖像,右邊5列分別是學到的 glimpse location。此處有一個trick,即:對於glimpse network 有兩種尺寸可以提升性能。即,給定一個 glimpse location $l_n$,可以提取兩個patch,第一個是 original patch,第二個是 下采樣的粗糙的 image patch,將這兩個patch 組合在一起即可。

 

 


  我的感受:  

  

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM