前言
之前有研究一些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
介紹
YOWO這篇論文有幾個特點:
- 號稱當時最快,real-time的表現:34 fps (16-frames clips), 62 fps (8-frames clips),使用單張Nvidia Titan XP DPU,圖片尺寸=224 * 224
- single-stage的框架
- end-to-end訓練
- 更準確:在J-HMDB-21和UCF101–24 dataset上比SOTA的frame-mAP更高3.3% 和12.2%
- 使用PyTorch實現
- 將Gram Matrix用於fusing features,過去都是使用在style transfer和segmentation
架構與概念
YOWO的架構如上,大致可以分成4個部分:
- 3D-CNN:從clip萃取3D特徵 (時、空間)
- 2D-CNN:從key frame萃取2D特徵 (時間)
- CFAM:特徵融合和attention
- 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維度同上:
- 第一個5代表有5個anchors,一樣採用Kmeans去決定anchor大小
- NumCls是action的種類數量。
- 第二個5代表bbox的座標加上confidence。
- 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的論文閱讀筆記囉,覺得有幫助的話可以拍手打賞一波,感恩感恩。