1. 程式人生 > >讀書筆記22:Optical Flow Guided Feature: A Fast and Robust Motion Representation for Video Action Recogni

讀書筆記22:Optical Flow Guided Feature: A Fast and Robust Motion Representation for Video Action Recogni

文章題目:Optical Flow Guided Feature: A Fast and Robust Motion Representation for Video Action Recognition(CVPR2018)

摘要部分:開頭一句話指出motion representation在人體動作識別中起著至關重要的作用,然後就直接切入自己的模型的簡介,本文引入了一個新的緊湊的motion representation,叫做optical flow guided feature(OFF)。OFF是從optical flow的定義中發源而來的,並且和optical flow正交。之後又介紹了一些其他OFF的特徵,最後簡介了一下實驗情況。

既然是叫optical flow guided feature,又和optical flow正交,那麼就要先介紹一下optical flow。傳統的optical flow當中有一個很著名的限制,叫做brightness constant constraint

                                                                 

這裡面I表示畫素值,x,y,t分別是空間兩個維度和時間一個維度,△x,y,t表示的是很小的變化量。而對於feature level,也就是從原始畫素值中用函式得到的feature,也有類似的表述

                                                        

也就是不僅亮度在時空上具有連續性,對於座標值的小改變是不變的,由亮度值計算出來的feature也是具有這種穩定性的。用p=(x,y,t)來表示一個位置,那麼將上式可改寫為

如果兩邊都除以△t,那麼就得到

這裡面的vx和vy兩個東西物理意義暫不明確,被稱作volecity of feature point at p,feature點的速度,而對於x,y,t求的偏導數也就是對空間和時間求的梯度。當,也就是說沒有在原始畫素值基礎上進行特徵提取時,這時候的就被稱作optical flow。將optical flow從的情況推廣到的情況,就被改稱為feature flow,從上式可以看出,

和包含了feature flow的向量是垂直的,當feature flow改變的時候也跟著改變,也就是說是guided by feature level optical flow(也就是feature flow)的,因此就將稱為optical flow guided feature(OFF)。

網路結構的概覽可以用下圖表述

整個網路有三個子網路,,三個子網路各有各的用處。分別是feature generation sub-network,OFF sub-network,classification sub-network。feature generation sub-network就用普通的CNN網路抓取出一些基礎的feature,然後OFF sub-network再從中抓取出OFF feature,接著,這些feature會輸入到一些堆疊在一起的residual block之中進一步獲得更加精細的feature,這兩個sub-network輸出的feature再輸入到classification sub-network得到最終的分類結果,更加精細的網路結構圖可以見下圖

首先,基礎的feature 是用加了ReLU和max-pooling的卷積網路抓取出來的,網路結構選擇的是BN-Inception,這個feature generation network也可以用其他網路結構代替。OFF sub-network包含多個OFF unit,不同的unit使用不同深度的特徵,就像圖中所示。每一個OFF unit包含一個OFF layer,用來生成OFF,生成OFF的過程其實可以用下圖表示

首先輸入的feature map的每一個位置都會使用一個1×1的卷積核將feature的channel數變成所需的固定大小,本文中是無論輸入多少都變成128維的。之後用sobel運算元計算空間維度上的梯度,用相鄰幀對應位置畫素值相減獲得時間維度的梯度,這些梯度都計算完了就是得到了OFF了,將他們連線在一起並且連線上上一個level輸出的lower level OFF feature,之後輸入到residual network中,sobel運算元其實很簡單,如下所示

這個是分別生成x和y方向的梯度資料,也就是一個固定權重的kernel,用來計算畫素值的差值。

在連線不同OFF unit的residual block中,OFF的dimension還會進一步減小,節約計算資源。residual block使用的是ResNet-20,不使用batchnorm,作者聲稱是為了避免過擬合。此外,OFF unit其實是可以加到一般的CNN layer中來輔助模型的。

最後是classification sub-network,classification sub-network將不同來源(指的應該是figure3中的三個score,但是有一點很疑惑,就是t和t+△t不都是原video嗎?這兩個的輸出score有啥區別呢)feature拿來,分別使用inner-product classifier得到相應的classification score,對於所有sampled frames得到的classification score(這裡說的又像是從video中提出的每一幀feature map都要計算一個相應的classification score)通過取平均值的方式合併在一起。這裡其實不是很清楚最終的分類結果到底是怎麼輸出的,之後作者又介紹了,採取和TSN一樣的設定,video中不是每一個frame都參與計算的,是要抽樣的,抽取出來的每一個frame對應一個segment(一般來講segment不一定是frame),每一個segment都會輸出一個class score,對於OFF sub-network的各個segment的輸出score通過average pooling來得到一個sub-network level的score,為了獲得video-level的score,還需要考慮feature generation sub-network的輸出score,也可以採取同樣的average pooling的方法進行處理。此外,本文的feature generation sub-network和OFF sub-network是分開訓練的,第一階段是用已有的手段訓練feature generation sub-network,第二階段是固定feature generation sub-network,然後訓練OFF sub-network。

總結一下,本文提出的representation名字叫做optical flow guided feature,但是實際計算的是時空的梯度,好像只是介紹了一下這個feature和feature level optical flow正交,之後就再也沒用到過optical flow。此外,我覺得這個對時空計算梯度,計算差值的思想其實是本文的關鍵,因為處理video的問題,需要抓取的就是變化的資訊,有一篇skeleton based action recognition的論文中也採取了類似的手段,計算了相鄰兩幀的關節座標值的差值作為motion data,然後再進行feature extraction。