YOWO: You Only Watch Once閱讀筆記

Patty Wu
9 min readMar 24, 2021

--

前言

之前有研究一些Action Localization的論文,趁最近複習時寫一下筆記。這類方法的input是video clip,並透過神經網路萃取、整合時、空間特徵,最後output出bounding box還有每個action的probability。

今天介紹這篇YOWO,論文如下:You Only Watch Once: A Unified CNN Architecture for Real-Time Spatiotemporal Action Localization

Video clip示意圖,要判斷動作是起立還是坐下,需要收集前幾張frame的資訊,YOWO使用t時間點的frame (key frame)萃取action的位置資訊,再使用過去幾張frame萃取時間資訊。

介紹

YOWO這篇論文有幾個特點:

  1. 號稱當時最快,real-time的表現:34 fps (16-frames clips), 62 fps (8-frames clips),使用單張Nvidia Titan XP DPU,圖片尺寸=224 * 224
  2. single-stage的框架
  3. end-to-end訓練
  4. 更準確:在J-HMDB-21和UCF101–24 dataset上比SOTA的frame-mAP更高3.3% 和12.2%
  5. 使用PyTorch實現
  6. 將Gram Matrix用於fusing features,過去都是使用在style transfer和segmentation

架構與概念

YOWO的架構如上,大致可以分成4個部分:

  1. 3D-CNN:從clip萃取3D特徵 (時、空間)
  2. 2D-CNN:從key frame萃取2D特徵 (時間)
  3. CFAM:特徵融合和attention
  4. Bounding box regression

接下來我們逐一討論各部分:

3D-CNN

Input的維度是[C, D, H, W],分別為channel、depth (一個clip幾張frame)、Height、Width,經過3D的ResNext-101後,維度會變成[C’, H’, W’],這邊的depth維度會被降成1,因為之後要跟2D的特徵融合比較方便,H’=H/32、W’=W/32。

2D-CNN

Input是一張key frame,維度是[C, H, W],C=3。使用Darknet-19萃取2D特徵後,維度變成[C’’, H’, W’],H’與W’同3D-CNN的維度,方便做特徵融合。Darknet-19其實就是Yolov2的backbone,為了速度與效果兼具而選擇它。

3D-CNN與2D-CNN的backbone都可以視情況改變,YOWO只是提供一個彈性的架構去實現。

CFAM

全名:Channel Fusion and Attention Mechanism,顧名思義要融合剛剛得到的3D和2D-CNN feature map,同時加入attention的機制,取得比較全局語意level的特徵。

將3D和2D-CNN所得的feature map進行concat,得到融合了motion和appearance兩種資訊的feature map A:

A經過兩層conv後得到new feature map B:

B再向量化,把H, W整進同一個維度,N = H x W,得到F:

F矩陣內積會得到Gram Matrix, G,透過內積得到的G代表cross-channel的特徵相關性,它是全局、比較語意層次的特徵。一般常用在style transfer,在style transfer中大概就是畫風之類的特徵。

G再透過softmax,變成channel attention map:M,這個M其實就是把剛剛cross-channel的相關性轉換成一個分數,代表第j個channel對於第i個channel的影響。

然後要把attention的資訊融合進origin feature中,所以將M跟F做內積,再reshape回原本N = H x W的維度。

再來會將attention feature map和origin feature map做一個結合,這邊給一個權重,scaler參數alpha做調整,得到C,也就是Channel attention module:

最終的feature map會是C做兩次捲積,得到的D。YOWO論文的notation寫得很混亂,以下給一個總整理,透過以上操作,這個final feature map D,相關性更高的channel有更大的影響力,可以把較全局的特徵與原本特徵融合使用。

Bounding box regression

我們再回顧一下總架構,得到final feature map後,下個階段就會是regression與classification。D經過一個1 x 1的conv,可以調整成想要的output channel 維度。剩下的部分就跟Yolov2大同小異了:

YOWO的output維度同上:

  1. 第一個5代表有5個anchors,一樣採用Kmeans去決定anchor大小
  2. NumCls是action的種類數量。
  3. 第二個5代表bbox的座標加上confidence。
  4. H’和W'就是高寬。

Loss方面,regression採用smooth l1 loss,因為對outlier較不敏感。classification用focal loss。(這邊設定跟Yolov2不一樣)

Linkage Strategy

當然這樣還沒完,上述的模型只讓我們得到frame-wise的action預測結果,作為一個action localization的方法,它還必須去找出哪一段區間是一個動作,我們稱之為action tube,也就是video-level的預測結果。

針對每個時間t和t+1,每個region都會倆倆去計算一個linking score,以Sc表示,R代表region。

首先會有一個indicator:phi,如果有overlap就=1,沒有就是0,所以只有有交集的region才會有linkage score。剩下就是score的加總和乘積以及overlap的比例做一些加權。

考慮乘積是因為,當兩張相鄰的frame,如果score有急遽的改變,可以增進預測的效果。舉下面的例子,如果只有score加總,會抓不到score劇烈變化的特徵,因為和都是1,但是積就有差了。

當所有linking scores都算完後,會用維特比演算法 (Viterbi algorithm)來計算出action tube,不過這部分論文就沒有提到細節了。

總之最後就可以得到action localization的結果啦:

表現

以UCF101–24去測試,可以看到YOWO在Frame-mAP和Video-mAP的表現都還算不錯,雖說沒有第一名,但也有前段班。

16-frame做clip的話,模型能理解的action會受到侷限,所以作者有說用到LFB (Long-Term Feature Bank)的特徵,預測效果會更好,主要是差別在3D backbone那邊會對每個time stamp提取特徵,詳情可以參照這篇論文:Long-Term Feature Banks for Detailed Video Understanding

不過看起來,顯著有效的是LFB,YOWO本身倒是還好XD

不過至少YOWO性價比是還不錯的,用較快的速度可以得到相對好的結果。

以上就是YOWO的論文閱讀筆記囉,覺得有幫助的話可以拍手打賞一波,感恩感恩。

--

--

No responses yet