1. 程式人生 > >讀書筆記31:What have we learned from deep representations for action recognition?(CVPR2018)

讀書筆記31:What have we learned from deep representations for action recognition?(CVPR2018)

摘要:首先是背景,深度模型在計算機視覺的每個領域都有部署,因此,理解這些深度模型得到的representation到底是怎麼工作的,以及這些representation到底抓去了什麼資訊就變得越來越重要。接著說本文的工作,本文通過視覺化two-stream模型在進行動作識別任務的時候學到了什麼來探索這個問題。得到的觀察結果主要有以下幾點,首先,cross-stream fusion使得學習的過程能夠真正的學習到spatiotemporal feature,而不是僅僅分開兩支,一支只獲得appearance feature,一支只獲得motion feature;第二點是網路得到的local representation可以非常專一,非常針對性的表示某一class的特徵(class specific),也可能會更加一般一些,能夠包含多個類的特徵,我覺得這個意思就是,有一些local representation可以直接指明這個特徵是屬於某一個class的,有些可能就是縮小了範圍,指明這個特徵可能對應著某幾個class;第三點觀察結果是,通過網路結構的層級結構,feature變得越來越抽象,並且展示出越來越高的穩定性,對於資料中一些無關緊要的變化(例如不同速度的motion pattern)有著越來越高的invariance;第四點是這種視覺化手段不僅能對學到的representation使用,還能對training data使用,揭示出資料的獨特性,可以用來解釋為什麼有些時候模型不能正確的進行預測。

本文采取的是activation maximization的方式進行視覺化,這個activation指的是某一個hidden layer的啟用值,目的在於尋找恰當的輸入,可以使得某一個感興趣的啟用值最大化。本文采取的方式示意圖如下

這是一個two-flow的CNN網路,一個輸入的是motion資訊(例如optical flow),一個輸入的是appearance資訊,輸出的是分類結果。對於這樣一個spatiotemporal的卷積網路,本文的處理方式是將一個隨機初始化的input輸入到兩個flow中,然後針對某一個我們感興趣,想要視覺化的hidden layer計算feature map,計算出來之後,挑選一個channel c作為一個target feature channel,是我們最大化的物件,最大化的方式是通過改變input使得這個選出來的layer的feature map的channel c的啟用最大化。改變input是通過將所有位置的target loss相加,對input求導,然後反向傳播,和learning rate相乘,更新input的數值,一次次的迭代更新過程中,learning rate是在不斷減小的,直到收斂停止訓練,這個過程就像反向傳播訓練網路引數一樣,只不過這次網路引數是固定的,但是input始終在變化,最終生成一個令人滿意的input。

更加具體來講,對於第l層網路的unit c(應該就是和之前一樣指的channel c),我們想要尋找一個input ,其中H、W指的是圖片的高度和寬度,T是temporal,C是color和optical flow的channel,也就是每一個畫素對應的feature vector長度。優化的目標如下

這裡面是第l層的activation,是對應第c個channel的自然基向量,應該就是一個one-hot的vector,除了第c個元素是1,其餘全是0,是第l層的receptive field的大小(這裡作者還加括號裡面寫了i.e. the input space,那可能指的是第l層經過層層疊加,receptive field不斷擴大,在輸入上所覆蓋的receptive field大小,但是有點疑惑,這個為什麼要作為規範項,每一層網路的輸出如果是使用輸出範圍在0-1的那種啟用函式,豈不是每一層的輸出都在0-1之間,不需要scale,而若是使用了relu那種啟用函式,其輸入也是多個位置數值的加權求和,並不會隨著網路層數加深而數值不斷變大吧?),

指的是在validation set上記錄到的channel c的最大啟用值,是一個regularization term(後面會介紹),前面還有一個權重λ。

接著作者介紹說,滿足這個優化式子的input其實有很多,有一些和現實中的video其實是不符合的,也就是生成的input不真實(有點像gan的內容),因此需要加一些regularization進行限制,使得生成的input畫素值的統計特徵更接近真實。加入的regularization有兩項,一個是用來限制input元素值的range的,也就是別出現離奇大的數值之類的不真實情況;第二個是用來增加smoothness的,為了使得生成的input元素值分佈更接近真實的分佈。

第一個稱作regularizing local energy,用來壓制過大的input數值,此regularizer記作,表示式如下

其中,ijk是spatiotemporal座標,d指的是channel的座標,可能是color的,也可能是motion的,B是限制數值的範圍的,α是norm的指數。

第二個regularizer是用來限制frequency的,記作,用來防止input出現高頻資訊,因為真實的訊號主要都是低頻的。具體的表示式如下

是三個求偏導的算符,分別計算對spatiotemporal三個維度的導數值;是用來指定對spatial維度上進行多大的限制,指定對temporal維度上進行多大的限制,這個引數被稱作slowness parameter,通過調整這個引數大小,可以調整讓input的feature變化有多大的slowness,也就是說這個數值小了,那可能高頻的資訊也能存在,反之亦然。通過調整控制spatial和temporalsmoothness的引數,可以有以下幾個特殊情況:首先是隻有spatial regularizer,即>0,=0,對temporal上的頻率成分不做任何要求,這可以視作是加了一個2D的空域濾波器;第二個是isotropic spatiotemporal regularizer,且都大於0,對時空每一個維度都採取同樣的限制,是一個3D時空域上的低通濾波器;第三個是各向異性的anisotropic spatiotemporal regularizer,,但是都大於零,這就增加了很多變數,例如視覺化快速變化的feature,但同時又要在空域上光滑等等。這三種特殊的regularizer使得我們可以獲得在空間上變化緩慢的input signal、時空維度上均勻變化的input signal和時空上變化不均的input signal。

有了這兩個不同角度的regularizer,最終的總的regularizer就是兩者相加,即

本文介紹的實驗結果只有在UCF-101資料集上訓練的VGG-16 two-stream fusion model(即上面的figure2),但是本文的視覺化手段也可用於其他模型,作者在supplementary material中展示了更多的結果。

參照上面的Figure2,首先研究的是conv_5 fusion layer,這一層從兩個flow獲取資訊,然後得到一個local fusion representation,輸入到下一層全連線中,此層是整個網路中appearance和motion第一次合在一起,因此具有很大的研究價值,在這一層,同時發現了class specific的feature,也發現了class agnostic的更加general的feature。實驗的思路是這樣的,如下圖所示

在此圖中,可以猜測,這裡面應該有一些filter會抓取例如“檯球”這種概念來輔助分類,在conv_5中鎖定這個對應著“檯球”的unit的話,通過最大化這個unit的啟用值,可以得到下圖所示的結果

這些圖是在spatial和temporal兩個維度上加regularization和不加得到的input值,這個結果可以看出,這個unit可以對圓形的物體響應,並且變化快慢的時候是不一樣的,作者藉此認為這個unit是可以捕捉線性運動的物體。

通過類似的方法,可以研究全連線層之前的輸入representation到底都抓取了一些什麼特徵,對應什麼輸入,是用來做什麼的,對其它層也適用。