Timeception Complex Action Recognition
地址:https://arxiv.org/pdf/1812.01289.pdf
introduction
當前的很多工作主要關注short-range的行爲識別,如:ucf101,hmdb51 & kinetics。而我們主要關注long range & complex 的行爲。該任務的兩個難點:1)如何同時建立 minute-long temporal modeling 和seconds-long details(對長序列建模的同時,也關注短序列) 2)當前的時空卷積通常是fixed-size kernels,如何建立不同尺度?。所以本文提出:Timeception,1)同時關注長短時間內的序列信息 2)容忍行爲在時間範圍內的差異(是指可以學習短序列,也可以學習長序列麼?)
貢獻:1)learn minute-long action ranges of 1024 timesteps; 2)introduce multi-scale temporal kernels ;3) use temporal-only convolutions;
method
1.motivation
提出質疑:當前的3d卷積中,沒人證明爲什麼要同時學習時空特徵。
雖然有方法認爲可將3d卷積解耦成 空間卷積1*L*L和時間卷積 T*1*1,但這種方式的解耦並不是必須的,我們可以將解耦定義爲:
也就是沒必要解耦成空間與時間鏈接or交替的方式。
2.設計時空CNN的3個原則
1)Subspace Modularity 子空間模塊化
2)Subspace Balance
3)Subspace Efficiency
(這裏幾個原則,可能理解起來就是 設計一個module可以很方便/lightweight的用於現有的很多網絡中)
3.提出的Timeception layers
對長視頻建模的兩個目標:1) learn the possible long-range temporal dependencies ;2)容忍不同的時長。
1)如何學習long-range tenporal dependencies?
本文提出了temporal-only的convolution:T*1*1*1,每個kernel只在一個channel上作用。
如果堆積很多temporal-only 的卷積層不好,所以使用:use channel grouping operation before the temporal-only convolutions and channel shuffling operation after the temporal-only convolutions.
有點像shuffle-net中分組卷積,每個temporal-only的卷積只對當前這一小組的特徵進行作用;分組卷積完成後,在引入channel shuffle,這樣就能融合不同尺度的特徵。
2)如何Tolerating Variant Temporal Extents?
將上面提到的temporal-only的卷積 換成 multi-scale temporal kernels,兩種方式:a) inception 結構 b)dalated 卷積(減少參數)
這裏有點想捕獲不同時間範疇的信息,所以引入不同尺度的kernel size,實現長短信息交互。
3)提出的卷積模型
圖b:時間卷積操作的kernel size:3,5,7;在channel維度concat
圖a:先分組卷積,再在channel維度concat;這裏shuffle並不是完全引入random shufle這樣的操作,而是一種“flatten-reshape-flatten”的操作;具體可以看shuffle-net的實現。
experiment
1.數據集: Charades,Breakfast Actions,MultiTHUMOS
2. Original v.s. Altered Temporal Extents
先訓練兩個baseline,一個用mulit-scale temporal kernel,另一個用fixed-sized kernel。結果:(雖然有提高,但這個結果並木有report baseline?)
3.Fixed-size vs. Multi-scale Temporal Kernels
個人想法:
本文好像就是提出了Timeception 層,只做時間維度的1d卷積,然後像inception一樣把不同卷積核大小輸出的結果在channel維度鏈接。(也可以是dalated 卷積實現)
第一次看這篇paper時,完全沒看懂shuffle操作,shuffle層在代碼中:
一開始感覺就是shape的轉換,怎麼就可以實現shuffle了?不過後來看了一下shuffle-net才明白~
不過這篇paper是將提出的Timeception層接在網絡的最後面(應該是這樣的,具體我也沒細看)感覺也有點奇怪,有點像是在hige-level對不同幀特徵進行時序融合。我之前參考Timeception的思想,將這樣的時序關係學習引入在resnet中間,好像性能反而降了很多...這兩週有空試試接在resnet最後面看看有木有效果~